loading
크로스 사이트 스크립팅(XSS, Cross Site Scripting)
본문 바로가기
보안용어

크로스 사이트 스크립팅(XSS, Cross Site Scripting)

by 사월섬 2020. 5. 14.
반응형

크로스 사이트 스크립팅(XSS, Cross Site Scripting)이란?

SQL injection과 함께 웹 상에서 가장 기초적인 취약점 공격 방법의 일종으로, 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말합니다. 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취합니다.

 

 

공격 방법에 따라 Stored XSSReflected XSS로 나뉩니다. Stored XSS는 사이트 게시판이나 댓글, 닉네임 등 스크립트가 서버에 저장되어 실행되는 방식이고, Reflected XSS는 보통 URL 파라미터(특히 GET 방식)에 스크립트를 넣어 서버에 저장하지 않고 그 즉시 스크립트를 만드는 방식입니다. Reflected XSS의 경우 브라우저 자체에서 차단하는 경우가 많아 상대적으로 공격을 성공시키기 어렵습니다.

 

 

크로스 사이트 스크립팅은 자바스크립트를 사용하여 공격하는 경우가 많습니다. 공격 방법이 단순하고 가장 기초적이지만, 많은 웹사이트들이 XSS에 대한 방어 조치를 해두지 않아 공격을 받는 경우가 많습니다. 여러 사용자가 접근 가능한 게시판 등에 코드를 삽입하는 경우도 많으며, 경우에 따라서는 메일과 같은 매체를 통해서도 전파됩니다. 심지어, 닉네임에 코드를 심기도 합니다.

 

 

가장 대표적으로 크로스 사이트 스크립팅을 활용한 클라이언트 로그인 쿠키 탈취 시나리오의 내용은 다음과 같습니다 : 해커의 홈페이지에 PHP 파일을 만들고, 공격할 사이트에 스크립트를 심은 뒤, 사용자가 스크립트가 심어진 페이지를 볼 경우, 쿠키값이 해커의 홈페이지로 넘어가서 세션 하이재킹이 가능해집니다. 크로스 사이트 스크립팅의 공격 기법에는 스크립트 태그로 자바스크립트를 실행하는 방법, 자바스크립트의 링크 태그로 자바스크립트를 실행하는 방법, 이벤트 속성을 사용하는 방법, 알려지지 않은 태그와 속성들을 사용하여 우회하는 방법, 스크립트를 난독화하는 방법 등이 있습니다.

 

 

OWASP에서 크로스 사이트 스크립팅 공격을 방지하는 7계명을 발표하기도 했습니다.(허용된 위치가 아닌 곳에 신뢰할 수 없는 데이터가 들어가는것을 허용하지 않는다. 신뢰할 수 없는 데이터는 검증을 하여라. HTML 속성에 신뢰할 수 없는 데이터가 들어갈 수 없도록 하여라. 자바스크립트에 신뢰할 수 없는 값이 들어갈 수 없도록 하여라. CSS의 모든 신뢰할 수 없는 값에 대해서 검증하여라. URL 파라미터에 신뢰할 수 없는 값이 있는지 검증하여라. HTML 코드를 전체적으로 한번 더 검증하여라.)

반응형

'보안용어' 카테고리의 다른 글

COM 후킹 (Component Object Model Hooking)  (0) 2020.10.13
말락커(MalLocker)  (0) 2020.10.13
ARP 스푸핑 (Address Resolution Protocol Spoofing)  (0) 2020.05.13
마이너 악성코드(Miner)  (0) 2020.05.13
크립토재킹 (Cryptojacking)  (0) 2020.05.11

댓글