Web - XSS(GET, POST, REFERER)

Aquila·2024년 8월 19일

SecurityAcademy

목록 보기
2/9
post-thumbnail

웹 모의해킹 기초

웹 모의해킹 절차

웹 구조 및 보안

XSS란?

  • 웹 애플리케이션으로 전달되는 사용자의 입력이 적절한 유효성 검증인 위생처리(인코딩 등) 없이 서버의 응답에 삽입될 때 사용자의 웹 브라우저에서 악성스크립트를 실행할 수 있는 취약점
  • GET 매개변수나 POST 데이터, 숨겨진 폼 필드, HTTP 요청 헤더 등 사용자 입력을 통해 웹 애플리케이션이 기대하는 정상적인 입력값이 아닌 HTML 코드나 자바스크립트 코드를 서버로 전달하여 악의적인 방식으로 사용자의 웹 브라우저에서 실행하게 함

XSS 취약점의 이해

  • 세션 쿠키 탈취를 통한 계정 도용
  • 가짜 로그인 페이지를 통한 자격증명 탈취 및 도용
  • 민감한 데이터 유출
  • 키 로깅(Key Logging)

반사된 XSS(Reflected XSS)

  • 사용자가 조작할 수 있는 입력값을 갖는 요청이 즉각적으로 사용자에게 응답되고 이 응답에 사용자의 입력값이 안전하지 않은 방식으로 포함될 때 발생하는 XSS

  • HTTP 요청을 통해 전달된 사용자의 입력값이 응답에 그대로 포함되어 사용자에게 다시 되돌려 보내짐

반사된 XSS의 구동원리

반사된 XSS 테스트 방법

1) 테스트 문자열을 통한 입력값 반사 점검
2) 테스트 문자열이 표시되는 위치의 응답 소스코드 분석

<script>alert(1)</script>
<img src=x onerror=alert(1)>
  <svg onload=alert(1)>

3) 스크립트 주입을 통한 취약여부 테스트
4) 필터링으로 인한 실패 시 우회 시도 (대소문자 구분, 재귀적 필터링 여부 등)

반사된 XSS(Reflected XSS) 실습

1. XSS_Reflected(GET)

First name에 aaaaaa Last name에 bbbbbb를 입력할 준비를 하고 burp suite에서 Proxy Intercept ON을 한다.

그러면 패킷이 burp suite에 잡히게 되는데 패킷 내용을 보자.

사용자가 입력한 각 입력란에 맞춰서 데이터가 담겨져 있는 것을 확인할 수 있다.

aaaaaabbbbbb 대신에 자바 스크립트 코드를 넣으면 어떻게 될까?

쿠키값을 흘리도록 <script>document.write(document.cookie)</script> 코드를 넣고 포워딩을 해봤다. 그랬더니?

이렇게 aaaaaa가 들어갈 자리에 내가 주입한 자바스크립트 코드가 들어 가 있는 것을 확인 할 수 있다. 이 상태에서 한번 더 포워딩을 진행하면

실제 쿠키 값이 나타나게 된다.

2. XSS_Reflected(POST)

GET 방식과 마찬가지로 Intercept를 켜 놓은 상태에서 Go를 누른다.

이번에는 GET과는 달리 입력 정보가 밑에 나와있고 GET이 아닌 POST로 변경 되어있다.
정보를 aaaa 대신 자바스크립트 코드를 넣고 포워딩을 한다.

이번에도 손쉽게 쿠키 값을 나타냈다.

3. XSS_Reflected(referer)



초기화면은 다음과 같이 일반적인 주소 값이 들어가 있다. 하지만 burp suite를 켜고 새로고침을 해서 패킷 내용을 잡아 수정하면 어떻게 되는지 확인해보자.

Referer 값에 따라서 bee-box 화면에 출력되는 값이 정해지는 것을 확인해 볼 수 있다. 그렇다면 이 값을 자바스크립트 코드로 수정해서 포워딩을 해보자.

referer의 값이 cookie 값으로 변경된 것을 확인 할 수 있다.

0개의 댓글