查看原文
其他

某银行外网打点到内网核心区红队评估复盘

听风安全 2023-11-28

The following article is from 希潭实验室 Author abc123info

免责声明
由于传播、利用本公众号听风安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号听风安全及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

公众号现在只对常读和星标的公众号才展示大图推送,

建议大家把听风安全设为星标,否则可能就看不到啦!

----------------------------------------------------------------------

 Part1 前言 

大家好,我是ABC_123。本期分享一篇ABC_123曾经做的针对一家银行的红队评估项目,持续时间两周,难度非常大,但是最终打到了银行核心业务区,今天就复盘一下全过程,希望红蓝双方都能得到一些启示,这也是“未知攻、焉知防”的道理

 Part2 具体过程复盘 

首先放出一张ABC_123绘制的关于此次红队评估项目的流程图,接下来依据此流程图,详细讲解整个红队评估过程。


  • 外网打点过程

一般来讲,针对银行项目,如果不用0day是很难打穿的。本次红队评估项目,在外网打点方面,付出的代价是用了2个0day1、通过日志信息泄露定位到一个供应链系统,代码审计出一个0day漏洞,是上传漏洞;2、某文档在线预览系统的命令注入漏洞。

在内网横向过程中用了2个漏洞:1、某业务的端口存在java反序列化漏洞;2、Websphere中间件的几个端口存在的Java反序列化漏洞。


 1   供应链系统的上传漏洞

首先通过扫目录,发现一个/logs路径,里面有一些Web应用程序的报错信息,从中发现了一个不常见的jar包类名。


接下来通过各种百度、谷歌、Github使用上述关键字搜索,找到了该系统的开发厂商,后续通过一些列方法获取源代码。源码目录结构与网站相差无几,基本上证明是同一套源码,然后通过Java代码审计出来一处上传漏洞,可惜需要登录后台才能用。走投无路的时候,翻了翻源码中的初始化sql文件,发现系统在启动过程中,会执行这些sql文件,从而默认会添加一个测试账号,于是使用此测试账号,登录后台获取webshell,后续主要的内网横向是通过这个入口开展的。


 2   ColdFusion反序列化

旗下网站存在Coldfusion反序列化漏洞,该漏洞在我之前的文章有详细介绍《coldfusion反序列化过waf改exp拿靶标的艰难过程》,接下来利用此系统的代码执行漏洞获取了第2个Webshell权限。这里指出一点,对于coldfusion漏洞的利用,推荐使用网上的可以直接执行命令的方法,尽量不要用出网JRMPClient的利用方式,这种方法多次发包后,很容易造成coldfusion网站停止响应,具体原因不明,这是经验之谈,踩过的坑。


由此系统开展内网横向,但阻力非常大,网络隔离做得非常好,对于内网其它的IP地址,基本上都是只能ping通,端口不通,因此只能重新进行外网打点。


 3   某文档在线预览系统命令注入

这个漏洞是一个普通的命令注入漏洞,直接GET传参,导入runtime执行,非常简单的一个命令注入漏洞。但是该系统是放在云上的,资产非常少,配置文件中也没有发现阿里云AK/SK等秘钥,最后就是可以查询一些员工的姓名、用户名列表。


 4   网盘信息泄露

通过网盘搜索方法,对各种敏感关键字进行检索,发现了一个员工离职交接文档的压缩包,解压后1G多,里面存放了大量的网络拓扑图及通讯录信息,对后渗透了解网络架构起到了很大帮助。

注:网盘搜索需要分情况而论,那些经历过很多轮攻防比赛及红队评估比赛的目标,网盘检索已经很难发现有价值的信息了,在早期这种方式能获取很多有价值的信息。


  • 内网横向过程

该银行内网资产中Websphere中间件和Oracle数据库特别多,所以内网横向过程主要通过以下两个方向展开:

 1   Websphere中间件漏洞。Websphere中间件在8880、2809、9100、11006等端口均存在java反序列化漏洞,可以拿到权限。

 2   Oracle数据库权限。通过翻Web应用的配置文件,将加密密码解密,然后连上Oracle数据库,通过Oracle提权漏洞获取服务器权限。


  • 外网其它漏洞

除了通过0day漏洞打点,在外网还发现了很多Web应用层面的漏洞,其中包括SQL注入漏洞、短信炸弹、APP客户端漏洞、密码重置、Nginx解析漏洞、遍历交易记录、爆破弱口令等等,通过这些漏洞获取到了一些敏感信息,对后期渗透有很大帮助。接下来我挑选几个比较有代表性的漏洞讲一讲。


 1   培训系统上传漏洞,可上传html页面

如下图所示,可以直接上传html文件,如果在html文件里插入XSS攻击代码,就相当于变相创造一个存储型XSS漏洞,或者可以上传一个钓鱼页面,用作水坑攻击。以下本机虚拟机中的截图,是效果图。


 2  DOM型XSS漏洞

DOM型XSS由于其特殊机制,可以绕过所有的waf拦截。

https://www.xxx.com/xxx/include/resources/reload.html#vbscript:msgbox(1)


 3   任意文件读取漏洞

这是外网的一个系统,存在任意文件读取,绕过waf的方法如下:


 4   宽字节吃掉转义字符造成XSS

这里无论怎么操作,xxs的payload都会落在双引号内被当作字符串而无法执行,这时候可以尝试用宽字节方法,吃掉临近的转义字符反斜杠,从而继续XSS。如下图的箭头所示,图片裂开显示,说明xss代码得到了解析执行。


 5   短信炸弹绕过限制

这个短信炸弹比较有意思,对手机号一分钟内发短信的次数做了限制,但是可以在手机号后面不断叠加%20(空格的url编码)方式绕过,通过Burpsuite的intruder模块添加N次%20造成短信轰炸。


 6   删除sign参数绕过校验

有时候会遇到如下这种情况,使用burpsuite抓包后,重放数据包会提示MAC校验失败,这种情况比较难办,在本次案例中,尝试删除sign字段,就不会提示“MAC校验失败”了。


 7   使用Frida解决APP参数加密




 8   审计JS代码,解决Web传参加密

在JS代码的登录事件处的下断点,发现数据包通过$.jCryption.encrypt(tempS, ***, ***)这个函数加密,其中加密key是固定值,直接使用$.jCryption.decrypt(***,password);可以解密数据包。数据包解密之后,发现了多处逻辑漏洞、越权漏洞。



 9   其它Web应用漏洞

此外就是在外网中挖到的一些Web应用漏洞,都是比较常见的漏洞,不过多叙述大致总结如下:

1.  Springboot框架的heapdump文件下载,从中可以翻到账号密码,还有Springboot的/env地址泄露内网ip地址,方便后续渗透定位内网ip。

2.  公众号上面有一处链接,连接到第三方网站,该网站居然有nginx解析漏洞。获取shell之后,发现用处不大,是个孤岛服务器,除了一个mysql数据库之外,没有多少有价值的信息。

3.  外网几处SQL注入漏洞,这个就不多说了,都是Mysql数据库,而且非root权限,进一步利用非常困难。最终获取到了对后续渗透有价值的员工姓名、手机号、工号。

4.  Github源码泄露,在github上搜索到了部分源码和邮箱地址。

5.  外网业务系统的逻辑漏洞,原报告的截图就不贴出来了,因为逻辑漏洞的截图打码是很容易遗漏的。基本上都是一些交易记录越权查询、账单平衡越权查询、还款计划越权查询等等,方法无一例外,就是改各种参数的值,看是否有越权漏洞。

6.  再一个就是有一些废弃的上传功能,但是从网页的js中,上传功能的地址还存在,构造好上传包,就发现了一个上传漏洞,但是只能上传html文件。在之前的案例中,曾经获取过权限。

7.  APP客户端漏洞。APP弱加壳:这个是靠Xposed对app进行hook,然后使用callMethod方法dump出hook到的类,然后进行反编译。这里不过多叙述,APP脱壳我研究得极少;IPA客户端的某秘钥泄露:使用IDA Pro对IPA客户端进行反编译,从中寻找硬编码,找到了一处敏感信息泄露。


  • 社会工程学攻击

如下图所示,以下是社会工程学攻击过程,总体来说,不太成功,因为该银行严格限制了出网规则,由于不出网,针对客服系统的XSS钓鱼及针对银行员工的邮件钓鱼均没有成功。


 1   微*信聊天发送压缩包

通过前期信息收集,再结合外网web应用系统找到的sql注入漏洞、云上数据库权限等,得到了一个手机号列表,通过这些手机号挨个加微*信聊天,发送带有压缩包的后门,但是能上线的都是个人笔记本电脑,办公网电脑是绝对不允许通外网的,登录不了微信,所以微*信社工这一思路很快被停止。


 2   邮箱伪造发信人地址攻击

通过对邮件系统的检测,发现邮件系统存在伪造任意源邮箱地址漏洞,结合Kali Linux的swaks工具可以以任意管理员身份发送钓鱼邮件,并且可以绕过防钓鱼邮件网关。此次红队评估过程,成功假冒银行信息部管理员(admin@xxbank.com.cn)身份发送了钓鱼邮件,但是最后居然一个都没有上线的,后来了解到,员工登录邮箱环境不通外网。

大致命令如下:swaks --to zhangsan@xxbank.com.cn -f test@xxbank.com.cn --server mail.xxbank.com.cn -p 2525 -au--ehlo xxbank.com.cn --h-From "XXX银行信息部<admin@xxbank.com.cn>" --header "Subject:XXX银行信息部" --body "hello,您的邮件我已收到."


  • 物理渗透阶段

在得到客户的授权许可情况下,和几个同事一起开车去总行周边转了好几圈,强行进入总行内部看起来可能性不大,于是把重心放在wifi热点上。经过探测发现了2个wifi热点,其中有一个被万能钥匙收录,可以直接连上测试区网段;第2个wifi热点,需要提供密码,此密码正好在内网文档中找到,所以两个wifi热点均被拿下,但是都只是能通测试区或者是能上外网的互联网区。


随后使用平板电脑放在附近,反弹出一个socks5代理,交给后面同事们对内网测试区进行横向渗透,但是非常遗憾的是,测试区放置的都是一些测试系统,网络隔离非常严格,测试区与生产区完全隔离,无法连到总行的办公网或者业务网。有时候在测试区系统上存在一些**业务系统的war包等敏感信息。

内网横向漏洞都是比较常规的,比如说MS17-010漏洞获取windows系统权限,zabbix可以执行命令,API网关管理员弱口令、移动办公系统的姓名、手机号信息,商户管理系统的shiro反序列化等等,这里就不过多叙述了。


 Part4 总结 

1.  银行红队评估项目一般难度都非常大,多数都得靠0day,靠代码审计,现在红队人员基本上靠供应链的漏洞打进去的情况较多,供应链安全防护也是重中之重

2.  外网的那些无法拿权限的漏洞,在后渗透阶段,会提供很好的信息支持。sql注入、弱口令可以帮助红队人员了解业务系统用户名的命名方式,内网ip地址泄露在后渗透阶段可以用于快速定位ip段,所以这些中低危漏洞也要及时修复

3.  物理渗透的Wifi热点的安全问题,也很常见,有时候装一个万能钥匙之类的软件,就能起到很大效果。

4.  有的云上的系统也可以尝试一下获取webshell,因为有些云上系统的代码中,会有阿里云、腾讯云的AK/SK等,如果碰到一个,一下子拿一片服务器权限。

5.  遇到参数加密的情况,如果是手机APP,可以试试Frida;如果是Web应用,可以试试找到javascript解密函数。

不可错过的往期推荐哦


记一次看似简单到处是坑的入口打点

无人机mavlink中间人攻击

APT是如何杜绝软件包被篡改的

瑞数WAF保护站点的渗透测试

利用sqlserver agent job实现权限维持

商城优惠券处的漏洞挖掘技巧

NPS反制之绕过登陆验证

区分Spring与Struts2框架的几种新方法

SRC挖掘葵花宝典

SRC漏洞挖掘之看不见的羊毛

点击下方名片,关注我们

觉得内容不错,就点下“”和“在看

如果不想错过新的内容推送可以设为星标
继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存