본문 바로가기

Technical Docs/Web Application

Burp : Host header authentication bypass

오늘도 업무중에 재미난게 있어서 작성한다. 물론 내가 찾은 취약점은 아니지만 신기하게도 방어 해놨구나 싶어서 작성한다.

특정 라우팅 (ex. /admin) 같은 페이지에 대해서 Authentication을 걸어놔서 401 에러가 뜨도록 만들어 놨다.

그런데 웃긴건 실제 리눅스 또는 미들웨어에서 존재하는 ACL(Access Control List) 기능을 통해서 막은건 아니고 헤더값을 통해서만 막아놓은 것 같다. 위의 상황과 거의 유사한 테스트가 PortSwigger 의 Lab에 존재해서 가져왔다.

 

 

대충 Lab을 통해 페이지에 접근하면 다음과 같은 쇼핑몰? 화면을 볼 수 있다.

 

많은 CTF 또는 pentester 또는 bwapp에서 봤듯이 robots.txt를 들어가보자.
(사실 실제 컨설팅을 할때나 지금 담당자 일을 하면서도 진단하는 사이트의 robots.txt를 본 경우는 엄청 드문것 같다. 내가 쪼랩이라서 그런가...?)

 

무튼 robots.txt 접근하면 아래와 같이 /admin 이라는 페이지를 크롤링 못하도록 막아놓을것을 볼 수 있다.

그러면 직접 해당 URL(/admin) 에 접근해보자. 그러면 401 에러가 뜨면서 Admin interface는 로컬 유저만 사용가능하다고 친절하게 알려주고 있다. 그러면 어떻게 해야할까?

 

사실 내가 실제 진단하면서 이런식으로 관리자 페이지를 막아놓은곳은 거의 보지 못했다. 하지만 언젠가라도... 한곳을 발견하게 된다면 개꿀이기 때문에 따로 정리해놓는다. 뭐 확인이 어려운것도 아니니까....?

 

버프를 통해 /admin 페이지에 접근할 때 헤더에 존재하는 Host를 변경해본다. 그러면 짜자잔. 401이 아니라 200이 떨어졌다.

 

무튼 그렇게 하고나면 관리자 페이지의 사용자를 삭제하는 기능을 확인할 수 있다.

 

그리고 삭제하는 기능도 동일하게 넘어가는 헤더의 Host 값을 바꾸면 정상적으로 삭제가 가능하다. 그리고 해당 Lab을 완료했다는 문구를 볼 수 있다.

 

뭔가 보안쪽으로 준비하고 연차가 낮을 때 bwapp나 pentest lab, web goat 이거는 몇번 해봤는데 여기꺼는 처음해본다. 우선 뭔가 설치안해도되서 엄청 편한듯하다. 그만큼 제한이 있겠지만.... 

 

'Technical Docs > Web Application' 카테고리의 다른 글

PHP - OS Command function list  (2) 2024.03.02
XSS 방어하기  (0) 2022.08.04
Python Flask로 라우팅 관리해보기  (0) 2022.07.15
DOM Invader (Burp Suite)  (0) 2022.06.23
CVE-2022-26134 Confluence 취약점 (내용추가)  (0) 2022.06.03