ALEXPTS
WEB DEVELOPER
PHP, NodeJS, JavaScript, etc.
Главная Приколы Стена
Cкилы: Web Php NodeJs Tests Storages

Ловим эксплоиты в wordpress с помощью nginx

#Wordpress #Nginx

Wordpress одна из самых популярных систем управления контентом. В каталоге wordpress находится чуть менее 44000 плагинов. Огромное число плагинов распространяется без регистрации в каталоге плагинов wordpress.

Зачастую "дыры" в плагинах и шаблонах являются источником проблем. Существуют базы с эксплоитами для wordpress. Боты автоматически пытаются прогнать эти наборы эксплоитов на wordpress сайте. Наша задача предотвратить это и залогировать вредоносные запросы в отдельный лог.

Для этого потребуется доступ к файлу с конфигурацией хоста nginx. В нем определяем новый location с url, которого нет на сайте и скорее всего никогда не будет, например /wp_bad_uri.

location = /wp_bad_uri {
    access_log /var/log/nginx/wp.bad.log;
    return 301 $scheme://alexpts.ru;
}

Внутри location описываем любую логику. В данном случае запрос будет записан в лог файл и перенаправлен на главную страницу сайта с кодом 301.

Далее описываем собственные правила, которые в итоге будут делать rewrite запроса на location /wp_bad_uri.

Вот несколько примеров таких правил:

location ~ /\. {
    rewrite .* /wp_bad_uri;
}

if ($query_string ~* '\.php') {
    rewrite .* /wp_bad_uri;
}

Запрос будет переписан для адресов, которые содержат точку после слеша в url адресе и для запросов, которые содержат '.php' в строке запроса.

Как правило это разного рода уязвимости, которые пытаются по относительному пути получить содержимое к файлу wp-config.php.

Пример запросов из такого лог файла

/wp-content/themes/antioch/lib/scripts/download.php?file=../../../../../wp-config.php

/wp-content/force-download.php?file=../wp-config.php

/wp-content/themes/trinity/lib/scripts/download.php?file=../../../../../wp-config.php

/wp-content/plugins/simple-download-button-shortcode/simple-download-button_dl.php?file=../../../../../wp-config.php

/wp-content/plugins/plugin-newsletter/preview.php?data=../../../../wp-config.php

/wp-admin/admin-ajax.php?action=getfile&/../../wp-config.php

Можно таких ботов отправлять в бан по ip адресу.