KOROMOON

착한 사마리아인이 되고 싶습니다.

9/19/2025

[Root Me] WEB-Server_Nginx - Root Location Misconfiguration


( 1 ) 문제 정보



Our web developer tells us that the intranet he has developed is secure because it contains very few functionalities. Prove him wrong by reading the server configuration.


저희 웹 개발자는 자신이 개발한 인트라넷이 기능이 매우 적어 안전하다고 말합니다. 서버 구성을 읽어서 그의 주장이 틀렸음을 증명해 보세요.


server {

    listen       80;

    server_name  _;

    root /etc/nginx;

 

    location = / {

        return 302 /login/login.html;

    }

 

    location /login/ {

        alias /usr/share/nginx/html/login/;

    }

 

 

    location /static/ {

        alias /var/www/app/static/;

    }

 

    location / {

        try_files $uri $uri/ =404;

        default_type text/plain;

 

    }

   

    error_page 404 =200 /error.txt;

 

    location /error.txt {

        internal;

    }

}




( 2 ) 문제 요점


위 주어진 Nginx 설정을 보면 "root /etc/nginx;" 로 되어 있음.

웹 루트가 Nginx 설정 디렉터리 자체 폴더로 잘못 잡힌 오배치 문제임.




( 3 ) /etc/nginx 폴더



Nginx 기본 설치의 설정 루트는 보통 /etc/nginx 임.

nginx.conf 가 최상위 설정 파일이고, 여기에 include 로 각종 하위 설정 조각들을 불러와 계층적으로 합쳐 쓰는 구조임.


/etc/nginx 핵심 구성은 아래와 같음.


1. nginx.conf

메인 설정 파일임.

events {}, http {}, (선택) stream {} 블록을 포함하고, 이 안에서 또 다른 설정 파일들을 include로 불러옴.

설정 구조와 컨텍스트(문맥: main/http/server/location 등)는 공식 가이드가 잘 정리되어 있으니 참고 바람.

링크 : https://nginx.org/en/docs/beginners_guide.html


2. include 지시문

다른 파일(또는 와일드카드로 매칭되는 여러 파일)을 현재 설정에 삽입함.

ex. include mime.types;, include conf.d/*.conf;


3. mime.types

확장자 → MIME 타입 매핑.

보통 http {} 블록에서 include mime.types;로 불러옴.


4. 파라미터 파일들(배포판 기본 제공)

fastcgi_params, uwsgi_params, scgi_params, proxy_params 등 각 게이트웨이/프록시 프로토콜에 전달할 기본 헤더 및 변수를 정의한 조각들임. (필요 시 include)


대표 폴더/파일별 상세 정보는 아래와 같음.


1. /etc/nginx/nginx.conf

최상위 진입점임.

여기에서 include 로 conf.d/*.conf 나 sites-enabled/* 등을 불러오며, 로드 순서가 동작에 영향을 줄 수 있음.


2. /etc/nginx/conf.d/*.conf

개별 vhost 또는 공통 설정을 나눠 담는 디렉터리임. (특히 RHEL 계열에서 표준)

패키지 기본 가이드에서도 여기로 조각을 넣는 흐름을 보여줌.


3. /etc/nginx/sites-available/ & /etc/nginx/sites-enabled/ (주로 Debian/Ubuntu 계열)

sites-available/에 정의 → sites-enabled/로 심볼릭 링크 → nginx.conf에서 sites-enabled 를 include 함.

이 패턴은 "필수" 는 아니지만 운영 편의상 권장되는 관례임.


4. /etc/nginx/snippets/ (주로 Debian/Ubuntu 계열)

재사용 블록(보안 헤더, 공통 프록시 설정, 인증 스니펫 등)을 저장해 여러 서버블록에서 include 로 재활용함.


5. mime.types / fastcgi_params / uwsgi_params / scgi_params / proxy_params

MIME 매핑 및 게이트웨이/프록시 파라미터의 기본값 모음임.

필요할 때 특정 서버/로케이션에서 include 로 끼워 넣음. (ex. PHP-FPM FastCGI)




( 4 ) flag 찾기


1. 사이트 화면


2. nginx.conf 파일 접근

웹 루트가 Nginx 설정 디렉터리 자체 폴더로 nginx.conf 파일에 접근이 가능함.

nginx.conf 파일를 확인한 결과, /etc/nginx/conf.d/default.conf 파일이 존재함을 확인함.


3. /conf.d/default.conf 파일 접근

해당 파일에서 flag 값을 확인함.




참고 사이트 : 

https://nginx.org/en/docs/beginners_guide.html


댓글 없음:

댓글 쓰기