用戶名及密碼:zgsf/zgsf
下載資源還有個解題.exe:
1、攻擊者的兩個ip地址
2、flag1和flag2
3、后門程序進程名稱
4、攻擊者的提權方式(輸入程序名稱即可)
之前的命令:
1、攻擊者的兩個ip地址
先獲得root權限,查看一下歷史命令記錄:
看樣子攻擊者在/桌面/tmp目錄可能寫了一個腳本upgrade.sh和對system.log文件進行了一些操作
賦予“開啟環境.sh”執行權限:
但是發現upgrade.sh文件消失了
find命令查看upgrade.sh文件在哪
呃,應該是刪掉了?先看看system.log文件在哪吧
find / -name 'system.log' 2>/dev/null
找到system.log的文件路徑/home/.system_config/system.log
cat命令查看system.log文件內容:
看樣子,第一個攻擊者IP應該是192.168.31.64
本來想直接用grep命令搜索含有“192.168.31.64”的文件的內容的,但沒反應:
grep -rnw '/' -e "192.168.31.64" 2>/dev/null
直接看看計劃任務程序:
cat /etc/crontab
只有這一個任務計劃程序,這應該是攻擊者留下的惡意腳本,查看一下
很明顯這是個反彈shell,通過 TCP 連接到192.168.31.64:1133并提供對系統的遠程控制
攻擊者第一個IP就是192.168.31.64
查看靶機IP時發現還有個docker,從這入手分析一下:
docker ps -a
可以看到容器有rabbitmq,webdav,phpadmin,think,nignx,mysql,而且只有webdav容器正在運行,其他容器都處于Exited狀態,查詢了一下相關資料:
其中thinkphp的漏洞風險更大,優先去排查該容器
啟動think容器并查看是否成功啟動:
docker start 1d1aa8b3f126
docker ps
進入think容器:
docker exec -it 1d1aa8b3f126 sh
ls -a
thinkphp框架的默認日志路徑是:
ThinkPHP 5.1/6.x/7.x/8.x runtime/log/
ThinkPHP 3.x/5.0 runtime/Logs/
順著路徑下去訪問,發現有個22.log:
查看22.log文件內容:
可以看到192.168.31.251進行惡意操作,執行遠程命令,顯示phpinfo
攻擊者第二個IP就是192.168.31.251
答案:192.168.31.64和192.168.31.251
2、flag1和flag2
本來想直接
find / -name *flag*查找關鍵詞“flag”
grep -Ern "\{[^\}]*\}" /查找關鍵詞括號“{}”
但結果太多了,換種思路
先前history命令看到還進入了/home/.system_config目錄,先去看看吧:
ls -a發現有個systemd_null文件,cat命令查看發現賊多信息,看不過來
沒有頭緒了,看看別人的WP,發現在/home目錄下有個.system文件,cat命令查看一下找到flag:
找到第一個flag:
SYS{ZGSFYYDSadmin}
第二個flag也是找不到了,看了別人的WP才知道需要查看容器內文件變化:
最后在nginx容器里發現有個index.html和www.txt,這并不常見:
docker diff 2da3b55bd66c
啟動nginx容器,并進去查看這兩個文件內容:
docker start 2da3b55bd66c
docker exec -it 2da3b55bd66c sh
找到第二個flag:
zgsf{yerhawtigouhegih}
答案:SYS{ZGSFYYDSadmin}和zgsf{yerhawtigouhegih}
3、后門程序進程名稱
上傳whoamifuck.sh并賦予權限:
chmod 777 whoamifuck.sh
查看一下whoamifuck.sh的命令:
./whoamifuck.sh -h
查看是否存在的webshell文件:
./whoamifuck.sh -w /
發現存在一個peiqi.php文件,但感覺不是什么后門程序進程
根據先前的history命令看到的歷史命令提及到system.log,覺得應該從這里入手:
這個命令是在后臺啟動一個system_null文件,并讓它監聽靶機的8899端口,同時將輸出日志保存到system.log文件
但還有個就是systemd_null文件,并讓它監聽靶機的8896端口,同時將輸出日志保存到system.log文件
猜測應該是打錯文件名了,正確的應該是systemd_null文件,因為前面看到了有個systemd_null文件
用find命令各自檢索一下文件名:
find / -name system_null
find / -name systemd_null
發現只有systemd_null文件的文件路徑
先查看一下system.log文件內容:
這時候突然想起來這就是第一問的操作,那后門程序進程名就是systemd_null
答案:systemd_null
4、攻擊者的提權方式(輸入程序名稱即可)
根據第一問和第二問通過docker容器獲得的答案,猜測應該是通過docker來提權,直接journalctl _COMM=sudo > sudo.txt,使用systemd的系統查看sudo命令的歷史,保存為sudo.txt文件
發現還有安裝docker容器的命令,但還是那個問題,關鍵詞“docker”太多了,沒法確定,換種思路
經了解,攻擊者獲取到docker的權限之后是利用的容器逃逸進行的提權,而容器逃逸需要一定條件,去檢查docker.sock是否可訪問
find / -name docker.sock
發現有兩個docker.sock,先看看第一個
ls -la /var/run/docker.sock
但docker.sock文件大小是0,有點奇怪,再看看另一個docker.sock文件:
發現文件大小也是0,可權限不太一樣,但還是確定了通過docker提權
答案:docker
答案總結:
1、192.168.31.64和192.168.31.251
2、SYS{ZGSFYYDSadmin}和zgsf{yerhawtigouhegih}
3、systemd_null
4、docker
原來有提示6個字符啊,那大概都猜得出來是docker,成功攻克該靶機!