Blog 24/7

publicznie dostępne pliki wrażliwe

TAB. 1Hasłopo polsku
Po angielskusensitive file exposure (.sql dumps, .env, .git)
Którą formą pisaćpo polsku Polska nazwa przyjęła się w tekstach i w wyszukiwarce — używaj jej samodzielnie.
Inne formypublicznie dostępna kopia bazy danych · wystawione repozytorium .git · ukryte katalogi i pliki · pozostawiony katalog .git · sensitive file exposure
KategoriaPodatności i klasy błędów

Publicznie dostępne pliki wrażliwe to pliki, które leżą w katalogu strony i dają się pobrać z przeglądarki, choć nie powinny: zrzuty bazy danych, archiwa kopii, pliki konfiguracyjne, katalogi systemów kontroli wersji. OWASP zwraca uwagę, że na serwerach WWW nierzadko zostają pliki zapomniane albo do niczego niepodlinkowane, z których można wyczytać ważne informacje o infrastrukturze albo dane logowania [6]. MITRE opisuje osobno dwa typowe przypadki: plik kopii zapasowej w miejscu dostępnym dla osób nieuprawnionych [4] i wystawione repozytorium kontroli wersji [5].

Jak działa

Plik wrażliwy nie musi być nigdzie podlinkowany, żeby dało się go pobrać. Wystarczy, że leży w katalogu obsługiwanym przez serwer WWW, a atakujący odgadnie jego nazwę. Nazwy są przewidywalne: backup.zip, baza.sql, wp-config.php.bak, .env, .git/HEAD. Sprawdzanie takich adresów łatwo zautomatyzować, więc robią to złośliwe boty i skanery.

RYS. 1Jak wycieka plik wrażliwy

Ważną rolę gra rozszerzenie. OWASP wyjaśnia, że archiwum .tar, .zip albo .gz ma inne rozszerzenie niż kod źródłowy, więc serwer nie wykona zawartego w nim kodu, tylko odda plik do pobrania [6]. Tak samo działa plik PHP z dopisaną końcówką .old albo .bak: serwer nie przekaże go do interpretera, tylko wyśle jego treść jako tekst.

Rodzaje

Wytyczne OWASP opisują, skąd biorą się takie pliki [6]: edytory tekstu tworzą automatyczne kopie, na przykład z tyldą na końcu nazwy; administratorzy robią ręczne kopie z końcówką .old albo archiwa; systemy plików zapisują migawki; kopiowanie w systemie Windows tworzy pliki z przedrostkiem „Copy of”.

RodzajPrzykładCo ujawnia
kopia pliku koduwp-config.php.bak, index.php.oldkod i dane logowania zapisane w nim jawnym tekstem [6]
kopia zapasowa (backup) stronybackup.zip w katalogu głównym [2]cały kod i konfigurację
zrzut bazy danych.sql, .bakstrukturę i zawartość tabel [3]
repozytorium kontroli wersjikatalog .git lub .svn [1]kod źródłowy i historię zmian [1]
plik środowiskowy.envklucze i hasła do usług

Sekurak opisuje, że w skrajnych przypadkach, takich jak pozostawiony katalog .git lub .svn, pliki te dają dostęp do kodu źródłowego aplikacji [1]. Nawet gdy serwer nie pokazuje listy plików w katalogu i zwraca kod 403, sama odpowiedź inna niż 404 zdradza, że katalog istnieje [1]. MITRE dodaje, że metadane repozytorium mogą zawierać nazwy użytkowników, ścieżki, adresy IP i szczegółowe różnice między wersjami [5].

W WordPressie

W WordPressie najcenniejszym plikiem jest wp-config.php, bo zawiera dane dostępowe do bazy i klucze bezpieczeństwa. Sam plik jest wykonywany przez PHP i nie oddaje treści, ale jego kopia z inną końcówką już tak. Dokumentacja WordPressa zaleca przeniesienie wp-config.php katalog wyżej niż instalacja albo zablokowanie dostępu do niego regułą serwera [7]; szerzej opisuje to hasło utwardzanie pliku wp-config.php (wp-config hardening). Ten sam poradnik zaleca regularne kopie zapasowe całej instalacji i bazy w zaufanym miejscu [7], czyli poza katalogiem publicznym.

Drugim źródłem ryzyka są wtyczki do kopii zapasowych i migracji, które zapisują archiwa w wp-content. MITRE jako przykład słabości CWE-530 podaje CVE-2024-7315: wtyczkę WordPressa, która generowała nazwy plików kopii zapasowych bez wystarczającej losowości, co pozwalało atakującym je pobrać [4]. Zob. podatność we wtyczce. Gdy do tego dochodzi włączone listowanie katalogów (directory listing), nazw nie trzeba nawet zgadywać.

Zagrożenia i skutki

Jedno pobranie pliku wystarcza, by przejść od rekonesansu do włamania. OWASP wymienia ujawnienie kodu źródłowego, jawne nazwy użytkowników i hasła w starych plikach, podatności naprawione już w nowszej wersji, ale obecne w starej kopii, oraz szczegóły konfiguracji, takie jak ścieżki i struktury danych [6]. MITRE dodaje, że z kopii zapasowych atakujący może poznać zapytania do bazy, format parametrów przyjmowanych przez aplikację i architekturę serwisu [4].

Zrzut bazy strony WordPress zawiera zwykle dane klientów i skróty haseł, więc jego pobranie jest wyciekiem danych, a często także naruszeniem ochrony danych osobowych. Z wp-config.php atakujący dostaje dane uwierzytelniające do bazy danych.

Jak się bronić

  • Kopie poza katalogiem WWW. MITRE zaleca politykę zakazującą trzymania kopii kodu aplikacji w katalogu głównym serwisu [4]. OWASP dodaje osobne katalogi niedostępne z sieci na pliki danych, logi i konfigurację [6].
  • Bez edycji na produkcji. Zakaz edycji plików bezpośrednio na serwerze produkcyjnym ogranicza powstawanie automatycznych kopii [6].
  • Bez repozytorium na serwerze. MITRE zaleca usuwać katalogi systemów kontroli wersji z serwerów produkcyjnych [5].
  • Reguły serwera. Odmowa dostępu do plików kopii i ukrytych katalogów w konfiguracji serwera; zob. zabezpieczenia w .htaccess.
  • Sekrety poza plikami w katalogu strony. zarządzanie sekretami ogranicza szkody, gdy plik jednak wycieknie.

Przykładowa reguła Apache odmawia dostępu do typowych plików kopii i ukrytych plików:

<FilesMatch "\.(bak|old|sql|zip|tar|gz|env)$|^\.">
  Require all denied
</FilesMatch>

Reguła jest tylko dodatkową warstwą. Plik o nazwie spoza listy nadal będzie dostępny, dlatego podstawą pozostaje trzymanie takich plików poza katalogiem strony i okresowe skanowanie podatności.

Historia i przykłady

Sekurak w listopadzie 2025 roku opisał znalezisko badacza Neo Security: publicznie dostępny plik BAK o wielkości 4 TB w usłudze Azure Blob Storage, zawierający kopię bazy danych SQL [3]. Plik nie był zaszyfrowany [3]. Właścicielem okazała się firma EY; po zgłoszeniu plik przestał być dostępny [3].

W serwisie Niebezpiecznik opisano eksperyment rozpoczęty w czerwcu 2023 roku: autor umieścił na swojej stronie pułapkowy backup.zip i widoczne repozytorium .git [2]. Przez osiem miesięcy dostał 11 e-maili o wystawionym repozytorium, w tym jeden automatyczny z serwisu wyszukującego takie przypadki [2].

TAB. 2

Przypisy

7
  1. [1] Ukryte katalogi i pliki jako źródło informacji o aplikacjach internetowych · Sekurak
  2. [2] Rickroll w repo i bomba w niezbyt głębokim ukryciu · Niebezpiecznik
  3. [3] Publicznie dostępny plik (4TB) z backupem bazy danych firmy EY · Sekurak
  4. [4] CWE-530: Exposure of Backup File to an Unauthorized Control Sphere · MITRE
  5. [5] CWE-527: Exposure of Version-Control Repository to an Unauthorized Control Sphere · MITRE
  6. [6] Review Old Backup and Unreferenced Files for Sensitive Information (WSTG v4.2) · OWASP
  7. [7] Hardening WordPress — Advanced Administration Handbook · WordPress.org
TAB. 3

Hasła w tym artykule

11
TAB. 4

Linkują tutaj

15

Wszystkie kategorie → · Hasło w słowniku →

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com