[SW개발보안] SR1-5. 웹 서비스 요청 및 결과 검증
크로스 사이트 스크립트 (Cross-Site Scripting, XSS)
공격자가 전달한 스크립트 코드가 사용자(희생자) 브라우저를 통해서 실행
→ 사용자 브라우저 또는 PC에 정보(쿠키, 스토리지, …)를 탈취
→ 가짜 페이지를 생성 후 사용자 입력을 유도해서 정보를 탈취
→ PC의 제어권을 탈취 ⇒ BeEF
[대응방안]
-
입력값 검증
-
출력값 검증 ⇒ 실행 불가한 형태로 출력 = HTML 인코딩
-
검증 또는 필터링하는 기능은 검증된 라이브러리 또는 프레임워크를 이용해서 구현 ⇒ lucy xss filter ⇒ http://naver.github.io/lucy-xss-filter/kr/
공격 문자열 유형
https://owasp.org/www-community/xss-filter-evasion-cheatsheet
#1 반사 XSS (Reflective XSS)
입력값이 다음 화면 출력에 사용되는 것
⇒ 공격자의 스크립트 코드가 취약한 서버에 남지 않는 특징
예: ID 중복 체크 기능을 구현
ID: a<script>...</script> -----> check.jsp?id=a<script>...</script>
"<%=request.getParameter("id")%>"는 존재...
|
"a<script>...</script>"는 존재… <-------------------+
공격자가 다음과 같은 공격 문자열을 만들어서 이메일, SMS 등으로 불특정 다수에게 전달
<a href="check.jsp?id=a<script>...</script>"> 많은 사람들이 관심을 가지는 내용 </a>
#2 저장 XSS (Stored XSS)
공격자의 스크립트 코드가 취약한 서버에 저장
게시판 서비스
(공격자) ( DB )
글쓰기 글저장
<script>...</script> ---------------> <script>...</script>
|
(희생자) |
글보기 |
<script>...</script> <---------------+
<script>...</script> ⇒ <script>...</script> 형태의 텍스트로 출력
#3 DOM Based XSS
개발자의 스크립트 코드의 문제점을 이용해서 공격자의 스크립트를 실행
+------- 공격자가 전달한 값이 들어갈 수 있다면
|
document.write(_____); ⇐ 개발자가 작성한 코드
https://owasp.org/www-community/attacks/DOM_Based_XSS
https://cheatsheetseries.owasp.org/cheatsheets/DOM_based_XSS_Prevention_Cheat_Sheet.html
<%=_____%> ⇒ 데이터를 그대로 출력하므로 태그 요소를 해석해서 실행
<c:out value="${____}" escapeXml="true"/> ⇒ 태그 요소는 HTML 인코딩해서 출력
${fn:escapeXml(_____)}
http://www.w3big.com/ko/jsp/jstl-function-escapexml.html
'슈개's IT > SW개발보안' 카테고리의 다른 글
[SW개발보안] SR1-7. HTTP 프로토콜 유효성 검증 (0) | 2021.01.23 |
---|---|
[SW개발보안] SR1-6. 웹 기반 중요기능 수행 요청 유효성 검증 (0) | 2021.01.23 |
[SW개발보안] SR1-4. 시스템 자원접근 및 명령어 수행 입력값 검증 (0) | 2021.01.23 |
[SW개발보안] SR1-3. 디렉터리 서비스 조회 및 결과 검증 (0) | 2021.01.23 |
[SW개발보안] SR1-2. XML 조회 및 결과 검증 (0) | 2021.01.23 |