슈개's IT/SW개발보안

[SW개발보안] SR1-5. 웹 서비스 요청 및 결과 검증

슈개 2021. 1. 23. 10:10
반응형

[SW개발보안] SR1-5. 웹 서비스 요청 및 결과 검증

 

 

크로스 사이트 스크립트 (Cross-Site Scripting, XSS)

공격자가 전달한 스크립트 코드가 사용자(희생자) 브라우저를 통해서 실행

→ 사용자 브라우저 또는 PC에 정보(쿠키, 스토리지, …)를 탈취

→ 가짜 페이지를 생성 후 사용자 입력을 유도해서 정보를 탈취

→ PC의 제어권을 탈취 ⇒ BeEF

 

 

[대응방안]

  1. 입력값 검증 

  2. 출력값 검증 ⇒ 실행 불가한 형태로 출력 = HTML 인코딩

  3. 검증 또는 필터링하는 기능은 검증된 라이브러리 또는 프레임워크를 이용해서 구현 ⇒ 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> <---------------+

 

&lt;script&gt;...&lt;/script&gt; ⇒ <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

 

http://www.w3big.com/jsp/jstl-core-out-tag.html

반응형