1. 정보누출 취약점
접근 권한이 없는 페이지로 접근하거나 페이지가 없는 URL로 접근할 때
웹 서버는 에러 페이지를 반환한다.
간단한 예시로 client 측에서 잘못된 경로로 요청한다면 400 번대 error를 반환하고
서버 측에서 문제가 발생한 경우 500 번대 error를 반환한다.
error가 발생했을 때 노출되는 웹 서버 정보나
서버 내 설정 파일 설정 미흡으로 인한 정보 누출은 차단해야 한다.
정보누출이 발생하는 경우의 수는 크게 두가지로 나뉜다.
1. 디폴트 에러 페이지에 의한 웹 서버 정보 노출
HTTP 오류에 대한 웹 서버에 디폴트로 설정된 에러 페이지를 그대로 사용할 경우
웹 서버 정보가 노출되는 것을 확인할 수 있다.
아래 사진처럼 존재하지 않는 URL로 접근했을 때 반환되는 404 에러 페이지 내
웹 서버 버전 정보가 노출된 것을 볼 수 있다.

2. 에러 메시지에 의한 웹 서버 정보 노출
프로그램 실행 중 발생하는 에러나 경고 메시지를 그대로 출력할 경우
내부 파일 구조와 시스템 정보가 그대로 누출되는 취약점이 발생한다.
사진처럼 특수문자를 검색창에 삽입 시 SQL error 구문이 반환된 것을 볼 수 있다.

2. 조치방안 및 보안 설정방법
1. 디폴트 에러 페이지에 의한 웹 서버 정보 노출
[Apache] 웹 서버 환경 설정파일인 apache2.conf 파일을 통해
사용자 정의 에러 페이지를 설정한다.
에러 페이지를 error_page.php 페이지로 리다이렉트 시키는 방법이다.
웹 서버 내부로 들어가면 다음과 같이 웹 서버 설정 페이지가 있는 것을 볼 수 있다.

| 상태코드 | 상태 메세지 | 설명 |
| 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로 설정한 후, 자유게시판에 세미콜론(‘)을 검색하여
이전처럼 코드 에러를 출력하는지 확인한다.


추가로 서버 측에서 설정을 수정했어도 동일하게 취약점이 나올 경우가 있다.
그 이유는 서비스를 재실행하지 않았을 때 발생한다.
다음과 같이 리눅스의 경우 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 |
