본문 바로가기

개념정리

9주차 XSS /STORED XSS / CROSSED XSS /보고서

9주차 XSS /STORED XSS / CROSSED XSS


XSS

- CROSS SITE SCRIPTING

- 크사,크스스,크싸

- 클라이언트 측 = 이용자 측 에서 스크립트를 삽입해 실행시키는 것이다

- 즉 피해자는 이용자

- 취약점이 많이나오는 방법 

- CSRF XSS는 클라이언트에서 실행되는 공격이므로 공격자 피해자 입장을 동시에 실행하는 것이 중요하다.

- 공격에 활용한 XSS인지 생각해보는 것도 중요하다.

- JAVASCRIPT를 많이 이용하므로 공부하는 것이 좋다

+JAVASCRIPT 주석 // /* */

 

CLIENT SCRIPT

- 이용자의 브라우저에서 실행되는 것

- 공격자의 악성스크립트가 이용자의 브라우저에서 실행된다

- HTML / CSS / JAVASCRIPT 등

  + HTML은 프로그래밍은 아니지만 클라이언트에서 실행되는 SCRIPT이다

 


공격방식

- SCRIPT를 삽입해서 이용자의 브라우저에서 실행된다

 

공격목적

- 브라우저를 방문하는 이용자의 컴퓨터 브라우저에서 코드가 실행된다

- 로그탈취 / 세션탈취 

 

페이로드

- 네트워크나 프로그래밍에서 전송되는 데이터 패킷이나 메시지를 

- 목적을 위해 전송되는 데이터

 

파라미터

- 함수나 명령에 전달되는 값입

- 웹 개발에서는 URL 파라미터가 가장 흔한 예

EX)

-> URL?user=john

    -> user는 파라미터 이름, john은 해당 파라미터의 값을 웹페이지로 전송


XSS PROCESS

1. 입력값이 저장되고 서버응답이 되는지 확인

- 서버 응답에 입력값 있는지 확인

2. 특수문자체크 4가지 < ' " > 체크

- 서버응답에 출력되지 않으면 사용하지 못한다.

- 여러 스크립트를 만들어서 넣을때 <를 잘못넣어서 웹이 깨질수가있답니다.

- 스크립트 태그를 안쓰고 자바스크립트를 사용하는 방법이 있어서 /는 특수문자 체크안해도된다.

3. POC 삽입

- PROOF OR CONCEPT 취약점이 있는것을 보여주는 용도로 작성하는 코드

- 코드가 클라이언트에서 실행되는 것만 보여주는 용도

- 대부분 HTML에서 JAVASCRIPT의 <SCRIPT>alert('출력내용')</SCRIPT>를 많이 이용한다

- 캡처하기 좋아 보고서 쓰기 좋기 때문

- JAVASCRIPT 출력코드 alert / prompt / confirm /  console.log(이건 개발자화면에서밖에 증명 안됨)

 


 

XSS 

- STORED XSS

- REFLECT XSS


 

STORED XSS

- 스크립트를 서버에 저장하고 출력되는 곳을 확인한다.

- 스크립트를 서버에 저장하는 곳(RESPONSE)과 출력되는 곳(REQUEST)이 대부분 따로

- 게시판 글 작성 / 회원가입으로 저장 -> 게시판뷰 / 마이페이지에서 클릭한사람에게 스크립트 실행되어 공격

- 즉 입력한 데이터가 저장!!되고 출력되는 곳에서 가능

- BURF SUITE에서 입력값이 어떻게 저장되어서 출력되는지 서버응답에 출력값이 존재하는지 확인을 하는 것이 중요하다

- POST인지 GET인지 파라미터인지

- 즉 내부적으로 주고받기만해도 취약점이 된다 광역기 위험도가 더 높다

- 서버에 저장되어 공격흔적이 남는다

 

1. 입력값이 저장되고 서버응답이 되는지 확인

EX)

a

-> a 회원가입 

    -> 페이로드에 a값 삽입 확인

 

2. 특수문자체크 4가지 < ' " > 체크

EX)

a<' ">

-> a<' ">

    -> 페이로드에 <' "> 값 삽입 확인

 

3. POC 삽입

EX)

name=a+<script>alert('1')</script>

-> 입력값 name=a+<script>alert('1')</script>

    -> 안된다. 얼마까지 들어갔는지 확인해본다 아 글자수 제한이있구나

    -> 그럼 다른 값에 넣어보기

comment=a+<script>alert('1')</script>

-> comment = a+<script>alert('1')<script>

    -> 버프에서 alert 출력되는것을 확인 브라우저로 확인


REFLECTED XSS

- 스크립트 가 파라미터로 서버응답에 출력된다.

- 스크립트를 서버에 입력하는 곳(REQUEST)과 출력되는 곳(RESPONSE)이 반드시 같다

- 아이디 중복체크 입력값 -> 입력값이 존재합니다 출력되면서 스크립트 실행된다

- 즉 입력한 데이터가 저장되지 않고!! 바로 출력되는 곳에서 가능

- 서버에 저장되지 않아 공격흔적이 남지 않는다

- BURF SUITE에서 입력값이 어떻게 저장되지 않고 바로 출력되는지 해당페이지의 서버응답에 출력값이 존재하는지 확인

- 파라미터에 GET값으로 출력되어야만 한다. 

- 파라미터에 GET값으로 출력된다는 뜻은 URL에 스크립트를 넣을수 있다는 뜻이다

- 이를통해 악성스크립트가 실행되는 링크를 만들고 링크의 클릭을 유도해 공격한다

- 즉!! 링크 전달 공격

+ POST값일때는 BURF INTERCEPT 우측클릭 -> Change request method 해서 GET값으로 변조한다

+ GET값은 띄어쓰기를 +로 해야할때가있는데 

   POST 값으로 파라미터를 넣고 Change request method로 GET으로 보내면 + 안붙여도된다

 

1. 입력값이 저장되고 서버응답이 되는지 확인

EX)

a

-> a 회원가입 

    -> 파라미터에 a 출력 확인

 

2. 특수문자체크 4가지 < ' " > 체크

EX)

a<' ">

-> a<' ">

    -> 파라미터에 <' "> 값 삽입 확인

 

3. POC 삽입

EX)

a+<script>

-> a+<script>

a+<script></script>

-> a+<script></script>

a<script>alert('1')</script>

-> a<script>alert('1')</script>

순으로 작성하는 편이 좋다

 


 

보고서 

- 취약점의 기준에 대한 이유를 잘 알고있어야한다.

- 담당자가 보고서에대해서 왜 취약점인지 물어보면 결과보고서를 못쓴것!!

- 왜 취약점이고 위험한지 정확히 알고 알려줘야 한다

 

보고서 쓰는 법 

워드 -> notion,pdf

한글X

보고서 표지 목차 수행일정 수행대상 공격도구 발견경로/설명 작성 

표크기 통일 사진크기 통일 그림의 테두리 그림의 글씨와 사진의 글씨가 비슷하게 

캡처화면 순차적으로 넣기 스크립트 실행 사이트 들어가는 방법도 쓰기 

 url이 보였으면 좋겠으면 창을 줄여서 찍어라.

강조부분 박스로 표시 클릭 표시 좋음

캡처 많을 수록 좋음

alert1을 출력하려면 전체 화면 캡처후 자르기 

 

경고창 1이 떴다 경고창 1이 발생했다라고 말하지말고

스크립트가 삽이된 게시글 접근시 의도한 스크립트가 실행됨

 

보고서를 예쁘게 하는 능력도 중요하다.