5주차_CTF과제(Dreamhack : pathtraversal)

2024. 5. 10. 14:53hacking : p_study/Dreamhack

pathtraversal | 워게임 | Dreamhack

 

 

pathtraversal

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

dreamhack.io

 

 

 

 

 

CTF 과제 첫문제를 풀어보겠다.

 

API서버 문제이고, path Traversal 취약점을 이용해서 플래그를 획득하라고 하는데 해당 취약점에 대해 아는바가 없어서 찾아보겠다.

 

 

[ 추가 공부자료 ]

 

 

Path Traversal (Directory traversal) | HAHWUL

 

Path Traversal (Directory traversal)

Introduction Path traversal(Directory traversal)은 서비스에서 사용자로부터 받은 입력이 path 형태의 백엔드에서 처리 로직을 가지는 경우, 이를 조작하여 공격자가 원하는 경로로 접근하여 동작을 수행하

www.hahwul.com

 

 

Path Traversal (Server-side vulnerabilities 1) | by Jae Bin | Medium

 

Path Traversal (Server-side vulnerabilities 1)

Path Traversal (경로 조작) 이란

medium.com

 

코드를 살펴보겠다.

 

 

 

 

guest, admin을 입력해서 어떤 차이가 있는지 확인해보기

 

 

뜬금없는 SWLUG를 입력했더니 빈괄호만 보였다.

 

이 내용인 것 같다.

 

취약점과 관련하여 찾아보고 확인해보니까 지난번에 문제를 풀때 활용했던 프록시 서버? 를 이용해야할 것같았다.

해당 취약점에 대해서는 아는 바가 없으니 차라리 찾아보면서 공부를 하는 게 낫다는 판단을 했다.

 

 

 

입력된 userid 값은 위 그림에서 볼 수 있듯이, /api/user/{userid} 에 저장된다고 한다.

FLAG 는 /api/flag 에 저장이 되는데, 저장된 값은 /api/user/{userid} 에 FLAG 값은 /api/flag 에 저장이 되기 때문에,

../flag 를 입력해봤을 때 어떤식으로 뜨는지 확인해봐야겠다.

 

 

실패한 것을 확인할 수 있는데, 이 이유를 찾기 위해 Burp Suite를 실행시켜서 intercept ON을 통해 확인해봐야한다고 한다.

 

 

userid = undefined 로 되어있는 것을 알 수 있다.

정의 되지 않았으니 이부분은 ../flag로 바꾸고 Forward를 클릭하여 값을 넘겨야한다고 한다.

 

그러면 이렇게 flag가 뜬다.

 

 

해당문제는 내가 찾아보면서 풀어보지 않았으면 혼자서는 풀 수없었을 것 같은 생소한 문제였지만 그만큼 새롭게 느껴져서 흥미로운 문제였다.

이런식으로 flag값을 얻을 수도 있구나 하고 재미있게 풀 수 있었다.

관련된 지식이 있었다면 다소 수월하게 풀 수도 있었을 것같은 간단한 문제였다.

 

 

추가설명을 해보자면, Path traversal(Directory traversal)은 서비스에서 사용자로부터 받은 입력이 path 형태의 백엔드에서 처리 로직을 가지는 경우, 이를 조작하여 공격자가 원하는 경로로 접근하여 동작을 수행하는 공격기법을 의미한다.
보통 File을 처리하는 과정에서 가장 많이 발생하며, 파일 이름 등을 사용자로 부터 받는 경우 사용자가 ../ 같은 구문을 통해 상위 디렉토리로 접근하거나 허용된 디렉토리의 범위를 벗어나 시스템 파일 등을 읽을 수 있다고한다.

다음에 해당 취약점에 관한 문제를 푼다면 조금더 잘 접근할 수 있을 것 같다.

 

첫번째 문제 끝!

 

 

[ 참고 자료 ]

 

DreamHack 1단계 path traversal :: 혁준 (tistory.com)

 

DreamHack 1단계 path traversal

DreamHack 1단계 path traversal 문제를 풀어보겠다. Path traversal 취약점은 디렉터리 인덱싱과 비슷한 문제이다. 입력된 userid 값은 위 그림에서 볼 수 있듯이, /api/user/{userid} 에 저장된다. FLAG 는 /api/flag

jhyuxxk.tistory.com