Плагин «Anti-XSS attack»
Данный плагин возник после обсуждения на форуме. Кратко опишу суть проблемы.
Во всех версиях WordPress есть дыры. Другое дело, что не все они определены и известны. Таким образом злоумышленник может обнаружить уязвимость и сформировать специальный запрос к вашему сайту и тем самым, например, получить админский доступ.
Ситуация может развернуться еще хуще. Например злоумышленник может написать небольшую html-страницу, где разместить скрытую форму, которая автоматически будет, скажем добавлять пользователя с админскими правами на ваш сайт. А поскольку большинство из нас не разлогинивается после работы с блогом, то после захода на ссылку злоумышленника вы по-сути от своего имени (и с вашими разрешениями) создадите еще одного админа.
Проблема (XSS) касается не только WordPress, но и всех других «движков» и скриптов.
Для защиты от подобных действий нужно проверять откуда идет запрос - т.н. referer: если он не с вашего же сайта, то возможно это XSS-атака.
За основу я взял плагин Юрия Белотицкого paranoya, только оставил проверку входящих данных.
Работает плагин следующим образом.
Если на сайт приходят данные в «wp-admin», то проверяется реферер. Если это _GET (то есть в виде url) и реферер не совпадает с адресом вашего сайта, то выполнение скрипта останавливается и выводится сообщение с ссылкой, по которой можно подтвердить действие.
Если же данные передаюся в скрытом виде (_POST) и реферер не совпадает с вашим сайтом, то выполнение скрипта просто прекращается.
Подтверждение в первом случае нужно, поскольку некоторые запросы WordPress формирует имено в таком виде. Например, когда нужно подтвердить или отвегнуть комментарий. Даже если это XSS-атака и злоумышленник сам нажмет ссылку, то WordPress уже будет проверять права своими средствами. Но главное, что скрытого выполнения не будет.
Плагин устанавливается очень просто: Копируется в каталог plugins и активируется в админ-панели. Сразу обращаю внимание тех, у кого в браузере отключена передача referer - в этом случае все ваши действия WordPress будет воспринимать как XSS-атаку. Если из-за этого вы не можете получить доступ к админ-панели, то удалите файл плагина. WordPress автоматом его деактивирует.
UPDATE. Если вы скачали плагин до 9 февраля, то обновите его. Текущая версия 0.4 beta.



Комментариев: 34
Попробывал на одном из своих проектов - работает.
По крайней мере пока работает, "вглубь" ещё не разбирался :wink:
Не до конца понял принцип работы плагина, но установил - вроде работает!
Макс, если появятся новые версии этого плагина пожалуйста сообщай на блоге...
Спасибки! Полезная и нужная штука.
Спасибо, будем пробовать.
Возможен конфликт с WP-ContactForm.
Очень полезный плагин! Максим, на твоём сайте, он походу стоит уже давно. У меня стоял фаервол, с запрещенными реферами. И я не мог загрузить ни одной картинки и ни одного файла с твоего сайта )))
Очень пригодится в будущем. Благодарю!
А как будут обстоять дела с win live writer и другими клиентами при установленном плагине?
Максим, у меня немного другое стоит - хотлинк (hotlink) - это штука, которая запрещает скачивать файлы, размещенные у меня, но запрашиваемые с других сайтов. Чтобы не превращать свой в файлохранилище.
Блог-клиенты должны работать, поскольку идет обращение к xmlrpc.php в главном каталоге.
Так а XSS запрос в тот же xmlrpc.php послан быть не может? Или дело в том, что основная масса XSS-атак нацелена именно на wp-admin?
Спасибо за плагин, поставил себе :Ы
Может, конечно. Но у xmlrpc немного другой формат данных. Плюс каждый xmlrpc-запрос должен содержать логин/пароль, поэтому пробить такую защиту не так и просто.
Но в любом случае, нужно понимать, что данный плагин не даст 100% гарантии от взлома. Просто с его помощью мы делаем дополнительную защиту от определенного вида атак. И не более того.
А если админку защитить средствами Apache. Ну, допустим, определить доступ только с определённого диапазона IP? Вроде бы рациональное решение.
Да, наверное. Вот, кстати ссылка на саму тему паранои (http://forum.maxsite.org/viewtopic.php?id=2807) Там еще круче
Не-пус-ка-ет в админку! Пришлось убивать файл. Орал что XSS атака.
По этой ссылке (http://www.mattcutts.com/blog/three-tips-to-protect-your-wordpress-installation/)о блокировке админки в .htaccess файле по IP.
А как этот плагин работает с запросами к xmlrpc.php?
Вроде бы работает. Спасибо большое!
Гораздо проще и эффективнее запаролить директорию wp-admin средствами apache.
Максим, а можно узнать поподробнее про хотлинк (hotlink)?
А то с одного моего сайта человеками скачивается по 80 гиг., а роботами и редиректами с чужих сайтов по 500 гиг. в месяц.
А мне бы не хотелось отрубать возможность скачивать для людей, пришедших с другого сайта, т.к. это промо материал одного известного диджея и муз. проекта.
Хочу сделать так: если человек кликнул на ссылку на другом сайте, ему принудительно показывает страницу моего сайта, а на ней он уже сможет выбрать нужную ему ссылку для скачивания.
спасибо что сообщил о таком "хаке", поставил плагин, на всякий случай
я заметил когда лажу по админке то меня как будто редиректит через страницу на которой написано ЯЛП вроде, так надо?
блин, даже когда по сайту лажу, то постоянно кидает через страницу яЛП, это Ваш плагин, или может другой какой-то у меня? Я только что еще установил Ваш плагин для Сабы
Кстати, у меня еще одна "идея"
а может в Вордпресе можно как-то тупо запретить регистрацию и создание новых аккаунтов?))
а на счет того, что меня даже по сайту кидает через страницу с надписью яЛП я еще хочу услышать ответ, это из-за этого плагина или какае-то трабла у меня?
Подозреваю, что яЛП это BOOM в UTF8 ;)
тоесть это изза неправильной кодировки плагина для Сапы?
>у меня немного другое стоит - хотлинк (hotlink) - это штука,
>которая запрещает скачивать файлы, размещенные у меня, но
>запрашиваемые с других сайтов
Ты сделал бы проверку, что если реферер пустой - то картинки показывать можно. А то напрягает включать передачу рефа, что бы блог нормально читать. Что с других сайтов - это ладно, но пустой лишь означает, что передача рефа выключена.
вопрос: только блоги подверженны такой XSS атаке?
видел пару раз обявления: прогон по сайтам с XSS уязв, конечно, за деньги ))
По моему дополнительный плуг - дополнительные сложности. А по теории надежности: чем сложнее инструмент, тем выше вероятность выхода из строя.
Я за средства Апача.
ЗЫ: Но задумка и реализация понравились
Запрос с указанием поля referer формируется на стороне пользователя, в связи с чем возникает вопрос: а кто мешает злоумышленнику подменить referer в запросе на ваш сайт?
imho - это защита только от ленивого.
Модифицированная для 2.5 версия: http://www.portal.kharkov.ua/soft/anti-xss-attack.zip
Логичнее нацеливать XSS-атаку не на админку, а на сам сайт: своровать cookies, например, и логиниться под админом.
Кстати, автору рекомендация прочитать, что же всё-таки такое XSS-атака и почему пример, приведённый в статье, XSS-атакой не является.
А еще - разобраться, зачем WordPress добавляет в формы поля _wpnonce и _wp_http_referer/_wp_original_http_referer. Причем с версии 2.0.3. Вы изобретаете велосипед.
Не могу модерировать комментарии на своём блоге, пишет, что подозрение на атаку, при попытке отключить плагин (деактивировать), пишет то же самое сообщение )) как его прибить навремя?
Просто удалить файлы.
Спасибо, господа. Установил - работает - работать не мешает. Поюзаем дальше - поглядим. Не панацея от XSS-атак, конечно, и все-же не будет лишним. :smile: