정보 누출
위 항목은 에러 메시지를 통하여 과도한 정보(서버 데이터 정보 등)가 노출되는지 여부를 점검하는 항목
대표적인 두 가지 경우는,
1) 응답 헤더 내 서버 버전 정보 노출
2) 상태 오류 페이지 내 WAS 버전 정보가 노출
진단 중 아래 두가지 경우에서 WAS 버전 정보가 노출되고 있었다.
첫번째는 존재하지 않는 URL 또는 허용되지 않는 메서드 요청 시 노출되고 있었고,

두번째는 Host 에 특수문자 삽입 또는 URL에 대량에 문자열 요청 시 예외 메시지와 WAS 버전 정보가 노출되는 것을 확인하였다.

WAS 설정 예시 [Tomcat]
1. 루트 디렉터리 안에 별도의 에러 페이지를 추가해준다.
ex) apache-tomcat-9.0.76/webapps/ROOT/error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% response.setStatus(HttpServletResponse.SC_OK); %> // JSP 에러페이지에서 항상 200을 전달해야 할 경우 추가
<html>
<head>
<title>Error Page</title>
</head>
<body>
<div style = "padding: 120px 0px 0px 0px;">
<h1 align="center">페이지에 에러가 발생했습니다.<br> 다시 접속하여 주세요.</h1>
</div>
</body>
</html>
2. apache-tomcat-9.0.76/conf/web.xml 설정 파일에 400-415, 500-510 상태코드에 대한 에러 코드를 추가해준다.
(1번에서 추가한 에러 페이지 사용)
...
<!-- If you define welcome files in your own application's web.xml -->
<!-- deployment descriptor, that list *replaces* the list configured -->
<!-- here, so be sure to include any of the default values that you wish -->
<!-- to use within your application. -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>400</error-code>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>405</error-code>
<location>/error.jsp</location>
</error-page>
</web-app>
3. 서버 재기동은 필수

4. 조치 결과, 별도의 사용자 정의 에러 페이지로 리다이렉트 되는 것을 확인할 수 있다.

BUT,,,
400 상태 코드는 조치가 되지 않아 다른 방안을 찾던 중...
/conf/server.xml 파일에 errorReportValveClass="com.motolies.config.CustomErrorReportValve" 코드 추가했더니 WAS 정보는 노출되지 않지만 400 상태 코드로 남았다... (이 부분은 사실 잘 모르겠다ㅠ... 그냥 대충 보고 넘어가주세요)
...
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
errorReportValveClass="com.motolies.config.CustomErrorReportValve">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
...
위 가이드를 책임님께 들고 갔지만 사용자 정의 에러 페이지로 리다이렉트 되는 방안을 더 찾아보면 좋겠다고 하셔서
찾아봤더니 있더라.
1. /conf/server.xml 파일에 별도의 에러페이지 코드를 추가해줬다.
...
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<!-- 에러페이지 처리 방식 추가 -->
<Valve className="org.apache.catalina.valves.ErrorReportValve"
showReport="false"
showServerInfo="false"
errorCode.0="C:\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps\ROOT\error.html"/>
<!-- 이때, html 파일만 사용 가능 -->
</Host>
</Engine>
</Service>
</Server>
2. 조치 결과

WEB 설정 예시 [Apache] httpd.conf

위와 같이 특정 에러 코드에 대해 에러 메시지를 출력할 수도 있고 특정 웹 페이지로 Redirect 시킬 수 있으며,
이 설정은 httpd.conf 의 전역 설정에 추가하거나 원하는 가상 호스트의 사이에 추가하면 된다.
'security > web' 카테고리의 다른 글
| 넥사크로(Nexacro) 사설 인증서 허용 방법 (0) | 2025.01.10 |
|---|