Мой сайт о WordPress и PHP С Днем победы!
20 января 2008

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

Читали 3774 раза
Рубрика: Плагины и хаки
Навигация: Главная » WordPress » Плагины и хаки

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

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

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

28 комментариев к “Плагин «Anti-XSS attack»”

  1. Игорь Долбин:

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

  2. Feelov:

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

  3. Dimox:

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

  4. Dmitro Podzyvalovsky:

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

  5. Ю.Б.:

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

  6. Maksus:

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

  7. турист:

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

  8. ScorpAL:

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

  9. Максим:

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

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

  10. Интересный факт:

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

  11. Максим:

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

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

  12. Оптимизатор:

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

  13. Максим:

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

  14. Александр-HIMиk:

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

  15. Goodluck Дмитрий(Cema):

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

  16. levati:

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

  17. mentat:

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

  18. unodj:

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

  19. unodj:

    Максим, а можно узнать поподробнее про хотлинк (hotlink)?
    А то с одного моего сайта человеками скачивается по 80 гиг., а роботами и редиректами с чужих сайтов по 500 гиг. в месяц.
    А мне бы не хотелось отрубать возможность скачивать для людей, пришедших с другого сайта, т.к. это промо материал одного известного диджея и муз. проекта.
    Хочу сделать так: если человек кликнул на ссылку на другом сайте, ему принудительно показывает страницу моего сайта, а на ней он уже сможет выбрать нужную ему ссылку для скачивания.

  20. mekaL:

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

  21. mekaL:

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

  22. mekaL:

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

  23. mekaL:

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

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

  24. Максим:

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

  25. mekaL:

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

  26. Dead Krolik:

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

  27. dert:

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

  28. Rozen:

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


Оставьте комментарий! (Вы согласны с правилами)

 

:mrgreen: :neutral: :twisted: :arrow: :shock: :smile: :???: :cool: :evil: :grin: :idea: :oops: :razz: :roll: :wink: :cry: :eek: :lol: :mad: :sad: :!: :?:

При добавлении кода (html, php) заменяйте < на &lt; и > на &gt;.
Внимание: антиспам - зверь! Копируйте своё сообщение перед отправкой. На всякий случай.