Iriton's log

[Dreamhack] Beginner: pathtraversal 본문

WebHacking/WarGame

[Dreamhack] Beginner: pathtraversal

Iriton 2024. 5. 22. 04:41

Description

: 사용자의 정보를 조회하는 API 서버입니다.
Path Traversal 취약점을 이용해 /api/flag에 있는 플래그를 획득하세요!

Path Traversal

경로 탐색 공격(디렉터리 탐색)은 웹 루트 폴더 외부에 저장된 파일 및 디렉터리에 액세스 하는 것을 목표로 한다.

 

"../" -> 시퀀스 및 그 변형으로 파일을 참조하는 변수를 조작하거나 절대 파일 경로를 사용하여 애플리케이션 소스 코드 또는 구성을 포함하여 파일 시스템에 저장된 임의의 파일 및 디렉터리에 액세스하는 것이다.

 

취약점 분석

입력 받은 userid에 대한 정보를 출력한다.

근데 api/flag를 보면 되는데 경로가 api/user/{userid}이기에 userid에 ../flag를 넣으면

api/flag를 볼 수 있게 되는 것이다.

이에 대한 필터링도 존재하지 않아서 경로 탐색 공격이 가능할 거 같다.

 

Exploit

아무것도 출력되지 않는다.

 

proxy 기능이 있는 burp suite를 통해 응용 프로그램이 어떻게 작동하는지 확인해 보자.

이 툴이 웹 프록서 서버로 작동하여 브라우저와 대상 웹 서버 사이의 중간자 역할을 하여 양방향으로 전달되는 트래픽을 가로 채서 검사하고 수정할 수 있다.

 

이 중에서 intercept 기능은 브라우저와 웹 서버 간에 전달되는 모든 메세지를 가로채기 및 수정하고 Forward 할 수 있다.

시스템 해킹, 리버싱에서는 bp, 수정, run 이랑 비슷한 과정을 거치는 거다.

 

burp suite에서 프로젝트 만들어서, proxy 기능의 intercept on 후 open browser를 하고 원하는 웹 주소로 접속하면 된다.

 

userid가 undefined 로 되어 있어서 아무것도 뜨지 않았던 거 같다.

userid가 guest는 0 admin은 1로 지정되어 있어서 해당하는 uid의 정보를 출력하는 형태였던 것이다.

이걸 ../flag로 변경 후 forward 해주자.

 

개발자모드(f12)에서 console 창으로 user['guest'] = '../flag' 명령어를 실행하여 guest로 view 버튼을 누른다면 flag가 출력되긴 한다.

하지만 userid 가 undefined 되어서 출력이 안 되었다는 걸 알려면 프록시 서버를 두고 패킷을 살펴 보는 게 가장 효과적이고 가시적이다.

'WebHacking > WarGame' 카테고리의 다른 글

[webhacking.kr] old-34  (0) 2024.05.29
[webhacking.kr] old-27  (1) 2024.05.29
[Dreamhack] Beginner: Flying Chars  (0) 2024.05.01
[Dreamhack] Beginner: php7cmp4re  (0) 2024.05.01
[Dreamhack] Lv.1 Command Injection Advanced  (1) 2023.11.21
Comments