본문 바로가기

Web App/Theory

Web Cache Deception

  • 선수 학습
 

Web Cache Work

Web Cache?서버와 클라이언트 사이에서 응답의 사본을 저장하고 전달하는 역할을 한다.트래픽 분산으로 인한 서버 부하 감소와 빠른 응답을 목적으로 만들어졌다.Web Cache Works?1. 캐시 서버는 클라

velvetviolet1024.tistory.com


Web Cache Deception

  • 피해자의 중요 정보가 담긴 페이지를 캐시에 저장되도록 만든 후, 그 페이지를 공격자가 가져가는 공격 기법

Rewrite

  • 서버의 Rewrite 기능이란?

웹 서버가 클라이언트의 요청 URL을 다른 URL로 변경(매핑)하거나, 서버 내부에서 리디렉션을 처리하는 기능

 

  • 클라이언트 요청
// 마이페이지 요청
vuln.com/main/mypage
  • 웹 서버의 Rewrite 응답
// 마이페이지를 찾아서 리턴해줌
vuln.com/main/mypage.php

Rewrite Misconfig?

서버에서 Rewrite 범위의 설정을 광범위하게 지정했을 시, 문제가 발생함

  • 취약한 Rewrite 설정
rewrite ^(/main/.*)/.*$ /$1.php last;
더보기
  • ^ : URL 시작을 의미
  • () : 안의 부분이 $1으로 캡처됨
  • .* : 모든 문자열 허용
  • $ : URL의 끝을 의미
  • /$1.php : 캡처된 문자열 뒤에 .php 추가 (캡처되지 않는 부분은 최종 URL에 포함되지 않음)
  • last : 해당 규칙만 적용함을 의미 (추가적인 rewrite 규칙 적용하지 않음)
  • 취약한 부분 : rewrite ^(/main/.*)/.*$ /$1.php last; 

위와 같은 취약한 rewrite 규칙이 적용돼 있는 웹 서버에

다음과 같은 요청을 보낸다면

GET /main/mypage/attack.css /HTTP 1.1

규칙에 의해 /main/mypage.php 페이지로 리다이렉트 되면서 캐시가 생성된다.

여기서 문제는 /main/mypage/attack.css 요청에 대해 /main/mypage.php의 응답이 캐시 된 것이다.

때문에 공격자는 (취약한 rewrite 규칙에 의한) 악의적인 URL(/main/mypage/attack.css)을 피해자에게 전달한 다음,

피해자가 서버의 rewrite 규칙에 의해 리다이렉트된 mypage.php 페이지로 접속하게 된다면,

캐시 서버는 악의적인 URL(/main/mypage/attack.css) 요청에 대한 응답으로 피해자의 정보가 담겨있는 mypage.php를 저장한다.

이후 공격자가 캐시 서버에 악의적인 URL(/main/mypage/attack.css)을 요청하면,

피해자의 정보가 담겨있는 mypage.php를 응답받을 수 있는 것이다.

더보기

피해자 마다 css 이름을 다르게 한다면 여러 피해자의 mypage 정보를 확인할 수 있다.

그리고 해당 공격은 피해자를 특정할 수 있다는 것이 특징이다. (poisoning 공격은 특정 불가능)

  • 보완한 Rewrite 설정
보완한 규칙1 : rewrite ^(/main/.*)$ /$1.php last; -> cache deception 공격 시, 404 에러
보완한 규칙2 : rewrite ^(/main/.*/.*)$ /$1.php last; -> cache deception 공격 시, 404 에러

 

Reference

https://portswigger.net/web-security/web-cache-deception

 

Web cache deception | Web Security Academy

Web cache deception is a vulnerability that enables an attacker to trick a web cache into storing sensitive, dynamic content. It's caused by discrepancies ...

portswigger.net

 

'Web App > Theory' 카테고리의 다른 글

인증(Authentication) & 인가(Authorization) 취약점(Vuln)  (2) 2024.08.03
File Download Vuln  (2) 2024.07.28
LFI(Local File Include) Vuln  (1) 2024.07.26
File Upload ByPass  (0) 2024.07.26
Web Cache Poisoning  (0) 2024.07.22