오늘은 크로스사이트스크립트, XSS의 모든 것에 대해 알아보도록 하겠습니다.
크로스 사이트 스크립트 (xss)
크로스 사이트 스크립트 취약점에 대해 알아보도록 하겠습니다. 이 취약점은 웹 어플리케이션에서 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우, 공격자가 입력이 가능한 폼 (웹 브라우저 url 또는 게시글 등)에 악의적인 스크립트를 삽입하여 해당 스크립트가 희생자 측에서 동작하도록 하여 악의적인 행위를 수행하는 취약점입니다.
XSS에서 공격자는 취약점을 이용하여 사용자의 개인정보 및 쿠키정보 탈취, 악성코드 감염, 웹 페이지 변조 등의 공격을 수행합니다.
Stored XSS : 웹서버에서 악성 스크립트를 저장 해놓으면 희생자가 해당 자료를 요청할 때 해당 악성 스크립트를 삼입된 응답 페이지가 전달되어 클라이언트 측을 동작하는 방식입니다.
htmlspecialchars() : htmlspecialchars() 함수는 html 문법상 특별한 의미를 가지는 특수문자의 기능을 제거하고 일반문자로 처리해주는 함수입니다. 크로스사이트스크립트 취약점을 방지하기 위해 사용됩니다.
XSS의 종류
XSS의 종류에는 stored xss, reflected xss, dom based xss 세가지가 있습니다. 이들에 대해 알아보도록 하겠습니다.
Stored XSS : 웹서버에 악성 스크립트를 저장해놓으면 희생자가 해당 자료를 요청할 때 해당 악성 스크립트가 삽입된 응답 페이지가 전달되어 클라이언트 측에서 동작하는 방식입니다.
Reflected XSS : 악성스크립트가 희생자 액션에 의해 취약한 웹서버로 전달되고 웹서버의 응답페이지에 악성 스크립트가 삽입되어 희생자 측에서 동작하는 방식입니다.
Dom based XSS : DOM은 문서 객체 모델이며 HTML 문서 컨텐츠를 동적으로 변경할 수 있습니다. 희생자의 웹 브라우저에서 응답 페이지에 포함된 자바스크립트가 동작하면서 DOM 객체를 실행할 때 URL 등에 포함된 악성 스크립트가 동작하는 방식입니다.
여기서 Stored XSS와 Reflected XSS의 차이점은 stored xss는 악성스크립트가 취약한 웹서버의 데이터베이스에 저장되어 있다는 점이고 reflected xss는 데이터베이스에 저장되어 있지 않기 때문에 악성스크립트가 포함된 요청 정보를 처리하는 과정에서 악성스크립트가 포함된 응답 페이지가 생성되어 희생자에게 전달됩니다.
크로스사이트스크립트 (XSS) 취약점 판단 기준
xss 취약점 판단 기준에 대해 알아보도록 하겠습니다. 크로스사이트스크립트 취약점이 발생할 수 있다고 판단되는 입력 가능한 폼이나 url 파라미터 등에 스크립트를 삽입할 경우 해당 스크립트가 동작하면 크로스사이트스크립트에 취약하다고 판단합니다.
사용자 입력폼 : <script> alert() </script> 팝업창 (alert) 발생
url 파라미터 : <script> alert() </script> 팝업창 (alert) 발생
크로스사이트스크립트 (XSS) 대응책
크로스사이트스크립트의 정의와 종류, 취약점 판단 기준에 대해 알아보았습니다. 마지막으로 대응책에 대해서도 알아보도록 하겠습니다.
우선 입력값을 서버단에서 검증해주는 방법이 있습니다. 클라이언트단에서는 웹프락시툴을 이용하여 쉽게 우회가 가능하기 때문에 좀 더 안전한 서버단에서 검증해주는 편이 좋습니다. 웹프락시툴은 웹을 이용한 해킹공격에 가장 활발히 사용되는 도구입니다. 클라이언트가 요청한 HTTP REQUEST, RESPONSE 정보를 중간에서 가로채서 필터링을 우회하거나 서버에 전송되는 데이터를 조작하여 허가되지 않는 곳에 정보를 훔쳐보거나 변경 혹은 삽입 등이 가능하게 합니다. 대표적인 웹프락시 툴 종류에는 Paros나 Burp 등이 있습니다.
이 방법 외에도 HTML 태그 화이트리스트를 선정한 후 해당 태그만 허용해준다거나 특수문자를 일반문자로 이스케이프 처리해주는 등의 방법이 있습니다.
'정보보안' 카테고리의 다른 글
snort header action 유형, body 일반옵션 (0) | 2022.08.16 |
---|---|
생체인증 기술 정의, 유형 비교 및 문제점 FAR FRR CER (0) | 2022.08.15 |
지식기반인증과 소유기반인증, 패스워드 공격 유형, OTP (0) | 2022.08.12 |
접근통제의 구성과 3단계, 사용자 인증 유형 정리 (0) | 2022.08.12 |
SNMP 버전 별 특징 및 보안서비스 community string (0) | 2022.08.11 |
댓글