일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- sql injection
- active reconnaissance
- php To Do List
- FTZ
- ssrf
- SQLi
- Recon
- Leviathan
- overthewire
- Cookie
- Authentication
- Cryptography
- php 로그인 페이지 만들기
- 파일 업로드 취약점
- file upload
- access control
- War Game
- php
- Reconnaissance
- privilege escalation
- THM
- php file upload
- BANDiT
- Server Side Request Forgery
- tryhackme
- over the wire
- OS Command Injection
- active recon
- php 파일 업로드하기
- php login page
- Today
- Total
R's Hacking Daily Log
Directory Traversal (Path Traversal) (1) 본문
What is Directory Traversal
Directory Traversal (or Path Traversal)은서버에 있는 파일을 읽기 위해 서버가 의도한 경로를 이탈하여 공격자가 읽고 싶은 임의의 파일에 접근 가능하게 만드는 취약점이다.
:) 경로를 이탈한다!?
어떤 웹 페이지 하나를 띄워놓고 URL을 보면 path 내용이 /abc/def/..처럼 나오는 경우가 있다.이는 해당 페이지가 들어있는 경로를 나타내는 데
경로를 이탈한다고 표현한 것은 서버로부터 페이지를 받을 때 directory를 이동해서 제공자가 의도하지 않은 경로로 이동하려는 걸 표현하고자 한 것이다!
Reading arbitrary files via directory traversal
쇼핑 어플리케이션에서 할인 중인 아이템을 출력하는 데 다음과 같은 img를 포함한다고 상상해 보자.
<img src="/loadImage?filename=218.png">
218.png라는 이미지가 결과적으로 반환되는 것인데 기본적으로 웹 서버 안에서 이 이미지에 접근하기 위한
경로는 /var/www/images/image_name이다.
https://insecure-website.com/loadImage?filename=218.png
위와 같은 형태로 이미지 이름에 대한 값을 얻게 되면
이미지까지의 접근 경로는 다음과 같다.
/var/www/images/218.png
정리해 보자면
1. url로부터 웹 서버는 filename 값을 얻어서
2. 해당하는 이미지 이름을 /var/www/images 경로 뒤에 붙여
3. 만들어진 /var/www/images/218.png 파일을 찾아 img tag에 넣는다.
이때 서버에서 path traversal에 대한 그 어떤 방어도 하지 않는다면 공격자 입장에서는 아래와 같이
https://insecure-website.com/loadImage?filename=../../../etc/passwd
path traversal 공격으로 /etc/passwd file에 접근이 가능해진다.
위의 filename 값이 어떻게 동작하는지 보자면
/var/www/images/../../../etc/passwd
서버는 images directory에서 이미지를 찾는 게 아니라 최상위 directory로 올라가서 /etc/passwd 파일을 읽는 동작으로
바뀌게 되는 것이다.
var directory 안에 www directory가 있는 걸 볼 수 있고 이해를 위해 www 안에 images directory를 만들었다.
url에 입력한 대로 [ ../../.. ]을 입력하면 총 3번 directory를 이동해서 "/ directory"로 이동하게 되고
그 안에 etc directory가 있기 때문에 결과적으로 etc directory 안에 있는 passwd file에 접근이 가능하게 된다.
따라서 공격자는 directory를 이동함으로써 자신이 원하는 파일을 읽을 수 있게 되는 것!
** 여기서 알 수 있듯이 [ ../ ]는 directory를 바꿀 때(= 이동) 사용할 수 있는 시퀀스로
현재 directory에서 한 단계 위의 directory로 빠져나가!라는 의미이다.
** ../ 시퀀스를 이용하여 directory를 이리저리 옮겨 다니는 공격이다~ 해서 directory(or path) traversal이라고 한다.
** /var/www/images/../../../etc/passwd
1. 첫 번째 ../
/var/www/images → /var/www로 이동
2. 두 번째 ../
/var/www → /var
3. 세 번째 ../ (= ..)
/var → / (root)
4. /etc
/ → /etc로 이동
5. /passwd
/etc → /etc 안에 있는 passwd file
'Port Swigger > Directory Traversal' 카테고리의 다른 글
Directory Traversal - Lab(2) (0) | 2023.05.19 |
---|---|
Directory Traversal - Lab(1) (0) | 2023.05.19 |
Directory Traversal (2) (0) | 2023.05.18 |
Directory Traversal Lab (0) | 2022.11.06 |
Directory Traversal (0) | 2022.11.02 |