HTMLTagFilter
- 작성자 :
- 개**팀
- 작성일 :
- 2023-09-08 18:20:34
- 조회수 :
- 1,769
- 구분 :
- 개발환경 / 3.5
- 진행상태 :
- 완료
Q
3.5버전의 전자정부프레임워크로 개발하여 운영중인 사이트가 있습니다.
-- 문체부 사이버안전센터의 웹취약점 점검결과에 대한 보고를 받았는데요.
크로스사이트 스크립팅
[[ 웹 어플리케이션에서 사용자 입력 값에 대한 필터링이 제대로 이루어지지 않을 경우,
공격자가 입력이 가능한 폼(웹 브라우저 주소입력 또는 게시판 등)에 악성 스크립트를
삽입하여 사용자의 세션을 도용, 악성코드를 유포할 수 있는 취약점 ]]
취약 파라미터 : searchCondition, searchKeyword
* 모든 페이지의 게시글 작성 관련 페이지 및 파라미터에 조치 권고
현재 web.xml 설정
<filter>
<filter-name>HTMLTagFilter</filter-name>
<filter-class>egovframework.com.cmm.filter.HTMLTagFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HTMLTagFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
해당 java및 Wrapper 파일 첨부드립니다.
import하는 자바 pom.xml은
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
<scope>provided</scope>
</dependency>
입니다.
jsp submit 부분은
단순 <form name="schFrm" id="schFrm" method="get" autocomplete="off"> 안에
<input type="text" class="nor" id="searchKeyword" name="searchKeyword" value="${boardVO.searchKeyword}" placeholder="검색어를 입력해주세요">
단순 인풋으로 넘기며, 서버에서는 VO에 변수가 담겨서 처리됩니다.
현재 위 상태에서 취약점이 계속 발생한다고 합니다.
어떤 조치를 더 취할 수 있을까요?
-- 문체부 사이버안전센터의 웹취약점 점검결과에 대한 보고를 받았는데요.
크로스사이트 스크립팅
[[ 웹 어플리케이션에서 사용자 입력 값에 대한 필터링이 제대로 이루어지지 않을 경우,
공격자가 입력이 가능한 폼(웹 브라우저 주소입력 또는 게시판 등)에 악성 스크립트를
삽입하여 사용자의 세션을 도용, 악성코드를 유포할 수 있는 취약점 ]]
취약 파라미터 : searchCondition, searchKeyword
* 모든 페이지의 게시글 작성 관련 페이지 및 파라미터에 조치 권고
현재 web.xml 설정
<filter>
<filter-name>HTMLTagFilter</filter-name>
<filter-class>egovframework.com.cmm.filter.HTMLTagFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HTMLTagFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
해당 java및 Wrapper 파일 첨부드립니다.
import하는 자바 pom.xml은
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
<scope>provided</scope>
</dependency>
입니다.
jsp submit 부분은
단순 <form name="schFrm" id="schFrm" method="get" autocomplete="off"> 안에
<input type="text" class="nor" id="searchKeyword" name="searchKeyword" value="${boardVO.searchKeyword}" placeholder="검색어를 입력해주세요">
단순 인풋으로 넘기며, 서버에서는 VO에 변수가 담겨서 처리됩니다.
현재 위 상태에서 취약점이 계속 발생한다고 합니다.
어떤 조치를 더 취할 수 있을까요?
환경정보
-
- OS 정보 : windows
- 표준프레임워크 버전 : 3.5
- JDK(JRE) 정보 : 1.8
- WAS 정보 : 톰캣 8.0
- DB 정보 : 오라클11g
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터입니다.
원칙적으로 JSP내에서 <c:out ~~~>태그를 사용하면
XSS 문자열에 이스케이프 처리가 가능합니다.
다음과 같이 기술되지 않으면
XSS에대해 위험 문자열 이스케이프 처리가 않된것으로 판단 되었을수도 있습니다.
<c:out value='${atchFileId}'/>
HTMLTagFilter는 필터를 사용하기 때문에 일괄적으로
XSS에 위험한 문자열에 대해
이스케이프 처리하는 기능을 가지고 있습니다.
HTMLTagFilter도 최근에 배포된것으로 업그레이드 권장드립니다.
https://github.com/eGovFramework/egovframe-common-components/blob/contribution/src/main/java/egovframework/com/cmm/filter/HTMLTagFilterRequestWrapper.java
위 사항을 참고하여
센터에서 정확한 상황을 알수 없으므로
보안점검 기관에 관련하여 문의가 필요할 것으로 보입니다.
감사합니다.
표준프레임워크센터입니다.
원칙적으로 JSP내에서 <c:out ~~~>태그를 사용하면
XSS 문자열에 이스케이프 처리가 가능합니다.
다음과 같이 기술되지 않으면
XSS에대해 위험 문자열 이스케이프 처리가 않된것으로 판단 되었을수도 있습니다.
<c:out value='${atchFileId}'/>
HTMLTagFilter는 필터를 사용하기 때문에 일괄적으로
XSS에 위험한 문자열에 대해
이스케이프 처리하는 기능을 가지고 있습니다.
HTMLTagFilter도 최근에 배포된것으로 업그레이드 권장드립니다.
https://github.com/eGovFramework/egovframe-common-components/blob/contribution/src/main/java/egovframework/com/cmm/filter/HTMLTagFilterRequestWrapper.java
위 사항을 참고하여
센터에서 정확한 상황을 알수 없으므로
보안점검 기관에 관련하여 문의가 필요할 것으로 보입니다.
감사합니다.