XSS(Stored/Reflected)

황인환·2024년 6월 15일

XSS(크로스 사이트 스크립팅)

1. 목표

  • 스크립트를 삽입해서 이용자의 브라우저에 실행되게 하는 것이다.

2. 간단 요약

  • 클라이언트(이용자)측에 스크립트를 삽입하는 것이다.
  • 피해자는 이용자
  • SQLi와 다른점은 SQLi의 공격방향은 서버이고 XSS는 클라이언트이다.
  • 클라이언트 측에서 작동하기(이용자의 브라우저)때문에 클라이언트 측에서 실행하는 코드를 사용 ex) Javascript, HTML, CSS등
  • 스크립트를 서버에 저장하는 Stored XSS와 스크립트가 삽입된 데이터(URL)를 실행하는 Reflect XSS

XSS 종류

1. Stored XSS

- 정의

내가 원하는 스크립트를 서버에 저장(=서버응답)하는 것이다.

-발생하는 곳

데이터가 저장되고 출력되는 곳이다. ex) 회원가입, 게시글작성

- Step By Step

  1. 데이터가 저장되고 출력되는 곳 찾기
    -> Burp Suite에서 ex)글작성 을 해서 넘어가는 데이터를 확인
    -> response(서버응답)에서 저장한 데이터 'normaltic'가 찍히는 곳 확인
    -ex)

  2. 특수문자 체크
    -> <'">넣어봄 -> '"이 영향을 끼쳐 화면깨질수도 있음
    -> 파라미터 뒤에 넣음 성공하면
    -> 성공시 <'">출력
    -> 실패시 aaa&lt;'"&gt; <- aaa<'">삽입 '"은 사용가능
    -> 즉 <'"> 4가지중 정상적으로 출력되는 것을 사용

  3. Filtering 체크
    -> <script>, <div>등 다양한 태그와 alert()이 필터링되었는지 확인
    -> 필터링이 되었다면 다른방법으로 우회
    -> ex) <script>가 막혔다면 <div onmouseover=\"alert()\"> 사용 onmouseover 마우스 올리면 실행됨
    -> ex) alert이 막혔다면 promptcomfirm 사용

  4. 스크립트 삽입
    -> Filtering되지 않은 것들로 원하는 스크립트삽입

2. Reflected XSS

- 발생하는 곳

파라미터의 데이터가 서버응답에 삽입되어 오는 곳
ex) 아이디 중복체크 -> a입력 -> 사용할 수 있다or없다.
ex) 검색페이지 -> a검색 -> 사용할 수 있다or없다.

- 특징

Reflected XSS는 요청페이지와 응답페이지가 같아야함
GET방식이어야함 -> URL로 데이터 전달
POST방식으로 되어 있더라도 GET방식으로 바꿔서 해봐야함
-> Burp Suite 우클릭
-> change request method 클릭
-> GET방식으로 사용 클릭
URL로 전달하기 때문에 취약점을 POST방식에도 찾아도 활용방법이 없음

- Step By Step

Stored XSS와 같음

3. 비교

Stored XSSReflect XSS
저장하는 page와 출력하는 page가 달라도 됨(요청페이지 != 응답페이지)저장하는 페이지와 요청하는 페이지가 같아야함(요청페이지 === 응답페이지)
저장된page(ex)게시판 글 에 접근하면 스크립트 실행링크 형태로 클릭하면 (=링크 접속하면) 스크립트 실행
시나리오시나리오
-게시판 글 작성- 스크립트가 포함된 링크 전달
- 클라이언트가 글 클릭- 클라이언트에게 클릭하게 유도
- 스크립트 실행- 클라이언트 클릭
- 스크립트 실행
  • Normaltic Study 9주차-

0개의 댓글