首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 遞歸掃描目錄尋找可寫權限目錄實戰腳本

     編輯:PHP 相關知識

應用場景

在滲透測試、服務器安全巡檢或文件上傳漏洞挖掘中,快速定義哪些目錄具有寫入權限至關重要。本文提供一個純 PHP 實現的遞歸掃描腳本,可輸入任意路徑,自動遍歷子目錄並列出可寫入的目錄完整路徑。

完整代碼(含前端表單)

<!DOCTYPE html>
<html>
<head>
    <meta charset="gb2312">
    <title>目錄可寫權限檢測工具</title>
    <style>body{background:#000;color:#fff;font-family:monospace;}</style>
</head>
<body>
    <form method="POST">
        單個目錄路徑: <input type="text" name="name" size="80" placeholder="例如:C:\Windows\Temp">
        <input type="submit" name="submit" value="開始檢測">
    </form>
    <hr>
    <h3>常見敏感目錄參考</h3>
    <pre>
c:\windows
c:\Documents and Settings
c:\Program Files
c:\Documents and Settings\All Users\Application Data\Microsoft\Media Index
C:\php\PEAR
C:\Program Files\Zend\ZendOptimizer-3.3.0
C:\Program Files\Common Files
C:\7i24.com\iissafe\log
C:\RECYCLER
C:\windows\temp
c:\Program Files\Microsoft SQL Server\90\Shared\ErrorDumps
f:\recycler
C:\Program Files\Symantec AntiVirus\SAVRT
C:\WINDOWS\7i24.com\FreeHost
C:\php\dev
C:\~1
C:\System Volume Information
C:\Program Files\Zend\ZendOptimizer-3.3.0\docs
C:\Documents and Settings\All Users\DRM
C:\Documents and Settings\All Users\Application Data\McAfee\DesktopProtection
C:\Documents and Settings\All Users\Application Data\360safe\softmgr
    </pre>

    <?php
    set_time_limit(120);

    if (isset($_POST['submit'])) {
        $path = $_POST['name'];
        if (file_exists($path)) {
            dir_File($path);
        } else {
            echo "<font color='red'>路徑不存在或無權限訪問</font>";
        }
    }

    function dir_File($dirname) {
        $dir = @opendir($dirname);
        if (!$dir) return;
        while (($fileName = readdir($dir)) !== false) {
            if ($fileName != "." && $fileName != "..") {
                $dirFile = $dirname . "\\" . $fileName;
                if (is_dir($dirFile)) {
                    if (is_writable($dirFile)) {
                        echo $dirFile . " 這個目錄可寫<br>";
                    }
                    dir_File($dirFile); // 遞歸
                }
            }
        }
        closedir($dir);
    }
    ?>
</body>
</html>

代碼解析

  1. 表單提交:通過 POST 將目標路徑傳給同頁腳本。
  2. 安全限制:set_time_limit(120) 防止大目錄樹遍歷超時。
  3. 遞歸函數 dir_File():
    • 使用 opendir() 打開目錄句柄。
    • readdir() 循環讀取條目,排除 . 與 ..。
    • is_dir() 判斷是否為目錄,is_writable() 檢測寫入權限。
    • 可寫則直接輸出路徑,隨後遞歸進入子目錄繼續掃描。

使用建議與風險提示

  • 僅限授權環境:未經授權掃描他人服務器屬於非法行為。
  • 權限最小化:生產環境應盡量收緊目錄權限,避免非必要目錄可寫。
  • 性能優化:大盤面掃描建議加入深度限制或改用 RecursiveDirectoryIterator (SPL) 實現非遞歸遍歷。
  • 跨平台路徑:Windows 使用反斜杠 \\,Linux/Unix 需改為正斜杠 /。

進階擴展方向

  • 輸出為 JSON/CSV 便於後續自動化處理。
  • 結合 fileperms() 顯示具體八進制權限碼。
  • 整合到 CI/CD 流程中,部署前自動檢測敏感目錄權限異常。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved