【juice-shop】★★ Reflected XSS:反射型跨站脚本攻击

通过追踪订单页面的 id 参数,注入 XSS 有效负载完成反射型跨站脚本攻击。

【juice-shop】★★ Reflected XSS:反射型跨站脚本攻击

0x01 任务简报

💡 核心线索 (Hints)
1. 查找一个 URL 参数,它的值出现在它指向的页面中。
2. 尝试通过提交用 HTML 标签包裹的文本(在屏幕上容易被发现,例如 <h1> 或 <strike>)来探测跨站脚本漏洞。
3. 有效负载:<iframe src="javascript:alert('xss')">

0x02 实战:复现漏洞

这篇的引导非常完整,我们就从引导来完成这个挑战。

🔑 前置条件:登录账户

需要登录才能进行挑战,随便注册登录一下,继续。

注册页面

登录成功

📍 第一步:进入保存的地址

点击导航栏中的"账户" → “订单和支付” → “我的保存地址”。

订单和支付页面

我的保存地址页面

🧪 第二步:尝试地址页面的 XSS

添加一个新地址,使用 <iframe src="javascript:alert(xss)"> 作为城市名称提交。

值得学习的思路:我们应该怀疑任何一个可以输入的地方。

以 XSS 有效负载作为城市名称提交

然而,这里并没有触发 XSS,地址页面不存在该漏洞,需要换一个方向。

🛒 第三步:下单

将任意商品添加到购物车,完成购买流程:

添加购物车 → 结账 → 选择地址 → 选择送货速度 → 选择付款方式(信用卡或借记卡,随便填写卡信息)→ 下单并支付。

添加购物车

完成下单

支付成功

🔍 第四步:查看追踪订单页面

进入"追踪订单"页面,观察 URL 中的 id 参数。

追踪订单页面

注意到 URL 中的 id 参数值与页面上显示的订单号是一样的,这里可能存在相同的前端代码片段。

id 参数与页面显示值一致

💉 第五步:注入有效负载

将 URL 中 id 参数的值替换为 XSS 有效负载:

1
<iframe src="javascript:alert(`xss`)">

将 id 参数替换为 XSS 有效负载

✅ 第六步:完成挑战

按下回车后可能没有立即反应,此时只需 F5 刷新一下即可触发,警告框弹出后确认关闭,挑战完成。

使用 Hugo 构建
主题 StackJimmy 设计