Záloha wp-config.php je veřejně dostupná
Co to je
Ve webroot vašeho WordPressu je veřejně dostupný soubor jako wp-config.php.bak, wp-config.php.old, wp-config.txt nebo wp-config.php~. Vznikne to nejčastěji takhle:
- Editovali jste
wp-config.phpv textovém editoru a ten udělal automatickou zálohu (wp-config.php~). - Před zásahem jste si „jistili“ staré verze přejmenováním (
cp wp-config.php wp-config.php.bak). - Hosting nebo plugin udělal automatickou zálohu a uložil ji vedle.
Proč je to problém
Klíčový rozdíl od běžného wp-config.php: PHP soubory Apache/nginx vykonává — vrátí HTML output, ne kód. Ale soubor s příponou .bak nebo .txt server pošle jako čistý text. Útočník otevře https://example.cz/wp-config.php.bak a dostane:
DB_NAME,DB_USER,DB_PASSWORD,DB_HOST— přístup k databázi.AUTH_KEY,SECURE_AUTH_KEY,LOGGED_IN_KEY,NONCE_KEY— šifrovací klíče pro session cookies.table_prefix— konkrétní názvy tabulek.
S klíči si útočník podepíše cookies admina. S databází vyplení obsah a nastaví heslo. Zpravidla je hotovo.
Jak to opravit
Krok 1 — smazat všechny .bak / .old / .txt zálohy
cd /var/www/example.cz
ls -la wp-config*
# najít a smazat
rm wp-config.php.bak wp-config.php.old wp-config.php~ wp-config.txtProjděte i celý webroot:
find . -type f \( -name "*.bak" -o -name "*.old" -o -name "*~" \) -lsKrok 2 — rotovat to, co bylo v .bak souboru
Předpokládejte, že někdo soubor stáhl. Vyměňte:
- Heslo k databázi. Po změně updateujte i
wp-config.php:define('DB_PASSWORD', 'noveheslo');. - WordPress security keys (
AUTH_KEYatd.). Nové vygenerujte na api.wordpress.org/secret-key/1.1/salt/ a nahraďte. Tahle změna odhlásí všechny aktivní uživatele — je to v pořádku.
Krok 3 — zablokovat .bak / .old patterns na webserveru
Aby se další omylem vytvořená záloha nedostala ven:
nginx:
location ~* \.(bak|old|backup|orig|swp|save|~)$ {
deny all;
return 404;
}Apache (.htaccess):
<FilesMatch "\.(bak|old|backup|orig|swp|save|~)$">
Require all denied
</FilesMatch>Krok 4 — zálohovat správně
Záloha wp-config.php patří mimo webroot, na verzování (privátní git, S3 bucket se SSE, dedikovaný backup hosting). Nikdy ne vedle aktivní verze.