본문 바로가기

모의해킹 취업반 스터디 20주/9주차 (XSS)

XSS - 9주차 수업

1. XSS란?

2. XSS 취약점이 발생하는 곳

3. XSS의 종류

    3.1. Stored XSS

           3.1.1. Stored XSS 란?

           3.1.2. 공격 방법

    3.2. Reflected XSS

           3.2.1. Reflected XSS 란?

           3.2.2. 공격 방법

 

 

 

1. XSS란?

XSS(Cross Site Scripting)는 클라이언트가 서버에 웹페이지를 요청했을 때 악성 스크립트를 삽입해서 응답해 줘서 실행시키는 클라이언트 측 공격이다.

 

여기서 스크립트란 HTML, CSS, Javacript를 말한다.

** 원래는 CSS이지만 웹의 CSS와 혼동이 될 수 있어서 XSS(줄여서 크사) 라고 부른다.

 

모의해킹을 할 때 XSS 취약점은 꼭 나오기 때문에 많은 공부를 해야 한다.

나중에 모의해킹 결과보고서를 작성할 때 왜 위험한지를 정확하게 설명하지 못하고 "기준이 그래요"   <   이런 소리는 안 하도록 공부하자

 

 

 

2. XSS 취약점이 발생하는 곳

이용자의 입력값을 그대로 출력시키는 곳에서 발생한다.

 

 

3. XSS의 종류

XSS는 악성 스크립트 삽입 방법에 따라 크게 3가지로 나뉘는데

Strored XSS(저장형) Reflected XSS(반사형) DOM Based XSS(문서 객체형)

이 글에서는 Strored XSS, Reflected XSS 만 다룬다.

 

3.1. Stored XSS

3.1.1. Stored XSS 란?

서버의 DB에 악성 스크립트를 저장시켜두고 클라이언트가 해당 악성 스크립트가 포함된 웹페이지를 요청하면 클라이언트 측 브라우저에서 실행되서 정보를 탈취하는 공격이다.

보통 저장하는 곳과 출력하는 페이지가 보통 다르다.

ex) 게시판, 댓글

내가 Stored XSS 공격한 페이지에 접속하는 모든 모바일, PC에서 악성코드를 실행시킬 수 있어서 위험한 취약점이다.

* DB에서 정보를 저장할 때 보통 자료의 크기를 정해두기 때문에 정해진 글자수 이상으로 입력하면 적용이 안될 수 있다.

 

3.1.2. 공격 방법

1. burp suite으로 내가 전달한 파라미터가 DB에 저장되고 출력되는 페이지를 찾고

2. 악성 스크립트에 사용할 특수문자가 필터링 되는지 확인한다. <" '>

3. 그리고 JavaScript를 이용해서 악성 스크립트(POC*)를 작성한다.

 

* POC : Proof of Concept   >   <script>alert(1)</script>

보고서에 공격이 통했음을 증명하는 것

 

3.2. Reflected XSS

3.2.1. Reflected  XSS 란?

Stored XSS 와 달리 내가 입력한 값이 DB에 저장되지는 않지만 입력값을 그대로 응답에 실어서 클라이언트 브라우저에서 실행하게 해서 정보를 탈취하는 공격이다.

ex) 아이디 중복체크

Stored XSS보다 Reflected XSS가 타겟팅 방식이라 공격 대상이 적어서 덜 위험하다.

 

*  자기자신에게 응답이 오는거면 왜 위험할까?

공격 대상을 악성 스크립트 파라미터가 있는 링크를 클릭하게 유도하면 공격 대상이 페이지를 요청한거니까 악성코드가 실행됨

 

3.2.2. 공격 방법

1. burp suite으로 내가 전달한 파라미터가 출력되는 페이지를 찾고

2. 악성 스크립트에 사용할 특수문자가 필터링 되는지 확인한다. <" '>

3. 그리고 악성 스크립트(POC*)가 담긴 링크를 작성해서 공격 대상이 클릭하도록 유도한다.

4. 악성 스크립트를 작성하느라 링크 주소가 너무 길어지면

- history.pushState(null, null, 'test')로 바꿀 수 있다.

- 파일 형태로도 가능하다. 

- bitly.com이라는 사이트에서 바꿀 수 있다.

'모의해킹 취업반 스터디 20주 > 9주차 (XSS)' 카테고리의 다른 글

SQL Injection 정리  (1) 2024.06.13