Плагин «Anti-XSS attack»

Рубрика: WordPress -> Плагины и хаки
Воскресенье, 20 января 2008 г.
Просмотров: 6191
]]>
]]>

Данный плагин возник после обсуждения на форуме. Кратко опишу суть проблемы.

Во всех версиях 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.

http://maxsite.org;/wp-files/anti-xss-attack.zip;Плагин «Anti-XSS attack»;

]]>twitter.com Google Buzz google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru]]>

Комментариев: 34

Вы можете оформить подписку на все комментарии сайта. Или даже на все новые записи сайта. Не знаете, как это сделать?
  1. 2008-01-20 в 15:52:33 | Игорь Долбин

    Попробывал на одном из своих проектов - работает.

    По крайней мере пока работает, "вглубь" ещё не разбирался :wink:

  2. 2008-01-20 в 16:32:12 | Feelov

    Не до конца понял принцип работы плагина, но установил - вроде работает! smile Макс, если появятся новые версии этого плагина пожалуйста сообщай на блоге...

  3. 2008-01-20 в 16:49:50 | Dimox

    Спасибки! Полезная и нужная штука.

  4. 2008-01-20 в 17:00:44 | Dmitro Podzyvalovsky

    Спасибо, будем пробовать.

  5. 2008-01-20 в 19:35:49 | Ю.Б.

    Возможен конфликт с WP-ContactForm.

  6. 2008-01-21 в 04:03:44 | Maksus

    Очень полезный плагин! Максим, на твоём сайте, он походу стоит уже давно. У меня стоял фаервол, с запрещенными реферами. И я не мог загрузить ни одной картинки и ни одного файла с твоего сайта )))

  7. 2008-01-21 в 05:40:35 | турист

    Очень пригодится в будущем. Благодарю!

  8. 2008-01-21 в 13:36:33 | ScorpAL

    А как будут обстоять дела с win live writer и другими клиентами при установленном плагине?

  9. 2008-01-21 в 15:08:23 | Максим

    Максим, у меня немного другое стоит - хотлинк (hotlink) - это штука, которая запрещает скачивать файлы, размещенные у меня, но запрашиваемые с других сайтов. Чтобы не превращать свой в файлохранилище.

    Блог-клиенты должны работать, поскольку идет обращение к xmlrpc.php в главном каталоге.

  10. 2008-01-21 в 16:23:23 | Интересный факт

    Так а XSS запрос в тот же xmlrpc.php послан быть не может? Или дело в том, что основная масса XSS-атак нацелена именно на wp-admin?

    Спасибо за плагин, поставил себе :Ы

  11. 2008-01-21 в 16:33:45 | Максим

    Может, конечно. Но у xmlrpc немного другой формат данных. Плюс каждый xmlrpc-запрос должен содержать логин/пароль, поэтому пробить такую защиту не так и просто.

    Но в любом случае, нужно понимать, что данный плагин не даст 100% гарантии от взлома. Просто с его помощью мы делаем дополнительную защиту от определенного вида атак. И не более того.

  12. 2008-01-22 в 03:22:41 | Оптимизатор

    А если админку защитить средствами Apache. Ну, допустим, определить доступ только с определённого диапазона IP? Вроде бы рациональное решение.

  13. 2008-01-22 в 03:37:47 | Максим

    Да, наверное. Вот, кстати ссылка на саму тему паранои (http://forum.maxsite.org/viewtopic.php?id=2807) Там еще круче smile

  14. 2008-01-22 в 19:45:04 | Александр-HIMиk

    Не-пус-ка-ет в админку! Пришлось убивать файл. Орал что XSS атака.

  15. 2008-01-22 в 21:33:59 | Goodluck Дмитрий(Cema)

    По этой ссылке (http://www.mattcutts.com/blog/three-tips-to-protect-your-wordpress-installation/)о блокировке админки в .htaccess файле по IP.

  16. 2008-01-23 в 12:56:23 | levati

    А как этот плагин работает с запросами к xmlrpc.php?

  17. 2008-01-24 в 01:29:25 | mentat

    Вроде бы работает. Спасибо большое!

  18. 2008-01-26 в 19:41:19 | unodj

    Гораздо проще и эффективнее запаролить директорию wp-admin средствами apache.

  19. 2008-01-26 в 19:50:02 | unodj

    Максим, а можно узнать поподробнее про хотлинк (hotlink)?

    А то с одного моего сайта человеками скачивается по 80 гиг., а роботами и редиректами с чужих сайтов по 500 гиг. в месяц.

    А мне бы не хотелось отрубать возможность скачивать для людей, пришедших с другого сайта, т.к. это промо материал одного известного диджея и муз. проекта.

    Хочу сделать так: если человек кликнул на ссылку на другом сайте, ему принудительно показывает страницу моего сайта, а на ней он уже сможет выбрать нужную ему ссылку для скачивания.

  20. 2008-02-02 в 02:19:04 | mekaL

    спасибо что сообщил о таком "хаке", поставил плагин, на всякий случай

  21. 2008-02-02 в 02:30:47 | mekaL

    я заметил когда лажу по админке то меня как будто редиректит через страницу на которой написано ЯЛП вроде, так надо?

  22. 2008-02-02 в 02:47:48 | mekaL

    блин, даже когда по сайту лажу, то постоянно кидает через страницу яЛП, это Ваш плагин, или может другой какой-то у меня? Я только что еще установил Ваш плагин для Сабы

  23. 2008-02-02 в 03:41:15 | mekaL

    Кстати, у меня еще одна "идея" smile а может в Вордпресе можно как-то тупо запретить регистрацию и создание новых аккаунтов?))

    а на счет того, что меня даже по сайту кидает через страницу с надписью яЛП я еще хочу услышать ответ, это из-за этого плагина или какае-то трабла у меня?

  24. 2008-02-02 в 03:43:47 | Максим

    Подозреваю, что яЛП это BOOM в UTF8 ;)

  25. 2008-02-02 в 05:12:22 | mekaL

    тоесть это изза неправильной кодировки плагина для Сапы?

  26. 2008-02-03 в 23:53:40 | Dead Krolik

    >у меня немного другое стоит - хотлинк (hotlink) - это штука,

    >которая запрещает скачивать файлы, размещенные у меня, но

    >запрашиваемые с других сайтов

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

  27. 2008-04-08 в 09:54:08 | dert

    вопрос: только блоги подверженны такой XSS атаке?

    видел пару раз обявления: прогон по сайтам с XSS уязв, конечно, за деньги ))

  28. 2008-04-21 в 09:22:54 | Rozen

    По моему дополнительный плуг - дополнительные сложности. А по теории надежности: чем сложнее инструмент, тем выше вероятность выхода из строя.

    Я за средства Апача.

    ЗЫ: Но задумка и реализация понравились

  29. 2008-05-12 в 22:05:39 | Dblmok

    Запрос с указанием поля referer формируется на стороне пользователя, в связи с чем возникает вопрос: а кто мешает злоумышленнику подменить referer в запросе на ваш сайт?

    imho - это защита только от ленивого.

  30. 2008-06-03 в 01:30:37 | Ю.Б.

    Модифицированная для 2.5 версия: http://www.portal.kharkov.ua/soft/anti-xss-attack.zip

  31. 2008-07-04 в 22:57:58 | Vladimir

    Логичнее нацеливать XSS-атаку не на админку, а на сам сайт: своровать cookies, например, и логиниться под админом.

    Кстати, автору рекомендация прочитать, что же всё-таки такое XSS-атака и почему пример, приведённый в статье, XSS-атакой не является.

    А еще - разобраться, зачем WordPress добавляет в формы поля _wpnonce и _wp_http_referer/_wp_original_http_referer. Причем с версии 2.0.3. Вы изобретаете велосипед.

  32. 2008-10-17 в 15:49:18 | jump

    Не могу модерировать комментарии на своём блоге, пишет, что подозрение на атаку, при попытке отключить плагин (деактивировать), пишет то же самое сообщение )) как его прибить навремя?

  33. 2008-10-17 в 22:12:08 | Максим

    Просто удалить файлы.

  34. 2008-11-19 в 22:18:50 | feodosy

    Спасибо, господа. Установил - работает - работать не мешает. Поюзаем дальше - поглядим. Не панацея от XSS-атак, конечно, и все-же не будет лишним. :smile: