File Download Vulnerability

2024. 9. 6. 23:26·Web/Web Hacking

File Download Vulnerability란?

파일 다운로드 기능이 존재하는 웹 애플리케이션에서 파일 다운로드 시 파일 경로에 대한 미검증, 사용자의 권한 검증 미흡 등과 같은 부재로 인해 파일 업로드 과정에서 발생할 수 있는 취약점입니다.


메타 문자를 이용한 Path Traversal

파일을 다운로드하는 과정에서 프록시를 사용해 요청을 조작할 수 있는데, 이를 통해 파일의 이름을 아래와 같이 바꾸어 상위 디렉터리의 파일을 다운로드할 수 있습니다.

/../../../../etc/passwd

위와 같이 test.txt 파일을 다운로드할 때 BurpSuite의 Proxy Intercept를 On으로 설정한 후 다운로드 해주면 아래와 같은 요청이 가는 것을 가로챌 수 있습니다.

 

이때 파일 이름이 다운로드를 누른 파일의 이름으로 뜨는 것을 확인할 수 있는데 이 부분에 앞서 언급한 etc/passwd 내용을 넣어주고

 

Forward를 눌러주면

passwd 파일이 저장되는 것을 확인할 수 있습니다.


대응 방안

  • 메타 문자 필터링
  • basepath, basename 함수 사용
  • 파일 이름과 1:1 맵핑되는 키 사용

메타 문자 필터링

다운로드 요청에 메타 문자가 포함되어 있을 경우 다운로드가 실행되지 않도록 하는 방법입니다.

if(strpos($filename, "/") !== false || strpos($filename, "\\") !== false || strpos($filename, "..") !== false){
    header("location:../index.php");
	exit();
}

basename 함수 사용

basename 함수는 경로가 포함된 파일의 마지막 이름 구성 요소를 반환하는 함수로 경로를 제외한 파일명만 반환할 수 있는 함수입니다.

$filename = basename($_GET['file']);

 

위와 같이 사용하여 파일의 이름만 반환되게 해 줍니다.


파일 이름과 1:1 맵핑되는 키 사용

파일을 업로드할 때 고유키를 부여하여 파일을 다운로드할 때에도 해당 고유키를 통해 다운로드하는 방법입니다.

'Web > Web Hacking' 카테고리의 다른 글

NoSQL Injection  (0) 2024.09.07
XXE External Entities  (0) 2024.09.06
File Upload Vulnerability  (0) 2024.09.06
SQL Injection (1)  (0) 2024.09.06
XSS (Cross Site Scripting)  (0) 2024.09.06
'Web/Web Hacking' 카테고리의 다른 글
  • NoSQL Injection
  • XXE External Entities
  • File Upload Vulnerability
  • SQL Injection (1)
Pandyo
Pandyo
판됴의 성장 스토리 'ㅅ'
  • Pandyo
    dyostory
    Pandyo
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • Kategorie (35)
      • Web (19)
        • Web Hacking (10)
        • 언어 (2)
        • 개발 (5)
        • DataBase (2)
      • Cloud (1)
        • CloudGoat (1)
        • 개념 학습 (0)
      • Project (11)
        • Cloud (11)
      • Wargame (4)
        • Dreamhack (1)
        • CTF (1)
        • Wargame site (2)
  • 링크

  • 태그

    무중단배포
    Cloud
    Internet GateWay
    cloudgoat
    Injection
    buildspec.yml
    canary release
    file
    graphql
    Route Table
    NoSQL
    Blue/Green
    template
    jws
    CI/CD
    XML
    JWT
    WebHacking
    vulnerability
    DBMS
    devops
    Web
    API
    AWS
    target group
    ecs
    Rolling Update
    Fargate
    Token
    배포 방식
  • hELLO· Designed By정상우.v4.10.0
Pandyo
File Download Vulnerability
상단으로

티스토리툴바