Direct naar inhoud

Standaardbestanden van de webserver bereikbaar

CWE-1188CWE-1004CWE-200OWASP A05:2021Bijgewerkt 3 september 20264 min leestijd

Na installatie laten webservers, contentmanagementsystemen en frameworks voorbeeldpagina's, documentatie, beheerconsoles en installatiebestanden achter. Blijven die staan, dan verraden ze welk product en welke versie u draait, en soms bieden ze rechtstreeks functionaliteit die niemand van buiten hoort te bereiken.

Een verse installatie levert meer op dan alleen een werkende applicatie. Er komen voorbeeldpagina’s mee, documentatie, testscripts, beheerconsoles en installatiehulpmiddelen. Ze zijn bedoeld om de eerste stappen te vergemakkelijken en horen daarna te verdwijnen. Hieronder leest u wat er blijft liggen en wanneer dat van hinderlijk naar ernstig verschuift.

Wat zijn standaardbestanden?

Standaardbestanden zijn de onderdelen die een product bij installatie meelevert en die na ingebruikname geen functie meer hebben. Het gaat om vier soorten die sterk verschillen in ernst.

De onschuldigste zijn de voorbeeld- en welkomstpagina’s: de standaardpagina van een webserver, een testpagina van het applicatieplatform, meegeleverde voorbeeldapplicaties. Daarna komen documentatiebestanden en licentieteksten die het product en de versie benoemen. Vervolgens de installatiescripts, die de applicatie hebben opgezet en soms opnieuw kunnen worden uitgevoerd. Verder ten slotte de beheerconsoles: interfaces om de server of het platform te beheren, soms met standaard inloggegevens.

Wat ze gemeen hebben is dat niemand ze bewust heeft geplaatst en dat niemand ze mist. Ze staan er omdat ze meekwamen. Het is als een woning waar de bouwtekeningen, de reservesleutels en het bordje van de aannemer na de oplevering in de meterkast zijn blijven liggen.

Wat wordt er gevonden?

Kwetsbaar:

Een aanvaller controleert een reeks bekende paden. Dat is voor elk platform een vaste lijst, en het gaat snel:

GET /examples/                     → 200  voorbeeldapplicaties
GET /docs/                         → 200  meegeleverde documentatie
GET /manager/html                  → 401  beheerconsole aanwezig
GET /install.php                   → 200  installatiescript
GET /phpinfo.php                   → 200  volledige configuratie
GET /CHANGELOG.txt                 → 200  exacte versie

Elk van deze antwoorden zegt iets. De voorbeeldapplicaties bevestigen het platform. Het wijzigingsoverzicht geeft de exacte versie, waarmee bekende kwetsbaarheden op te zoeken zijn. De configuratiepagina toont modules, paden en soms omgevingsvariabelen. En de beheerconsole is de ernstigste: die is niet alleen aanwezig, maar wordt geregeld aangetroffen met inloggegevens die nooit zijn gewijzigd, waarmee de weg naar het uitrollen van eigen code openligt.

Het installatiescript verdient een aparte vermelding. Blijft dat bereikbaar en is het niet beveiligd, dan kan iemand de installatie soms opnieuw uitvoeren en de applicatie aan zijn eigen database koppelen of een nieuw beheerdersaccount aanmaken.

Veilig:

# Opruimen als vast onderdeel van de uitrol, niet als losse handeling
rm -rf /opt/tomcat/webapps/{examples,docs,manager,host-manager}
rm -f  /var/www/{install.php,phpinfo.php,CHANGELOG.txt,README.md}
# En een vangnet voor wat er ooit alsnog belandt
location ~* ^/(install|setup|phpinfo|test)\.(php|jsp|aspx)$ {
    deny all;
    return 404;
}
location ~* /(CHANGELOG|README|LICENSE|INSTALL)\.(txt|md)$ {
    deny all;
    return 404;
}

Het opruimen hoort onderdeel te zijn van de uitrol en niet van een checklist die iemand na installatie moet aflopen. Bij een geautomatiseerde uitrol vanuit een gehard basisbeeld gebeurt het vanzelf, ook op de volgende server.

Een bereikbare beheerconsole met standaard inloggegevens is geen informatielek maar een directe route naar de server. Bij een aantal platformen kan via zo’n console een eigen applicatie worden uitgerold, wat neerkomt op code-uitvoering. Verwijder de console of beperk hem tot een intern netwerk, en wijzig de standaardgegevens altijd.

Wat is de impact van achtergebleven standaardbestanden?

De ernst loopt van laag tot kritiek, en die spreiding is groter dan bij vrijwel elke andere bevinding in deze categorie. Ze wordt volledig bepaald door wat er precies is blijven staan.

Aan de onderkant zit de voorbeeldpagina die alleen het product verraadt. Dat versnelt de verkenning maar levert geen toegang op. In het midden zitten de configuratie- en documentatiebestanden, die de exacte versie prijsgeven en daarmee gericht zoeken naar bekende kwetsbaarheden mogelijk maken. Aan de bovenkant zitten de beheerconsoles en installatiescripts, waar de impact neerkomt op volledige overname van de applicatie of de server.

Er is daarnaast een betekenis die verder reikt dan de bestanden zelf. Standaardbestanden die nog aanwezig zijn, betekenen dat de installatie nooit is nagelopen. Voor een tester is dat een sterke aanwijzing dat er meer standaardinstellingen zijn blijven staan: standaardwachtwoorden, ruime rechten op mappen, ingeschakelde modules die niemand gebruikt. De bevinding is dan minder belangrijk om zichzelf dan als voorspeller.

Hoe spoor je achtergebleven standaardbestanden op?

Een tester stelt eerst vast welk platform er draait, aan de hand van headers, cookienamen, padstructuren en de opmaak van foutpagina’s. Vervolgens wordt de bijbehorende lijst met standaardpaden afgelopen, die verschilt per product en is voor de gangbare platformen goed gedocumenteerd.

Daarbij wordt niet alleen op een 200 gelet. Een 401 of 403 is minstens zo interessant, want die bevestigt dat het onderdeel aanwezig is en alleen wordt afgeschermd. Bij een beheerconsole wordt vervolgens getoetst of de standaard inloggegevens nog werken. Ook wordt gekeken naar bestanden die de versie prijsgeven, en naar installatiescripts die mogelijk opnieuw uitvoerbaar zijn. Verder krijgen subdomeinen en secundaire servers aandacht, omdat het opruimen daar vaker is overgeslagen dan op de hoofdserver. AssistSec neemt deze controle mee in de verkenningsfase, omdat wat hier wordt gevonden bepaalt waar de rest van het onderzoek zich op richt.

Hoe voorkom je achtergebleven standaardbestanden?

  • Verwijder voorbeeldapplicaties, documentatie en testpagina’s als vast onderdeel van de uitrol.
  • Verwijder installatiescripts zodra de installatie is afgerond, of blokkeer ze in de webserver.
  • Schakel beheerconsoles uit, of beperk ze tot een intern netwerk of een VPN.
  • Wijzig altijd de standaard inloggegevens van elk meegeleverd onderdeel.
  • Rol uit vanuit een gehard basisbeeld waarin het opruimen al is gedaan.
  • Blokkeer bekende standaardpaden in uw webserver als vangnet.
  • Verwijder bestanden die de versie prijsgeven, zoals wijzigingsoverzichten en leesmij-bestanden.
  • Schakel modules en functionaliteit uit die u niet gebruikt.
  • Controleer na elke uitrol geautomatiseerd of de standaardbestanden afwezig zijn, ook op nieuwe servers.

Bronnen

Veelgestelde vragen

Waarom blijven die bestanden staan?

Omdat installatie en beveiliging twee verschillende momenten zijn. Een installatie is geslaagd zodra de applicatie draait; het opruimen van wat meegeleverd werd is een aparte stap die in een handmatig proces gemakkelijk wordt overgeslagen. Bij een geautomatiseerde uitrol is dat op te lossen.

Wat is het gevaarlijkste dat blijft staan?

Beheerconsoles met standaard inloggegevens, en installatiescripts die opnieuw kunnen worden uitgevoerd. Het eerste geeft directe toegang, het tweede kan de configuratie of de databaseverbinding opnieuw instellen. Beide zijn ernstiger dan de gebruikelijke voorbeeldpagina's.

Is een voorbeeldpagina echt een probleem?

Op zichzelf nauwelijks; de ernst is dan laag. De waarde ervan is dat hij precies verraadt welk product en welke versie er draait, wat gericht zoeken naar bekende kwetsbaarheden mogelijk maakt. Het is vooral een indicator dat er niet is opgeruimd.

Hoe voorkom ik dat het terugkomt?

Door uit te rollen vanuit een gehard basisbeeld waarin het opruimen al is gedaan, en door een geautomatiseerde controle na elke uitrol. Bij een handmatige installatie op een nieuwe server begint het proces anders elke keer opnieuw bij de standaardsituatie.

Verwante artikelen

Druk op / om te zoeken · Esc