PortSwigger

PortSwigger | CSRF vulnerability with no defenses

cybermad 2025. 10. 26. 14:04

 

Lab: CSRF vulnerability with no defenses

 

문제 설명

해당 랩을 해결할려면 CSRF 공격 을 사용하여 사용자의 이메일을 변경하고 이를 악용서버에 업로드 하는 HTML 을 작성하세요

목표

CSRF 공격을 사용하여 사용자 이메일 주소를 변경

 

로그인

wiener:peter

 

 

 

버프스위트를 킨후 해당랩에 들어가줍니다

 

먼저 로그인을 해줍시다

이메일을 업데이트 하는 입력값이 보입니다

 

버프스위트 intercept on 을 켜 이메일이 업데이트 됬을떄 어떤 반응을 하는지 확인 해봅니다

 

 

send to repeater 켜 CSRF 공격에 취약한지 확인 해줍니다

 

CSRF 공격에 3가지 조건

현재 CSRF 공격에 취약한 경우엔 세가지 조건이 있어야 합니다

 

- CSRF 공격을 유도할수 있는 이메일 변경, 정보수정, 비밀번호 변경 등등 

- 사용자는 이미 서버에 로그인 되여있는 상태여야 합니다

- 쿠키 기반에 세션 정보를 획득할수 있어야합니다

주로 CSRF 토큰, Referer 헤더와 같은 방어 메커니즘이 제대로 구현되여있지 않을떄 발생합니다

 

이는 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 서버에 요청하게 만드는 취약점이기 떄문입니다

 

현재 Request 를 보면 이메일 업데이트, 서버에 로그인, 세션쿠키, 모두 세가지 조건이 성립됩니다

 

이제 CSRF 공격을 시도하기 위해선 BurpSuite Pro 가 있으면 좋지만 저는 없기에

https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Cross-Site%20Request%20Forgery?source=post_page-----304ef235b31d---------------------------------------

 

PayloadsAllTheThings/Cross-Site Request Forgery at master · swisskyrepo/PayloadsAllTheThings

A list of useful payloads and bypass for Web Application Security and Pentest/CTF - swisskyrepo/PayloadsAllTheThings

github.com

 

위 깃허브 CSRF 요청 페이로드를 보고 해보겠습니다

 

<form method="POST" action="https://0a4b00be04e4830d80a703e10008006d.web-security-academy.net/my-account/change-email">
    <input type="hidden" name="email" value="cybermad@gmail.com">
</form>
<script>
        document.forms[0].submit();
</script>

 

해당 페이로드를 현재 Request 와 알맞게 수정 해줍니다

 

그다음

 

exploit 서버로 들어가줍니다

요약

이로서 이 해당 CSRF 페이로드가 피해자에게 전송되어

클릭이나 버튼없이 누를 필요없이 해당 페이지가 보이기만 하면 해당 페이로드가 실행되어

피해자 이메일 주소가 cybermad@gmail.com 이라는 이메일로 변경됩니다