카테고리 없음

비박스(bWAPP) A7 Host Header Attack (Cache Poisoning)

태군 코드 2022. 9. 23. 17:34
반응형

이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.

 

A7 - Host Header Attack (Cache Poisoning)

 

HTTP Host Header
HTTP 호스트 헤더는 HTTP/1.1부터 필수 요청 헤더입니다. 클라이언트가 액세스하려는 도메인 이름을 지정합니다. 예를 들어 사용자가 http://localhost/bWAPP/hostheader_1.php 사이트에 방문하게 되면 브라우저는 다음과 같이 Host 헤더가 포함된 요청을 작성합니다.

GET /bWAPP/hostheader_1.php HTTP/1.1
Host: localhost

웹 서버는 일반적으로 가상 호스트를 통해 각 애플리케이션을 참조하는 동일한 IP 주소에 여러 웹 애플리케이션을 호스팅합니다. 수신 HTTP 요청에서 웹 서버는 종종 호스트 헤더에 제공된 값을 기반으로 대상 가상 호스트로 요청을 발송합니다. 헤더 값의 유효성을 제대로 검사하지 않으면 공격자가 잘못된 입력을 제공하여 웹 서버를 다음과 같이 만들 수 있습니다.

- 목록의 첫 번째 가상 호스트로 요청을 발송합니다.
- 공격자가 제어하는 도메인으로 리디렉션을 수행합니다.
- 웹 캐시 중독을 수행합니다.
- 암호 재설정 기능을 조작합니다.
- 외부에서 액세스할 수 없도록 설정된 가상 호스트에 대한 액세스를 허용합니다.

 

Cache Poisoning
캐시 포이즈닝은 공격자가 사용자를 해칠 목적으로 DNS(Domain Name System) 캐시나 웹 캐시에 가짜 정보를 삽입하는 사이버 공격의 일종이다. DNS 캐시 중독 또는 DNS 스푸핑에서 공격자는 합법적인 서버에서 악의적인/위험한 서버로 트래픽을 우회시킵니다. 가해자는 조작된 웹 사이트 주소와 같은 잘못된 정보를 DNS 캐시에 입력하여 사용자가 잘못되거나 예기치 않거나 위험한 웹 사이트로 리디렉션됩니다. DNS 캐시 중독은 합법적인 웹 사이트에서 트래픽을 우회시킬 뿐만 아니라 악성 프로그램 감염 및 데이터 도난을 포함한 많은 위험에 사용자를 취약하게 만드는 매우 기만적인 공격입니다. 웹 캐시 중독에서 공격자는 웹 서버와 캐시를 이용하여 악의적인 HTTP(Hypertext Transfer Protocol) 응답을 사용자에게 제공합니다.

 

hostheader_1.php

hostheader_1.php 페이지는 호스트 헤더 공격(캐시 포이즈닝)에 관한 내용이고 본문 내용에 보면 here이라는 문구가 보입니다. here 글씨를 누르게 되면 portal.php 페이지로 리다이렉션 되는 것을 알 수 있습니다. 해당 문제는 HTTP 요청 시 Host Header에 관한 문제로 버프 스위트 프락시 툴을 이용해 살펴보도록 하겠습니다.

 

Host Header 조작

버프스위트를 통하여 hostheader_1.php 페이지 호출 시 Host header를 조작한 후 Forward 버튼을 누른 후 다시 한번 살펴보도록 하겠습니다.

 

Host header 값 변경후 전달

Forward 버튼을 누른후 값을 전달하면 이미지가 깨진 페이지를 확인할 수 있습니다.

 

here 버튼 클릭

here 버튼을 클릭하고 URL 부분을 살펴 보면 버프 스위트를 통하여 조작한 Host header 값이 넘어간다는 것을 알 수 있고, 버프 스위트 Repeater 기능을 사용하요 응답 값을 확인해 보겠습니다.

 

버프스위트 Repeater 확인

버프 스위트 Repeater 기능을 사용하여 요청 값을 보내고 응답 값을 확인해 보면 버프를 통하여 조작된 Host header 값이 삽입되는 것을 알 수 있습니다. 이미지 파일이나 페이지가 깨진 이유는 HTTP 요청 시 stylesheet.css, html5.js 파일들을 참조하여 페이지를 보여줘야 하지만 그렇지 못하여 페이지가 깨져서 보이는것입니다. 테스트를 해보시는 분든들 조작하기 전 값과 조작 후의 값을 확인해 보시기를 바랍니다.

 

Host header에 외부 링크 삽입

Host: google.com#

 

Host header에 스크립트 문 삽입

Host: localhost"><iframe onload=alert(1)>

 

스크립트 실행

해당 페이지는 Cache Poisoning 공격보다 Host header 공격이라고 보기에 가까운것 같습니다. 실습을 하시는 분들은 요청 값을 보낸 후에 응답 값에 어떠한 변화 들이 생기는지 같이 살펴보시면 좋을 것 같습니다.

 

참고

https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/07-Input_Validation_Testing/17-Testing_for_Host_Header_Injection

https://portswigger.net/kb/papers/7q1e9u9a/web-cache-poisoning.pdf

https://owasp.org/www-community/attacks/Cache_Poisoning

반응형