본문 바로가기
정보보안/Web Hacking

파일다운로드 취약점 예제-1 // Dreamhack, Filedownload취약점

by 우동이 2022. 3. 3.
300x250

문제 분류


난이도 : 하


파일 다운로드 취약점 예제입니다.

flag.py 파일을 획득해야 하는 문제입니다.

오래간만에 들어온 드림핵 사이트에서는 이제

url까지 링크를 해주네요

예전에는 접속 방법도 몰라서 질문하던 사람들도 있었는데

 

사이트에서는 세 개의 url이 제공됩니다.

 

/ - index url 지금 보고 있는 메인화면

/upload - 메모 업로드 화면

/read - 업로드된 메모를 읽어오는 화면

/upload

/upload에서는 메모를 작성해 업로드하는 기능을 수행합니다.

업로드되는 메모로 파일 다운로드 취약점 수행이 가능한 코드가 들어가려나 생각해봤지만

app.py

제공된 문제파일의 코드를 살펴보면 26번째 줄에서.. 문자가 필터링됨을 알 수 있습니다.

여기서..

드림핵에서 나온 파일 다운로드 취약점이 자주 발생하는 url 패턴입니다.

  • 첫 번째 url은 파일명이 url 상에 그대로 노출된 GET 방식의 형태입니다.
  • 두 번째 url은 GET 방식의 형태에서 현재 파일의 위치를 바꾸는 문자인.. 이 필터링되지 않아 취약점이 발생합니다.
  • 세 번째 url 역시 파일명을 통한 다운로드 취약점이 존재합니다.

그렇다면 업로드되는 메모에서는 취약점이 발생하지 않습니다.

이런 식으로 문자가 필터링됩니다.

/templates/index.html

위 코드는 index.html의 코드입니다.

<a> 태그에 링크된 부분을 보면

url의 처리 방법이 어떻게 수행되는지 알 수 있습니다.

/read? name={{ file }}

 

즉 아까 나와있던 url 패턴 중 첫 번째처럼

그냥 url에 찾고자 하는 파일의 경로와 이름을 넣으면 됩니다.

우리가 찾아야 하는 파일은 flag.py

문제 설명에 나와있습니다.

flag.py이 어떤 경로에 있는지 알 수 없기 때문에

우리가 문자를 이용해 직접 탐색해야 합니다.

위 url에서는 현재 위치에 flag.py를 탐색했으나 없습니다.

 

 

다음 현재 위치에서 상위 디렉터리에서 flag.py를 탐색해봅시다.

../는 현재 폴더에서 한 단계 상위 디렉터리를 의미합니다.

 

 

바로 플래그가 조회되었습니다.

해당 문제는 파일 다운로드 취약점 중

path traversal 기법입니다.

 

path traversal이란

  • 웹 루트 디렉터리나 외부 디렉터리에 저장된 파일 및 디렉터리에 접근하는 기법이며
  • 경로탐색 취약점이라고 불립니다.
  • 주로 절대 경로 탐색(../)을 통해 발생합니다.

 

 

300x250

댓글