Killapache модифицированная версия

Ранее на разных  сайтах, повсвященных ИБ в деталях описывалась информация касательно  утилиты-эксплоита под названием "Killapache". Данная утилита предназначена для проведения DDOS-атаки на самый известный и распространенный в сети интернет веб-сервер : Apache. На данный момент программа Killapache, ранее написанная неким kingscope, была несколько модифицирована и дописана  кодером “S4(uR4“. Модифицированный Killapache, как и изначальный вариант программы вызывает отказ в облуживании веб-сервера Apache, эксплуатируя при этом одну из уязвимостей.




Ниже приведены детали изменений в killapache.

1. Функционал. (Для работы вам необходимо использовать статический контент на сайте, такой как картинки,текстовые файлы,html-файлы,doc-файлы и прочий статический контент)

2. Программная часть (Исходный Код).
Далее показана разница в исходном коде старого и нового killapache.


40c40
< $p = “HEAD / HTTP/1.1rnHost: $ARGV[0]rnRange:bytes=0-$prnAccept-Encoding: gziprnConnection: closernrn”; — > $p = “HEAD “.($ARGV[2] ? $ARGV[2] : “/”).”HTTP/1.1rnHost: $ARGV[0]rnRange:bytes=0-$prnAccept-Encoding: gziprnConnection: closernrn”;

56c56
< $p = “HEAD / HTTP/1.1rnHost: $ARGV[0]rnRange:bytes=0-$prnAccept-Encoding: gziprnConnection: closernrn”; — > $p = “HEAD “.($ARGV[2] ? $ARGV[2] : “/”) .” HTTP/1.1rnHost: $ARGV[0]rnRange:bytes=0-$prnAccept-Encoding: gziprnConnection: closernrn”;

73c73
< if ($#ARGV > 1) {

> if ($#ARGV > 0) {


Как работает  код в killapache

killapache посылает GET-запросы с множественными так называемыми "длинными диапазонами байтов" (“byte ranges”) которые будут требовать выделения значительных объемов системной памяти.

Проблема вызвана ошибкой в реализации поддержки загрузки части файла по указанному диапазону (например, после обрыва соединения можно запросить загрузку начиная с определенной позиции). Ошибка связана с тем, что при обработке запроса, содержащего большое число диапазонов (например, "Range:bytes=0-,5-1,5-2,5-3,...,5-1000") в сочетании с использованием gzip-сжатия отдаваемого контента, расходуется слишком много памяти.

Например, если в заголовке Range передана тысяча диапазонов, то Apache пытается отдельно сжать каждый диапазон. Так как каждая операция сжатия требует достаточно много памяти (даже для сжатия одного байта выделяется буфер для сжатия блока), в сумме легко исчерпать всю доступную память. Для осуществления удачной атаки достаточно отправить около 50 подобных запросов с составным Range на сервер.

Дапазон байтов позволяет  браузеру загружать отдельные отдельные части документа, например часть от 500 до 1000 байт. Это используется обычно при загрузке больших файлов. Данный метод используется такими программами как загрузчики файлом (менеджеры загрузок) для продолжения дальнейшей закачки с того места где она была преравана. Метод был разработат с целью уменьшения требования к полосе пропускания. Как оказалась в итоге установка множества несортированных компонентов в http-заголовке может помешать стабильной работе веб-сервера Apache.

Также отметим что на данный момент не существует патча для исправления данной уязвимости, но некоторые наработки по данной теме обсужались ранее в интернете на сайтах посвященных безопасности. Также они были опубликованы Apache Software Foundation и могут использоваться до выхода стабильного исправленного релиза веб-сервера Apache. Уязвимость работает на веб-серверах которые позволяют вам приостанавливать и продолжать скачивание ваших файлов с сервера.


Загрузить модифицированную версию killapache можно здесь:

 killapache modified versionhttp://pastebin.com/gWB76qmj


Временно прикрыть уязвимость веб-сервера можно с помощью:

1. блокировки длинных последовательностей Range через mod_rewrite (обе ветки apache):
RewriteEngine on
RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteRule .* – [F]

2. с помощью mod_header, выставлением RequestHeader unset Range

3. с помощью SetEnvIf для Apache 2.Х:
# Удаляем заголовок Range, если в нем более 5 диапазонов
SetEnvIf Range (,.*?){5,} bad-range=1
RequestHeader unset Range env=bad-range
# помещаем в лог попытки атаки
CustomLog logs/range-CVE-2011-3192.log common env=bad-range

4. использования лимита для максимального размера поля LimitRequestFieldSize 200, где 200 – размер параметров в байтах

5. также данная уязвимость может быть локализована за счет использования проксирования сервером ngix, путем запреты проксирования опасных заголовков:
proxy_set_header Range “”; 











Comments :

0 коммент. to “Killapache модифицированная версия”

Отправить комментарий