File Permission

Check List

Methodology

File Permission (Sensitive File)

1

Using the following commands to find access to files inside the web server, which are made with PHP, we can run whether we can write, read, or execute a file inside the web server

2

If a sensitive file is found, we can reach the vulnerability with high-level access


Cheat Sheet

Check DIR/File Permissions

find /var/www/html -exec namei -l {} \;

<?php
// Dynamically get the current directory path
$directory = dirname(__FILE__);

// Function to check file and folder permissions and determine if they are unsafe
function checkPermissions($filePath)
{
    $permissions = fileperms($filePath);
    $issues = [];

    if (is_dir($filePath)) {
        if ($permissions & 0x0002) {
            $issues[] = "Writable";
        }
        if ($permissions & 0x0001) {
            $issues[] = "Executable";
        }
    } else {
        if ($permissions & 0x0002) {
            $issues[] = "Writable";
        }
        if (is_executable($filePath)) {
            $issues[] = "Executable";
        }
        if ($permissions & 0x0004) {
            $issues[] = "Readable";
        }
    }

    return !empty($issues) 
        ? implode(", ", $issues)
        : "Safe";
}

// Check if the directory exists
if (is_dir($directory)) {
    $files = scandir($directory);
    $files = array_diff($files, ['.', '..']);

    $isConsole = php_sapi_name() === 'cli';

    if ($isConsole) {
        echo "Directory: $directory\n";
        echo "----------------------------------------------- \n";
        foreach ($files as $file) {
            $filePath = $directory . DIRECTORY_SEPARATOR . $file;
            $type = is_dir($filePath) ? "Directory" : "File";
            $status = checkPermissions($filePath);
            echo "$file ($type): $status\n";
        }
    } else {
        echo "<strong>Directory:</strong> $directory<br>";
        echo "<hr>";
        echo "<ul>";
        foreach ($files as $file) {
            $filePath = $directory . DIRECTORY_SEPARATOR . $file;
            $type = is_dir($filePath) ? "Directory" : "File";
            $status = checkPermissions($filePath);
            echo "<li><strong>$file</strong> ($type): $status</li>";
        }
        echo "</ul>";
    }
} else {
    $message = "Directory not found.";
    echo php_sapi_name() === 'cli' ? "$message\n" : "<strong>$message</strong><br>";
}
?>

Check Sensitive Files

Check Log DIR/Files

Check Executable Files

Check Database Files

Check Temp DIR/Files

Check Upload DIR/Files

Last updated