문제 분류
난이도 : 하
파일 다운로드 취약점 예제입니다.
flag.py 파일을 획득해야 하는 문제입니다.
오래간만에 들어온 드림핵 사이트에서는 이제
url까지 링크를 해주네요
예전에는 접속 방법도 몰라서 질문하던 사람들도 있었는데
사이트에서는 세 개의 url이 제공됩니다.
/ - index url 지금 보고 있는 메인화면
/upload - 메모 업로드 화면
/read - 업로드된 메모를 읽어오는 화면
/upload에서는 메모를 작성해 업로드하는 기능을 수행합니다.
업로드되는 메모로 파일 다운로드 취약점 수행이 가능한 코드가 들어가려나 생각해봤지만
제공된 문제파일의 코드를 살펴보면 26번째 줄에서.. 문자가 필터링됨을 알 수 있습니다.
여기서..
드림핵에서 나온 파일 다운로드 취약점이 자주 발생하는 url 패턴입니다.
- 첫 번째 url은 파일명이 url 상에 그대로 노출된 GET 방식의 형태입니다.
- 두 번째 url은 GET 방식의 형태에서 현재 파일의 위치를 바꾸는 문자인.. 이 필터링되지 않아 취약점이 발생합니다.
- 세 번째 url 역시 파일명을 통한 다운로드 취약점이 존재합니다.
그렇다면 업로드되는 메모에서는 취약점이 발생하지 않습니다.
이런 식으로 문자가 필터링됩니다.
위 코드는 index.html의 코드입니다.
<a> 태그에 링크된 부분을 보면
url의 처리 방법이 어떻게 수행되는지 알 수 있습니다.
/read? name={{ file }}
즉 아까 나와있던 url 패턴 중 첫 번째처럼
그냥 url에 찾고자 하는 파일의 경로와 이름을 넣으면 됩니다.
우리가 찾아야 하는 파일은 flag.py
문제 설명에 나와있습니다.
flag.py이 어떤 경로에 있는지 알 수 없기 때문에
우리가 문자를 이용해 직접 탐색해야 합니다.
위 url에서는 현재 위치에 flag.py를 탐색했으나 없습니다.
다음 현재 위치에서 상위 디렉터리에서 flag.py를 탐색해봅시다.
../는 현재 폴더에서 한 단계 상위 디렉터리를 의미합니다.
바로 플래그가 조회되었습니다.
해당 문제는 파일 다운로드 취약점 중
path traversal 기법입니다.
path traversal이란
- 웹 루트 디렉터리나 외부 디렉터리에 저장된 파일 및 디렉터리에 접근하는 기법이며
- 경로탐색 취약점이라고 불립니다.
- 주로 절대 경로 탐색(../)을 통해 발생합니다.
'정보보안 > Web Hacking' 카테고리의 다른 글
드림핵 문제풀이 - XSS-2 // XSS, Cross Site Scripting, 우회, 인증우회 (0) | 2022.03.28 |
---|---|
드림핵 문제풀이 - Session Basic // Cookie, Session, 인증, Web hacking (0) | 2022.03.21 |
모의해킹 문제풀이 - 6번(답 포함) - 써니나타스(SuNiNaTaS) // Sql injection, query (0) | 2022.02.07 |
모의해킹 문제풀이 - 5번(답 포함) - 써니나타스(SuNiNaTaS) // JavaScript, Packer (0) | 2022.02.03 |
모의해킹 문제풀이 - 4번(답 포함) - 써니나타스(SuNiNaTaS) // CTF, Web Hacking, HTTP헤더 (0) | 2022.01.28 |
댓글