본문 바로가기
보안/개발보안

크로스사이트 스크립트

by ^..^v 2019. 10. 1.
728x90
반응형

크로스사이트 스크립트

 

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

→ 브라우저 또는 PC의 정보를 탈취

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

→ 희생자 PC의 제어권을 탈취 ⇒ BeEF

 

[방어기법]

입력값에 실행 가능한 스크립트 코드 포함 여부를 필터링 후 사용

→ 서블릿 필터, 인터셉터, 컨트롤러(Validator)

출력값에 실행 가능한 스크립트 코드 포함 여부를 필터링 후 사용 

⇒ 안전한 문자열로 대체 

   - HTML 인코딩 

   - TagLib 사용 <c:out value="${...}"> ${fn:escapeXml(...)} 

→ 컨트롤러, 뷰

 

 

 

#1 반사 XSS (Reflective XSS)

입력값이 (실행 가능한 스크립트 코드 포함 여부를 확인하지 않고) 출력으로 사용되는 경우 발생

→ 공격자가 전달한 스크립트 코드가 취약한 서버에 저장되지 않음

→ 취약한 서버는 공격자의 스크립트가 전파(경유)지로만 활용

 

 

#2 저장 XSS (Stored XSS)

공격자가 전달한 스크립트 코드가 취약한 서버에 저장되어, 희생자에게 지속적으로 전달

 

 

# DOM Based XSS

개발자가 작성해 놓은 스크립트 코드의 문제점을 악용한 공격 기법

https://cheatsheetseries.owasp.org/cheatsheets/DOM_based_XSS_Prevention_Cheat_Sheet.html

 

document.write( _____ );

 

<script>

var url = decodeURIComponent(document.location.href);

document.write(url.substr(url.search(/#msg/i)+5, url.length));

</script>

 

정상적인 요청

요청 : http://192.168.137.1:8080/openeg/hello.jsp#msg=Hello,%20Everyone!!!

출력 : Hello, Everyone!!!

공격 코드

요청 : http://192.168.137.1:8080/openeg/hello.jsp#msg=%3Cscript%3Edocument.location=%27http://naver.com%27%3C/script%3E

출력 : naver.com으로 이동

 

728x90
반응형

'보안 > 개발보안' 카테고리의 다른 글

위험한 형식 파일 업로드  (0) 2019.10.01
운영체제 명령어 삽입  (0) 2019.10.01
경로조작 및 자원삽입  (0) 2019.10.01
SQL 삽입  (0) 2019.10.01
Command Injection 방어 코드  (0) 2014.11.18

댓글