找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3692

积分

0

好友

507

主题
发表于 2026-1-15 00:53:25 | 查看: 56| 回复: 0

是的,你没听错,整个利用过程可能只需要一分钟就能拿到shell。

Shiro反序列化漏洞利用工具界面截图

这明显是一个Shiro反序列化漏洞,但使用常规字典爆破密钥并未成功。

不过,目标站点开启了Spring Boot Actuator端点,可以尝试手动添加路径进行访问。

Spring Boot Actuator端点JSON列表

通过访问/actuator/heapdump接口下载堆转储文件,然后进行解密分析,就能找到隐藏在其中的Shiro密钥。

Heapdump中解密出的Shiro密钥配置代码

你以为文章就结束了吗?不,这才刚刚开始。上面的案例其实是一个引子,它来自另一个项目中的真实漏洞。

前阵子我投入了一个非常消耗精力的项目,在长达一个多月的时间里,与380个医院站点进行“对抗”。整个过程充满了挑战,一边要应对WAF的拦截,一边还要躲避系统的自动封禁,全程都在反复切换网络连接,考验着手速和反应能力。

将这两个项目对比后,我发现除了医院(以及金融等)这类防护相对较强的目标,其他很多普通项目在安全测试面前,防护等级要低得多,测试起来会轻松不少。

实际上,医院站点的漏洞也并不都是很高深的技术,更多时候是捡漏那些尚未被他人发现的OWASP Top 10漏洞,以及运用一些比较巧妙的思路。在安全/渗透/逆向领域,这类实战经验尤为宝贵。

其中占比较高的漏洞类型是反射型XSS、存储型XSS和越权漏洞。

反射型XSS的绕过技巧

对于某些配置的WAF,反射型XSS可以通过参数污染的方式进行绕过。

比如攻击载荷key=<script>alert(1)</script>,直接提交可能会被拦截。

这时可以尝试增加大量无关参数,例如a=12&b=232&c=23&d=2312...。十个参数不够就加二十个,一直加到绕过为止。

或者观察WAF拦截了哪些关键词。像promptalertconfirm这类常见弹窗函数如果都被拦截,可以尝试使用console.log,它的拦截率通常会低一些。

如果这些方法都无效,就只能尝试其他HTML标签和攻击思路了,例如加载外部JS、构造跳转链接,或者利用DOM操作修改页面元素等。毕竟在渗透测试中,除了获取Shell,这些同样都是有效的安全漏洞。

一个典型的参数污染载荷示例如下:

AppLock=zb4w3&_VIEWSTATEENCRYPTED=uy2a5&allowfiles=xk1h9&c=hfzn2&callback=p17u0&cmdButtons=trwg1&div=voia2&email=h6hq5&enddate=d7157&g_PageMainMenuID=x8l74&h_packageMode=zhm34&h_zlk=avsp2&jpg=dm0g6&l=d4fm5&mode=</script><meta http-equiv="refresh" content="3;url=https://www.baidu.com">oImg=c5830&oTDFlag=bzfx7&r=noz70&segs=pf9p6&textarea=flgl2

案例一
某个站点防护非常严密,最终通过构造重定向载荷成功验证漏洞。
通过参数污染实现重定向的浏览器截图

案例二
这是一个前端 & 移动端的小程序,在修改用户名信息时存在漏洞,但受到了WAF和字符长度限制的双重防护,弹窗被拦截。
最终通过输入"><svg onload=console.log(1)>,成功闭合标签并执行代码。
存在XSS漏洞的JSON响应数据
控制台成功执行JS代码

案例三
某医院官网。与案例一类似,使用参数污染,起初alert弹窗被拦截,但后来发现WAF只拦截了alertprompt可以正常弹窗。
浏览器弹窗显示数字1
浏览器对话框显示数字1

存储型XSS的利用

存储型XSS通常需要寻找各类文件上传接口,构造恶意文件。直接上传JSP等动态脚本文件基本会失败,可以尝试SVG、XML、HTML或利用PDF的XSS。

案例一
PDF Viewer扩展弹窗

案例二
XML文件解析弹窗

案例三
XML文件内容显示弹窗

越权漏洞测试

越权漏洞在医院的小程序中较为常见。

如果参数是明文ID,通常可以直接进行遍历测试。
如果ID是UUID或SHA256等哈希值,由于账号实名信息固定,可以尝试使用同事的账号ID进行替换,测试两个账号间的数据能否互相访问。

案例一:遍历ID
通过遍历参数,可以越权查看到其他患者的敏感信息。
越权查看到的个人信息页面
页面源代码中暴露的个人信息

案例二:替换friendId
替换请求中的friendId等参数,实现越权操作。
越权请求返回的JSON数据
另一个越权请求的响应数据

很多医院都有住院部、食堂等配套小程序,登录或查询通常需要住院人姓名、身份证号或手机号的组合。
暴力破解通常不可行,但有时能在社交平台(如抖音)上找到安全意识薄弱的人发布的病例信息,通过搜索对应医院名称可能有所收获。虽然这种方法涉及伦理问题,但确实暴露了信息泄露的风险。
网络请求与响应数据包

其他常见漏洞

短信轰炸漏洞:很多小程序的数据加解密算法并不复杂,常见的是AES CBC 128位加密。反编译小程序后,直接在JS代码中搜索aesdecryptencrypt等关键词,很可能找到密钥。找到密钥后,可以解密出手机号等参数,通过修改参数(如添加逗号、空格、分号),或直接进行并发请求,来测试短信轰炸漏洞。
HTTP请求头信息
短信轰炸测试结果

支付逻辑漏洞:在众测(SRC)中常被提及的支付逻辑漏洞,这次也遇到了。在一个积分兑换奖品的功能中,抓包修改积分为0后提交,即可成功兑换,实现“零元购”。
修改积分值为0的请求包
兑换成功后的订单页面

以上便是近期在一些项目,特别是医疗行业渗透测试中的一些经验复盘与总结。从HTML/CSS/JS层面的前端绕过,到后端的逻辑缺陷,安全测试往往是一场关于细节和耐心的较量。希望这些实战案例能为你带来一些启发。更多技术讨论,欢迎访问云栈社区进行交流。




上一篇:Linux运维实战:3个工具方法快速检测不良内存条
下一篇:RAG检索模型选型指南:Bi-Encoder、Cross-Encoder、SPLADE与ColBERT技术深度对比
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-4 22:37 , Processed in 0.385686 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表