据我了解,反射型 XSS 的流程是这样的:
- 用户点击恶意链接、提交恶意表单或访问恶意网站
- 上述操作会导致恶意脚本运行,该脚本会告诉浏览器向另一台服务器发送 HTTP 请求,并将攻击负载作为 URI 中的参数
- 接收服务器处理 URI,这在某些情况下意味着有效负载被发送回用户的浏览器
- 将有效负载发送回用户浏览器的情况包括:
- 当浏览器报出找不到资源的错误信息时
- 当浏览器想要报告搜索结果时
- 然后浏览器执行攻击负载
我的问题
- 为什么有效负载不能让接收服务器直接向黑客发送黑客想要的任何内容? IE。为什么需要将其反射回用户的浏览器?
我怀疑,这是因为浏览器可能在服务器上进行了身份验证(登录)。因此,只有浏览器执行有效负载,黑客才能掌握该特定用户的敏感/受限帐户信息。
最佳答案
代码必须在某个地方执行。
通过将不良数据潜入用户浏览器(因为它期望接收混有 JS 的 HTML)来触发任意代码执行比在服务器上触发要容易得多。
如果是在服务器上触发,那么就不是 XSS 攻击。
(SQL 注入(inject)是服务器上代码执行攻击的一个示例)。
I have a suspicion, that it is because the browser might be authenticated (logged in) on server. Thus, only if the browser executes the payload, will the hacker get a hold of that specific user's sensitive/restricted account information.
这就是为什么 XSS 对攻击者有用(否则他们只能从自己的浏览器发出 HTTP 请求)。
关于javascript - 反射型XSS : Why must attack payload be reflected to victim's browser?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51142419/