[2026 주요정보통신기반시설] WEB-06 웹서비스상위디렉터리접근제한설정

'..'와같은문자사용등을통한상위디렉터리접근제한여부점검

·

WEB-06 웹서비스상위디렉터리접근제한설정

가이드라인 원문

항목내용
항목코드WEB-06
점검내용‘..‘와같은문자사용등을통한상위디렉터리접근제한여부점검
점검대상Apache, Tomcat, Nginx, IIS, WebtoB
판단기준양호: 상위디렉터리접근기능을제거한경우
판단기준취약: 상위디렉터리접근기능을제거하지않은경우
조치방법상위디렉터리접근기능제거설정

상세 설명

1. 항목 개요

경로 순회(Path Traversal) 공격은 웹 애플리케이션에서 사용자 입력을 적절하게 검증하지 않아 발생하는 취약점입니다. 공격자는 ../ (또는 ..\)와 같은 문자열을 사용하여 웹 서버의 문서 루트 디렉터리를 벗어나 시스템의 다른 부분에 접근할 수 있습니다. 마치 건물의 특정 방에서 출발해 계단을 통해 다른 층으로 이동하는 것과 같습니다. 상위 디렉터리 접근을 제한하는 것은 웹 서비스의 핵심 보안 설정입니다.

2. 왜 이 항목이 필요한가요?

실제 시나리오:

  • 공격자가 다음과 같은 URL로 접근을 시도합니다:
    • http://example.com/download?file=../../../../etc/passwd
    • http://example.com/images?file=..\..\..\windows\system32\config\sam
  • 웹 서버가 경로 검증을 하지 않아 시스템 파일에 접근합니다.
  • 중요 설정 파일, 비밀번호 파일, 데이터베이스 파일 등을 탈취합니다.

경로 순회 공격 패턴:

  • ../ - 상위 디렉터리 이동 (Unix/Linux)
  • ..\ - 상위 디렉터리 이동 (Windows)
  • ....// - URL 인코딩 우회
  • %2e%2e%2f - URL 인코딩된 ../
  • ..%255c - Unicode 인코딩 우회

보안 위협:

  • 시스템 설정 파일 유출 (/etc/passwd, web.config 등)
  • 비밀번호 파일 접근 (.htpasswd, SAM 파일)
  • 소스 코드 노출
  • 데이터베이스 파일 접근
  • 로그 파일을 통한 사용자 정보 탈취

3. 점검 대상

  • Apache: Apache HTTP Server
  • Tomcat: Apache Tomcat 웹 서버
  • Nginx: Nginx 웹 서버
  • IIS: Microsoft Internet Information Services
  • WebtoB: Tmax WebtoB 웹 서버

4. 판단 기준

  • 양호: 상위 디렉터리 접근 기능을 제거한 경우
  • 취약: 상위 디렉터리 접근 기능을 제거하지 않은 경우

5. 점검 방법

간단한 점검 방법

다음 URL들을 브라우저에 입력해 봅니다:

  • http://your-domain.com/download?file=../../../../etc/passwd
  • http://your-domain.com/images?file=../../test.txt

시스템 파일 내용이 보이면 취약, 에러 메시지가 나오면 양호입니다.

Apache

1
2
# AllowOverride 설정 확인
cat /<Apache 설치 디렉터리>/httpd.conf | grep "AllowOverride"

Tomcat

1
2
# allowLinking 설정 확인
cat /<Tomcat 설치 디렉터리>/conf/server.xml | grep "allowLinking"

6. 조치 방법

Apache

Step 1) AllowOverride 지시자 AuthConfig 옵션 설정 확인

1
vi /<Apache 설치 디렉터리>/httpd.conf (또는 apache.conf)
1
2
3
4
5
6
7
8
9
<!-- 변경 전 -->
<Directory '/usr/local/apache2/htdocs'>
    AllowOverride None
</Directory>

<!-- 변경 후 -->
<Directory '/usr/local/apache2/htdocs'>
    AllowOverride AuthConfig
</Directory>

Step 2) 사용자 인증을 설정할 디렉터리에 .htaccess 파일 생성

1
vi /usr/local/apache/test/.htaccess
1
2
3
4
AuthName "Directory User Authentication"
AuthType Basic
AuthUserFile /usr/local/apache/test/.auth
Require valid-user

지시자 설명:

지시자설명
AuthName인증 영역(웹브라우저의 인증창에 표시되는 문구)
AuthType인증 형태(Basic 또는 Digest)
AuthUserFile사용자 정보(아이디 및 비밀번호) 저장 파일 위치
AuthGroupFile그룹 파일의 위치(옵션)
Require접근을 허용할 사용자 또는, 그룹 정의

Step 3) 사용자 인증에 사용할 아이디 및 비밀번호 생성

1
2
3
4
htpasswd /<Apache 설치 디렉터리>/.htpasswd [사용자명]
New password: <비밀번호 입력>
Re-type new password: <비밀번호 재입력>
Adding password for user <사용자명>

Step 4) Apache 재구동

1
systemctl restart apache2

Tomcat

Step 1) server.xml 파일 내 Context 요소에서 allowLinking 옵션 확인

1
vi /<Tomcat 설치 디렉터리>/conf/server.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<!-- 변경 전 (취약) -->
<Context allowLinking='true'>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>

<!-- 변경 후 (양호) -->
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>

Nginx

Step 1) nginx.conf 파일 내 디렉터리 접근을 기본 인증으로 제한 설정

1
vi /<Nginx 설치 디렉터리>/conf/nginx.conf
1
2
3
4
location /<접근제한 디렉터리>/ {
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

IIS 6.0 이하

Step 1) 부모 경로 사용 설정 비활성화

  1. 시작 > Windows 관리 도구 > 인터넷 정보 서비스(IIS) 관리자 실행
  2. 웹 사이트 선택 > IIS > ASP 더블클릭
  3. ‘부모 경로 사용’ 항목을 ‘False’로 설정

IIS 7.0 이상

Step 1) web.config 파일에서 enableParentPaths 설정

  1. 제어판 > 관리 도구 > 인터넷 정보 서비스(IIS) 관리자
  2. 해당 웹사이트 선택 > 사이트 편집에서 루트 디렉터리
  3. 루트 디렉터리의 web.config 파일에서 ’enableParentPaths’ 요소를 ‘False’로 설정
1
2
3
4
5
<configuration>
    <system.web>
        <httpRuntime enableParentPaths="false" />
    </system.web>
</configuration>

참고: web.config 파일이 없으면 사이트 홈 디렉터리에 새로 생성합니다.

WebtoB

Step 1) http.m 파일 내 UpperDirRestrict 옵션 제거 또는 비활성화

1
vi /<WebtoB 설치 디렉터리>/config/http.m
1
2
*NODE imuser
    UpperDirRestrict = N  # N으로 설정 또는 주석 처리

Step 2) 설정 파일 컴파일 및 재구동

1
2
3
wscfl -I http.m
wsdown
wsboot

7. 조치 시 주의사항

  • 웹서버 및 웹서비스의 특성에 따라 영향을 줄 수 있습니다.
  • 상위 디렉터리 접근이 필요한 레거시 애플리케이션이 있는 경우 영향도를 사전에 테스트해야 합니다.
  • 사용자 입력에 대한 경로 검증을 애플리케이션 레벨에서도 수행해야 합니다.
  • 설정 변경 후 서비스 정상 작동 여부를 충분히 확인해야 합니다.

8. 참고 자료

요약

상위 디렉터리 접근 기능을 제한하여 경로 순회 공격을 차단하고 시스템의 중요 파일과 데이터를 보호해야 합니다.