暴露的備份和未引用的文件以及如何找到它們
已發表: 2021-08-24保持您的 WordPress 安全需要一個持續的測試、強化、監控和改進過程。 WordPress 管理員可以處理幾件事情來幫助他們確保他們的網站是安全的。 從確保密碼符合特定標準到強化 PHP,這些過程可以在很大程度上幫助您確保運行緊湊、乾淨的船舶。 容易被忽視的一件事是暴露的備份和未引用的文件。 這些文件可能會帶來安全風險,可以通過遵循最佳實踐輕鬆管理。
WordPress 使用目錄來組織信息。 所有頁面和媒體都駐留在此結構中。 在典型的安裝中,這個結構看起來像 var/www/html/wordpress/wp-content。
Web 服務器,包括託管 WordPress 網站的服務器,通常配置為為客戶端提供位於特定目錄中的所有文件。 有一些例外,例如 PHP 文件; 但是,除非管理員明確阻止訪問,否則如果客戶端請求它,Web 服務器可能會提供幫助。
一般來說,這是一件好事,這是您希望發生的事情,因為這是與您的網頁相關的文件(例如 CSS 文件、JS 文件和圖像)提供給訪問者的方式。 但是,這種行為也意味著您可能會無意中提供您從未打算讓公眾看到的文件,例如備份和未引用的文件。
什麼是備份和未引用文件?
顧名思義,備份和未引用文件是實際備份,可以是特定文件的備份,通常是在編輯配置文件等文件時創建的,甚至可以是完整備份。 了解這些備份文件是什麼以及它們是如何生成的,是我們解決問題所需採取的第一步。
您可能需要編輯 WordPress 文件的原因有很多。 然而,編輯您的 WordPress 網站的文件,而不先進行備份需要一些勇氣 - 一個丟失的分號可能會導致您的網站崩潰!
當然,由於此類錯誤很容易犯,因此不建議直接在生產 Web 服務器上編輯文件。 最佳實踐告訴我們首先測試測試或登台服務器中的任何更改。 只有經過徹底和成功的測試,才能將更改移動到實時/生產服務器。
然而,在現實生活中,並不總是遵循最佳實踐。 當它是一個很小的變化時,尤其如此。 下載文件、進行更改、測試和重新上傳的過程可能比在實時服務器上編輯文件花費的時間要長得多。 我們都去過那兒。
在實時服務器上進行編輯非常容易。 使用 SSH 客戶端和 Vi(或 Vim,如果您更喜歡改進的版本),您可以創造奇蹟。 一旦您連接到服務器並進入目錄,您可能會首先備份文件(例如 wp-config.php.bak),編輯實時文件,確保一切正常,這都是笨拙的。 但是,留在文件夾中的備份文件(以防萬一,你知道)最終可能會成為許多痛苦的根源。 幾乎任何人都可以下載它,並以純文本形式下載整個配置。
此外,許多 WordPress 管理員可能不知道使用文件編輯器(如 Vim)編輯文件可能會自動創建備份、恢復和鎖定文件。 Vim 創建這些文件是為了讓您在 Vim 崩潰或意外退出時恢復您的工作。 雖然這無疑是一項有價值的功能,但這也意味著您可能會無意中將您從未打算創建的備份文件散佈在您的網站上,等待任何人訪問。
同樣,保留在公用文件夾中的整個目錄的備份也可能具有破壞性。 雖然備份您的 WordPress 網站至關重要,但這需要安全地完成,而不會引入新的安全風險。 我們將在本文後面更詳細地討論這一點。
備份文件的常見示例包括修改後的配置文件、PHP 文件或其他源代碼的重命名舊版本,以及以壓縮存檔(例如 .zip、.gz 或 .tar.gz 存檔)形式的自動或手動備份。
另一方面,未引用的文件是錯誤放置的文件,由於配置或設計決策,最終會出現在它們不屬於的地方。
有哪些風險?
意外留下可訪問的備份和未引用文件可能會洩漏敏感信息。 根據文件的不同,敏感數據可能包括配置參數或源代碼,可幫助惡意用戶更好地了解您的網站的工作方式,從而更容易對您的網站進行攻擊。 在某些情況下,可能使攻擊者控制整個 WordPress 安裝的密碼也可能被洩露。
有人可以通過多種方式在您的 Web 服務器上找到剩余文件。 雖然其中一些方法需要一些技術專長,但其他方法就像谷歌搜索一樣簡單,這增加了暴露的風險。 如果您不確定服務器上是否有剩余文件,請繼續閱讀以了解如何在其他人之前搜索並找到它們。
如何在您的 WordPress 網站上查找備份文件和未引用的文件
人們可以使用幾種不同的方法來查找備份和未引用的文件。 作為服務器所有者,您擁有優勢,因為您可以更直接地進行操作。 本節將探討這些不同的工具,從可用於搜索和刪除這些文件的工具開始。 然後,我們將看看一隻好奇的貓如何在您的服務器上查找備份和未引用的文件。
在查找您可能留在 Web 服務器上的備份文件時,您可以採用三種方法中的一種(或多種)。 最簡單的方法是安裝一個插件來監控文件的變化。 或者,您可以嘗試使用命令行工具(例如 find)查找留在文件系統上的備份文件,或者您可以嘗試使用稱為fuzzing的技術查找備份文件。
文件完整性監控插件
WordPress 的文件完整性監控解決方案可以毫不費力地幫助監控 Web 服務器上的文件更改,並在檢測到任何添加、刪除或更改的內容時提醒您。
這可以通過網站文件更改監視器插件來實現。 該插件獲取您目錄的指紋,然後將其與後續指紋進行比較。 本質上,它的工作原理與校驗和相同,使其高度安全和可靠。
如果您不了解 WordPress 使用的所有目錄,則文件完整性監視器可能特別有效。 這個插件的另一個顯著優勢是監控是自動化的,所以你不必記得檢查文件——插件會自動完成。
尋找
現在讓我們看看如何使用 find 命令查找備份文件。 以下命令將查找創建備份文件時使用的幾個常用文件擴展名。
查找 /var/www -type f \( -name '*.bak' -o -name '*.backup' -o -name '*.bac' -o -name '*.zip' -o -name '* .tar' -o -name '*.jar' -o -name '*.log' -o -name '*.swp' -o -name '*~' -o -name '*.old' -o -名稱 '*.~bk' -o -name '*.orig' -o -name '*.tmp' -o -name '*.exe' -o -name '*.0' -o -name '*. 1' -o -name '*.2' -o -name '*.3' -o -name '*.gz' -o -name '*.bz2' -o -name '*.7z' -o -名稱 '*.s7z' -o -name '*.lz' -o -name '*.z' -o -name '*.lzma' -o -name '*.lzo' -o -name '*.apk ' -o -name '*.cab' -o -name '*.rar' -o -name '*.war' -o -name '*.ear' -o -name '*.tar.gz' -o -name '*.tgz' -o -name '*.tar.z' -o -name '*.tar.bz2' -o -name '*.tbz2' -o -name '*.tar.lzma' - o -name '*.tlz' -o -name '*.zipx' -o -name '*.iso' -o -name '*.src' -o -name '*.dev' -o -name '* .a' -o -name '*.ar' -o -name '*.cbz' -o -name '*.cpio' -o -name '*.shar' -o -name '*.lbr' -o -name '*.mar' -o -name '*.f' -o -name '*.rz' -o -name '*.sfark' -o -name '*.xz' -o -name '*. ace' -o -name '*.afa' -o -name '*.alz' -o -name '*.arc' -o -nam e '*.arj' -o -name '*.ba' -o -name '*.bh' -o -name '*.cfs' -o -name '*.cpt' -o -name '*.dar ' -o -name '*.dd' -o -name '*.dgc' -o -name '*.dmg' -o -name '*.gca' -o -name '*.ha' -o -name '*.hki' -o -name '*.ice' -o -name '*.inc' -o -name '*.j' -o -name '*.kgb' -o -name '*.lhz' -o -name '*.lha' -o -name '*.lzk' -o -name '*.pak' -o -name '*.partimg.' -o -name '*.paq6' -o -name '*.paq7' -o -name '*.paq8' -o -name '*.pea' -o -name '*.pim' -o -name '*.pit' -o -name '*.qda' -o -name '*.rk' -o -name '*.sda' -o -name '*.sea' -o -name '*.sen' -o -name '*.sfx' -o -name ' *.sit' -o -name '*.sitx' -o -name '*.sqx' -o -name '*s.xz' -o -name '*.tar.7z' -o -name '*. tar.xz' -o -name '*.uc' -o -name '*.uc0' -o -name '*.uc2' -o -name '*.ucn' -o -name '*.ur2' - o -name '*.ue2' -o -name '*.uca' -o -name '*.uha' -o -name '*.wim' -o -name '*.xar' -o -name '* .xp3' -o -name '*.yz1' -o -name '*.zoo' -o -name '*.zpaq' -o -name '*.zz' -o -name '*.include' -o -name '*_1' -o -name '*_2' -o -name '*_x' -o -name '*bak' -o -name '*_bak' -o -name '*old' -o -name '*_old' -o -name '*_a' -o -name '*_b' -o -name '*_c' -o -name '*_d' -o -name '*_e' -o -name '*_f' -o -name '*inc' -o -name '*_inc' -o -name '*_backup' -o -name '* - 複製' -o -name '* - 複製 (2)' -o -name '* - 複製 (3)' -o -name '*backup' -o -name '*-backup' -o -name '*-bak' -o -name '*-old' -o -name '*-1' -o -name '*-2' -o -name '* - 複製 - 複製' -o -name '*(副本)' -o -name '*(另一個副本)' -o -name '*(第二個副本)' -o -name '*(第三個副本)' -o -name '*(第四個副本)' -o - name '*(第二份)' -o -name '*(第三份)' -o -name '*(第四份)' -o -name '* (副本)' -o -name '* (另一份) ' -o -name '* (第二個副本)' -o -name '* (第三個副本)' -o -name '* (第四個副本)' -o -name '* (第二個副本)' -o -name ' * (第 3 份)' -o -name '* (第 4 份)' -o -name '* 的副本' -o -name '* 的副本 (2)' -o -name '* 的副本 (3)' -o -name '副本的副本 *' -o -name 'backup*' -o -name 'backup_*' -o -name 'backup-*' -o -name 'bak*' -o -name 'bak_ *' -o -name 'bak-*' -o -name'old*' -o -name 'old_*' -o -name 'old-*' -o -name '1*' -o -name '1_*' -o -name '1-*' -o -name '2*' -o -name '2_*' -o -name '2-*' \)
模糊測試
下面的方法使用一個名為 ffuf 的基於命令行的工具,其中包含一個專注於 WordPress 文件的單詞列表(以純文本形式收集的文件名和文件路徑的列表)。 ffuf 可以配置為使用逗號分隔的常用備份文件擴展名列表發出請求(此示例僅使用僅包含 .bak 和 .backup 的縮短列表,但實際上,它可能會更長)。
ffuf -u http://example.com/FUZZ -w wordlist.txt -e '.bak,.backup'
搜索引擎搜索
搜索引擎非常非常擅長在 Web 服務器上查找和分類信息。 有人可以通過使用高級運算符來做到這一點,例如,可以深入查詢以查找給定服務器上的特定文件類型。
這種類型的搜索也稱為 Google Dorking,可以結合使用高級過濾器和推理。 推理是不知道服務器上存在什麼的人如何使用一般信息來推斷服務器上可能存在什麼樣的文件和結構,然後搜索那些特定的東西。
安全掃描儀
有不同類型的掃描儀可以掃描網站的目錄。 第一種掃描器稱為站點爬蟲,它與搜索引擎用於讀取網站的底層技術相同。 然而,這些類型的掃描儀並不是搜索引擎獨有的,可以免費下載。
在大多數國家/地區掃描目標網站是違法的,即使您的意圖是好的。 您可以而且應該只對您擁有的網站使用掃描儀。 如果您正在掃描第三方網站,請確保您同意。 即便如此,有惡意的人也可以使用安全掃描程序來了解有關您網站的更多信息並了解其中包含哪些類型的文件。
另一種類型的掃描器是滲透測試掃描器,它可以掃描網站的漏洞,包括剩余文件。
找到備份或未引用的文件? 這是做什麼
在網站上存儲備份文件絕不是一個好主意。 不幸的是,WordPress 網站所有者和管理員配置 cron 作業(計劃任務)來進行數據庫備份的情況並不少見,只是將這些備份存儲在同一台服務器上。 雖然您當然應該備份您的網站,但您應該注意不要將備份文件存儲在您備份的系統上的任何位置。
擁有一個遵循最佳實踐的深思熟慮的 WordPress 備份策略不僅從安全角度來看,而且從業務連續性的角度來看也是至關重要的。 畢竟,如果您不能使用它們來恢復數據,那麼備份就沒有多大價值。
如何防止備份文件枚舉
正如我們在整篇文章中看到的那樣,在您的 WordPress 網站上保留備份文件可能會帶來很大風險。 因此,在將更改推送到實時/生產服務器之前,您應該始終使用測試或臨時環境來執行更改。 大多數託管 WordPress 託管帳戶都帶有開箱即用的登台環境。 您還可以使用 Local 等軟件,它允許您在 PC 上啟動 WordPress 實例。
儘管如此,如果您選擇將備份文件保留在您的網絡服務器上,理想情況下,請將它們放在您配置網絡服務器服務的目錄之外。
此外,配置您的 WordPress 文件權限以禁止訪問 Web 服務器的用戶——這確保即使在配置錯誤的情況下,Web 服務器也不會被允許將文件提供給請求它的客戶端。 作為一項附加措施,最好對任何數據庫備份進行加密,並確保 Web 服務器的用戶無法訪問加密密鑰。