Все лгут

Вчера наткнулся на недокументированные функции Loader, сегодня набрёл на давний пост на форуме ionCube, где Nick Lindridge (гендиректор ionCube Ltd или кто-то в этом духе) рассказывал интересующемуся пользователю, что функции _dyuweyrj4() и _dyuweyrj4r() при вызове возвращают «жемчужины мудрости». Далее »

Автор: , опубликовано в: Zend, Безопасность, комментариев: 2
28
Окт
2010

Интересно…

Как выяснилось, у Loader есть две недокументированных настройки в ini-файле: phpd.t и phpd. Что интересно, если значение phpd отлично от единицы или On, ionCube вылетает на зашифрованных файлах.

А еще у ionCube есть несколько недокументированных функций:

  • _dyuweyrj4() — при вызове без аргументов выдаёт «умные фразы» типа Do good, reap good; do evil, reap evil. или A rat who gnaws at a cat's tail invites destruction.
  • _dyuweyrj4r() — аналогично предыдущей;
  • ioncube_loader_iversion() — возвращает версию ionCube Loader в числовом виде: XYYZZ (например, 3.3.20 будет 30320);
  • ioncube_file_not_permissioned() — судя по всему, эта функция оставлена для обратной совместимости со старыми скриптами: выдаёт ошибку вида The file %s is not permissioned for this server.
  • _il_exec() — а это очень интересная функция: просто так её не вызвать. Но именно она ответственна за выполнение зашифрованного содержимого.

Далее »

Автор: , опубликовано в: Безопасность, комментариев: 1
27
Окт
2010

Google XML Sitemaps: убираем версию и сигнатуру из карты сайта

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

Очевидно, что это очень смущает людей, зацикленных на безопасности сайта.

К счастью, это лечится (во всех смыслах). Далее »

Автор: , опубликовано в: Патчи, комментариев: 3
23
Авг
2010

Борьба с ботами-взломщиками средствами rsyslogd

В предыдущих частях статей цикла «Скажи «Нет!» взломщику» со взломщиками мы боролись при помощи связки  + : swatch проводил анализ системного журнала сообщений, iptables использовался для блокировки непрошеных гостей.

Тем не менее, используя swatch на нескольких серверах, я не могу сказать, что я полностью им доволен: слишком уж он хрупок. Завершение дочернего tail приводит к тихой гибели самого swatch, в системе могут оставаться зомби и т.п.

Одна из альтернатив — использование . Далее »

Автор: , опубликовано в: Администрирование, Безопасность, комментариев: 7
21
Апр
2010

Опять сломали!!!

В очередной раз разработчики ломают совместимость… Хотя справедливости ради стоит отметить, что затронуты будут далеко не все плагины, а только те, которые полагаются на то, что функция wp_nonce_field() создаёт в форме поле с именем _wp_http_referer. Далее »

Автор: , опубликовано в: WordPress, комментариев: 1
9
Дек
2009

Скажи «Нет!» взломщику: часть 2

Продолжение статьи Скажи «Нет!» взломщику.

Прошлый раз мы использовали swatch и iptables для защиты от нехороших ботов, пытающихся сделать наш компьютер частью ботнета. У приведённого способа был существенный недостаток: IP-адреса блокировались навсегда. Это плохо, так как IP-адреса можно подделывать.

Tamdiu discendum est, quamdiu vivas, поэтому сегодня рассмотрим вариант с блокированием атакующего на заданный промежуток времени. Далее »

Автор: , опубликовано в: Linux, Безопасность, комментариев: 2
8
Дек
2009

Безопасный логин в WordPress с использованием nginx

, начиная с версии 2.6, имеет улучшенную поддержку работы с .

У администратора есть две возможности:

  1. Использование HTTPS для работы в панели управления (wp-admin).
  2. Использование HTTPS только для входа в систему.

Первое достигается путём добавления строки

[-]
View Code PHP
define('FORCE_SSL_ADMIN', true);

в wp-config., второе — путём добавления строки

[-]
View Code PHP
define('FORCE_SSL_LOGIN', true);

Добавляем одну из этих двух строк в wp-config.php и проблема решена? Но в действительности всё не так, как на самом деле :-)
Далее »

Автор: , опубликовано в: nginx, WordPress, Безопасность, комментариев: 5
5
Дек
2009

Профиль AppArmor для nginx

Данный профиль предназначается тем, кто знает, что такое и сознательно решил использовать профиль для . Профиль не является законченным решением, работающим из коробки, а должен рассматриваться только как шаблон.

При построении профиля молчаливо предполагалось:

  • рабочие процессы nginx выполняются от имени www-data:www-data;
  • файлы конфигурации nginx находятся в /etc/nginx (/etc/nginx/sites-enabled, /etc/nginx/sites-available, /etc/nginx/conf.d/*.conf, /etc/nginx/);
  • пользовательские сайты расположены в /home/<user>/htdocs;
  • логи записываются в /var/log/nginx/*.log

Далее »

Автор: , опубликовано в: Linux, nginx, Администрирование, комментариев: 4
21
Ноя
2009

ACL как одно из решений проблемы работы web-сервера под root

Я довольно часто встречал конфигурацию, когда web-сервер работает под root, чтобы обойти жёсткие права доступа, установленные на каталоги пользователей. Рассмотрим на примере: предположим, что пользовательские сайты расположены в /home/<username>/, при этом права на каталог home установлены в 0711 (rwx--x--x), а права на пользовательские каталоги установлены в 0700 (rwx------). Такие права устанавливаются, чтобы изолировать пользователей друг от друга — один пользователь не сможет зайти и посмотреть домашний каталог другого пользователя. Такая мера популярна у администраторов виртуального (shared) хостинга.

Для того, чтобы web-сервер мог нормально обслуживать сайты, обычно используется одно из следующих решений:

  • web-сервер работает под учётной записью root;
  • права на домашний каталог устанавливаются в 0750 (rwxr-x---), а пользователь, под которым работает web-сервер, вносится в группу, которой принадлежит пользователь.

Далее »

Автор: , опубликовано в: Linux, Администрирование, комментариев: 2
15
Ноя
2009

Простой DoS для PHP

Копался сегодня во внутренностях , и обнаружил такую вещь: функция zend_hash_sort() (она вызывается из функций типа usort() и прочих) сортирует не сам массив (в терминах ), а массив (в терминах языка C) указателей на элементы массива (в терминах ), а потом по отсортированному C-массиву пересоздаёт PHP-массив. Далее »

Автор: , опубликовано в: PHP, Безопасность, комментариев: 3
19
Окт
2009