

사용자가 조작할 수 있는 입력값을 갖는 요청이 즉각적으로 사용자에게 응답되고 이 응답에 사용자의 입력값이 안전하지 않은 방식으로 포함될 때 발생하는 XSS
HTTP 요청을 통해 전달된 사용자의 입력값이 응답에 그대로 포함되어 사용자에게 다시 되돌려 보내짐

1) 테스트 문자열을 통한 입력값 반사 점검
2) 테스트 문자열이 표시되는 위치의 응답 소스코드 분석
<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
3) 스크립트 주입을 통한 취약여부 테스트
4) 필터링으로 인한 실패 시 우회 시도 (대소문자 구분, 재귀적 필터링 여부 등)

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

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

사용자가 입력한 각 입력란에 맞춰서 데이터가 담겨져 있는 것을 확인할 수 있다.
저
aaaaaa나bbbbbb대신에 자바 스크립트 코드를 넣으면 어떻게 될까?

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

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

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

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

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

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

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

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

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