본문 바로가기
Hack/Web

Nginx off by slash fail

by Becoming a Hacker 2020. 9. 21.
반응형

개요

Nginx에는 특정 경로로 요청을 받을 때 미리 설정한 경로로 변경하여 Redirect 해주는 기능인 alias와 root가 있습니다.

 

alias

location에 설정된 경로로 접속 시 alias에 설정된 경로로 Redirect

 

root

location에 설정된 경로로 접속시 root에 설정된 경로에 추가하여 Redirect

 

즉, 이를 간단히 나타내면 다음과 같습니다.

 

파일과 디렉토리의 경로 설정에 대한 올바른 사용법은 다음과 같습니다.

 

디렉토리 경로 설정법 
location /test/ { alias directory path }


파일 경로 설정법 
location /test { alias file path }

 

만약 디렉토리에 대한 경로 사용 시 location 경로에 / 를 실수로 입력하지 않게 된다면, LFI 취약점이 발생하게 됩니다.

 

취약한 디렉토리 경로 설정법

location /test { alias directory path }


분석

테스트에 사용한 nginx 설정과 입력 URL은 다음과 같습니다.

 

취약한 Nginx 경로 설정

location /etc {
	alias /etc/nginx/
}

 

입력 URL

192/160.43.133/etc../passwd

 

location에 설정한 파일 경로가 alias에 설정된 디렉토리 경로로 변경되며, 이후 입력된 ../passwd가 합쳐지면서 /etc/password 파일을 참조할 수 있게 됩니다.

 

즉, 취약한 설정이 적용된 경로의 부모 디렉토리부터 하위의 모든 파일에 접근할 수 있게 됩니다.


Reference

https://www.blackhat.com/us-18/briefings/schedule/#breaking-parser-logic-take-your-path-normalization-off-and-pop-days-out-10346

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

Reflected File Download  (0) 2020.09.22
Phar 파일을 이용한 PHP Unserialization  (0) 2020.09.22
commons-fileupload Module WAF Filtering Bypass  (0) 2020.09.21
CVE 2020-10487 (Ghostcat : Tomcat AJP)  (0) 2020.09.21
Host Split Attack  (0) 2020.09.21

댓글