Avoimet .env-, .git- ja varmuuskopiotiedostot: miten salaisuudet vuotavat verkkosivustoilta
Osa vahingollisimmista verkkosivustovuodoista ei vaadi lainkaan murtautumista. Tiedosto, jota ei koskaan ollut tarkoitettu kaikkien nähtäväksi, on verkkopalvelimen juurikansiossa, palvelin toimittaa sen mukisematta kenelle tahansa sitä pyytävälle, ja tiedostossa on tietokannan salasana, API-avain tai sivuston koko lähdekoodi.
Tavallisimmat 3 syyllistä ovat .env-tiedostot konfiguraation salaisuuksineen, .git-kansiot, jotka sisältävät koko repositorion historian, sekä varmuuskopiot, kuten site.zip, db.sql tai config.php.bak. OWASP Web Security Testing Guide mainitsee ne kaikki tyypillisinä paljastuneiden tunnusten ja lähdekoodin lähteinä.
Voitte tarkistaa oman sivustonne muutamassa minuutissa curl-komennolla.
Miten nämä tiedostot päätyvät näkyviin
.env-tiedostot. Monet sovelluskehykset lukevat salaisuudet projektikansion.env-tiedostosta. Jos verkkopalvelimen juurihakemisto on projektikansio eikä senpublic-alikansio, tiedosto tarjoillaan kuten mikä tahansa muu..git-kansiot. Kun julkaisu tehdään ajamallagit clonetaigit pullsuoraan juurikansiossa,.git-hakemisto jää sivuston viereen. Sen avulla kuka tahansa voi koota lähdekoodin ja jokaisen aiemman commitin, myös salaisuudet, jotka "poistettiin" kauan sitten.- Varmuuskopiot ja vedokset. Nopea
zipennen päivitystä,db.sql-vienti siirtoa varten, editorin kopio kutenindex.php~taiconfig.php.old. OWASP huomauttaa, että skriptin varmuuskopio voidaan tarjoilla tavallisena tekstinä suorittamisen sijaan, jolloin sen lähdekoodi paljastuu. - Työkalujen jäänteet.
phpinfo.php,.htpasswd,.DS_Store, Terraformin tilatiedostot ja lokitiedostot paljastuvat samalla tavalla.
Yhteinen tekijä on muokkaaminen tai julkaiseminen suoraan tuotantopalvelimella ilman vaihetta, jossa päätetään, mitä juurikansioon kuuluu.
Miten tarkistatte oman sivustonne
Hakekaa yleisimmät polut ja katsokaa kunkin vastauksen tilakoodi ja koko:
for p in .env .git/HEAD .git/config backup.zip site.zip db.sql \
dump.sql config.php.bak wp-config.php.bak phpinfo.php .DS_Store; do
printf '%-22s ' "$p"
curl -s -o /dev/null -w '%{http_code} %{size_download}\n' "https://yourcompany.com/$p"
done
Mitä tulokset tarkoittavat:
404tai403jokaiselle polulle on toivottu tulos.200ja todellinen sisältö on havainto..git/HEAD-tiedostossa todellinen sisältö näyttää tältä:ref: refs/heads/main..env-tiedostossa se on rivejä muotoaNAME=value.200ja tavallinen etusivunne tai oma virhesivu on yleensä niin sanottu "soft 404". OWASP varoittaa, että pelkkä osuma ei ole havainto: avatkaa vastaus ja varmistakaa, mitä se todella sisältää.
Toistakaa tarkistus jokaisella käyttämällänne palvelinnimellä, myös staging-ympäristöissä ja vanhoissa aliverkkotunnuksissa. Niissä tällaiset tiedostot säilyvät pisimpään, kuten kerromme artikkelissamme unohdetuista staging- ja testipalvelimista. Verkkoarkistoissa voi myös olla kopioita aiemmin näkyvissä olleista tiedostoista, joten juuri poistamanne tiedosto on voitu jo nähdä.
Jos salaisuus paljastui, vaihtakaa se ensin
Tiedoston poistaminen estää uudet lataukset, mutta ette voi tietää, kuka sen on jo kopioinut. Käsitelkää jokaista paljastuneen tiedoston salaisuutta vaarantuneena:
- Vaihtakaa tai mitätöikää jokainen tiedoston salasana, API-avain ja tunniste. GitHubin ohje arkaluonteisten tietojen poistamisesta antaa saman järjestyksen: ensin salaisuuden mitätöinti tai vaihto, sitten historian siivous.
- Poistakaa tiedosto palvelimelta ja kaikista juurikansion sisällä olevista varmuuskopiokansioista.
- Käykää läpi pääsylokit kyseisen polun pyyntöjen osalta, jotta ymmärrätte, ladattiinko tiedosto ja milloin.
- Selvittäkää, mihin avaimilla pääsi (pilvikonsolit, maksupalvelut, sähköpostipalvelut), ja etsikää niistä toimintaa, jota ette osaa selittää.
Jos salaisuuksia on commitoitu repositorioon, historian uudelleenkirjoitus (GitHub suosittelee git-filter-repo-työkalua) auttaa vasta sitten, kun itse salaisuus ei ole enää voimassa.
Miten tämän voi estää
- Määrittäkää juurihakemistoksi vain julkaistava kansio, ei koskaan projektin juurta.
- Julkaiskaa vain käännetyt tiedostot, älkää työkopiota. CI-putki, joka kopioi vain sivuston tarvitsemat tiedostot, pitää
.git- ja.env-tiedostot poissa jo rakenteensa ansiosta. - Estäkää pistetiedostot verkkopalvelimessa, kuten alla näytetään.
- Pitäkää salaisuudet mahdollisuuksien mukaan poissa tiedostoista: käyttäkää alustanne ympäristömuuttujia tai salaisuuksien hallintaa.
- Älkää koskaan säilyttäkö varmuuskopioita tai vedoksia juurikansiossa. OWASP suosittelee pitämään data-, loki- ja konfiguraatiotiedostot paikassa, josta verkkopalvelin ei voi niitä tarjoilla.
- Tarkistakaa uudelleen jokaisen infrastruktuurimuutoksen jälkeen, myös kun kuormantasaajan taakse tulee uusia palvelimia.
Pistetiedostojen esto (säilyttäen /.well-known/, jota varmenteen uusiminen tarvitsee) näyttää nginxissä tältä:
location ~ /\.(?!well-known) {
deny all;
}
Ja Apachen sivustokonfiguraatiossa tältä:
RedirectMatch 404 /\.(?!well-known)
Lyhyt tarkistuslista
- Ajakaa yllä oleva
curl-silmukka jokaisella omistamallanne palvelinnimellä. - Varmistakaa jokainen
200lukemalla sisältö. - Vaihtakaa jokainen salaisuus, joka on joskus ollut saatavilla.
- Estäkää pistetiedostot ja varmuuskopiopäätteet verkkopalvelimen konfiguraatiossa.
- Siirtäkää julkaisut putkeen, joka toimittaa vain käännetyt tiedostot.
Kun palvelimen konfiguraatio on muutenkin työn alla, on hyvä hetki lisätä HTTP-tietoturvaotsakkeet, jotka jokaisen yrityssivuston pitäisi lähettää.
Miten Datahorses auttaa
Datahorses valvoo verkkosivustoanne ulkoapäin samasta näkökulmasta kuin hyökkääjä ja nostaa esiin avoimet .git-, .env-, varmuuskopio- ja konfiguraatiotiedostot, jotka verkkoarkistot ovat tallentaneet verkkotunnuksistanne. Emme mene järjestelmiinne emmekä tarvitse pääsyoikeuksia. Kehittäjänne saa tarkat ohjeet tiedoston poistamiseen ja vuotaneiden tunnusten vaihtamiseen. Katsokaa, miten valvomme ja miksi pääsyoikeuksia ei tarvita.
Lisää artikkeleita
Unohdetut staging- ja testipalvelimet: osa, jota kukaan ei valvo
Staging- ja testipalvelimet on tarkoitettu väliaikaisiksi, mutta ne elävät usein projektia pidempään. Näin löydätte omanne ja päätätte, mitä säilytetään, suojataan tai sammutetaan.
Outlookin lähettäjävaatimukset toukokuusta 2025 ja hylkäys 550 5.7.515
Jos posti osoitteisiin hotmail.com tai outlook.com palautuu virheellä 550 5.7.515, Microsoft kertoo, ettei verkkotunnuksenne täytä sen todennussääntöjä. Tässä vaatimukset ja korjaus.
Miten DMARC-koosteraporttia (rua) luetaan ja mitä sillä tehdään
DMARC-koosteraportit luettelevat jokaisen palvelimen, joka lähetti postia verkkotunnuksenne nimissä, ja sen, läpäisikö se tarkistukset. Näin luette XML:n ja teette siitä korjauslistan.