logo

Database

Php Excessive Access Mode

Description

Detects PHP code that creates directories with overly permissive access modes using mkdir(). Using modes ending in 7 (rwx) or 3 (wx) grants excessive permissions that could allow unauthorized access or modification of sensitive directories.

Weakness:

405 - Excessive privileges - Access Mode

Category: Functionality Abuse

Detection Strategy

    • Identifies calls to PHP mkdir() function

    • Checks if the permission mode parameter (second argument) ends with '7' or '3'

    • Reports vulnerability when directories are created with excessive permissions (modes ending in 7 for rwx or 3 for wx access)

    • Example vulnerable code: mkdir('/path/dir', 0777) or mkdir('/path/dir', 0773)

Vulnerable code example

<?php

// Dangerous: Allows directory traversal via "../" in path
mkdir("../upload/files.php", 0777, true);

?>

✅ Secure code example

<?php

// Sanitize path and use absolute path to prevent directory traversal
$base_dir = '/var/www/uploads'; // Define fixed base directory
$safe_path = realpath($base_dir) . '/files'; // Resolve to absolute path
if (strpos($safe_path, $base_dir) === 0) { // Verify path is within allowed directory
    mkdir($safe_path, 0755, true); // Use restrictive permissions
}