DVWA - CSRF ( Medium, High )
DVWA - CSRF ( Medium, High ) 입니다

개요
이 포스팅에서는 DVWA(Damn Vulnerable Web Application) - CSRF, Medium/High 단계 실습을 진행하면서 공부했던 내용에 대한 내용을 정리해 보았고, 모두 본인이 소유한 가상머신에서 실습이 이루어졌습니다
실습환경
M1 MacBook Air
16G RAM
UTM - 가상머신
Kali Linux 2023.1 - Apple Silicon (ARM64)
목차
1. 취약점 설명 및 분석 - 소스코드 분석, CSRF
2. CSRF 실습
3. 대응방안
취약점 설명 및 분석
소스코드 분석
Medium과 High로 가면서 CSRF를 막기 위해 추가적으로 요청방식 검증과 csrf token을 추가하였다
비밀번호가 변경되었는지 확인하기 위해 Test Credential 버튼을 클릭해 확인할 수 있다
CSRF
DVWA - CSRF ( Medium, High ) 는 Referer과 user_token으로 CSRF를 막으려 하지만 아래와 같이 CSRF가 발생한다
CSRF 실습
CSRF 적용하기
URL에 직접 링크를 입력한 뒤 전송하니 위와 같이 요청이 올바르지 않다는 경고 메시지가 뜬다
dvwa 에서 xss(stored)를 이용하여 방금 입력한 URL을 이미지 태그를 이용하여 글을 저장한다
위와 같이 성공적으로 저장되었다
계정의 비밀번호를 password로 바꾼 것이 정상적으로 확인된다
High 레벨에서는 user_token이 추가되었다
user_token은 비밀번호 변경 요청 이후 위와 같이 개발자도구에서 확인 가능하다
변경 요청을 보내면 새로운 user_token 값을 받는다
받은 값을 이용해 URL에 변경할 비밀번호를 입력하고 user_token값을 변경한 뒤 전송한다
전송하면 위와 같이 비밀번호가 변경된다
대응방안
Referer 검증과 변조 불가능한 csrf token 발급한 뒤 동일출처 정책을 이용하여 CSRF를 예방할 수 있다