記一次滲透某XX站


0X00 前言

團隊A師傅發來個站,問我有沒有得搞

 

 

正好在搞其他的站,卡住了,開干換個思路。

 

0x01 信息收集

burp抓了下包,目標設置了url重寫,開了報錯,我們隨意輸入一個控制器就直接報錯。

獲取到web絕對路徑。

抓包發現這樣的請求

 

隨手試了一下burpsuitednslog,發現請求過去並回顯了,猜測后端使用file_get_contens來獲取。

一個可回顯ssrf,有什么用呢?

打內網?

嘗試file協議,嘗試讀取文件,發現可以讀。

 

 

但發現返回的內容不完整,猜測有截斷,用php://filter協議base64編碼一下繞過讀取。

 

解碼

 

 

有一個任意文件讀取有什么用呢?

在這之前,其實是有用nmap掃了一下其他端口

 

 

開了挺多端口的,一個個測了一下發現999端口開着phpmyadmin

 

 

結合任意文件讀取,那么只要我們讀取出mysql的賬號密碼即可進入phpmyadmin,之后的getshell方法就很多了。

thinkphp的目錄結構根據官方文檔一般都長這樣。

而數據庫文件一般是放在common/conf下面的。

簡單猜了會,嘗試讀取index控制器。

之前的報錯其實已經放出了index控制器在那個模塊下面了,就是默認的home模塊。

 

讀取

 

沒有返回,猜測是application目錄改名了,結合之前的審計經驗,一般會改為app

再讀取,成功。

 

接下來就是猜數據庫文件存放的位置

一般會存放在common模塊下面的config.php或者db.php,嘗試了一下config.php,命中。

Base64解碼得出源文件。

拿到賬號密碼,直奔phpmyadmin

輸入賬號密碼,回車,登陸成功。

 

后面拿shell就給A師傅去弄了。

 

0x02  URL Rewrite的一些疑惑

 題外話:因為之前幫朋友搞了一些站也是這樣的,有文件上傳直接拿shell,但是沒有辦法訪問,訪問提示:

有拿到源碼,.htaccess里面有對url重寫,比如長這樣的。

之前上傳沒法訪問一直以為是重寫的問題。

 

但其實也可能不是,有可能是馬兒被殺了緣故,當文件不存在的時候才會提示這樣。

在本地測試,拉了個thinkphp 3.2.3的項目,htaccess一樣配置。

 

在根目錄下寫入個test.php,內容為phpinfo。可以直接訪問。

 

 

刪掉test.php,報錯

 

換到二級目錄下繼續測試:

 

 

不存在文件的時候同樣提示:

后面深入研究了一下那份源碼發現也不是馬兒被殺了的原因,應該由於它的分割符問題。

不是傳統的/,而是點號,傳統的文件路徑訪問與路由沖突了,最終也就沒辦法訪問到uploads目錄下的shell

 

沒想出對於這種路由有啥辦法可以解決的,如果有知道的師傅歡迎評論交流。

更新:那個有問題的站也拿下了,原因確實是沒有文件導致的,至於為什么沒有寫入成功又是另外一回事了。

更新2:感謝love17師傅的評論,關於htaccess的理解之前確實不對,刪掉了,不誤人子弟。

 

0x03 shell

由於上面的疑惑,生成了我錯誤的認知,導致我以為拿shell會比較麻煩,我的思路是phpmyadmin 日志方式導出一個符合thinkphp路由的shell到相應的控制器下,以繞過路由的檢測。

A師傅說直接into outfile images目錄就可以了,那就是mysql版本不高也沒有secure_file_priv的問題,直接導出shell了。

我:emmmmm

 

0x04 總結

對於rewrite語法,路由不熟悉導致了后續一系列問題,錯誤的認知還把自己帶坑里面去了。

多開腦子容易秀逗。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM