記錄一次坎坷的打靶經歷
前言
我也沒想到居然能有第二篇,可能是我打靶太過于坎坷(其實就是菜,嗚嗚嗚)。
言歸正傳,bugku的par模式,滲透測試2,共9個flag,打了三次,歷時三天,全部拿下。整個打靶過程依舊十分坎坷,在此,分享出來筆者打靶的過程,并呈現自己的思考,同時也希望能獲得大佬的指點。
過程

第一次打靶
0x01 flag1(Typecho反序列化)
啟動場景,給了一個ip:80,老樣子先上nmap掃一波

看來還是得從80端口開始,訪問頁面顯示

哇,這么大個flag,這是怕我看不見么,結果訪問并不是,年輕人不講武德,來騙,來偷襲...嗚嗚嗚

上dirsearch掃著,咱先熟悉一下整個站點的功能,這個站點是屬于博客類型的,插件識別出來這是一個Typecho的cms,版本為1.0

網上搜搜看有沒有歷史漏洞

嘿!還真有,剛好符合要求

挺輕松,直接上poc,
將poc運行后的結果,利用hackbar進行post傳參,看到當前目錄下的所有文件

當前目錄下沒有flag,去根目錄下看看,直接cat /f*,拿到flag

0x02 flag2(數據庫)
上一個flag沒有提示,但按照打靶正常流程,咱應該想辦法getshell,嘗試反彈一個shell回來。它本身是一個php站點,上面的poc中調用的又是system函數,最先想到的payload就是
但是因為單雙引號閉合的問題(有些函數里必需要有引號),放在poc里面感覺比較麻煩,想著寫一個一句話木馬進去,但是蟻劍死活連不上,最后還是回到原來的想法,反彈shell。處心積慮地構造了我大半天,終于構造完了,最后長這樣,用變量隔開了很多參數,然后利用字符串拼接的方式將整個命令拼接完整就OK啦

(后面發現只要給雙引號加個\轉義一下就行了,一口老血吐了出來)

接收到shell后,看了一下當前目錄并沒有flag,先用python提升一下shell的交互性吧

然后看了一下自己剛剛想寫進去的那個一句話木馬
?嗯?我的$_POST呢?就離譜...
然后因為這個反彈回來的shell執行命令起來有點麻煩(敲錯命令想刪掉重敲,雖然它確實是刪掉了,但是顯示上并不會刪掉而且還會多兩個字符^H)

我覺得還是工具的ui界面操作起來更方便,想用echo命令寫一個一句話木馬進去,結果呀,這個$_POST依舊是寫不進去

最后我還是用老辦法,將這個一句話木馬分開,按兩次寫入shell.php,查閱了一下echo命令的一個詳細用法,于是就有了下圖

上蟻劍,成功連上

按照上次做滲透測試1的經驗,flag應該在數據庫里面,查看config.inc.php,拿到數據庫賬號密碼,

登錄后在數據庫中拿到flag


0x03 flag3(log4j2 rce)
依舊是沒有任何提示,想看看能不能提權,但就我那個提權三板斧是提不了的,只能看一下網段信息先走內網了

顯示有一個網段192.168.0.2/24,傳一個fscan掃一下(將結果輸出到文件里邊,不然沒有回顯)

看一下結果,提示192.168.0.3:80的title是不一樣的,掛一個frp,訪問一下該站點

什么也沒有,嘗試弱口令,沒用,爆破,沒結果,想著抓包試試爆破,結果返回包里邊提示source.zip

訪問看看,把源碼下載下來了
解壓出來,淺淺看一下,是一個log4j2的題,估摸著是考CVE-2021-44228漏洞的利用吧

但是說來慚愧,作為一個web手,這個漏洞自曝出到現在我還沒有去復現研究過,導致現在不知道怎么去利用它,剛好時間也到了,只能先去研究一下這個漏洞了,第一次打靶結束。
第二次打靶
0x03 flag4(log4j2 rce)
研究了一天這個漏洞,大致知道該漏洞的基本原理和利用方法了
思路清晰目的明確,在vulhub上找到相應的環境成功復現一遍后,就開始了我的第二次打靶之旅。
將反彈shell的payload進行base64加密

使用JNDI注入工具(JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar)在vps上開啟好對應的服務,

之后便可以開始利用了,從上次得到的源碼里可以知道這個站點用的是springboot框架,

所以選擇工具給好的對應springboot的URI,構造好payload,vps上nc監聽反彈端口,將payload填入登錄框中,點擊提交即可接收到反彈回來的shell了


剛好還是root權限,讀一下flag

0x04 flag3、flag5
上一個flag提交后發現這居然是flag4

該不會真的需要在之前flag2上的機器提權后才能拿到flag3吧,嗚嗚嗚
然后仔細看了一下但當前目錄下的文件,有一個start.sh的腳本,打開看看

好家伙,一個log4j2的漏洞拿下3個flag,flag3在一個js文件里邊、flag4在根目錄下、flag5在root目錄下,單走一個6

0x06 flag6(git克隆)
看完flag后,界面顯示看起來屬實不舒服,想clear清屏又清不掉,

最后想起來擱B站up主紅隊筆記的視頻里學到過一招,
成功清屏

接著做下去,上一個flag依舊是沒有提示,但已經有root權限了,正常流程就是看看內網了,ifconfig看一下網段,好家伙,沒有ifconfig命令

ls /usr/bin看一下用戶命令有哪些

有wget,可以直接從vps上下載frpc,但是不知道這臺機子的具體網絡信息呀,這時候其實就有一點卡住了,不知道該怎樣獲取這臺機子的一個網卡信息,怎樣進行下一步呢?
嘿嘿,我去問了一下度娘,

執行ip addr show命令后發現還有一層192.168.1.2/24的網段,傳一個fscan上去掃一下


依舊是看title,發現192.168.1.3的是之前沒有見過的,掛frp開socks5代理,成功訪問該站點(能wget從公網上下載就已經不需要考慮出不出網的問題了)

這個貌似是用來clone倉庫的,看一下插件是一個php站點

表單里邊有bugku的一個git倉庫提示,訪問看看

是一個漏洞測試靶場,并沒有給什么信息,直接將這個git倉庫克隆一下,

給了個超鏈接,訪問一看,flag出了


0x07 flag7(git克隆上馬)
這里可以克隆倉庫,而且可以訪問到克隆的倉庫里的文件,你說這種是不是很像文件上傳,于是我自己建了個倉庫,放上一句話木馬,clone后訪問發現它直接將文件內容輸出了,并沒有執行解析

可能是做了限制吧,然后嘗試修改倉庫里文件后綴看看能不能繞過限制,重新clone,好家伙,clone同一個倉庫,里邊的文件不會變了(不管遠程倉庫做了什么修改,clone的倉庫只保留第一次clone的結果,估摸著是緩存的原因),沒辦法只能多創建幾個倉庫了,最后測試了很多次后,發現phtml后綴的文件能被解析執行

直接上蟻劍,拿下flag


貼上我的倉庫地址(https://github.com/QRLing1/hello4)
0x08 flag8(ftp)
這次終于有提示了,

?什么東東,沒看懂,離譜,還是先看一下這臺機子的網卡信息吧

還有一層10.10.0.2/24的網段,上fscan掃一下(將結果輸出到文件中,不然沒有回顯)

看一下結果發現10.10.0.3這臺機子只開了21端口,該端口對應的是ftp服務,題目的提示該不會是ftp的賬號密碼吧,繼續上frp掛代理,可是這次再上傳frpc的時候一直出現問題,

唯一上傳成功的frp還不能運行

最后就一直卡在了這里,之后時間也差不多結束了,第二次打靶也就此告終。
第三次打靶
0x08 flag8(ftp)
重新開啟靶場后,想再試試傳一個frpc,這次上傳的很順利,之前傳不上去可能是網絡問題吧,掛上代理后嘗試使用xftp進行連接,賬戶密碼確實是guest,但xftp連接上后就一直卡死

根本讀取不到文件,換FileZilla連接也是卡死,就離譜

之后想著還是用ftp命令行進行連接吧
轉到kali,先在/etc/proxychains4.conf里加上socks5代理,

然后再使用ftp進行連接,終于連上了

get flag遠程下載flag文件拿到flag

0x09 flag9(ftp)
從上一個flag給出的提示,ls / 看一下根目錄的文件

還真有,直接get /flag,結果并沒有拿下flag

一下子給我整蒙了,難不成還要彈個shell回來提權?但是就開了一個21端口也執行不了什么命令,怎么彈shell呀,迷茫了很久,切換到根目錄下面get flag,直接拿下了,好家伙,離大譜


總結
到這里就結束了,回顧整個打靶過程,還是能清晰的感受到我是一如既往的菜。這次打靶依舊是學到了很多東西,比如log4j2漏洞的學習和復現等,而且我覺得自己對打靶的一個大致流程也越來越熟練,打靶時的思路也逐漸靈活,總體上感觸頗多。下次繼續,嘿嘿。
希望師傅們不喜勿噴,感謝。
參考資料
??JNDI注入學習??16-PHP代碼審計——Typecho1.0.14反序列化漏洞
log4j2(CVE-2021-44228)漏洞復現實操(小白向)
CVE-2021-44228-Log4j漏洞分析及漏洞複現(Log4j POC)
??Apache Log4j2 lookup feature JNDI injection (CVE-2021-44228)??























