【juice-shop】★★★★ Server-side XSS Protection:绕过服务端安全措施进行存储型 XSS 攻击
🎯 挑战目标使用<iframe src="javascript:alert(`xss`)">代码绕过服务端安全措施进行存储型 XSS 攻击。
💡 官方提示 (Hints)1. 您要重点关注"客户反馈"页面中的"注释"字段。
2. 在"联系我们"界面的"评论"字段中,您需要重点关注此处。
3. 攻击有效负载<iframe src="javascript:alert(`xss`)">不会被任何验证器拒绝,但在持久化之前会被从评论中移除。
4. 在您之前收集的 package.json.bak 文件中查找可能与输入处理相关的依赖项。
5. 如果出现了 XSS 警告,但挑战在记分板上未显示为已解决,可能是您未能将精确的攻击字符串<iframe src="javascript:alert(`xss`)">正确注入数据库。
前置条件
sanitize-html 库的漏洞
sanitize-html 是一个流行的 HTML 清理库,用于防止 XSS 攻击。但早期版本(如 1.4.2)存在一个严重漏洞:非递归清理。
漏洞原理:
|
|
开始
第1步
首先,拿到package.json.bak,使用 Poison Null Byte 获取这个文件
|
|
工作原理:
%25= URL 编码的%%00= URL 编码的空字节\0%2500= 双重编码的空字节- 服务器解码后:
package.json.bak\0.md - 文件系统在
\0处截断,实际访问:package.json.bak
第2步
这个文件里面藏着一个存在漏洞的依赖 “sanitize-html”: “1.4.2”,对于现状来说还是问ai的快,不过可能会有幻觉。

第3步
我们回到 客户反馈,输入题目给的xss,提交

完成挑战!
到关于我们页面验证,向右滑动到有这个白框的页面,等一会会出现弹窗

