Практически в каждом дистрибутиве Linux есть такая полезная утилита, как wget. С ее помощью легко и удобно скачивать большие файлы. Она же встречается и на веб-серверах, где любая уязвимость может обернуться пренеприятными последствиями для владельца. Мы разберем, как работает баг wget, связанный с переполнением буфера. Его эксплуатация может привести к выполнению произвольных команд на целевой системе. INFO
Уязвимости присвоен номер CVE-2017-13089, она присутствует во всех версиях wget вплоть до 1.19.1.
Стенд
Сперва готовим площадку для будущих экспериментов. Тут нам на помощь пришла работа Роберта Дженсена (Robert Jensen), который собрал докер-контейнер для тестирования уязвимости. Скачать докер-файл, эксплоит и прочее ты можешь в его репозитории. Затем останется только выполнить
docker build -t cve201713089 . [/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. ?