크로스사이트 스크립트
공격자가 전달한 스크립트 코드가 사용자(희생자)의 브라우저를 통해서 실행되는 것
→ 브라우저 또는 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으로 이동
'보안 > 개발보안' 카테고리의 다른 글
위험한 형식 파일 업로드 (0) | 2019.10.01 |
---|---|
운영체제 명령어 삽입 (0) | 2019.10.01 |
경로조작 및 자원삽입 (0) | 2019.10.01 |
SQL 삽입 (0) | 2019.10.01 |
Command Injection 방어 코드 (0) | 2014.11.18 |
댓글