내가 원하는 스크립트를 서버에 저장(=서버응답)하는 것이다.
데이터가 저장되고 출력되는 곳이다. ex) 회원가입, 게시글작성
데이터가 저장되고 출력되는 곳 찾기
-> Burp Suite에서 ex)글작성 을 해서 넘어가는 데이터를 확인
-> response(서버응답)에서 저장한 데이터 'normaltic'가 찍히는 곳 확인
-ex)
특수문자 체크
-> <'">넣어봄 -> '"이 영향을 끼쳐 화면깨질수도 있음
-> 파라미터 뒤에 넣음 성공하면
-> 성공시 <'">출력
-> 실패시 aaa<'"> <- aaa<'">삽입 '"은 사용가능
-> 즉 <'"> 4가지중 정상적으로 출력되는 것을 사용
Filtering 체크
-> <script>, <div>등 다양한 태그와 alert()이 필터링되었는지 확인
-> 필터링이 되었다면 다른방법으로 우회
-> ex) <script>가 막혔다면 <div onmouseover=\"alert()\"> 사용 onmouseover 마우스 올리면 실행됨
-> ex) alert이 막혔다면 prompt나 comfirm 사용
스크립트 삽입
-> Filtering되지 않은 것들로 원하는 스크립트삽입
파라미터의 데이터가 서버응답에 삽입되어 오는 곳
ex) 아이디 중복체크 -> a입력 -> 사용할 수 있다or없다.
ex) 검색페이지 -> a검색 -> 사용할 수 있다or없다.
Reflected XSS는 요청페이지와 응답페이지가 같아야함
GET방식이어야함 -> URL로 데이터 전달
POST방식으로 되어 있더라도 GET방식으로 바꿔서 해봐야함
-> Burp Suite 우클릭
-> change request method 클릭
-> GET방식으로 사용 클릭
URL로 전달하기 때문에 취약점을 POST방식에도 찾아도 활용방법이 없음
Stored XSS와 같음
| Stored XSS | Reflect XSS |
|---|---|
| 저장하는 page와 출력하는 page가 달라도 됨(요청페이지 != 응답페이지) | 저장하는 페이지와 요청하는 페이지가 같아야함(요청페이지 === 응답페이지) |
| 저장된page(ex)게시판 글 에 접근하면 스크립트 실행 | 링크 형태로 클릭하면 (=링크 접속하면) 스크립트 실행 |
| 시나리오 | 시나리오 |
| -게시판 글 작성 | - 스크립트가 포함된 링크 전달 |
| - 클라이언트가 글 클릭 | - 클라이언트에게 클릭하게 유도 |
| - 스크립트 실행 | - 클라이언트 클릭 |
| - 스크립트 실행 |