1. XSS(1)


※ 주의 사항 :

1. 교육 목적으로만 이용 해주세요.
2. 무단 침입, 데이터 유출, 개인 정보 침해 등 불법적인 활동은 심각한 법적 결과를 초래할 수 있습니다.
3. 개인적인 테스트 환경을 구축해서 실습하시길 바랍니다.


1.1 개념 


Cross site scripting (XSS) attack - Types and Examples

XSS (Cross-Site scripting)은 공격자가 악성 스크립트를 삽입해서 이용자의 브라우저에서 실행되도록 조작하는 기술입니다.

이번 포스팅에서 2 가지 방법에 대해 알아 보겠습니다.
Stored XSS (서버에 저장)
Reflected XSS (서버의 에코 기능 이용)


1.1.1 Stored XSS



데이터가 저장되고, 그 데이터가 출력 되는 곳에서 실행할 수 있습니다.
예를 들어 회원 가입, 게시판 글 작성 등 과 같은 곳입니다.

작성 글에 악성 스크립트를 넣어 저장하고 해당 글을 보는 클라이언트를 대상으로 공격합니다.


절차에 대해서 살펴보면

  1. 작성한 데이터가 화면에 응답되는 지 확인! (저장된 데이터가 제대로 출력 되는 지 확인)

  2. 특수문자 체크 (어떤 특수 문자를 사용가능한가 확인)

  3. javascript이용


image-20240617183951416

image-20240617183813882

burp suite을 통해 저장된 데이터가 페이지에 제대로 출력되는 지 확인 하였다.
그리고 <,’,”,> 와 같은 특수문자를 사용할 수 있는 지 확인 하였다.


image-20240617184034885

image-20240617184136042

script태그에 alert(1)를 작성하여 데이터를 저장하였다. 이는 페이지를 들어오게 되면 1이라는 경고창이 발생하는 스크립트이다.

캡처_2024_06_17_18_43_08_60

이제 위의 xss-store url에 들어가면 1이라는 경고창이 뜬다.
따라서 공격자가 스크립트를 삽입하게 되면, 해당 url에 들어오는 다수의 클라이언트에게 영향을 끼치게 된다.

참고로, 방금 전에는 데이터를 삽입시에 같은 페이지에서 출력되었지만 출력 화면이 다른 페이지에서도 일어날 수 있다.


1.1.2 Reflected XSS



해당 방법은 서버의 에코 기능을 이용하는 것 입니다.

Stored XSS 와 방법 절차는 같습니다.

하지만 이 방법은 페이지에 직접 악성 코드를 작성하는게 아니라 파라미터에 변화에 따른 공격이기 때문에
악성 스크립트를 작성하여 링크를 전달하여 공격합니다.

또한, 페이로드가 GET메서드를 이용하여 파라미터가 서버 응답에 그대로 찍혀나오는 지
확인하기 때문에, 데이터 저장하는 페이지와 출력되는 페이지가 같습니다.

Stored XSS 는 다수의 클라이언트에게 영향을 끼칠 수 있지만
이는 직접 링크를 받아 클릭한 소수의 클라이언트에게 영향을 끼치는 공격방법입니다.

image-20240617184501016

image-20240617184712254

파라미터가 페이지에 그대로 출력이 되어, Reflected XSS가 가능하다, 또한 특수문자도 모두 허용된다.


image-20240617184840206

image-20240617184859375

캡처_2024_06_17_18_49_33_548

해당 url에 들어가면 1이라는 경고문이 뜬다.

카테고리:

업데이트:

댓글남기기