실용적인 HTTP Host 헤더 공격
Source
Evernote/Technote scraps/Skeleton Scribe Practical HTTP Host header attacks.md
Summary
이 문서는 웹 애플리케이션이 HTTP Host 헤더를 신뢰하여 절대 URI 생성 시 사용하는 취약점을 다룹니다. 주요 공격 기법으로는 비밀번호 재설정 링크에 악의적인 도메인을 삽입하는 ‘비밀번호 재설정 중독(Poisoning)‘과, 캐시 시스템(Varnish 등)의 호스트 헤더 처리 차이(중복 헤더 등)를 이용해 악성 응답을 캐싱하는 ‘웹 캐시 중독(Web-cache poisoning)‘이 있습니다. Joomla, Django, Gallery 등 여러 프레임워크와 애플리케이션에서 이러한 취약점이 발견되었으며, 서버 구성과 애플리케이션 코드의 신뢰 문제에서 기인합니다.
Key Points
- 웹 애플리케이션은 종종 HTTP Host 헤더를 신뢰하여 링크, 토큰, 스크립트 소스에 절대 URI를 생성합니다.
- 비밀번호 재설정 시 Host 헤더를 검증 없이 사용하면, 공격자가 악의적인 도메인으로 재설정 링크를 조작하여 계정 탈취를 시도할 수 있습니다.
- Varnish와 같은 캐시 서버는 첫 번째 Host 헤더를 사용하지만 백엔드 서버(Apache/Nginx)는 다르게 처리할 수 있어, 중복 Host 헤더를 이용한 캐시 중독이 가능합니다.
- Joomla와 같은 애플리케이션은 Host 헤더를 HTML 인코딩 없이 페이지에 삽입하고 캐시에서 이를 구분하지 않아 지속적 XSS 공격에 취약할 수 있습니다.
- 이러한 공격은 RFC-2616의 모호함과 개발자의 Host 헤더에 대한 과도한 신뢰에서 비롯됩니다.