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

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

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

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