发布于周五 15:105天前 ## 第1 部分前言 大家好,我的名字是ABC_123。本期分享一篇ABC_123曾经为某银行做的红队评估项目的文章。历时两周,十分艰难,但最终还是到达了银行的核心业务领域。今天我就来回顾一下整个过程。希望红队和蓝队都能得到一些启发。这也是“未知的攻击,如何防御”的道理。 建议大家将公众号“西潭实验室”设为star,否则可能看不到!因为公众号现在可以显示大图推送,只有经常阅读和加星标的公众号。操作方法:点击右上角【.】,然后点击【设为星标】。 ## Part2 具体流程回顾 首先,将发布ABC_123绘制的有关此红队评估项目的流程图。接下来,根据这个流程图,详细讲解整个红队考核流程。 ### 外部网络管理流程 一般来说,对于银行项目来说,不使用0day是很难渗透的。在本次红队评估项目中,外网管理付出的代价是两个0day的使用:1、通过日志信息泄露定位某供应链系统,经代码审核发现0day漏洞,为上传漏洞; 2、某文档在线预览系统存在命令注入漏洞。 内网横向流程中利用了两个漏洞:1、某业务端口存在Java反序列化漏洞; 2、Websphere中间件多个端口存在Java反序列化漏洞。 ####上传供应链系统漏洞 首先,通过扫描目录,发现了一个/logs路径,里面包含了一些来自Web应用程序的错误信息,并发现了一个不寻常的jar包类名。 接下来我们利用上述关键词通过各种百度、谷歌、Github进行搜索,找到了系统的开发者,然后通过一系列的方法获取了源代码。源码目录结构和网站几乎一样。基本证明是同一个源代码。随后通过Java代码审计发现了一个上传漏洞。不幸的是,您需要登录后端才能使用它。绝望之际,我查看了源码中的初始化sql文件,发现系统在启动过程中会执行这些sql文件,并且会默认添加一个测试账户。于是我就用这个测试账号登录后台获取webshell。后续主要的内网横向连接都是通过这个入口进行的。 #### ColdFusion 反序列化 其网站存在Coldfusion反序列化漏洞。这个漏洞在我之前的文章《coldfusion反序列化过waf改exp拿靶标的艰难过程》中有详细介绍。接下来我利用这个系统的代码执行漏洞获取了第二个Webshell权限。这里需要指出的是,对于coldfusion漏洞的利用,建议使用可以直接执行命令的在线方法。尽量不要在Internet 之外使用JRMPClient 方法。这种方法很容易导致coldfusion网站在发送多个包后停止响应。具体原因不明。这是我以前经历过的一个陷阱。 从这个系统来看,内部网络是横向实现的,但是阻力非常高,网络隔离性很好。基本上只能ping通内网的其他IP地址,但是端口被屏蔽了,所以只能重新管理外网。 ####某文档在线预览系统命令注入 该漏洞是一种常见的命令注入漏洞。它直接获取参数并将其导入运行时执行。这是一个非常简单的命令注入漏洞。但系统放在云端,资产很少。配置文件中未找到阿里云AK/SK等密钥。最后可以查询部分员工的姓名和用户名列表。 ####网盘信息泄露 通过网盘搜索方式,检索出各种敏感关键词,并找到一个员工辞职交接文件压缩包。解压后1G多。其中包含了大量的网络拓扑图和地址簿信息,对于穿透后理解网络架构有很大帮助。 注意:网盘搜索需要根据具体情况进行。对于那些经历过多轮攻防赛和红队评测赛的目标来说,通过网盘搜索很难找到有价值的信息。在早期,这种方法可以获得很多有价值的信息。 ###内网横向流程 该银行的内网资产有大量的Websphere中间件和Oracle数据库,因此内网横向流程主要在以下两个方向展开: 1.Websphere中间件漏洞。 Websphere中间件在8880、2809、9100、11006等端口存在java反序列化漏洞,可获取权限。 2.Oracle数据库权限。通过读取Web应用的配置文件,解密加密密码,然后连接Oracle数据库,通过Oracle提权漏洞获取服务器权限。 ### 外网其他漏洞 除了处理0day漏洞外,网上还发现了很多Web应用级漏洞,包括SQL注入漏洞、短信炸弹、APP客户端漏洞、密码重置、Nginx解析漏洞、遍历交易记录、爆破弱密码等。通过这些漏洞获取了一些敏感信息,对后期渗透有很大帮助。接下来我会选择几个比较有代表性的漏洞来谈谈。 ####训练系统上传漏洞,html页面可以上传 如下图所示,可以直接上传html文件。如果在html文件中插入XSS攻击代码,相当于变相创建了一个存储型XSS漏洞,也可以上传钓鱼页面,作为水坑攻击。以下截图是原生虚拟机的效果图。 #### DOM类型XSS漏洞 DOM型XSS由于其特殊的机制,可以绕过所有WAF拦截。 https://www.xxx.com/xxx/include/resources/reload.html#vbscript:msgbox(1) #### 任意文件读取漏洞 这是外网的系统,可以读取任意文件。绕过waf的方法如下: #### 宽字节吃转义字符导致XSS 这里不管你怎么操作,xxs的payload都会落在双引号内,被当成字符串,无法执行。这时候可以尝试用宽字节的方法吃掉相邻的转义字符反斜杠来继续XSS。如下图箭头所示,图片被分割显示,说明xss代码已经被解析并执行。 #### 短信炸弹绕过限制 这个短信炸弹很有趣。它限制一个手机号码在一分钟内可以发送的短信数量。不过,可以通过在手机号码后连续叠加%20(空格的url编码)来绕过。通过Burpsuite的入侵者模块添加N次%20,造成短信轰炸。 ####删除sign参数绕过验证 有时你会遇到以下情况。使用burpsuite抓包后,重放数据包会提示MAC验证失败。这种情况很难处理。此时尝试删除sign字段,就不会提示“MAC验证失败”。 ####使用Frida解决APP参数加密 ####审计JS代码,解决Web传输加密问题 在JS代码的登录事件断点处,发现数据包是通过函数$.jCryption.encrypt(tempS, ***, ***)进行加密的,其中加密密钥为固定值,直接使用$.jCryption.decrypt(***, password);即可解密数据包。解密数据包后,发现多个逻辑漏洞和未授权访问漏洞。 #### 其他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弱加壳:这个是依靠Xpose来hook app,然后使用callMethod方法dump出hook的类,然后反编译。我不会在这里讨论太多细节。我对APP解包研究很少; IPA客户端某秘钥泄露:我使用IDA Pro反编译IPA客户端,查找硬代码,发现敏感信息泄露。 ### 社会工程攻击 如下图所示,以下是社会工程攻击流程。总体来说不是很成功,因为银行对接入网络的规则有严格的限制。由于无法访问网络,针对客户服务系统的XSS 网络钓鱼和针对银行员工的电子邮件网络钓鱼均未得逞。 ####通过微信聊天发送压缩包 通过前期信息收集,结合外部Web应用系统中发现的SQL注入漏洞、云数据库权限等,获取了手机号码列表。通过这些手机号码,一一添加微信聊天,发送带有压缩包的后门。然而,只有个人笔记本电脑才能上网。办公网络上的电脑是绝对不允许连接外网的,也无法登录微信,所以在微信上进行社会工程的想法很快就被叫停了。 #### 电子邮件伪造发件人地址攻击 通过对电子邮件系统的检测,发现该电子邮件系统存在伪造任意源电子邮件地址的漏洞。结合Kali Linux的swaks工具,可以以任何管理员身份发送钓鱼邮件,并且可以绕过反钓鱼邮件网关。在本次红队评估过程中,他们通过冒充银行信息部管理员([email protected])的身份成功发送钓鱼邮件,但最终没有一封上线。后来得知,员工登录邮箱环境被外网屏蔽。 通用命令如下: swaks --to [email protected] -f [email protected] --server mail.xxbank.com.cn -p 2525 -au--ehlo xxbank.com.cn --h-From \'XXX银行信息部\' --header \'Subject:XXX银行信息部\' --body \'您好,我已收到您的邮件。\' ### 物理渗透阶段 得到客户授权后,我和几位同事开车去了总公司,绕了好几趟。看来我不太可能强行进入总部,所以我把注意力集中在wifi热点上。经过检测,发现有两个wifi热点,其中一个包含在主密钥中,可以直接连接到测试区域网段;第二个wifi热点需要密码,在内网文档中找到了,于是两个wifi热点都被下掉了,但是只能在测试区或者可以访问外网的Internet区域访问。 然后附近放了一台平板电脑,跳出了一个socks5代理,后来交给同事,对内网测试区进行横向渗透。不幸的是,测试区域布满了测试系统,网络隔离非常严格。测试区域与生产区域完全隔离,无法连接到总部的办公或业务网络。有时测试区系统上存在一些**业务系统的war包等敏感信息。 内网的横向漏洞比较常见。比如MS17-010漏洞获取Windows系统权限、Zabbix可执行命令、API网关管理员弱口令、移动办公系统的姓名和手机号码信息、商户管理系统的shiro反序列化等,这里不再赘述。 ## 第四部分总结 1. 银行红队考核项目普遍难度很大。其中大多数依赖0day 和代码审核。如今,红队人员基本都是依靠供应链漏洞进入。供应链安全保护也是重中之重。 2、那些无法访问的外网漏洞,将为渗透后阶段提供良好的信息支持。 SQL注入和弱密码可以帮助红队成员了解业务系统用户名的命名方法。内网IP地址泄露可以在事后利用阶段快速定位IP段,因此这些中低危漏洞必须及时修复。 3. 物理渗透Wifi热点的安全问题也很常见。有时安装诸如主密钥之类的软件可能非常有效。 4、也可以尝试获取一些云系统的webshell,因为一些云系统的代码中包含阿里云、腾讯云等的AK/SK,如果遇到的话,可以立即获得一份服务器权限。 5.如果遇到参数加密,如果是手机App,可以试试Frida;如果是Web应用,可以尝试寻找javascript解密功能。 转载自公众号西潭实验室:https://mp.weixin.qq.com/s/qaZLga5ZHAUZnE-UV5A6fA 添加一名作者
创建帐户或登录后发表意见