JITSU 2025. 5. 12. 09:28

작업 환경

  • VMware Workstation Pro (17.6.2 ver)
  • Server 
    • Web 서버 : Rocky_Linux(8.10 ver, VMnet 2, PHP로 구성)
    • DNS 서버 : Rocky_Linux(8.10 ver, VMnet 1)
  • Client
    • Kali Linux : Web 취약점 점검용 (VMnet 1)
  • GNS 구성

  • 해당 점검은 비밀번호 수정 페이지에 한해서 진행됨
DI (상) 8. 디렉터리 인덱싱
취약점 개요
점검 내용 웹 서버 내 디렉터리 인덱싱 취약점 존재 여부 점검
점검 목적 디렉터리 인덱싱 취약점을 제거하여 특정 디렉터리 내 불필요한 파일 정보의 노출을 차단
 보안 위협 해당 취약점이 존재할 경우 브라우저를 통해 특정 디렉터리 내 파일 리스트를 노출하여 응용시스템의
구조를 외부에 허용할 수 있고, 민감한 정보가 포함된 설정 파일 등이 노출될 경우 보안상 심각한 위험을 초래할 수 있음
판단 기준

양호 : 디렉터리 파일 리스트가 노출되지 않는 경우
취약 : 디렉터리 파일 리스트가 노출되는 경우
참고 OWASP TOP 10 항목 중 
A05 : Security Misconfiguration

에 해당한다고 판단

 

 

취약한 세팅

/var/www/html 경로에 Options Indexes 설정 

 

점검 방법

  • Step 1) URL 경로 중 확인하고자 하는 디렉터리까지만 주소창에 입력하여 인덱싱 여부 확인
    • URL 경로 : https://20.20.20.20/proc/  입력

/var/www/html 에 적용했는데 왜 proc도 디렉토리 인덱싱 ???

 → 기본적으로는 상위 디렉터리의 Options Indexes 설정이 하위 디렉터리에 적용된다.

❗하위 디렉터리에서 별도로 Options를 지정하면 상속은 무시되고, 해당 디렉터리의 설정이 우선된다.

 

 

 

  • Step 2) 디렉터리 끝에 %3f.jsp 문자열을 붙여 디렉터리 인덱싱이 되는지 확인
    • URL 경로 : https://20.20.20.20/proc/#3f.jsp  입력

PHP 기반에서 왜 #3f.jsp 를 ???

  • #3f ← URL 인코딩된 ? 를 의미
  • .jsp ← 실제 jsp 파일이 필요없음. 웹 서버가 해당 URL을 파일 요청으로 오인하게 하여,
               원래 막혀야하는 디렉터리 인덱싱을 우회하려는 것 

즉 아래와 같은 요청이다

<공격자 측>
http://20.20.20.20/proc/%3f.jsp
<서버 측>
http://20.20.20.20/proc/?jsp

서버는 경로를 매핑하지 못하고 디렉터리 인덱싱으로 fallback 하는 경우 발생


보안 설정 방법

  • 웹 서버 환경설정에서 디렉터리 인덱싱 기능 제거

 

Apache

  • httpd.conf 파일 내 DocumentRoot 항목의 Options에서 Indexes 제거
    • Indexes가 해당 디렉터리의 파일 목록을 보여주는 지시자
#설정 전
<Directory “/var/www/html”>
 Options Indexes
</Directory>

#설정 후
<Directory "/var/www/html">
Options
</Directory>

참고

📌 디렉터리 인덱싱이란  ?

웹 서버가 특정 디렉터리에 기본 페이지(index.html, index.php 등)가 없을 때
해당 디렉터리 안의 모든 파일 목록을 브라우저에 그대로 노출하는 기능

 

 

왜 디렉터리 목록이 보일까?

웹 서버(Apache, Nginx 등)는 디렉터리만 지정한 요청을 보내면

아래의 파일의 DirectoryIndex 에 설정된 순서로 파일을 찾는다

GET /proc/

  1. /proc/index.php 있는지 확인
  2. 없으면 /proc/index.html 있는지 확인
  3. 없으면 /default.html 있는지 확인

❗ 다 없을 경우?

   → 디렉터리 인덱싱 설정이 ON 이면 Index of /proc 목록이 뜸

   → 디렉터리 인덱싱 설정이 OFF 이면 403 Forbidden 반환

 

 

DirectoryIndex 는 여러 곳에서 정의할 수 있다.

Apache는 다음 여러 경로에서 계층적으로 불러옴

  • /etc/httpd/conf/httpd.conf ← 메인 설정
  • /etc/httpd/conf.d/*.conf ← 개별 모듈, 추가 설정
  • .htaccess ← 디렉터리별 오버라이드 설정
  • /etc/httpd/conf.d/php.conf

 

Apache 설정 적용 우선순위

  1. .htaccess 파일 : 해당 디렉터리에만 적용, 가장 우선적 (단, AllowOverride 가 허용된 경우에만)
  2. <Directory> 블록 : httpd.conf, conf.d/*.conf 등에서 디렉터리 경로에 따라 적용
  3. conf.d/*.conf 모듈 설정 : PHP, AutoIndex 등 모듈별 추가 설정
  4. httpd.conf : 전역 기본 설정. 아무것도 오버라이드하지 않으면 이게 적용됨

 

 

🔐 OWASP TOP 10(2021)과의 연관

1. A05 : Security Misconfiguration

  • 디렉터리 인덱싱은 대표적인 불필요한 기능 활성화
  • 파일 목록, 백업 파일, 로그파일 유출 위험

 

🛡️ 방어 방법

  • Options Indexes 설정 제거
  • .htaccees 사용하여 디렉터리 인덱싱 차단