提问人:New Acc 提问时间:11/7/2023 最后编辑:mplungjanNew Acc 更新时间:11/7/2023 访问量:44
为什么期望:100 在 2 中继续标头拆分响应
Why Expect: 100 Continue header splitting response in 2
问:
我是一名安全研究员,在研究一个项目时,我发现当我在请求响应中插入 Expect: 100-continue 标头时,如下所示:
HTTP/1.1 100 Continue\cr\lf
\cr\lf
HTTP/1.1 301 Moved Permanently
Server: CloudFront
Date: Tue, 07 Nov 2023 08:06:33 GMT
Content-Type: text/html
Content-Length: 167
Connection: close
Location: https://redacted.com/test.js
X-Cache: Redirect from cloudfront
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Referrer-Policy: strict-origin-when-cross-origin
X-Content-Type-Options: nosniff
Vary: Origin
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>CloudFront</center>
</body>
</html>
就像在一个请求中发送 2 个响应一样,100 继续 301 重定向,其中包含两个 \cr\lf。
我想知道是否是这样,那么其他 301 重定向响应应该像 HTTP 有效负载一样工作,并且其中的任何脚本都应该在浏览器中呈现,因为两个 \cr\lf 之后出现的任何内容都意味着标头结束,现在有效负载已启动。
正如我所提到的,我是一名安全研究人员,那么我怎样才能进行概念验证来触发 XSS。
需要注意的要点:
这是一个简单的HTTP到HTTPS升级请求,大多数网站通过将HTTP重定向到HTTPS来处理这个问题。
Expect : 100 continue header is the exploit in the request.
我尝试了很多方法,但浏览器没有渲染XSS,只是将请求重定向到Location:标头。
位置标头容易受到 XSS 的攻击。
答:
0赞
Bergi
11/7/2023
#1
不可以,301 响应不充当 100 响应的有效负载。这是两个单独的响应(在同一连接上)。请参阅 HTTP 标准:
1xx 响应在标头部分的末尾终止;它不能包含内容或预告片。
客户端必须能够解析在最终响应之前收到的一个或多个 1xx 响应,即使客户端不希望有响应。
当然,您可能会发现有缺陷的 HTTP 客户端,但您不太可能在浏览器上运行注入攻击。
评论