Special HTTP headers
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Rewrite IP source:
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
(Check hop-by-hop headers)
Rewrite location:
X-Original-URL: /admin/console
X-Rewrite-URL: /admin/console
A hop-by-hop header is a header which is designed to be processed and consumed by the proxy currently handling the request, as opposed to an end-to-end header.
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)가 변경된 경우 웹 서버가 응답의 내용을 전송합니다. Etag
는 HTTP 응답에서 가져옵니다.
Etag 값은 일반적으로 응답의 내용을 기반으로 계산됩니다. 예를 들어, ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"
는 Etag
가 37 바이트의 Sha1임을 나타냅니다.
Accept-Ranges
: 서버가 범위 요청을 지원하는지 여부와 범위를 표현할 수 있는 단위를 나타냅니다. Accept-Ranges: <range-unit>
Range
: 서버가 반환해야 하는 문서의 부분을 나타냅니다.
If-Range
: 주어진 etag 또는 날짜가 원격 리소스와 일치하는 경우에만 충족되는 조건부 범위 요청을 생성합니다. 리소스의 호환되지 않는 버전에서 두 범위를 다운로드하는 것을 방지하는 데 사용됩니다.
Content-Range
: 전체 본문 메시지에서 부분 메시지가 속하는 위치를 나타냅니다.
Content-Length
: 리소스의 크기, 바이트의 10진수 수입니다.
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)
응답을 찾습니다. 이 메커니즘은 서버 확인을 기다림으로써 네트워크 사용을 최적화하는 데 도움이 됩니다.
HTTP 응답의 Content-Disposition
헤더는 파일이 인라인(웹페이지 내)으로 표시되어야 하는지 또는 첨부파일(다운로드)로 처리되어야 하는지를 지시합니다. 예를 들어:
이것은 "filename.jpg"라는 이름의 파일이 다운로드되고 저장되도록 의도되었음을 의미합니다.
CSP를 통해 신뢰할 수 있는 유형을 강제함으로써, 애플리케이션은 DOM XSS 공격으로부터 보호될 수 있습니다. 신뢰할 수 있는 유형은 특정 보안 정책을 준수하는 특별히 제작된 객체만 위험한 웹 API 호출에 사용될 수 있도록 보장하여, 기본적으로 JavaScript 코드를 안전하게 만듭니다.
이 헤더는 MIME 타입 스니핑을 방지하며, 이는 XSS 취약점으로 이어질 수 있는 행위입니다. 이 헤더는 브라우저가 서버에서 지정한 MIME 타입을 준수하도록 보장합니다.
클릭재킹을 방지하기 위해, 이 헤더는 문서가 <frame>
, <iframe>
, <embed>
, 또는 <object>
태그에 어떻게 포함될 수 있는지를 제한하며, 모든 문서가 자신의 포함 권한을 명시적으로 지정할 것을 권장합니다.
CORP는 웹사이트가 로드할 수 있는 리소스를 지정하는 데 중요하며, 교차 사이트 누수를 완화합니다. 반면 CORS는 특정 조건 하에 동일 출처 정책을 완화하여 보다 유연한 교차 출처 리소스 공유 메커니즘을 허용합니다.
COEP와 COOP는 교차 출처 격리를 활성화하는 데 필수적이며, Spectre와 유사한 공격의 위험을 크게 줄입니다. 이들은 각각 교차 출처 리소스의 로딩과 교차 출처 창과의 상호작용을 제어합니다.
마지막으로, HSTS는 브라우저가 서버와 오직 안전한 HTTPS 연결을 통해서만 통신하도록 강제하는 보안 기능으로, 개인 정보 보호와 보안을 강화합니다.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)