CSRF : LAB [1]

DATE : 2024/1/20

CSRF vulnerability with no defenses

이번 LAB을 통해 가장 기본적인 CSRF 공격 시나리오를 살펴보도록 하자.

현재 LAB에는 로그인한 사용자를 대상으로 자신의 이메일을 업데이트하는 기능을 제공하고 있다.

LAB으로 들어가 우측 상단에 위치한 My account 버튼을 클릭!

LAB에서 제공하는 계정 wiener:peter로 로그인을 하면 아래와 같이 이메일 수정 FORM을

확인할 수 있을 것이다.

사용자가 이메일을 수정하고자 할 때, 서버로 어떤 packet이 날아가는 지 확인해보면

다른 건 다- 필요 없고 사용자가 입력한 이메일만 전달하고 있는 걸 볼 수 있다.

이는 사용자가 자신도 모르게 이메일을 바꿔버리고자 하는 공격자 입장에서는 희소식일 것..!

왜냐하면! 공격자가 원하는 메일을 email parameter에 넣고 사용자가 클릭하도록 만들기만 하면

자신도 모르는 사이에 메일이 바꿔버리는 매직이 일어날 수 있기 때문이다.

CSRF 공격을 수행하기 위해 상단 헤더에 들어있는 Go to exploit server 버튼을 눌러준다.

현재 이메일 수정 요청은 POST method로 전달되기 때문에 이를 반영하여

<form> tag를 사용한 스크립트를 작성할 것이다.

이때 중요한 건 form tag를 사용하더라도 실제로 브라우저 상에는 보이지 않아야 한다는 점과

(사용자가 CSRF 공격을 눈치채면 안 되기 때문에)

사용자가 버튼을 누르지 않더라도 자동으로 form을 제출하도록 스크립트 처리해야 한다는 점이다.

이를 고려해 위와 같이 body 부분에 스크립트를 작성하면 말 그대로

XSS로 CSRF를 수행할 준비가 끝나게 되는 것!

이 스크립트를 서버로 전달하게 되면 이와 같이 이메일이 변경된 결과를 볼 수 있다.

LAB에서는 web-security-academy.net으로 이메일을 수정해야 하기 때문에 메일만 바꿔준 후

Deliver exploit to victim 버튼을 누르면

성공적으로 LAB을 마무리할 수 있다! 👍

Last updated