SuperAPI AI 工具集

file-upload-and-ssrf

安全与审计

查看项目

更新于 10-16 01:17

技能介绍

用途:这是一个安全测试技能,用于在授权范围内测试三类服务端输入处理问题——不可信文件上传、不可信 URL(SSRF)、不可信序列化对象。核心原则是:凡是服务器获取、存储并返回、或重建攻击者数据的地方,都要追问还能被指向什么或被构造成什么。

适用与跳过:当应用接受文件上传、抓取用户提供的 URL、或反序列化输入时适用,三类需分别独立测试。某个功能不存在时该部分不适用,例如无上传则跳过上传部分,但仍测试 SSRF 与反序列化。若均不存在,需报告哪几类缺失,只测试实际存在的部分。

授权限制:仅限自有或授权的非生产环境。SSRF 可能触及真实内网与云凭证,测试目标应限制在自己环境内,使用无害的 canary,不得越过范围横向移动。

文件上传测试点:类型/扩展名绕过(如 shell.php.jpg、双扩展名、空字节、大小写、.phtml/.svg/.htaccess);Content-Type 伪造(真实图片字节加脚本、头与实际不符);多语言文件(同时是合法图片和脚本,如 GIF/PHP);路径穿越(用文件名控制落地位置);落地目录是否可被 Web 访问且可执行;解析器攻击(恶意 SVG 的 XXE/XSS、Office/ZIP 的 zip-slip 与 XXE、图像库 CVE);大小与速率限制、解压炸弹。关键链路是上传→可达可执行路径→执行;若文件存放在 webroot 之外、随机命名且不可执行,多数上传缺陷会失效。

SSRF 测试点:常见入口包括 URL 预览/解链、webhook、从 URL 导入、PDF/截图/图片抓取、SSO 元数据、file:// 处理器、服务端 HTTP 客户端。验证目标先用无害的出站协作主机,再测 127.0.0.1/内网,最后测云元数据地址(AWS 的 169.254.169.254/latest/meta-data/、GCP 的 metadata.google.internal)。绕过方式包括替代 IP 编码、[::1]、DNS 重绑定、重定向、@ 技巧、白名单解析缺陷。SSRF 到云元数据再到 IAM 凭证是重点演示链路。

不安全反序列化:常见 sink 包括 pickle.loads、yaml.load、Java readObject、PHP unserialize、.NET BinaryFormatter、Node node-serialize 处理不可信输入。检测方法是寻找 cookie/参数/请求体中的序列化数据块,篡改后观察服务端行为变化;用无害 gadget(出站 ping)确认,不要运行破坏性 gadget 链。

产出:每个发现需给出 sink、payload、证据(文件在何处执行、出站命中、对象被重建)以及可达影响(RCE、内网访问、云凭证),通常为高危至严重。后续常作为漏洞利用链的立足点/跳板,通过主动渗透测试复现,并通过安全加固修复(存于 webroot 外、校验内容、随机命名;URL 白名单、封禁内网段、启用 IMDSv2;使用安全反序列化格式)。常见错误:只查客户端扩展名而不在服务端校验内容;未测试重定向、DNS 重绑定和 IP 编码绕过就断言无 SSRF;对真实内网/生产测试 SSRF;把反序列化当成理论问题。更多 payload 与安全确认方式见参考文件 references/upload-ssrf-recipes.md。