SSRF 编码与解析绕过题总结
记录通过非标准 localhost 表示和双重 URL 编码绕过 SSRF 黑名单的分析思路。
一、题目核心
目标是通过 SSRF 功能访问:
http://localhost/admin
但 /admin 存在仅允许本机访问的限制,因此需要让服务器自己去请求 localhost/admin。
二、绕过思路
localhost 和 admin 均被加入了黑名单。
1. 绕过 localhost
127.1
某些解析器会把它解析为 127.0.0.1。
2. 绕过 admin
使用双重 URL 编码,例如:
admin → %2561%2564%256d%2569%256e
第一层解码得到:
%61%64%6d%69%6e
后续再次解码后才得到:
admin
三、核心问题
过滤阶段和最终执行阶段的解析结果不一致:过滤器看到的可能是编码后的字符串,而真正发起请求前,URL 组件又进行了再次解码。
四、思维发散
以后遇到以下类型的题目,都可以思考:过滤器看到的内容,和最终执行或解析的内容是不是同一个东西?
- SSRF
- XSS
- SQL 注入
- 路径穿越
- 文件包含
- URL 跳转
一句话笔记
SSRF 绕过常利用“解析差异”:通过双重 URL 编码改变不同阶段看到的内容,或通过 127.1 等非标准 IP 表示绕过字符串/IP 黑名单,最终让后端解析到真正的 127.0.0.1。
复盘提示
分析这类题目时,建议分别记录输入经过的每一层:黑名单检查、URL 解码、主机名解析和最终 HTTP 请求。只有确认每一层的处理顺序,才能判断绕过是否成立。