[漏洞利用] Java Web 漏洞利用链挖掘思路,组合漏洞拿下服务器权限

68 0
Honkers 昨天 23:55 | 显示全部楼层 |阅读模式

Java Web 漏洞利用链挖掘思路,组合漏洞拿下服务器权限

摘要

很多新手白帽习惯于单点漏洞挖掘,挖到 SQL 注入、文件上传就提交 SRC。但单点漏洞往往只能实现读取数据,很难拿下服务器权限。真正的高阶挖洞思路,是寻找多个低危 / 中危漏洞串联形成利用链。本文从漏洞链的核心思想出发,梳理 Java Web 环境下常见的漏洞组合方式、挖掘思路、寻找利用环节的技巧,结合实战场景讲解链路构造,同时区分靶场与真实线上 SRC 环境差异。本文仅用于授权靶场安全学习,严禁未授权对线上业务进行渗透测试。

免责声明:本文内容仅用于网络安全学习、漏洞原理研究,所有操作均在本地自建靶场环境完成。未经目标系统所有者书面授权,对网站、服务器实施渗透测试属于违法行为,一切法律风险由操作者自行承担。

0x00 前言

单点漏洞能力是有限的:

  • SQL 注入:大多只能读取数据库数据;就算拿到管理员账号密码,若无后台入口 / 上传点,到此为止。
  • 文件上传:如果没有访问路径、上传目录无执行权限,仅能上传文件,无法执行代码。
  • 目录穿越:只能读取配置文件,不能直接执行命令。

漏洞利用链本质:多个独立漏洞,各司其职,互相弥补短板,从信息收集逐步推进,最终达成目标(获取 Web 权限 / 服务器权限)。

完整链路通用模型:
信息收集漏洞 → 身份获取漏洞 → 代码执行入口漏洞 → 权限提升 → 服务器权限

0x01 Java Web 中各个环节可用的漏洞组件

先拆解一条利用链需要哪些 “零件”,挖洞时主动寻找对应的漏洞点。

1.1 信息收集类(铺垫,拿到关键凭证 / 配置)

作用:获取账号密码、数据库配置、源码、密钥等信息,为下一步攻击铺路。

  • SQL 注入:查询管理员账号、密码哈希、业务密钥
  • 目录遍历 / 任意文件读取:读取application.properties、application.yml、mybatis 配置、jar 包源码、数据库账号密码
  • 源码泄露 /git 泄露:拿到完整源码,审计寻找更多漏洞
  • 未授权访问:直接访问后台页面,暴露后台功能

这个阶段目标:拿到登录凭证,或者找到下一步攻击入口。

1.2 身份突破类(拿到合法身份,进入后台)

作用:利用上一步拿到的信息登录后台,进入存在高危功能的页面。

  • 后台弱口令
  • 密码重置漏洞
  • Cookie 伪造 / JWT 伪造
  • 越权漏洞,普通用户越权访问管理员接口

很多高危功能(文件上传、系统管理)仅管理员可访问,没有身份就无法触达。

1.3 代码执行入口(核心环节,拿到 WebShell)

拿到管理员权限后,寻找能够写入并执行代码的功能:

  • 文件上传漏洞(最常用):后台头像、附件上传、导入功能,未校验后缀,上传 JSP Webshell
  • 表达式注入(SpEL / OGNL):直接远程代码执行
  • 模板注入:FreeMarker / Thymeleaf 注入
  • 反序列化漏洞:Java 原生反序列化、Fastjson、Jackson 漏洞,直接 RCE

这一步是分水岭:成功拿到 WebShell,获得 Web 应用运行用户权限。

1.4 本地提权(从 Web 权限到服务器系统权限)

拿到 Web 权限不等于 root,Web 容器(Tomcat/Jetty)一般是低权限用户运行。需要继续寻找本地提权入口:

  • 内核漏洞提权(CVE 系列老旧内核)
  • 错误配置 SUID/SGID 文件
  • 危险定时任务(crontab,脚本可被修改)
  • sudo 配置不当,允许 tomcat 用户执行高权限命令
  • 环境变量、动态链接库劫持

线上生产环境,这一步成功率极低。云服务器、安全基线加固后,几乎很难提权。

0x02 Java Web 经典漏洞利用链案例

案例 1:SQL 注入 + 后台文件上传(最经典,靶场高频)

链路:SQL 注入脱库 → 获取管理员账号密码 → 登录后台 → 后台文件上传漏洞上传 JSP → WebShell 拿到 Web 权限

  1. 审计 / 测试发现接口存在 SQL 注入,查询t_admin表拿到管理员账号与 MD5 密码;
  2. 解密密码,访问后台登录页面,登录成功;
  3. 在后台图片上传功能测试,仅前端校验后缀,后端无校验;
  4. 上传 jsp 一句话木马,访问上传后的地址执行代码;
  5. 蚁剑连接,获取网站目录、读取配置文件。

限制:如果上传目录配置readonly或者禁用脚本执行,链路直接断裂。

案例 2:任意文件读取 + 源码审计 + Fastjson 反序列化 RCE

链路:任意文件读取 → 读取 jar 包 / 配置文件 → 发现 Fastjson 版本存在漏洞 → 构造反序列化 Payload 实现 RCE

  1. 存在任意文件读取漏洞,读取WEB-INF/lib下的 jar 包,或者读取 pom.xml;
  2. 识别 Fastjson 版本为存在漏洞的版本;
  3. 寻找接收 JSON 的接口,接口直接使用 Fastjson 解析用户输入;
  4. 构造恶意 JSON,触发反序列化,直接执行系统命令,拿到 Web 权限。

亮点:不需要登录后台,信息收集 + RCE 一步到位,属于高质量利用链。

案例 3:目录遍历读取配置 + JWT 密钥泄露 + JWT 伪造 + 后台文件上传

链路:目录遍历读取 yml 配置文件 → 获取 JWT 签名密钥 → 伪造管理员 JWT 令牌 → 未授权访问后台上传接口 → 上传 webshell

  1. 目录穿越读取application.yml,拿到 JWT 的 secret 密钥;
  2. 自己生成管理员身份的 JWT;
  3. 请求后台上传接口,带上伪造 JWT,绕过身份校验;
  4. 上传 JSP,拿到 Web 权限。

这种链路在 SRC 中非常吃香,逻辑完整,厂商很难简单忽略。

案例 4:Git 源码泄露 + 代码审计发现 SpEL 注入

链路:git 泄露拿到完整源码 → 审计定位可控参数直接传入 SpEL 表达式解析 → 远程代码执行

  1. 访问/.git泄露源码;
  2. 下载源码本地审计,找到接口参数直接带入 SpEL;
  3. 构造表达式 Payload,直接执行系统命令。

0x03 漏洞链挖掘实战思路(挖洞时的思考顺序)

3.1 第一步:信息收集,尽可能多拿 “素材”

访问站点先做基础信息收集:

  1. 目录扫描:找备份文件、git、svn、配置文件;
  2. 接口探测:扫描 API 接口、后台管理地址;
  3. 版本识别:Tomcat、Spring、Fastjson、Thymeleaf 版本;
  4. 测试基础漏洞:SQL 注入、文件读取、未授权。

目标:看能不能拿到源码、配置、账号密码、密钥。

3.2 第二步:评估单点漏洞的边界,思考下一步能做什么

挖到一个漏洞之后,不要立刻提交,自问 3 个问题:

  1. 这个漏洞我拿到了什么?账号?源码?密钥?文件读取能力?
  2. 拿到这些东西之后,系统还有哪些功能可以被利用?
  3. 是否存在接口 / 功能需要管理员身份,我能不能伪造 / 拿到身份?

核心思维:不要停止在第一个漏洞,思考这个漏洞能为下一次攻击提供什么弹药。

3.3 第三步:寻找衔接点,串联整条链路

常见衔接问题:

  • 拿到管理员账号,但找不到后台登录地址?继续目录扫描;
  • 有后台登录,但后台没有上传点?寻找其他 RCE 类接口(JSON 解析、表达式解析);
  • 能读配置文件,但没有代码执行点?尝试寻找依赖组件漏洞。

一条链路只要中间任意一环缺失,整条链路失效。

0x04 靶场 vs 真实 SRC 线上环境的巨大差异

很多新手在靶场顺风顺水,到 SRC 线上环境屡屡碰壁,主要原因:

  1. 靶场是刻意设计的完美链路:注入一定有后台,后台一定有上传,上传目录可执行,内核老旧方便提权;
  2. 线上 WAF:拦截注入、反序列化、webshell 上传 Payload;
  3. 服务器权限加固:Tomcat 低权限运行,上传目录配置不允许执行脚本;
  4. 依赖版本及时更新:Fastjson、Spring 等组件已经打上补丁;
  5. 权限隔离:数据库账号限制,即使 SQL 注入也无法读取information_schema;
  6. 文件后缀强校验:上传功能使用白名单,图片重命名,删除脚本后缀。

线上 SRC,能成功构造完整利用链属于高质量漏洞,大部分场景只能做到链路的前半段(脱库、越权),无法拿到 Webshell。

0x05 挖掘利用链的避坑要点

  1. 不要强行编造链路。如果第二步的条件不存在,不能假设 “假如有上传点就能拿 shell”,链路必须可验证。SRC 不认可理论上存在的利用链。
  2. 区分 “本地靶场可实现” 和 “线上真实可利用”。提交报告时如实说明链路限制。
  3. 不要忽略权限、环境限制。比如拿到 Web 权限,但服务器是云容器,无法提权,不能写报告说可拿下服务器权限。
  4. 一条链路里,每一环漏洞都要可独立复现,不能跳过关键步骤。
  5. 利用链提交 SRC 时,需要完整证据:每一步请求包、响应包,证明每一环都真实生效。

0x06 漏洞利用链的修复思路(报告里可直接复制)

  1. 信息泄露防护:禁止 git、备份文件、配置文件对外访问;敏感配置(密钥、数据库密码)加密存放。
  2. 防注入:SQL 使用预编译;表达式、JSON 解析,禁止直接带入用户可控输入。
  3. 身份认证:JWT 密钥妥善保管,增加 IP、设备绑定;后台增加强密码、登录失败锁定、IP 白名单。
  4. 文件上传防护:白名单校验后缀,重命名文件,上传目录禁止脚本执行权限。
  5. 依赖安全:定期升级 Spring、Fastjson 等第三方组件,关闭危险特性。
  6. 服务器基线:最小权限运行 Web 容器,定期更新内核,清理危险 SUID、定时任务。

0x07 总结

  1. 漏洞利用链核心:多个独立漏洞互相配合,一步步扩大权限,单点漏洞能力有限。
  2. Java Web 经典链路:注入脱库 + 后台上传、文件读 + 组件 RCE、密钥泄露 + JWT 伪造 + 上传。
  3. 挖掘思路:信息收集 → 获取凭证 / 配置 → 寻找代码执行入口 → 提权(可选)。
  4. 靶场环境链路容易复现,真实线上环境限制多,链路很容易中断。
  5. 提交 SRC 的利用链漏洞,必须提供每一步可复现证据,不能凭空假设后续环节。

最后

关于网络安全技术储备

网络安全是当今信息时代中非常重要的一环。无论是找工作还是感兴趣(黑客),都是未来职业选择中上上之选,为了保护自己的网络安全,学习网络安全知识是必不可少的。

如果你是准备学习网络安全(黑客)或者正在学习,下面这些你应该能用得上:

①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

一、网络安全(黑客)学习路线

网络安全(黑客)学习路线,形成网络安全领域所有的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、网络安全教程视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

三、网络安全CTF实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这里带来的是CTF&SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

四、网络安全面试题

最后,我们所有的作为都是为就业服务的,所以关键的临门一脚就是咱们的面试题内容,所以面试题板块是咱们不可或缺的部分,这里我给大家准备的就是我在面试期间准备的资料。

网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。

机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!

这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 5182
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行天