3학년/인터넷 보안(웹 해킹)

웹 보안_Chapter06 - XSS공격

김야키 2018. 12. 26. 18:24

Chapter06 - XSS공격


1.     XSS 취약점 이란?

l  Cross Site Script라는 언어로 자바 스크립트를 사용하여 공격하는 경우가 많다.


l  SQL Injection과 함께 웹 상에서 공격하려는 사이트에 스크립트를 넣는 기법의 공격을 말한다.


l  공격에 성공하면 삽입된 코드를 실행하게 되며, 의도치 않은 행동을 수행시키거나 쿠키 혹은 세션 토큰 등의 민감한 정보를 탈취한다.


l  공격을 하기 위해서는 SniffingSpoofing가 필수적으로 이루어 져야 한다.

ü  Sniffing = SQL Injection -> 정보를 얻어 오기 위한 것

ü  Spoofing = XSS -> 실제로 공격을 하기 위한 것


l  기존 사이트를 공격하기는 어렵기 때문에 업데이트를 하는 도중(내부적으로 스크립트가 한 번 돌아갈 때)에 공격 하는 경우가 많다.


l  웹 페이지 생성 중 부적절한 입력 무력화 공격이라고 표현한다.

 

2.     쿠키(Cookie)

l  사용자가 인터넷 웹 사이트에 방문할 때 생기는 4KB이하의 파일


l  쿠키 파일은 실행이 되는 파일이 아니므로 바이러스를 전파할 수 없음


l  쿠키의 용도

ü  사이트 개인화

-       쿠키를 이용하면 아이디와 비밀번호 외에도 사용자의 성향까지 파악 가능

ü  장바구니 시스템

-       사용자가 고른 물건을 쿠키에 저장

ü  웹 사이트 이용 방식 추적

-       사용자들의 사이트 방문 유형을 파악하여 마케팅 정보로 활용

ü  타깃 마케팅

-       광고주가 대형 포털 사이트의 광고 공간을 사들여 자회사의 광고를 사용자에게 보여주는 것


 

3.     XSS(Cross-site script)

l  XSS

ü  다른 사용자의 정보를 추출하는 공격 기법

ü  입력을 받는 부분의 스크립트 코드를 필터링 하지 않음으로써 공격자가 스크립트 코드를 실행할 수 있음


4.     XSS의 유형

l  반사된 XSS(지속적이지 않음)

l  저장된 XSS(stored XSS, 지속적)

l  문서 객체 모델기반 XSS

 

5.     Reflected XSS

l  반사된 XSS공격


l  <script> alert(“I’m a reflected XSS attack!”);</script>


l  공격자가 HTTP요청에 악성 콘텐츠를 주입하면 그 결과가 사용자에게 반사되는형태


l  링크를 클릭해야 액션이 취해 지는 것을 본다면, CSS로 실행되는 Script라고 할 수 있다. 해당 링크를 클릭하면 피해자의 세션을 하이재킹 할 수 있다.


l  Fishing Attack: 악성 RUL이 가장 흔한 것

 

6.     Stored XSS

l  저장되어진 XSS공격


l  일반 적으로 HTTP에서 POST 메소드에 사용된다.


l  사용자가 글을 저장하는 부분에 정상적인 평문(Hyper Script)이 아닌 Script코드를 입력

ü  구매 평을 적는 부분에 해커가 POST메소드에 악성 코드를 심어서 글을 저장한다.

ü  다른 사용자가 GET메소드를 이용해 값을 요청한다.

ü  해당 사용자는 GET 메소드를 호출 하자 마자 악성 Script가 실행되어 사용자의 쿠키 정보가 유출 되거나 공격을 당하게 된다.

ü  악성 Script가 심어진 자료를 요청하는 모든 사용자가 공격을 당한다.


l  데이터 베이스에 악성코드를 저장하도록 하는 수법

ü  데이터 베이스 요청은 일반적으로 POST메소드를 사용 함


7.     CSRF 공격

l  크로스 사이트 요청 변조(CSRF) 공격


l  사이트간 요청 위조(Cross-Site Request Forgery)

ü  피해자가 인지 못 하는 상태에서 브라우저가 특정 사이트에 강제적으로 Request를 보내도록 하는 기법]


l  사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹 사이트에 요청하게 하는 공격


l  공격 조건

ü  공격 대상이 로그인 상태인 경우

ü  희생자가 해커가 만든 피싱 사이트에 접속

 

8.     그 외의 웹 공격

l  Slowloris

ü  HTTPGET Request를 계속 보낸다.

ü  서버는 해당 Request에 대한 Response를 해 줘야 한다.

ü  그렇게 되면 503 Error(Service Unable)가 발생된다.


l  Rudy

ü  Are your dead yet?의 줄임 말

ü  HTTP의 POST Request의 크기를 극단적으로 크게 만들어서 보낸다고 Header에 저장

ü  보내는 크기에 비해서 내용물은 없는 1byte의 패킷을 지속적으로 전송

ü  Server는 전송받는 최종 크기의 데이터를 받을 때 까지 지속적으로 포트를 열고 기다림

ü  결국 서버는 다른 Request를 Response 할 수 없음