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

XSS (Cross-Site scripting)은 공격자가 악성 스크립트를 삽입해서 이용자의 브라우저에서 실행되도록 조작하는 기술입니다.
이번 포스팅에서 2 가지 방법에 대해 알아 보겠습니다.
Stored XSS (서버에 저장)
Reflected XSS (서버의 에코 기능 이용)
1.1.1 Stored XSS
데이터가 저장되고, 그 데이터가 출력 되는 곳에서 실행할 수 있습니다.
예를 들어 회원 가입, 게시판 글 작성 등 과 같은 곳입니다.
작성 글에 악성 스크립트를 넣어 저장하고 해당 글을 보는 클라이언트를 대상으로 공격합니다.
절차에 대해서 살펴보면
-
작성한 데이터가 화면에 응답되는 지 확인! (저장된 데이터가 제대로 출력 되는 지 확인)
-
특수문자 체크 (어떤 특수 문자를 사용가능한가 확인)
-
javascript이용


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


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

이제 위의 xss-store url에 들어가면 1이라는 경고창이 뜬다.
따라서 공격자가 스크립트를 삽입하게 되면, 해당 url에 들어오는 다수의 클라이언트에게 영향을 끼치게 된다.
참고로, 방금 전에는 데이터를 삽입시에 같은 페이지에서 출력되었지만 출력 화면이 다른 페이지에서도 일어날 수 있다.
1.1.2 Reflected XSS
해당 방법은 서버의 에코 기능을 이용하는 것 입니다.
Stored XSS 와 방법 절차는 같습니다.
하지만 이 방법은 페이지에 직접 악성 코드를 작성하는게 아니라 파라미터에 변화에 따른 공격이기 때문에
악성 스크립트를 작성하여 링크를 전달하여 공격합니다.
또한, 페이로드가 GET메서드를 이용하여 파라미터가 서버 응답에 그대로 찍혀나오는 지
확인하기 때문에, 데이터 저장하는 페이지와 출력되는 페이지가 같습니다.
Stored XSS 는 다수의 클라이언트에게 영향을 끼칠 수 있지만
이는 직접 링크를 받아 클릭한 소수의 클라이언트에게 영향을 끼치는 공격방법입니다.


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



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