长亭百川云 - 文章详情

新鲜的实战思路分享

珂字辈

50

2024-07-17

1.    前言
一次实战演练终于结束了,趁着还记得一部分细节,赶紧能写多少写多少。全程无任何截图,只谈思路和攻击细节。
由于团队人数不多,且大部分都是新人,甚至后半段时间新人也走了,所以从打点到内网到写报告,大部分事都是亲历亲为,效率较低。

一共存在5次打点到成功突破内网,其中4次都全程参与了。
得到的最大心得就是,提前准备的东西越多越好。
平时对java反序列化掌握的越深刻,实战中踩的坑就越少。
平时多关注刚出的漏洞,从中挑选出具备实战价值的并且了解它的原理和进一步利用,甚至据此挖掘出更多0day,实战中很有可能用得上。
平时多制作不同维度的免杀,实战中面对各种安全客户端才能派的上用场。

台上一分钟,台下十年功。

2.    xxl-job

在第二次打点中,队友打了一个xxl-job,通常大家会使用bash shell直接弹shell,但后来我在内网中碰到一个不出网且没有dns的xxl-job。此时可以利用xxl-job自带的log功能进行命令回显,来证明漏洞存在。
也就是XxlJobHelper.log(str);,用不同于shell的GLUE(java),直接在线运行java代码。

如果这台服务器有价值,那么能否在这种环境中命令回显或者打内存马吗?

3.    备份泄露到代码审计

在第二次打点中,队友发现了一个web备份文件,其名称和子域名相关,大概是这样。
http://rts.xxx.com/rts.rar

这是一个.net的web,只有bin目录和.aspx文件,其中.aspx文件全部包含.aspx.cs,这是典型的预编译,因此真正的代码在bin目录中的某个dll其中。需要用dnspy去反编译dll,来代码审计。最终我发现了其中有一个未授权文件上传漏洞,且为通用型漏洞也就是0day。同时这里又有一个经典的坑,IIS的预编译环境是不支持直接上传aspx的,但可能支持asp。

如果连asp也不支持怎么办呢?那就要向bin目录上传编译后的compiled和dll文件。

4.    蓝凌OA历史漏洞

在第五次打点中,发现了蓝凌OA。

蓝凌OA历史上有两个很经典的越权漏洞,结合可以利用需要授权的几个接口,达到读密码+jndi/xmldecode/bsh/el/jsp write五种不同的攻击路径。在我之前的一篇文章中已经讲过了。
很多人都只是知道它有漏洞,甚至拥有批量工具,但并不知道具体的利用方式。

在实际环境中,无法读密码,xmldecode被waf拦截,el被拦截,jsp write不存在。唯一解只剩bsh代码执行。
同时waf拦截了冰蝎/哥斯拉的流量,且本地存在hids,拦截了包括whoami在内的绝大部分常见命令。这种防护力度使得我最终放弃了这个打点,只用set命令来证明漏洞存在。

5.    宏景HCM历史漏洞

在第三次打点中,成功使用这一漏洞突破了网络边界,宏景HCM历史上有两个公开的RCE漏洞。一个是SSRF+Axis,一个是任意文件写。
前者由于存在waf,非常难以绕过,而后者相对比较好绕过。

突破内网后,发现整个内网都不通外网不通dns,只能使用reGeorg+冰蝎自带的socks5代理。前者速度快(特别是neo-reGeorg最新版),但只能代理http协议,后者速度慢,但可以代理其他tcp协议。

为了追求效率,我在内网中尝试打下一些简单的http服务,寻找可以出网的服务器。结果发现内网也存在waf。其中包括tomcat上传war包,jboss反序列化,weblogic xmldecode这些简单漏洞都会被拦截。

6.    weblogic xmldecode

非常简单且常见的一个反序列化漏洞,在外网打点,内网捞分时我都见过它,但是会发生很多问题导致它无法被利用。这里主要关注waf的部分。
xmldecode也可以利用XXE的编码技巧来进行waf绕过,在实战中我使用了cp037。

在实战中还碰到一种情况,waf对/wls-wsat/CoordinatorPortType拦截异常严格,还好有/_async/AsyncResponseService。
尽管它们相差无几都是xmldecode,但是/_async/AsyncResponseService有着天然缺陷很难命令回显(被202覆盖),再加不通外网就需要打内存马了,市面上没有现成工具或者poc需要自己写。

7.    heapdump+shiro

在第四次打点中,在外网中收集到了一个文件共享web的弱口令,登录到文件共享平台,发现里面有文件共享服务的用户手册,提供了另外一个不在表面上的服务路径和默认密码。
通过端口和目录扫描,发现了这个隐藏服务,其有着heapdump的内存泄露,使用JDumpSpider在里面找到了shiro key,打入内存马。完成内网突破。
这里面有多个坑,首先是shiro_attack工具原因,无法识别出来这个shiro key是正确的,虽然可以强制命令执行,但打入内存马会提示需要先爆破key。

其次因为该隐藏服务是在二级目录下,也就是/RTS/api/login,其中/RTS是nginx反代的,因此如果打入内存马在/favicon.ico,需要访问/RTS/favicon.ico。
最后这种都是k8s微服务,打进去的是docker,很有可能网络和命令都受到了限制。

解决了之后,进入内网,直接定位wiki,在wiki中获取了大量服务器相关信息,一路畅通无阻。

8.    thinkphp5 RCE

在第五次打点中,某个子域名里发现了thinkphp5的RCE。又是一个常见且简单的漏洞,但同时也有不少坑点,php7+disable_functions+web目录不可写。没有宝塔waf实在是太容易解决了,简单的包含session,然后在蚁剑中配置了thinkphp5 RCE的body,就可以直接蚁剑连接。

但如果想要哥斯拉呢?哥斯拉不支持body,这个时候就需要搭一个中转服务,将流量加上body将哥斯拉代理出去。
当然最好还是找到一个可以直接上传webshell的web目录,这个时候就要想到upload目录是一定可以上传的,但很遗憾的是存在waf对upload/**.php进行拦截。最终找到了其他web服务的缓存目录进行webshell上传。

9.    内网

外网打点中,我们需要触发多次waf,使用webshell工具,动作明显,很容易被蓝队发现。来之不易的打点shell很容易掉。

但在内网中,如果没有遍布各种安全防护,还是很容浑水摸鱼的。所以永远要优先在内网中获得一个和外网沟通的渠道。可以直接上cs,也可以使用一些白名单远控,或者纯粹的socks5隧道都行。最安全的做法当然是找到合法的VPN。

有的内网中往往布置了或免费,或企业版的安全软件。比如在第五次打点中,由于获得了大量RDP权限,登录上去发现了三种不同的安全软件。
如果想要用这些机器做跳板,要么就要求你的cs马,隧道工具,远控,密码抓取工具这些具备良好的免杀。

转载于珂技知识分享,原文可点击阅读原文。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2