Защищаем сайты в ISPManager

Aug 07, 2012 00:17


На днях обсуждали способы взлома сайта: http://habrahabr.ru/post/148999/

Там упоминается следующее:
"Особенность Apache - что когда он встречает файлы с незнакомыми расширениями, он эти расширения «откусывает» и ищет знакомые расширения перед ними. Поэтому если я залью файл pwn.php.omgif, то он пройдёт проверку, но Apache увидит в нём PHP-скрипт, потому что для расширения omgif не зарегистрирован ни mime-type, ни модуль-обработчик."

Чтобы отключить такое поведение нужно сперва "отключить" PHP для всех *.php.* и *.php, а затем заново включить только для *.php.


Но в ISPManager это совсем не тривиально:
1. Создаем скрипт для вставки нужных инструкций в /etc/apache2/apache2.conf:
disable-apache-php-vuln.pl
#!/usr/bin/perl
use strict;
my $fn = "/etc/apache2/apache2.conf";
open(FILE, '<', $fn);
my $data = join("", );
close(FILE);
$data =~ s|DocumentRoot\s+([^\s]+)|DocumentRoot \1

RemoveHandler .php .pht .phtml .php3 .php4 .php5
        RemoveType    .php .pht .phtml .php3 .php4 .php5

SetHandler application/x-httpd-php

|g;
open(FILE, '>', $fn);
print FILE $data;
close(FILE);

2. Делаем копию /etc/apache2/apache2.conf и запускаем
perl disable-apache-php-vuln.pl

3. Перезапускаем апач.

4. Теперь добавим нужные инструкции для новых сайтов создав /usr/local/ispmgr/etc/virtualhost.templ с таким содержимым:
    DocumentRoot __DocumentRoot__

RemoveHandler .php .pht .phtml .php3 .php4 .php5
        RemoveType    .php .pht .phtml .php3 .php4 .php5

SetHandler application/x-httpd-php

5. Перезапускаем ispmgr:
killall ispmgr

Почему так сложно?
Просто ispmanager не умеет по другому включать php для сайта. Только через
    AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
И я не знаю как изменить это.

apache, php, ispmanager, уязвимость

Previous post Next post
Up