billing:secure_01042019

secure 1.04.2019

Данный модуль отключает опасные функции php, такие как eval.

wget https://wiki.mikbill.ru/_media/billing/php_diseval_extension-master.tar
tar xvf php_diseval_extension-master.tar
cd PHP_diseval_extension-master/source

для сборки модуля необходим phpize из пакета php-devel (centos) или php7.2-dev (debian):

phpize
./configure
make
sudo make install

Подключим его к php:

touch /etc/php.d/10-diseval.ini
echo "extension=diseval" > /etc/php.d/10-diseval.ini

Так же если php-fpm использует отдельные модули, diseval необходимо подключить и к нему.
Для того что бы web подтянул новый модуль необходимо перезапустить nginx/httpd/php-fpm

для сборки модуля необходим phpize из пакета php-devel (centos) или php-dev (debian):

wget http://download.suhosin.org/suhosin-0.9.33.tgz --no-check-certificate
tar -xvf suhosin-0.9.33.tgz
cd suhosin-0.9.33
phpize
./configure
make
make install
echo 'extension=suhosin.so' > /etc/php.d/suhosin.ini

echo 'suhosin.executor.disable_eval = On' >> /etc/php.ini
echo 'suhosin.executor.func.blacklist = strip_tags' >> /etc/php.ini
echo 'suhosin.executor.eval.blacklist = strip_tags' >> /etc/php.ini

Так же если php-fpm использует отдельные модули, diseval необходимо подключить и к нему. Для того что бы web подтянул новый модуль необходимо перезапустить nginx/httpd/php-fpm

для сборки модуля необходим phpize из пакета php-devel (centos) или php-dev (debian):

wget https://download.suhosin.org/suhosin-0.9.38.tar.gz --no-check-certificate
tar -xvf suhosin-0.9.38.tar.gz
cd suhosin-0.9.38
phpize
./configure
make
make install
echo 'extension=suhosin.so' > /etc/php.d/suhosin.ini

echo 'suhosin.executor.disable_eval = On' >> /etc/php.ini
echo 'suhosin.executor.func.blacklist = strip_tags' >> /etc/php.ini
echo 'suhosin.executor.eval.blacklist = strip_tags' >> /etc/php.ini

Так же если php-fpm использует отдельные модули, diseval необходимо подключить и к нему. Для того что бы web подтянул новый модуль необходимо перезапустить nginx/httpd/php-fpm

Так как disable_eval отключает возможность выставлять размер памяти из php скриптов, необходимо внести изменения в php.ini:

Текущий лимит памяти можно посмотреть выполнив:

php -i | grep memory_limit

Для изменения лимита необходимо выполнить:

sed -i "s|memory_limit =|memory_limit = -1;|g" /etc/php.ini

Где /etc/php.ini это путь к .ini параметрам php (cli), аналогично нужно сделать и для fpm если он использует другой конфиг (обычно такое встречается у debian).

Найти путь к php.ini для cli и fpm можно командой:

find /etc -type f -name "php.ini"
#!/bin/bash

FILES=(
/var/www/mikbill/stat/data/lib/new_js.php
/var/www/mikbill/stat/app/log/daily_draws.png
/var/www/mikbill/stat/app/log/monthly_draws.png
/var/www/mikbill/admin/res/fsb/css/plugins/datapicker/main.php
/var/www/mikbill/admin/res/fsb/css/plugins/datapicker/index.php
/var/www/mikbill/stat/sys/user_null/uid_null-2week.png
/var/www/mikbill/stat/data/template/olson/css/images/ui-icons_d38f41_256x240.png
/var/www/mikbill/stat/data/template/olson/font/fontawesome-webfontb31e.eot
/var/www/mikbill/stat/data/template/olson/font/fontawesome-webfontd94d.eot
)

for ITEM in ${FILES[*]}
do
	if [ -f "$ITEM" ]; then
		echo "suspicious file: $ITEM"
	fi
done

find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" \) -exec grep -H 'file_get_contents(.font_xpattr)' {} \;
find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" -and ! -name "*.js" \) -exec grep -H '], .black_list' {} \;
find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" -and ! -name "*.js" \) -exec grep -H 'eval(' {} \;
find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" -and ! -name "*.js" \) -exec grep -H 'hooks.slack.com/services' {} \;
find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" -and ! -name "*.js" \) -exec grep -H 'stripslashes' {} \;
find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" -and ! -name "*.js" \) -exec grep -H 'get_magic_quotes_gpc' {} \;
find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" -and ! -name "*.js" \) -exec grep -H '_is_curl_installed' {} \;
find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" -and ! -name "*.js" \) -exec grep -H 'strip_tags' {} \;
find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" -and ! -name "*.js" \) -exec grep -H 'get_loaded_extensions' {} \;

Если в результате были найдены файлы и они не относятся к phpmyadmin, необходимо удалить/заменить на оригинальные файлы и запланировать переустановку сервера.

Удалить найденные файлы можно командой rm -f путь_к_файлу
Если выбивает ошибку то сделать chattr -i путь_к_файлу и повторить удаление.

Так же на чистый сервер советуем поставить IDS AIDE или Tripware.

Скачать архив stat.tar и распаковать его:

cd /var/www/mikbill/stat
rm -rf data
rm -rf res/paysystems
rm -f main.php
rm -f pay.php
wget https://wiki.mikbill.ru/_media/billing/stat.tar
tar xvf stat.tar

Далее необходимо поправить права и владельца файлов:

find /var/www/mikbill/stat -type f -exec chmod 644 -- {} +
find /var/www/mikbill/stat -type d -exec chmod 755 -- {} +
chown apache:apache -R /var/www/mikbill/stat
  • billing/secure_01042019.txt
  • Последнее изменение: 5 лет назад
  • alexd