关注圣博润了解更多!
![279e8f23a0be7f46d56939a3ebb59d04.png](https://i-blog.csdnimg.cn/blog_migrate/56ea4b9cf52540941d9fdcdfad8d665a.jpeg)
ThinkPHP简介
ThinkPHP采用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,是一款兼容性高、部署简单的轻量级国产PHP开发框架。
近期ThinkPHP 5.0.0-5.0.23已被爆出存在远程代码执行漏洞,通过分析发现thinkphp5.1.X版本同样存在远程代码执行漏洞。
1
漏洞描述
![8a7fa0de521f781125c4ed05ed640944.png](https://i-blog.csdnimg.cn/blog_migrate/e759388c49613f0bcb8173769d9dfa61.png)
2
漏洞利用
该漏洞存在于
\thinkphp\library\think\Request.php文件中,核心代码如图所示:
![75cfdc6a4d34d720ccfd5c9f1b2f40d9.png](https://i-blog.csdnimg.cn/blog_migrate/30f29bbc872de5b6a1eb2c98b6801dda.jpeg)
在上一篇文章(ThinkPHP 5.0.X远程代码执行漏洞预警分析),已经分析漏洞点存在于var_method,可以通过post方式发送,而var_method可用伪变量_method表示,即可以实现任意请求类型。5.1-5.2也存在这个漏洞点。
查找下filter,通过post方式对filter覆盖变量赋值到input方法中:
![e40b6f6b40a656b8c69a3348715c4a1f.png](https://i-blog.csdnimg.cn/blog_migrate/58c6233f13cd59e158380b288eaebff3.jpeg)
对$filter进行重新赋值
![94ef5e3041c90180e36ce3ad0f1bc61b.png](https://i-blog.csdnimg.cn/blog_migrate/e630075ff4836ddf7d92e3a696e3eaed.jpeg)
查看一下filterValue
![f7c1f5e887942d7b5d76481744196e24.png](https://i-blog.csdnimg.cn/blog_migrate/b07e5716237750b87f42b0b68f6cf014.jpeg)
发现call_user_func,控制$filter和$value即可实现代码执行,构建payload为:
a=system&b=whoami&_method=filter
搭建本地环境验证,尝试执行whoami命令,如下图所示:
![7327a8577b476537853819b069b209f9.png](https://i-blog.csdnimg.cn/blog_migrate/7fa803b601b064e2fecacfd9ecf49083.jpeg)
3
修复方案
用户可通过查看README.md文件,进行漏洞版本排查。
使用thinkphp5.1.X的用户可以对\thinkphp\library\think\Request.php文件中的method函数做以下修改
![dde045fa4b3f4ce4a68ac8abb63424ac.png](https://i-blog.csdnimg.cn/blog_migrate/da21e2cf98e40ff002f37848e13d9c98.jpeg)
修改代码之后,只允许执行图中五种方法,以保证变量在可控范围之内,然后保存重启环境。
4
资料参考
proxy.boomeye.com:19300/wordpress/index.php/2019/01/15/thinkphp5-1-5-2-rec/?from=timeline&isappinstalled=0
https://mp.weixin.qq.com/s/C4BoKGZ7j7s3SOs-FyFZAA
检索最新漏洞信息
提供漏洞预警、通告及响应服务
作为一家专业的网络安全服务供应商
圣博润特别注重对最新安全漏洞的发现和追踪
以“及时性、准确性、层次性”为宗旨
为用户提供漏洞预警、通告及响应服务
![6ac19519a6bb58880291d09e61afa4d0.png](https://i-blog.csdnimg.cn/blog_migrate/aa7745c105f76b1f67c2c9c3026495a8.jpeg)