Special HTTP headers
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
重写 IP 源:
X-Originating-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Forwarded: 127.0.0.1
Forwarded-For: 127.0.0.1
X-Forwarded-Host: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-ProxyUser-Ip: 127.0.0.1
X-Original-URL: 127.0.0.1
Client-IP: 127.0.0.1
X-Client-IP: 127.0.0.1
X-Host: 127.0.0.1
True-Client-IP: 127.0.0.1
Cluster-Client-IP: 127.0.0.1
Via: 1.0 fred, 1.1 127.0.0.1
Connection: close, X-Forwarded-For
(检查逐跳头)
重写 位置:
X-Original-URL: /admin/console
X-Rewrite-URL: /admin/console
逐跳头是设计用于由当前处理请求的代理处理和消费的头,与端到端头相对。
Connection: close, X-Forwarded-For
Content-Length: 30
Transfer-Encoding: chunked
服务器缓存头:
X-Cache
在响应中可能有值 miss
当请求未被缓存,值 hit
当它被缓存
在头 Cf-Cache-Status
中有类似的行为
Cache-Control
指示资源是否被缓存,以及下次资源将被缓存的时间:Cache-Control: public, max-age=1800
Vary
通常在响应中使用,以 指示额外的头,这些头被视为 缓存键的一部分,即使它们通常不被键入。
Age
定义对象在代理缓存中存在的时间(以秒为单位)。
Server-Timing: cdn-cache; desc=HIT
也指示资源已被缓存
本地缓存头:
Clear-Site-Data
: 指示应删除的缓存的头:Clear-Site-Data: "cache", "cookies"
Expires
: 包含响应应过期的日期/时间:Expires: Wed, 21 Oct 2015 07:28:00 GMT
Pragma: no-cache
与 Cache-Control: no-cache
相同
Warning
: Warning
一般 HTTP 头包含有关消息状态可能存在问题的信息。响应中可能出现多个 Warning
头。Warning: 110 anderson/1.3.37 "Response is stale"
使用这些头的请求:If-Modified-Since
和 If-Unmodified-Since
仅在响应头 Last-Modified
包含不同时间时才会返回数据。
使用 If-Match
和 If-None-Match
的条件请求使用 Etag 值,因此如果数据(Etag)已更改,Web 服务器将发送响应的内容。Etag
是从 HTTP 响应中获取的。
Etag 值通常是 基于 响应的 内容 计算的。例如,ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"
表示 Etag
是 37 字节 的 Sha1。
Accept-Ranges
: 指示服务器是否支持范围请求,如果支持,则以哪种单位表示范围。Accept-Ranges: <range-unit>
Range
: 指示服务器应返回文档的哪一部分。
If-Range
: 创建一个条件范围请求,仅在给定的 etag 或日期与远程资源匹配时满足。用于防止从不兼容版本的资源下载两个范围。
Content-Range
: 指示在完整消息体中部分消息的位置。
Content-Length
: 资源的大小,以字节的十进制数表示。
Content-Type
: 指示资源的媒体类型
Content-Encoding
: 用于指定压缩算法。
Content-Language
: 描述面向受众的人类语言,以便用户可以根据自己偏好的语言进行区分。
Content-Location
: 指示返回数据的备用位置。
从渗透测试的角度来看,这些信息通常是“无用的”,但如果资源被 保护 由 401 或 403,并且你可以找到某种 方法 来 获取 这些 信息,这可能是 有趣的。
例如,在 HEAD 请求中 Range
和 Etag
的组合可以通过 HEAD 请求泄露页面的内容:
带有头 Range: bytes=20-20
的请求和包含 ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"
的响应泄露了字节 20 的 SHA1 为 ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y
Server: Apache/2.4.1 (Unix)
X-Powered-By: PHP/5.3.3
Allow
: 此头用于传达资源可以处理的 HTTP 方法。例如,它可能被指定为 Allow: GET, POST, HEAD
,表示资源支持这些方法。
Expect
: 客户端用于传达服务器需要满足的期望,以便请求能够成功处理。一个常见的用例涉及 Expect: 100-continue
头,表示客户端打算发送大量数据负载。客户端在继续传输之前会寻找 100 (Continue)
响应。此机制通过等待服务器确认来优化网络使用。
Content-Disposition
头在 HTTP 响应中指示文件应显示为 内联(在网页内)还是作为 附件(下载)。例如:
这意味着名为 "filename.jpg" 的文件旨在被下载和保存。
通过 CSP 强制实施受信任的类型,应用程序可以防止 DOM XSS 攻击。受信任的类型确保只有符合既定安全政策的特定构造对象可以用于危险的 Web API 调用,从而默认保护 JavaScript 代码。
此头部防止 MIME 类型嗅探,这是一种可能导致 XSS 漏洞的做法。它确保浏览器遵循服务器指定的 MIME 类型。
为了对抗点击劫持,此头部限制了文档如何嵌入在 <frame>
、<iframe>
、<embed>
或 <object>
标签中,建议所有文档明确指定其嵌入权限。
CORP 对于指定哪些资源可以被网站加载至关重要,减轻跨站泄漏。另一方面,CORS 允许更灵活的跨源资源共享机制,在某些条件下放宽同源策略。
COEP 和 COOP 对于启用跨源隔离至关重要,显著降低了类似 Spectre 攻击的风险。它们分别控制跨源资源的加载和与跨源窗口的交互。
最后,HSTS 是一种安全功能,强制浏览器仅通过安全的 HTTPS 连接与服务器通信,从而增强隐私和安全性。
学习与实践 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) 学习与实践 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)