OWASP Juice Shop [정보누출 취약점]

2025. 12. 11. 10:35·취약점 진단

 

 

1. 정보누출 취약점


접근 권한이 없는 페이지로 접근하거나 페이지가 없는 URL로 접근할 때 

웹 서버는 에러 페이지를 반환한다. 

간단한 예시로 client 측에서 잘못된 경로로 요청한다면 400 번대 error를 반환하고

서버 측에서 문제가 발생한 경우 500 번대 error를 반환한다.

 

error가 발생했을 때 노출되는 웹 서버 정보나 

서버 내 설정 파일 설정 미흡으로 인한 정보 누출은 차단해야 한다.

정보누출이 발생하는 경우의 수는 크게 두가지로 나뉜다.

 

 

 

1. 디폴트 에러 페이지에 의한 웹 서버 정보 노출

HTTP 오류에 대한 웹 서버에 디폴트로 설정된 에러 페이지를 그대로 사용할 경우

웹 서버 정보가 노출되는 것을 확인할 수 있다.

아래 사진처럼 존재하지 않는 URL로 접근했을 때 반환되는 404 에러 페이지 내

웹 서버 버전 정보가 노출된 것을 볼 수 있다.

Apache version 정보 누출

 

 

 

2. 에러 메시지에 의한 웹 서버 정보 노출

프로그램 실행 중 발생하는 에러나 경고 메시지를 그대로 출력할 경우

내부 파일 구조와 시스템 정보가 그대로 누출되는 취약점이 발생한다.

사진처럼 특수문자를 검색창에 삽입 시 SQL error 구문이 반환된 것을 볼 수 있다.

SQL error 문 반환

 

 

 

 

2. 조치방안 및 보안 설정방법


1. 디폴트 에러 페이지에 의한 웹 서버 정보 노출

[Apache]  웹 서버 환경 설정파일인 apache2.conf 파일을 통해

사용자 정의 에러 페이지를 설정한다.

에러 페이지를 error_page.php 페이지로 리다이렉트 시키는 방법이다.

 

웹 서버 내부로 들어가면 다음과 같이 웹 서버 설정 페이지가 있는 것을 볼 수 있다.

Web Server 설정 파일 및 디렉토리

 

상태코드 상태 메세지 설명
401 Unauthorized 요청자에 대한 인증이 이뤄지지 않아 접근 불가할 때 반환
403 Forbidden 인증은 이뤄졌으나 접근 페이지에 대한 권한이 불충분할 때 반환
404 Not Found client가 요청한 페이지가 server에 존재하지 않을 때 반환

 

 

추가적으로 error가 발생하거나 Banner Grabbing을 통한 서버 버전 정보 노출을

차단하기 위해서 환경 설정 파일 내 ServerTokens, ServerSignature 값을 변경해야 한다.

 

 

 

- ServerTokens

ServerTokens 값 정보
Prod 웹서버의 이름만 알려준다.
Major 웹서버의 이름과 Major 버전
Minor 웹서버의 이름과 Minor 버전
Min 웹서버 이름과 Minimum 버전
OS 웹서버 이름, 버전 운영체제 (Default)
Full 모든 정보를 알려준다.

 

가장 최소 권한으로 나오는 Prod로 설정하는 것을 권장한다.

 

 

 

- ServerSignature

Apache 웹 서버 접근 시 오류가 발생하면 Apache 버전 정보가와 port가 반환된다.

이를 차단할 수 있는 설정이며 해당 설정 값을 off로 설정해야 

정보노출을 방지할 수 있다.

 

 

 

[tomcat] WAS와 같은 tomcat의 경우 server.xml 파일 내부에서 

server 정보가 노출되지 않도록 설정할 수 있다.

Connector 태그에 server 속성을 설정해서 서버의 기본정보를 헤더에 노출되지 않도록 한다.

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" redirectPort="8443" server=""/>...

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" 
maxThreads="150"SSLEnabled="true" scheme="https" secure="true" 
clientAuth="false" sslProtocol="TLS" server="" />...

<Connector port="8009" protocol="AJP/1.3" 
redirectPort="8443" server="" />

 

 

추가로 ErrorReportValve를 설정하여 에러 페이지를 설정할 수 있다.

showReport 속성을 false로 설정하여 상세에러 내역을 표시하지 않으며 

showServerInfo 속성을 false로 설정하여 서버정보를 노출시키지 않도록 한다.

<Valve className="org.apache.catalina.valves.ErrorReportValve"
showReport="false"
showServerInfo="false"
errorCode.0="C:\Program Files\tomcat\webapps\error.html"/>

 

 

 

 

2. 에러 메시지에 의한 웹 서버 정보 노출

[PHP] PHP 환경의 설정파일인 php.ini를 통한 에러 메시지를 차단한다.

현재 PHP 환경을 기반으로 개발된 웹 서버에서 php.ini 파일의

display_errors 값을 off로 설정하면 에러 메시지를 출력하지 않는다.

php.ini 파일의 위치는 /etc/php5/apache2/php.ini 이다.

 

 

 

display_errors 값을 Off로 설정한 후, 자유게시판에 세미콜론(‘)을 검색하여

이전처럼 코드 에러를 출력하는지 확인한다.

특수문자 삽입 시 error page가 반환되지 않는 것을 확인

 

 

 

apaceh 재시작

 

추가로 서버 측에서 설정을 수정했어도 동일하게 취약점이 나올 경우가 있다.

그 이유는 서비스를 재실행하지 않았을 때 발생한다.

다음과 같이 리눅스의 경우 systemctl 명령어로

서비스 재실행을 진행하는 것이 필요하다.

 

 

반응형
저작자표시 (새창열림)

'취약점 진단' 카테고리의 다른 글

OWASP Juice Shop [SQL Injection]  (0) 2025.12.11
OWASP Juice Shop Mass Assignment  (0) 2025.12.11
OWASP Juice Shop [Redirect 취약점]  (0) 2025.12.11
Docker 사용법  (0) 2025.12.11
'취약점 진단' 카테고리의 다른 글
  • OWASP Juice Shop [SQL Injection]
  • OWASP Juice Shop Mass Assignment
  • OWASP Juice Shop [Redirect 취약점]
  • Docker 사용법
JNU
JNU
JNU의 보안공부
  • JNU
    JNU diary
    JNU
  • 전체
    오늘
    어제
  • 인기 글

    • 분류 전체보기 (105)
      • 네트워크 보안 (15)
      • 시스템 보안 (18)
      • 웹 보안 (16)
      • Frida (4)
      • Android (4)
      • 정보보안기사_산업기사 (1)
      • iOS (6)
      • Network (7)
      • 악성코드 분석 (10)
      • 침투테스트 (5)
      • Bandit 원정대 (4)
      • 대학원 (3)
      • AWS Cloud (3)
      • CVE (2)
      • Python (0)
      • Dreamhack (1)
      • 취약점 진단 (5)
      • 레드라쿤 CTI (1)
  • 06-09 04:58
  • hELLO· Designed By정상우.v4.10.5
JNU
OWASP Juice Shop [정보누출 취약점]
상단으로

티스토리툴바