PHP session.save_path open_basedir Bypass Vulnerability

Credit: Stefan Esser
Risk: Medium
Local: Yes
Remote: No

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. 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.

Vote for this issue:


Thanks for you vote!


Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.

(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2021,


Back to Top