URL中如何使用符号#来操纵JavaScript

时间:2019-05-27 22:18:24

标签: javascript url dom xss fragment-identifier

我最近正在尝试学习DOM XSS /客户端XSS,https://www.owasp.org/index.php/DOM_Based_XSS提到了这一部分,您可以在其中以#结尾并在JavaScript代码后结束URL,它将绕过服务器,但仍然呈现JavaScript:

  

避免将有效载荷发送到服务器的技术取决于以下事实:浏览器未将URI片段(“#”之后的URI中的部分)发送到服务器。因此,引用例如document.location的任何客户端代码都可能受到使用片段的攻击的攻击,在这种情况下,有效负载永远不会发送到服务器。例如,可以将上述基于DOM的XSS修改为:

http://www.some.site/page.html#default=<script>alert(document.cookie)</script>

我尝试提供此HTML

<!DOCTYPE html>
<html lang="en">
<body>
    <p id="asd"> asdasdasd </p>
</body>
<script>
    var a = document.querySelector("#asd");
</script>
</html>

在以下快递服务器上

const app = require("express")();
const PORT = 12343;

app.get("/", (request, response) => {
    console.log(__dirname)
    response.sendFile('asdasd.html', {root: `${__dirname}`})
})

app.listen(PORT, () => {
    console.log(`server listening on port: ${PORT}`)
})

当我尝试使用此URL访问该网站时:

http://localhost:12343/#a.innerText=%22Work!%22

它不起作用,但是我可以使用控制台操作该变量。

#在这种情况下如何工作?

0 个答案:

没有答案