在经历了多年的攻防对抗之后,大量目标单位逐渐认识到安全防护的重要性。他们已采取措施收敛资产暴露面,并部署各种安全设备。但安全防护具有明显的短板效应,一处出现短板,整个防护体系就可能瞬间崩溃。而目标单位的供应链安全往往是这些薄弱点的集中体现。这些供应链不仅暴露在外,而且由于复杂的关系,使得对它们的监控和管理变得更为困难。因此,攻击团队通常会选择从供应链着手,以一种迂回的方式绕过目标单位强大的防御体系。
通过在搜索引擎上搜索“系统名称 目标单位”,可以找到相关的供应商信息。

找到相关的供应商信息后,通过对供应商进行攻击,可以获取目标单位的数据及权限。

1、heapdump泄露
通过对供应商资产进行渗透,发现某资产admin目录下存在heapdump文件泄露。

对于heapdump的利用方式这里就不赘述,有许多文章对其原理和利用都进行了深入的研究。特定情况下还可以直接进行RCE,这里泄露了大量敏感信息,密码信息加入密码本。

登录MinIO,发现大量所属目标单位的敏感信息,也存在其它单位的敏感信息。

登录Nacos,获取大量配置文件,密码信息加入密码本。

登录OSS,发现大量所属目标单位的敏感信息。

2、微信小程序接口未授权
想要对微信小程序进行接口测试,首先需要获取其前端代码进行分析,以发现潜在的未授权访问或信息泄露接口。
2.1、 微信小程序解包
想要对微信小程序进行解包操作,首先是要获取目标小程序的wxapkg文件。wxapkg文件是微信小程序的安装包文件格式,用于将小程序的代码、资源以及其他必要的文件打包成一个单独的文件。但是Windows环境下的wxapkg文件中的js代码和资源文件一般是被加密的,需要使用专门设计的解密工具先进行解密,再进行解包操作,获取文件内容。iOS和Android平台下可直接进行解包操作。
2.1.1、 获取wxapkg文件
在获取wxapkg文件时,最好将文件夹中的文件先删除,然后再重新打开小程序,防止其它文件干扰。
iOS wxapkg 文件存放路径为:
/var/mobile/Containers/Data/Application/{系统UUID}/Library/WechatPrivate/{user哈希值}/WeApp/LocalCache/release/{小程序的AppID}
Android wxapkg 文件存放路径为:
/data/data/com.tencent.mm/MicroMsg/{user哈希值}/appbrand/pkg/
Windows wxapkg 文件存放路径为:
C:\Users\{系统用户名}\Documents\WeChat Files\Applet\{小程序的AppID}\

2.1.2、 解密操作
下面两个github项目都可以进行解密操作:
解密原理如下:

成功解密。

2.1.3、 解包操作
国光大佬提供的工具下载链接:https://sqlsec.lanzoub.com/i1NEP0mx694f。
解包命令:
node wuWxapkg.js 1.wxapkg

对小程序进行解包操作,获取到前端JS代码后,从中进行提取获得接口。

2.2、 接口测试与数据泄露
直接访问从小程序代码中提取到的目标接口,前端页面虽然显示初始化失败。

但在流量包中已成功获取数据,其中包含近千万条目标单位的敏感信息。

3、Web程序越权
通过上述收集到的密码,成功爆破出一个账号,但是此账号为最低权限,无任何操作权限。点击搜索组织架构时,无任何返回信息。

抓包将 parentId 和 orgLevel 参数去除,再发送请求,即可越权看到全员组织架构。

点击修改个人资料,然后将从数据包或页面中获取到的 roleIdList 添加进去,即可获取系统全部权限。


权限提升后,成功获取到系统内的大量敏感数据。

4、公众号信息泄露
在解包后的小程序JS文件中,发现泄露了明文密码。该密码可用于撞库登录目标单位的微信公众号后台。

5、云原生环境下的安全问题
容器化部署和微服务架构为应用程序提供了更好的灵活性和可伸缩性,但也引入了新的攻击面。许多应用开发商在追求容器化和云原生架构的便利性时,安全性常常被忽视,这就直接导致了云原生环境的脆弱性。
5.1、Harbor 镜像仓库未授权访问
Harbor是一个开源的容器镜像仓库管理器。在某些配置下,Harbor允许任意用户直接拉取标记为“公开(public)”的项目下的镜像,这可能造成敏感镜像的泄露。

攻击者可以直接拉取下载这些公开的镜像文件,甚至可以编写脚本进行批量下载分析。

5.2、 镜像分析发现疑似后门
通过下载的镜像文件可以提取出Jar包,进而获取配置文件等敏感信息。对Jar包的class文件进行反编译和代码审计后,发现了一个可疑的接口。该接口仅需用户名即可登录系统后台,无需密码验证。结合管理员权限和文件上传功能,可进一步获取服务器权限。

通过镜像中泄露的配置文件,可以成功连接到数据库等核心服务。

5.3、 Docker相关未授权访问漏洞
5.3.1、 Docker Registry API 未授权访问
如果Docker镜像仓库的Registry API未正确设置访问控制,攻击者可直接查看并下载仓库中的所有镜像。
访问 /v2/_catalog 接口即可查看全部仓库内容。

利用开源工具(如 docker_v2_catalog)可直接批量下载镜像进行分析。
5.3.2、 Docker Remote API 未授权访问
当Docker Daemon使用 -H 0.0.0.0:2375 参数启动时,会在2375端口开放一个无需身份验证的管理接口。攻击者可以直接连接到该Daemon,执行Docker命令操作容器,配合目录挂载可实现容器逃逸,获取宿主机权限。
查看目标容器列表的命令:
docker -H tcp://<target>:2375 ps -a

利用容器逃逸获取宿主机权限的示例命令:
# 挂载宿主机的根目录到容器内的mnt目录
docker -H tcp://<target>:2375 run -it -v /:/mnt nginx:latest /bin/bash
# 在容器内向宿主机的定时任务写入反弹shell命令
echo '反弹shell命令' >> /mnt/var/spool/cron/crontabs/root
5.4、 Nacos配置中心安全隐患
Nacos是一个开源的动态服务发现、配置管理和服务管理平台。作为一个广泛使用的开源工具,其历史漏洞也较多。
常见安全问题:
- 未授权访问:
/nacos/v1/auth/users?pageNo=1&pageSize=1 可直接查看用户列表。
- 任意用户添加: POST
/nacos/v1/auth/users,参数 username=&password=。
- 任意用户密码修改:
curl -X PUT 'http://127.0.0.1:8848/nacos/v1/auth/users?accessToken=' -H 'User-Agent:Nacos-Server' -d 'username=test1&newPassword=test2'。
- 弱口令: 默认口令
nacos/nacos。
在一次实战中,通过弱口令爆破进入Nacos后台。

在后台发现了大量应用的配置文件,但其中的敏感信息(如数据库密码)均被加密处理。


5.4.1、 Jasypt加密与解密
Spring配置文件中常使用Jasypt对敏感信息进行加密,加密后的内容用 ENC(..) 括起来。
示例配置:
spring:
datasource:
username: your-username
password: ENC(encrypted-password)
解密的密钥(jasypt.encryptor.password)同样需要存放在配置文件或代码中,一旦泄露,加密即告失效。
# application.yml
jasypt:
encryptor:
password: 加密密钥
algorithm: 加密方式
在本次渗透中,幸运地在Nacos的某个配置文件中找到了Jasypt的加密密钥。

利用该密钥,成功解密了所有配置文件中的敏感信息,包括OSS对象存储的访问密钥、数据库密码,甚至小程序后台的Token。
成功连接OSS对象存储:

成功连接业务数据库:

获取小程序Token,可接管小程序后台:

配置文件中的达梦数据库连接信息(达梦数据库是国产化关系型数据库):

6、常见Nday漏洞的利用
在实战中,除了上述信息搜集和供应链突破,对一些已知的通用型漏洞(Nday)进行测试,往往也能取得奇效。
6.1、 用友NC jsInvoke RCE漏洞
用友NC系统存在一个可通过Java反射和LDAP注入实现远程代码执行的漏洞(jsInvoke RCE)。利用公开工具可以快速检测和利用。

命令执行成功后,发现目标系统存在杀毒软件,无法直接上传可执行文件。
6.1.1、 利用certutil绕过文件上传检测
certutil 是Windows系统自带的证书管理工具,其 -decode 功能可用于解码Base64文件。我们可以利用这一特性,先将木马进行Base64编码,上传到服务器后再用 certutil 解码还原,从而绕过杀软对可执行文件的检测。
首先将免杀马的Base64编码写入文件:
echo Base64编码后的免杀马 > myfile.txt

然后使用 certutil 进行解码,还原出可执行的Webshell文件:
certutil -decode myfile.txt shell.jsp

最终成功上传Webshell并获取服务器权限。

6.2、 若依后台管理系统漏洞
在针对一个若依系统的二开版本进行测试时,发现其Shiro漏洞已被修复。但通过信息搜集,找到了一个前台信息泄露接口,可以获取系统用户清单。

利用获取到的用户名和常见的弱口令(如123456)进行爆破,成功进入后台,但仅为普通用户权限。

再次对系统中的“公告发布人员”等角色进行密码猜解,成功登录一个具有“系统管理”菜单权限的账号。利用该权限,直接添加新的管理员用户并赋予最高权限。

新增的管理员账号登录后,发现系统存在“定时任务”功能。该功能允许直接执行Java代码,从而实现了命令执行,获取服务器权限。

6.3、 Shiro反序列化漏洞
在一次测试中,发现目标路径访问时会先跳转到统一认证登录页面,这导致该路径可能被忽视。但经过测试,该路径本身存在Apache Shiro框架的反序列化漏洞。

使用Shiro漏洞检测工具进行扫描,发现其使用了默认的加密密钥(kPH+bIxk5D2deZIlxcM=0x66)。利用该密钥,直接构造反序列化利用链,成功在目标服务器上执行命令,获取权限。

总结
本次外网突破实战涵盖了从供应链切入、云原生环境漏洞利用到常见Nday漏洞攻击的多种路径。它清晰地展示了现代企业安全防御的复杂性:即使核心系统防护严密,供应链、合作伙伴系统、新型技术栈(如云原生)中的短板也可能成为整个防御体系的突破口。对于防御方而言,构建纵深、立体的安全防护体系,并定期对自身及供应链资产进行全面的安全评估与渗透测试至关重要。
如果你对渗透测试的实战技术和案例感兴趣,欢迎访问云栈社区 的安全板块,与更多安全爱好者交流探讨。