끄적끄적

[vulnerability] Nginx alias traversal 본문

Security/Web

[vulnerability] Nginx alias traversal

Go0G 2021. 10. 7. 15:43

개요

Nginx 웹 애플리케이션에서 디렉터리 파일에 대한 별칭(alias) 지정 설정을 올바르지 않게 했을 때 발생하는 취약점


상세내용

"/etc/nginx/sites-enabled/default"

  • 위 경로는 Nginx에 활성화된 사이트들의 설정 파일들이 위치
  • 해당 취약점은 위 경로의 "location"의 디렉토리 구분 기호를 올바르게 설정하지 않았을 때 발생

올바르게 설정된 location 설정

location /i/{
	alias [상위경로]/data/w3/images/;
}

"/i/"경로에 접근하게 될경우 Nginx에서는 "[상위경로]/data/w3/images/"의 경로로 처리

취약점이 발생하는 location 설정

location /i {
	alias [상위경로]/data/w3/images/;
}

공격자가 Directory Traversal 공격 구문을 삽입할 경우 지정 경로 외 다른 디렉터리의 데이터에 접근 가능

"/i../app/config.py"로 요청을 전송할 경우 Nginx내에서 "/data/w3/app/config.py"로 접근


실습

실습에 앞서 디렉터리 구조는 아래와 같다

Ningx 디렉터리 구조

1. "/etc/nginx/sites-enabled/default"의 location를 아래와 같이 설정한 뒤 "/app/config.py"에 접근해보자

올바른 location 설정
"/i../app/config.py" 접근 결과

location이 올바르게 설정되어 있을 경우 "/var/www/html/data/w3/images/../app/config.py"로 요청하게 되어 접근이 불가능하다.

2. location이 올바르게 설정된 경우 아래와 같은 일반적인 Directory Traversal은 불가능하다

(전) "/i/../app/config.py 접근
(후) "/i/../app/config.py 접근

location에 설정된 경로에 접근할 경우 루트 디렉터리로 이동하게 된다

3. 그럼 이제 "/etc/nginx/sites-enabled/default"의 location를 올바르지 않게 설정한 뒤 "/app/config.py"에 접근해보자

올바르지 않은 location 설정
Directory Traversal

위와 같이 상위 경로내 다른 디렉터리에 접근하여 파일을 다운로드할 수 있는 것을 확인할 수 있다

4. 그렇다면 alias의 설정된 경로의 상위 경로의 상위 경로를 탐색할 수 있을까?

지금까지는 "/data/w3/*" 디렉터리에서 탐색을 시도했다면 이번엔 "/data/*"경로로 탐색이 가능한지 확인해볼 것이다

C.html 생성
"/data/*" 경로에서 "/data/w3/app/config.py" 접근
접근 불가

이 경우, 이전 2번과 같이 루트 디렉터리로 이동하게 된다.


Reference

 

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

[vulnerability] File Upload  (0) 2022.04.25
[Exploit] 예제 코드  (0) 2022.03.03
[Secure Coding] Prepared Statement 훑어보기  (1) 2022.01.17
[vulnerability] Python Pickle Module Exploit  (0) 2021.10.07
PentesterLab 1  (1) 2021.09.24
Comments