취약점에서 가장 많이 시도되며 유명한 크로스 사이트 스크립팅 입니다.
웹 환경에서 다른 최종 사용자의 클라이언트에서 임의의 스크립트가 실행되는 취약점 입니다.
웹 사이트 게시판, 댓글 ,자료실 등에 정상적인 콘텐츠 대신에 악성 콘텐츠를 주입하여 실행 될 경우 사용자가 원본 콘텐츠 대신 악성코드 감염 및 웹 페이지 변조 등 사용자에게 악의적인 영향을 미칠 수 있는 악성 콘텐츠를 열람할 수 있게 할 수 있습니다.
크로스 사이트 스크립팅을 대비한다는 것은 한마디로 압축하면,
브라우저의 명령어가 일반 글씨로 저장되어 다른사람의 브라우저에서 실행되지 못하게 하는 것을 의미 합니다.
내가 만든 게시판에서 누군가 게시판 글을 저장하고, 해당 글 내용이 실행 되지 않게 하여야 합니다.
예를 들어 아래 코드가 게시글로 저장되고 브라우저에서 알림(alert)이 뜬 다면 해당 페이지는 취약한 기능 입니다.
<script>alert(1234)</script>
#방법1
이를 대비하기 위해서는 사용자의 요청에 대해서 필터링 하는 기능을 만들어야 합니다.
그런데 다양한 방법과 패턴이 존재 하므로 이를 수동으로 만드는 것은 다소 어려울 수 있기 때문에 이미 잘 만들어진 라이브러리를 사용 한다면 쉽게 해결 가능합니다.
Java에서 적용 가능한 멋진 lucy 필터 입니다.
https://github.com/naver/lucy-xss-servlet-filter
위 필터는 네이버 형(?)님들이 만들어준 기능으로, 스크립트 형식의 요청에 대해서 필터를 하여 줍니다.
사용법이나 적용, 예외처리하는 방법이 매우 간단하므로 해당 필터를 사용하면 XSS 공격에 쉽게 대비 할 수 있습니다.
* lucy필터는 파일요청(Multipart)에 대해서는 추가 설정을 통해야만 가능 합니다.
* 적용기 : https://myhappyman.tistory.com/253
이상으로 표준취약점중 1가지인 크로스 사이트 스크립팅(Cross Site Scripting)에 대해서 간단하게 살펴보았습니다.
궁금한점 또는 틀린 부분은 언제든 연락주세요! 👻
'웹 취약점(Web vulnerability)' 카테고리의 다른 글
13. 취약한 패스워드 복구(PR) (0) | 2021.12.06 |
---|---|
12. 불충분한 인증(IA) (0) | 2021.12.02 |
10. 악성 콘텐츠(CS) (0) | 2021.12.02 |
9. 정보 누출(Information Leakage) (0) | 2021.11.29 |
8. 디렉토리 인덱싱(directory indexing) (0) | 2021.11.29 |
댓글