ThinkPHP5 5.0.23 遠程代碼執行漏洞
ThinkPHP是一款運用極廣的PHP開發框架。其5.0.23以前的版本中,獲取method的方法中沒有正確處理方法名,導致攻擊者可以調用Request類任意方法並構造利用鏈,從而導致遠程代碼執行漏洞。
漏洞分析
如上所述,此漏洞是因爲Request類中獲取method方法中沒有正確的處理方法名導致遠程命令執行。
使用docker搭建好環境後,進入bash環境
查看/var/www/thinkphp/library/think/Request.php即Request類
因爲太多截取含有method關鍵字的部分發現method函數定義並且可以發現這個函數主要在其他成員函數,因爲下面的return
發現沒?
每個return都是http的請求方法,說明此方法是用來對請求類型做判斷的。
接下來看一下這個類的構造函數,好吧說不上來畢竟不是搞開發的,總之影響漏洞的類就是這個request類,通過一系列的神奇操作,觸發request類的param方法覆蓋server變量,然後通過input方法實現任意代碼執行。
漏洞復現
引用payload實現遠程代碼執行
ThinkPHP5 5.0.22/5.1.29 遠程代碼執行漏洞
其版本5中,由於沒有正確處理控制器名,導致在網站沒有開啓強制路由的情況下(即默認情況下)可以執行任意方法,從而導致遠程命令執行漏洞。
漏洞分析
引一篇大佬的文章
https://www.cnblogs.com/st404/p/10245844.html
漏洞復現
http://your-ip:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
相關文章