본문 바로가기

Web Hacking/Wargame

Lab: CSRF where token validation depends on request method

 

< 문제 >

 

https://portswigger.net/web-security/csrf/bypassing-token-validation/lab-token-validation-depends-on-request-method

 

Lab: CSRF where token validation depends on request method | Web Security Academy

This lab's email change functionality is vulnerable to CSRF. It attempts to block CSRF attacks, but only applies defenses to certain types of requests. To ...

portswigger.net

 

< Write-Up >

 

해당 문제에서는 단순히 POST로 요청 시 CSRF 취약점을 이용할 수 없다. 그래서 CSRF 검증 우회 시도를 아래 그림 1, 2와 같이 해보았다. 

 

그림 1

 

그림 1의 시도는 서버단에서 CSRF 검증을 실시 하지만,  토큰의 존재만을 확인한다면 우회될 수 있게 , CSRF 토큰 값을 조작해 요청해 보았고, 서버 측에서 해당 부분에 대해 적절한 검증이 이뤄짐을 확인했다. 

 

그림 2

 

그림 2의 시도는 서버 측에서 CSRF 토큰의 존재를 확인하지 않고, 오로지 유효성만을 검증하는 로직으로 구성되어 있는지 확인할 수 있는 요청이다. 그림 1의 경우와 마찬가지로, 서버 측에서 해당 부분 적절한 보안조치를 취함을 알 수 있다. 

 

사실 문제에서 이미 볼 수 있듯이 요청 Method를 변경해 CSRF 취약점을 유발시켜야 한다. 그래서 아래 그림 3과 같이 GET 요청으로 email 변경을 시도해 보았고, email이 변경되었다. 

 

그림 3

 

이제, 문제 내의 exploit 서버로 가서 Victim에게 아래 Payload를 전달한다. 

 

<img src="https://0acc000d0418129581aec0c100a200c2.web-security-academy.net/my-account/change-email?email=White@test.com" />

 

<img> 태그는 소스를 외부에서 불러오기에, 해당 url로 요청을 보내게 되며, GET 요청을 통해 CSRF 취약함을 확인할 수 있었다. 

 

 

한줄 평: CSRF 상당히 재밌다.