1. 구성 환경

- VMware Player

- CentOS 7.8

- Docker

 

2. 구축

1) VMware에 CentOS를 설치 후 yum update까지 완료한다. (과정 생략)
2) 터미널에서 yum update까지 완료 후 아래와 같이 Docker 설치 수행

yum install docker
systemctl start docker
systemctl status docker

3) Github 샘플 가져오기

yum install git

# 취약점 샘플 GitHub 사이트
git clone https://github.com/tkmru/nginx-alias-traversal-sample

4) 기져온 Dockerfile 실행

cd nginx-alias-traversal-sample/
docker build -t nginx-traversal .
docker run -d -p 127.0.0.1:3000:80 nginx-traversal:latest

 

3. 시연

3000번 포트를 80번 포트로 연결하였으므로 localhost:3000으로 연결할 경우 위와 같은 페이지가 나타난다.

 

먼저 localhost:3000/static/welcome.txt에 접속할 경우, 환영한다는 텍스트 파일이 출력된다.
참고로 해당 샘플 테스트 사이트는 flag.txt를 여는 것이 목적이다.

 

물론, 바로 주소창에 입력해서 해당 경로로 접근하면 404 Not Found 에러가 출력된다.
존재하지 않는 파일이라는 것을 추측할 수 있다.

 

그렇다면 localhost:3000/static/welcome.txt에 다시 돌아간 뒤, localhost:3000/static../를 입력할 경우
403 Forbidden 에러가 출력된다.
여기서 우리는 폴더는 존재하나 직접적인 접근 권한이 나한테 없는 것 추측할 수 있다.

 

그렇다면 아래와 같이 주소창에 입력 해본다.

flag 값이 떨어지는 것을 볼 수 있고, localhost:3000/static../flag.txt 요청 시 
localhost:3000/static/../flag.txt이 요청된 셈이고, 

 

잘못된 별칭(alias) 설정이 공격자가 Nginx가 지정한 대상 폴더 외부의 파일을 읽을 수 있게 할 수 있다는 것을 알 수 있다.

 
 

 

+ Recent posts