CSRF : LAB [2]

DATE : 2024/1/21

CSRF where token validation depends on token being present

이번 LAB에서도 이메일 수정 기능에 허점이 존재한다고 하는데,, 바로 확인해보자.

LAB에서 제공하는 wiener:peter 계정으로 로그인 한 다음, 이메일 수정 기능을 사용해보면

위와 같이 수정할 이메일과 CSRF Token이 전달되고 있다.

CSRF Token을 탈취하는 방법도 있겠지만,

우선 그 보다 더 간단한 해결책을 찾기 위해 Token을 임의의 값으로 수정해보았다.

CSRF Token 값을 건드리면 "invalid CSRF token" 응답을 받게 된다.

그렇다면 Request 방식을 바꿔보면??

GET method는 아예 허용하지 않는 상태이다.

그렇다면 CSRF Token 자체를 없애버리면 어떨까??

원래는 csrf & email parameter를 전달하던 packet에 csrf parameter를 제거했더니

문제 없이 응답이 돌아오는 걸 볼 수 있다. 😯

이거다..! 이번 LAB은 POST method로 요청을 보내야 한다는 제약 사항은 있지만

CSRF Token을 아예 전달하지 않으면 Token 인증을 우회할 수 있다.

지금까지 파악한 내용을 기반으로 위와 같이 이메일을 수정할 요청을 POST method로 작성해

Deliver exploit to victim 버튼을 클릭하면!!

성공적으로 LAB을 해결할 수 있다. 👍

보통은 CSRF Token을 전달하는 packet을 봤을 때, 반드시 Token을 포함해야 한다고 생각하는데

LAB에서 살펴본 바와 같이 Token을 포함하지 않은 packet을 따로 처리하지 않는다면

Token을 사용하지 않는 경우와 다를 게 없는 상황임을 고려할 수 있어야 한다!

Last updated