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

Part1 前言
大家好,我是ABC_123。本期分享一篇ABC_123曾经做的针对一家银行的红队评估项目,持续时间两周,难度非常大,但是最终打到了银行核心业务区,今天就复盘一下全过程,希望红蓝双方都能得到一些启示,这也是“未知攻、焉知防”的道理。
建议大家把公众号“希潭实验室”设为星标,否则可能就看不到啦!因为公众号现在只对常读和星标的公众号才能展示大图推送。操作方法:点击右上角的【...】,然后点击【设为星标】即可。

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

外网打点过程
一般来讲,针对银行项目,如果不用0day是很难打穿的。本次红队评估项目,在外网打点方面,付出的代价是用了2个0day:1、通过日志信息泄露定位到一个供应链系统,代码审计出一个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解密函数。

公众号专注于网络安全技术分享,包括APT事件分析、红队攻防、蓝队分析、渗透测试、代码审计等,每周一篇,99%原创,敬请关注。
Contact me: 0day123abc#gmail.com(replace # with @)
相关文章:
第71篇:某银行外网打点到内网核心区红队评估复盘
Part1 前言 大家好,我是ABC_123。本期分享一篇ABC_123曾经做的针对一家银行的红队评估项目,持续时间两周,难度非常大,但是最终打到了银行核心业务区,今天就复盘一下全过程,希望红蓝双方都能得到一些启示&a…...
网络安全 Day21-数据库知识
数据库知识 1. 什么是数据库2. 为什么需要数据库(分类不清晰)3. 数据库的种类3.1 关系型数据库3.2 NOSQL 数据库3.3 new sql (国产数据库)分布式数据库3.4 云数据库 4. mysql 关系型数据库5. 安装mariadb6. 为mariadb设置密码7. M…...
python测试开发面试常考题:装饰器
目录 简介 应用 第一类对象 装饰器 描述器descriptor 资料获取方法 简介 Python 装饰器是一个可调用的(函数、方法或类),它获得一个函数对象 func_in 作为输入,并返回另一函数对象 func_out。它用于扩展函数、方法或类的行为。 装饰器模式通常用…...
语音同声翻译软件让你不再为语言障碍困扰
从前有一个叫黄俊的小伙子,他有一个大梦想:环游世界!但是,他只会说中文,而去到外国又怎么跟当地人交流呢?为了实现自己的梦想,黄俊开始了寻找能帮他解决问题的捷径。这时,方娜向他介…...
又有一个手艺人震惊了B站用户
飞瓜数据(B站版)【热门视频榜】周榜显示,霸占全站视频流量第一的是来自UP主爱捣鼓的邢志磊发布的作品《我花了半年时间给猫做了个房子》。 视频在一周时间内新增播放1232.2万,新增点赞139.4万。 根据视频详细数据显示,…...
HDFS的设计目标和重要特性
HDFS的设计目标和重要特性 设计目标HDFS重要特性主从架构分块存储机制副本机制namespace元数据管理数据块存储 设计目标 硬件故障(Hardware Failure)是常态,HDFS可能有成百上千的服务器组成,每一个组件都有可能出现故障。因此古见检测和自动快速恢复的H…...
【JMeter】JMeter添加插件
目录 一、前言 二、插件管理器 三、推荐插件 1.Custom Thread Groups (1)Ultmate Thread Group (2)Stepping Thread Group 2.3 Basic Graph 资料获取方法 一、前言 在我们的工作中,我们可以利用一些插件来帮…...
测牛学堂:车载测试面试总结之语音助手相关
车载语音助手的工作原理? 语音助手的工作原理总结下来可以分为4个步骤: 1 通过麦克风采集驾驶员的语音指令 2将语音信号转换为数字信号 3过语音识别技术将语音指令转换为计算机可以理解的指令 4 通过语音合成技术将计算机的回应转换为语音输出 车载…...
Android开发之Fragment动态添加与管理
文章目录 主界面布局资源两个工具Fragment主程序 主界面布局资源 在activity_main.xml中,声明两个按钮备用,再加入一个帧布局,待会儿用来展示Fragment。 <?xml version"1.0" encoding"utf-8"?> <LinearLayo…...
Python爬虫+数据可视化:分析唯品会商品数据
目录 前言数据来源分析1. 明确需求2. 抓包分析:通过浏览器自带工具: 开发者工具 代码实现步骤: 发送请求 -> 获取数据 -> 解析数据 -> 保存数据发送请求解析数据保存数据 数据可视化先读取数据泳衣商品性别占比商品品牌分布占比各大品牌商品售价平均价格各…...
el-tree数据渲染超出省略
el-tree数据渲染超出省略 问题 <el-tree:data"deptOptions":props"defaultProps":expand-on-click-node"false":filter-node-method"filterNode"ref"tree"default-expand-allhighlight-currentnode-click"handleNo…...
若依vue -【 44】
44 服务监控讲解 1 需求 显示CPU、内存、服务器信息、Java虚拟机信息、磁盘状态的信息 2 前端 RuoYi-Vue\ruoyi-ui\src\views\monitor\server\index.vue <script> import { getServer } from "/api/monitor/server";export default {name: "Server&quo…...
React 基础篇(一)
💻 React 基础篇(一)🏠专栏:React 👀个人主页:繁星学编程🍁 🧑个人简介:一个不断提高自我的平凡人🚀 🔊分享方向:目前主攻…...
Bean 的作用域和生命周期
目录 什么是 Bean 的作用域 ?Bean 的六种作用域Spring 的执行流程Bean 的生命周期 什么是 Bean 的作用域 ? Bean 的作⽤域是指 Bean 在 Spring 整个框架中的某种⾏为模式,⽐如 singleton 单例作⽤域,就表示 Bean 在整个 Spring 中只有⼀份,…...
STP和MTP(第二十二课)
2、如何实现 1)在MSTP网络种,引入了域的概念,称为MST域 2)每一个MST域中包含一个或多个“生成树”称为“实例” 3)每个“实例生成树”都可以绑定vlan,实现vlan数据流的负载分担/负载均衡 4)默认情况下,所有的vlan都属于“实例树0:即:instance 0” 5)不同的“实例…...
Java-WebSocket
请点击下面工程名称,跳转到代码的仓库页面,将工程 下载下来 Demo Code 里有详细的注释 TestWebSocket...
elementui的el-date-picker选择日期范围第二个不能早于第一个
选择日期范围第二个不能早于第一个 <el-form-item label"预计施工时间:" required><el-form:model"form":rules"constructionDateRules"ref"constructionRef"inline:hide-required-asterisk"false"><el-form…...
【NLP】无服务器问答系统
一、说明 在NLP的眼见的应用,就是在“ 当你在谷歌上提出一个问题并立即得到答案时会发生什么?例如,如果我们在谷歌搜索中询问谁是美国总统,我们会得到以下回答:Joe Biden;这是一个搜索问题,同时…...
Dubbo
Dubbo 简介Dubbo的快速入门Dubbo的基本架构安装DubboAdmin入门案例Dubbo的最佳实践 Dubbo的高级特性启动检查多版本超时与重试负载均衡SpringCloud整合Dubbo案例 简介 Dubbo是阿里巴巴公司开源的一个高性能、轻量级的Java RPC框架。 致力于提高性能和透明化的RPC远程服务调用方…...
Java设计模式之策略(Strategy)模式
策略(Strategy)设计模式定义了一系列算法,将它们封装起来,并且可以相互替换使用,从而使得算法可以独立于使用它的客户而变化。 什么是策略模式 策略(Strategy)设计模式是一种行为型设计模式&a…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
