{"id":5742,"date":"2026-11-04T23:04:07","date_gmt":"2026-11-04T22:04:07","guid":{"rendered":"https:\/\/wwwschutz.de\/blog\/?p=5742"},"modified":"2026-10-23T16:11:16","modified_gmt":"2026-10-23T14:11:16","slug":"website-angreifersicht-erste-60-sekunden","status":"publish","type":"post","link":"https:\/\/wwwschutz.de\/blog\/website-angreifersicht-erste-60-sekunden\/","title":{"rendered":"Website aus Angreifersicht: Was in 60 Sekunden sichtbar ist"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Wer eine Website angreifen will, beginnt mit Beobachten. Server-Header, Quelltext, Standardpfade und Zertifikate verraten oft in einer Minute, womit eine Seite arbeitet. Der Beitrag zeigt die Website aus Angreifersicht an der eigenen Seite, ordnet ein, was blo\u00df Information und was ein echtes Risiko ist, und beschreibt eine Selbstpr\u00fcfung mit Bordmitteln.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die meisten Betreiber kennen ihre Website von innen: Das Backend, die Plugins, die Einstellungen. Von au\u00dfen sieht die Seite anders aus. Dort gibt es keine Anmeldung und keine Rechte, nur das, was jeder Browser und jedes Skript abrufen kann. Genau diese Au\u00dfensicht ist der Ausgangspunkt f\u00fcr automatisierte Scans und f\u00fcr gezielte Vorbereitung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Beitrag geht die erste Minute dieser Au\u00dfensicht in f\u00fcnf Etappen durch. Er betrachtet ausschlie\u00dflich \u00f6ffentlich abrufbare Informationen und Pr\u00fcfungen an der eigenen Website. Er enth\u00e4lt keine Anleitung zum Ausnutzen von L\u00fccken und keine Aufforderung, fremde Systeme zu untersuchen. Aktive Scans fremder Systeme ohne Erlaubnis k\u00f6nnen strafbar sein und sind deshalb tabu. Der Text ist keine Rechtsberatung. Am Ende stehen eine Gewichtung der Funde, eine Selbstpr\u00fcfung und eine Checkliste.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die eigene Website aus Angreifersicht: Warum der Blick von au\u00dfen z\u00e4hlt<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Angriffe beginnen selten mit einem Angriff. Am Anfang steht die Aufkl\u00e4rung: Welche Software l\u00e4uft, in welcher Version, welche Pfade gibt es, was liegt dort wom\u00f6glich herum? Diese Phase nennt sich Informationsgewinnung. Das Open Worldwide Application Security Project (OWASP) f\u00fchrt sie in seinem <a href=\"https:\/\/wstg.owasp.org\/v4.2\/\" target=\"_blank\" rel=\"noopener\">Web Security Testing Guide<\/a> als eigene Testphase auf, noch vor allen Pr\u00fcfungen auf konkrete Schwachstellen. Die Website aus Angreifersicht zu betrachten hei\u00dft also: dieselben ersten Schritte nachzuvollziehen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dabei ist kein pers\u00f6nliches Interesse n\u00f6tig. Ein gro\u00dfer Teil der Zugriffe auf jede \u00f6ffentliche Seite stammt von automatisierten Programmen. Sie arbeiten Adresslisten ab, lesen Header und Quelltext und gleichen das Ergebnis mit bekannten Schwachstellen ab. Eine kleine Firmenseite steht in derselben Liste wie ein Konzernauftritt. Wer sich fragt, wer ausgerechnet die eigene Seite anschauen sollte, \u00fcbersieht, dass hier niemand etwas anschaut. Es l\u00e4uft ein Abgleich.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wichtig ist die Unterscheidung zwischen Information und Schwachstelle. Eine Information ist etwa die Angabe, dass ein Webserver in einer bestimmten Version l\u00e4uft. Eine Schwachstelle ist eine ausnutzbare L\u00fccke. Die Information ist noch keine L\u00fccke, sie hilft nur dabei, passende L\u00fccken zu finden. Dieser Unterschied zieht sich durch den ganzen Beitrag. Informationspreisgabe ist ein Risikoverst\u00e4rker, kein Einbruch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die folgende \u00dcbersicht fasst die f\u00fcnf Etappen zusammen, die in den n\u00e4chsten Abschnitten einzeln behandelt werden. Die Zeitangaben sind ein Gedankenmodell. In der Praxis laufen die Schritte automatisiert und parallel, sie dauern eher Sekundenbruchteile.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"632\" src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/zeitachse-9ca059fe-1024x632.webp\" alt=\"Zeitachse der ersten 60 Sekunden in f\u00fcnf Etappen von HTTP-Antwort bis Domain und Zertifikat\" class=\"wp-image-5739\" srcset=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/zeitachse-9ca059fe-1024x632.webp 1024w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/zeitachse-9ca059fe-300x185.webp 300w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/zeitachse-9ca059fe-768x474.webp 768w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/zeitachse-9ca059fe-1536x948.webp 1536w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/zeitachse-9ca059fe-640x395.webp 640w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/zeitachse-9ca059fe.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">F\u00fcnf Etappen der Au\u00dfensicht in den ersten 60 Sekunden.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Sekunde 0 bis 10: Was die HTTP-Antwort verr\u00e4t<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Schon der erste Abruf der Startseite liefert neben dem Inhalt eine Reihe von Kopfzeilen, die Header. Sie sind f\u00fcr den Browser gedacht, aber jeder kann sie lesen. Typisch ist der <code>Server<\/code>-Header. Er nennt h\u00e4ufig den Webserver, dessen Version und manchmal das Betriebssystem. Dazu kommt oft <code>X-Powered-By<\/code> mit der PHP-Version. Auch Cookie-Namen verraten viel: Ein Cookie mit dem Pr\u00e4fix <code>wordpress_<\/code> macht das eingesetzte System sofort erkennbar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Auslesen dieser Angaben hei\u00dft Banner Grabbing. Der <a href=\"https:\/\/wstg.owasp.org\/v4.2\/4-Web_Application_Security_Testing\/01-Information_Gathering\/02-Fingerprint_Web_Server\" target=\"_blank\" rel=\"noopener\">OWASP-Leitfaden zum Fingerprinting von Webservern<\/a> (WSTG-INFO-02) beschreibt den Zweck so: Typ und Version des Servers bestimmen, um zu pr\u00fcfen, ob bekannte Schwachstellen f\u00fcr diese Version vorliegen. Veraltete Server ohne aktuelle Korrekturen sind daf\u00fcr besonders anf\u00e4llig. Zugleich weist der Leitfaden darauf hin, dass sich solche Header \u00e4ndern oder verschleiern lassen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auch fehlende Angaben sagen etwas aus. Wer die Header f\u00fcr den Transportschutz (HSTS) oder f\u00fcr eine Inhaltsrichtlinie (CSP) nicht setzt, zeigt, dass an der Konfiguration lange nichts getan wurde. Das ist kein Beweis f\u00fcr eine L\u00fccke, aber ein Hinweis auf den Reifegrad. Weiterleitungen von HTTP auf HTTPS, Fehlerseiten und die Reihenfolge der Header sind weitere Spuren.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"639\" src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/http-antwort-8dd2d8a3-1024x639.webp\" alt=\"Website aus Angreifersicht: Beispiel einer HTTP-Antwort mit Server- und PHP-Version und was daraus gelesen wird\" class=\"wp-image-5740\" srcset=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/http-antwort-8dd2d8a3-1024x639.webp 1024w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/http-antwort-8dd2d8a3-300x187.webp 300w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/http-antwort-8dd2d8a3-768x479.webp 768w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/http-antwort-8dd2d8a3-1536x958.webp 1536w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/http-antwort-8dd2d8a3-640x399.webp 640w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/http-antwort-8dd2d8a3.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Beispiel einer HTTP-Antwort mit erfundenen Werten und ihrer Lesart von au\u00dfen.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Soll die Version nicht mehr im Header stehen, l\u00e4sst sich das bei Apache einstellen. Laut <a href=\"https:\/\/httpd.apache.org\/docs\/2.4\/mod\/core.html#servertokens\" target=\"_blank\" rel=\"noopener\">Apache-Dokumentation<\/a> steuert die Direktive <code>ServerTokens<\/code>, wie viel der <code>Server<\/code>-Header preisgibt. Standardwert ist <code>Full<\/code> mit Version, Betriebssystem und Modulen. Mit <code>ServerTokens Prod<\/code> bleibt nur <code>Server: Apache<\/code> \u00fcbrig. Die Direktive <code>ServerSignature<\/code> regelt die Fu\u00dfzeile auf vom Server erzeugten Seiten, etwa Fehlerseiten. Ihr Standardwert ist <code>Off<\/code>. Bei nginx \u00fcbernimmt <code>server_tokens off<\/code> eine \u00e4hnliche Aufgabe. Bei PHP l\u00e4sst sich <code>expose_php<\/code> abschalten, damit <code>X-Powered-By<\/code> entf\u00e4llt. Wer die Server-Version verbergen will, findet die Einstellung also in der Regel in einer einzigen Zeile der Konfiguration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ehrlich bleibt das nur mit einem Zusatz: Das Verbergen ist keine Sicherheit, sondern bestenfalls Verz\u00f6gerung. Verhalten und Fehlerseiten eines Servers lassen sich weiterhin einordnen, wie auch der OWASP-Leitfaden festh\u00e4lt. Wichtiger als ein versteckter Header ist ein Server, der ohnehin aktuell ist.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sekunde 10 bis 25: Quelltext, Plugin-Liste und Theme-Hinweise<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der Quelltext einer Seite ist \u00f6ffentlich. Bei WordPress stehen darin die Adressen aller eingebundenen Skripte und Stylesheets. Diese Adressen enthalten die Pfade <code>wp-content\/plugins<\/code> und <code>wp-content\/themes<\/code> samt Ordnernamen. Daraus ergibt sich ohne jede Anmeldung eine Liste der aktiven Plugins und des Themes. Oft h\u00e4ngt am Ende der Adresse ein Versionsparameter wie <code>?ver=<\/code>. Auch das Generator-Meta-Tag nennt gelegentlich die WordPress-Version. Wer wissen will, wie leicht sich eine WordPress-Plugin-Version auslesen l\u00e4sst, muss nur den eigenen Quelltext durchsuchen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erg\u00e4nzend k\u00f6nnen Dateien im Plugin-Ordner selbst Versionen nennen, zum Beispiel eine mitgelieferte <code>readme.txt<\/code>. Dazu kommen Kommentare im Quelltext, Pfade aus der Entwicklungsumgebung und Hinweise auf Werkzeuge, mit denen die Seite gebaut wurde. Nichts davon ist f\u00fcr sich gef\u00e4hrlich. Zusammen ergibt es aber ein ziemlich genaues Bild der technischen Grundlage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der n\u00e4chste Schritt ist ein Abgleich mit \u00f6ffentlichen Schwachstellendatenbanken. Dort sind bekannte L\u00fccken nach Produkt und Version aufgelistet, und zwar ausdr\u00fccklich, damit Betreiber ihre Seiten sch\u00fctzen k\u00f6nnen. Automatisierte Programme nutzen dieselben Daten. Ein Plugin, das seit Monaten kein Update erhalten hat und in der Liste auftaucht, ist damit auffindbar, ohne dass jemand die Seite je besucht h\u00e4tte.<\/p>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Eine Versionsnummer im Header ist noch keine Schwachstelle. Sie macht nur sichtbar, ob eine bekannte L\u00fccke offen sein k\u00f6nnte.<\/p><\/blockquote><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Der Quelltext verr\u00e4t noch etwas anderes: Welche Drittdienste eingebunden sind. Tracking-Skripte, eingebettete Videos, externe Schriften und Karten tauchen als Adressen auf fremden Servern auf. F\u00fcr die Sicherheit ist das nebens\u00e4chlich. F\u00fcr den Datenschutz ist es ein Nebenbefund, denn jeder dieser Dienste erh\u00e4lt die IP-Adresse der Besucher. Ein Blick auf die Liste lohnt deshalb doppelt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Konsequenz ist deutlich: Plugins und Themes, die nicht gebraucht werden, geh\u00f6ren entfernt und nicht nur deaktiviert. Das <a href=\"https:\/\/developer.wordpress.org\/advanced-administration\/security\/hardening\/\" target=\"_blank\" rel=\"noopener\">Hardening-Kapitel der WordPress-Entwicklerdokumentation<\/a> empfiehlt ebenfalls, Software aktuell zu halten und Unbenutztes zu l\u00f6schen. Was nicht installiert ist, kann nicht veralten.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sekunde 25 bis 40: Offene Verzeichnisse, Standardpfade und vergessene Dateien<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nach dem Quelltext folgen Pfade, die sich ohne Verlinkung erraten lassen. Bei WordPress sind das etwa <code>\/wp-admin<\/code>, <code>\/wp-login.php<\/code> und <code>\/wp-json<\/code>. Diese Pfade sind \u00fcberall gleich und \u00fcberall dokumentiert. Dass sie existieren, ist normal und kein Befund. Interessant wird es, wenn sich dahinter mehr zeigt als vorgesehen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das erste Beispiel ist das Verzeichnislisting. Fehlt in einem Ordner eine Startdatei und ist die Auflistung erlaubt, erzeugt der Server eine Dateiliste. Die Apache-Dokumentation beschreibt das so: Wird eine Adresse angefragt, die auf ein Verzeichnis zeigt, und liegt dort kein <code>DirectoryIndex<\/code> wie <code>index.html<\/code>, liefert <code>mod_autoindex<\/code> eine formatierte Auflistung. Bei offenen Verzeichnissen kann jeder sehen, welche Dateien dort liegen, etwa im Upload-Ordner. Das Verzeichnislisting l\u00e4sst sich per Apache-Direktive <code>Options -Indexes<\/code> deaktivieren, bei nginx gen\u00fcgt es, <code>autoindex<\/code> nicht zu aktivieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das zweite Beispiel sind vergessene Dateien. Beim Umbau oder Umzug einer Website bleiben gern Dinge liegen: ein Datenbank-Export, ein Archiv mit der alten Seite, eine Sicherungskopie der Konfiguration, ein Ordner der Versionsverwaltung, eine Datei mit Zugangsdaten, eine Testseite mit Systeminformationen. Die Dateiendungen und Namen sind so \u00fcblich, dass Skripte sie als Liste abfragen. Wer eine solche Datei auf dem eigenen Server nicht kennt, sollte sie finden, bevor es jemand anders tut.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Warum das mehr als ein Sch\u00f6nheitsfehler ist, liegt auf der Hand. Datenbank-Exporte enthalten Kundendaten, Konfigurationsdateien Zugangsdaten. Wer solche Dateien frei abrufbar l\u00e4sst, macht aus einem Verwaltungsfehler eine Datenpanne. Die DSGVO verlangt in <a href=\"https:\/\/dr-dsgvo.de\/artikel-32-dsgvo\" target=\"_blank\" rel=\"noopener\">Artikel 32<\/a> technische und organisatorische Ma\u00dfnahmen, die dem Risiko angemessen sind. Offen herumliegende Exporte widersprechen dem, ohne dass es daf\u00fcr eine Angriffsleistung brauchte. Weiterf\u00fchrend zum Personenbezug solcher Datens\u00e4tze behandelt der Beitrag zu <em>personenbeziehbaren Daten<\/em> die Frage, wann Daten als personenbezogen gelten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Gegenma\u00dfnahmen sind unspektakul\u00e4r. Sicherungen und Exporte geh\u00f6ren au\u00dferhalb des \u00f6ffentlich erreichbaren Verzeichnisses (Webroot) oder zumindest hinter eine Zugriffssperre. Die Dateirechte sollten nicht gro\u00dfz\u00fcgiger sein als n\u00f6tig. Die WordPress-Dokumentation nennt f\u00fcr Verzeichnisse 755 und f\u00fcr Dateien 644, f\u00fcr <code>wp-config.php<\/code> 400 oder 440. Debug-Ausgaben geh\u00f6ren im Livebetrieb abgeschaltet, ebenso Testskripte mit Systemangaben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sekunde 40 bis 50: Metadateien, Nutzernamen und Schnittstellen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Metadateien sind f\u00fcr Suchmaschinen und Programme gedacht. Die bekannteste ist die <code>robots.txt<\/code>. Sie sagt Crawlern, was sie nicht abrufen sollen. Genau darin liegt ein Missverst\u00e4ndnis. Der <a href=\"https:\/\/wstg.owasp.org\/v4.2\/4-Web_Application_Security_Testing\/01-Information_Gathering\/03-Review_Webserver_Metafiles_for_Information_Leakage\" target=\"_blank\" rel=\"noopener\">OWASP-Leitfaden zu Metadateien<\/a> (WSTG-INFO-03) stellt klar, dass die <code>robots.txt<\/code> nicht als Mechanismus zur Durchsetzung von Beschr\u00e4nkungen gelten sollte. Wer dort einen internen Pfad ausschlie\u00dft, nennt ihn zugleich jedem, der die Datei liest. Ein Pfad geh\u00f6rt also nicht in die <code>robots.txt<\/code>, wenn er geheim bleiben soll, sondern hinter eine Anmeldung. \u00c4hnlich verh\u00e4lt es sich mit der Sitemap: Sie ist eine bewusste Liste der Seiten und sollte nichts enthalten, was nicht \u00f6ffentlich sein soll.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dann die Benutzernamen. G\u00fcltige Benutzernamen sind f\u00fcr Angriffe auf Anmeldungen n\u00fctzlich, denn dann fehlt nur noch das Passwort. Mehrere Quellen kommen infrage: Autoren-Archive, die den Anmeldenamen in der Adresse tragen, Fehlermeldungen beim Login, die zwischen falschem Namen und falschem Passwort unterscheiden, und die REST-Schnittstelle. Laut <a href=\"https:\/\/developer.wordpress.org\/rest-api\/reference\/users\/\" target=\"_blank\" rel=\"noopener\">REST-Referenz zu Nutzern<\/a> liefert die Abfrage von Nutzern im Kontext <code>view<\/code> Felder wie Anzeigename, Kurzname (slug), Link und Beschreibung. Felder wie E-Mail-Adresse und Rollen sind dem Kontext <code>edit<\/code> vorbehalten. Ob und welche Nutzer unangemeldet erscheinen, steht dort nicht eindeutig. Das Verhalten h\u00e4ngt von der WordPress-Version und der Konfiguration ab und l\u00e4sst sich am schnellsten an der eigenen Seite pr\u00fcfen: Ruft der Browser die Nutzer-Schnittstelle unter <code>\/wp-json\/wp\/v2\/users<\/code> der eigenen Domain ab, zeigt sich, was ohne Anmeldung ausgegeben wird. Der Kurzname entspricht nicht automatisch dem Anmeldenamen, kann ihm aber \u00e4hneln.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Als sinnvolle Gegenma\u00dfnahmen kommen einheitliche Fehlermeldungen beim Login, sparsam vergebene Autorenkonten, Anzeigenamen, die vom Anmeldenamen abweichen, und starke Passw\u00f6rter mit einem zweiten Faktor infrage. Ein verborgener Benutzername ist ebenfalls nur eine H\u00fcrde. Die eigentliche Absicherung ist, dass ein bekannter Name allein nichts n\u00fctzt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die <code>security.txt<\/code> ist das Gegenbeispiel: eine Metadatei, die ausdr\u00fccklich gefunden werden soll. <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9116\" target=\"_blank\" rel=\"noopener\">RFC 9116<\/a> beschreibt sie als Datei unter <code>\/.well-known\/security.txt<\/code> mit den Pflichtfeldern <code>Contact<\/code> und <code>Expires<\/code>. Wer eine Schwachstelle findet, erf\u00e4hrt dort, wohin die Meldung gehen soll. Das ist die kontrollierte Variante von Sichtbarkeit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sekunde 50 bis 60: Domain, Zertifikat und Suchmaschinen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die letzte Etappe verl\u00e4sst die Seite selbst. Zertifikate f\u00fcr HTTPS werden in \u00f6ffentlichen Protokollen vermerkt, der sogenannten Zertifikatstransparenz. Das Verfahren ist in <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6962\" target=\"_blank\" rel=\"noopener\">RFC 6962<\/a> beschrieben, die Nachfolgeversion tr\u00e4gt die Nummer 9162. Der Zweck ist, falsch ausgestellte Zertifikate sichtbar zu machen. Als Nebenwirkung steht in diesen Protokollen jeder Hostname, f\u00fcr den ein Zertifikat ausgestellt wurde. Wer f\u00fcr <code>test<\/code>, <code>staging<\/code> oder <code>intranet<\/code> unter der eigenen Domain ein Zertifikat beantragt, tr\u00e4gt diesen Namen damit \u00f6ffentlich ein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hinzu kommen die DNS-Eintr\u00e4ge der Domain. Sie zeigen Mailserver, Subdomains und Dienste. Und schlie\u00dflich der Suchmaschinen-Index: Eine Suche mit <code>site:<\/code> und der eigenen Domain listet auf, was Suchmaschinen kennen. Dazu k\u00f6nnen PDF-Dateien, Testseiten, Exportdateien und alte Seitenversionen geh\u00f6ren, die nie jemand finden sollte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Besonders anf\u00e4llig sind Staging-Systeme. Das sind Kopien der Seite zum Testen. Sie laufen oft mit \u00e4lterer Software, schw\u00e4cheren Passw\u00f6rtern oder abgeschalteter Absicherung, enthalten aber nicht selten echte Daten. Wird ein Staging-System nicht mit einem Passwortschutz versehen, kann es in Suchmaschinen landen. F\u00fcr diese Etappe gilt wie f\u00fcr alle anderen: Es werden nur \u00f6ffentlich zug\u00e4ngliche Quellen genutzt, und nur f\u00fcr die eigene Domain. Das Durchsuchen fremder Systeme ist keine Pr\u00fcfung, sondern ein Eingriff.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was aus den Funden folgt: Information, Risiko, Aufwand<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nach den f\u00fcnf Etappen stellt sich die Frage der Gewichtung. Nicht jede sichtbare Angabe verlangt sofortiges Handeln. Eine Seite ohne sichtbare Spuren gibt es nicht. Die Frage lautet, was ein Fund f\u00fcr sich bedeutet, und was erst in Kombination gef\u00e4hrlich wird. Die Tabelle ordnet die h\u00e4ufigsten Funde ein.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead><tr><th>Fund<\/th><th>Was ein Angreifer daraus macht<\/th><th>Gegenma\u00dfnahme<\/th><th>Dringlichkeit<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>Server- und PHP-Version im Header<\/td><td>Abgleich mit bekannten L\u00fccken dieser Version<\/td><td>Updates einspielen, Version im Header ausblenden<\/td><td>Mittel<\/td><\/tr>\n<tr><td>Plugin-Liste mit Versionen im Quelltext<\/td><td>Suche nach veralteten Plugins mit bekannten L\u00fccken<\/td><td>Aktualisieren, Unbenutztes entfernen<\/td><td>Hoch bei veralteten Plugins<\/td><\/tr>\n<tr><td>Offenes Verzeichnislisting<\/td><td>Dateiliste durchsehen, interessante Dateien abrufen<\/td><td>Auflistung abschalten, Inhalte pr\u00fcfen<\/td><td>Mittel bis hoch<\/td><\/tr>\n<tr><td>Backup oder Datenbank-Export abrufbar<\/td><td>Zugangsdaten und personenbezogene Daten auslesen<\/td><td>Entfernen, au\u00dferhalb des Webroots speichern, Zugangsdaten \u00e4ndern<\/td><td>Sehr hoch, sofort<\/td><\/tr>\n<tr><td>Benutzernamen sichtbar<\/td><td>Gezielte Anmeldeversuche<\/td><td>Starke Passw\u00f6rter, zweiter Faktor, einheitliche Fehlermeldungen<\/td><td>Mittel<\/td><\/tr>\n<tr><td>Staging-System erreichbar<\/td><td>Schw\u00e4cher gesch\u00fctzte Kopie der Seite angreifen<\/td><td>Passwortschutz, Abschalten, Index pr\u00fcfen<\/td><td>Hoch<\/td><\/tr>\n<tr><td>robots.txt mit internen Pfaden<\/td><td>Pfade als Wegweiser nutzen<\/td><td>Pfade nicht auff\u00fchren, hinter Anmeldung legen<\/td><td>Niedrig<\/td><\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Wer Versionsnummern versteckt, gewinnt Zeit. Wer aktualisiert, gewinnt Sicherheit.<\/p><\/blockquote><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Satz fasst die wichtigste Erkenntnis zusammen. Das Verbergen der Version ist ein Handgriff von wenigen Minuten und senkt das Rauschen, es ersetzt aber keine Aktualisierung. Fingerprinting erkennt Server h\u00e4ufig auch ohne Banner. Wer sich auf das Verstecken verl\u00e4sst, praktiziert Security through Obscurity, also Sicherheit durch Geheimhaltung der Technik. Die Verfahren bleiben sinnvoll als zus\u00e4tzliche Schicht, nicht als Ersatz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nach Aufwand sortiert ergibt sich eine einfache Reihenfolge. Zuerst kommen die Dinge, die schnell gehen und viel bringen: Updates f\u00fcr Kern, Plugins und Themes, ungenutzte Erweiterungen entfernen, offene Backups und Exporte wegnehmen. Danach folgen Verzeichnislisting abschalten, Dateirechte pr\u00fcfen, Debug-Ausgaben ausschalten und Staging-Systeme absichern. Zum Schluss kommen die Feinarbeiten: Header minimieren, Sicherheits-Header erg\u00e4nzen und eine <code>security.txt<\/code> bereitstellen. Wer so vorgeht, verkleinert die Angriffsfl\u00e4che der Website dort am st\u00e4rksten, wo es z\u00e4hlt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die zentrale Frage dieses Beitrags l\u00e4sst sich nach den f\u00fcnf Etappen so beantworten:<\/p>\n\n\n    <div itemscope itemtype=\"http:\/\/schema.org\/FAQPage\">\n                    <div itemprop=\"mainEntity\" itemscope itemtype=\"http:\/\/schema.org\/Question\">\n                <h4 itemprop=\"name\">Was sieht ein Angreifer von au\u00dfen auf einer Website, ohne sich anzumelden?<\/h4>\n                <div itemscope itemprop=\"acceptedAnswer\" itemtype=\"http:\/\/schema.org\/Answer\">\n                    <div itemprop=\"text\">Ohne Anmeldung lassen sich oft Webserver-Typ und Version aus den HTTP-Headern, eingesetzte Plugins samt Versionen aus dem Quelltext, offene Verzeichnisse, Standardpfade, Hinweise in der robots.txt und teilweise Benutzernamen ablesen. Das sind zun\u00e4chst nur Informationen, noch keine Schwachstellen. Gef\u00e4hrlich werden sie, wenn eine Version mit einer bekannten L\u00fccke zusammentrifft. Wirksamer als das Verbergen von Versionsnummern sind zeitnahe Updates, das Entfernen ungenutzter Plugins und abgeschaltetes Verzeichnislisting.<\/div>\n                <\/div>\n            <\/div>\n\n                <\/div><!--\/ppa questions-->\n    \n\n\n\n<h2 class=\"wp-block-heading\">Selbstpr\u00fcfung der eigenen Website: Schritt f\u00fcr Schritt mit Bordmitteln<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr die erste Bestandsaufnahme gen\u00fcgt ein Browser. Wichtig ist der Rahmen: Gepr\u00fcft wird ausschlie\u00dflich die eigene Website, oder eine, f\u00fcr die eine ausdr\u00fcckliche Erlaubnis vorliegt. Fremde Seiten sind tabu, auch aus Neugier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der erste Schritt sind die Header. In den Entwicklerwerkzeugen des Browsers zeigt der Reiter Netzwerk beim Laden der Seite die Antwort-Header des ersten Abrufs. Wer die Kommandozeile bevorzugt, bekommt dasselbe mit <code>curl -I https:\/\/domain.example\/<\/code>, wobei die Beispieladresse durch die eigene Domain zu ersetzen ist. Notiert werden <code>Server<\/code>, <code>X-Powered-By<\/code>, Cookies und vorhandene Sicherheits-Header.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der zweite Schritt ist der Quelltext. Die Ansicht des Seitenquelltexts l\u00e4sst sich mit der Suche nach <code>wp-content<\/code>, <code>?ver=<\/code>, <code>generator<\/code> und nach Kommentaren durchgehen. Das ergibt die Plugin- und Theme-Liste, wie sie auch von au\u00dfen zu sehen ist. Danach folgt der Abgleich mit dem Backend: Gibt es dort Erweiterungen, die nicht mehr gebraucht werden?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der dritte Schritt betrifft Verzeichnisse. WordPress-Ratgeber empfehlen, Ordner wie <code>\/wp-content\/uploads\/<\/code> oder <code>\/wp-includes\/<\/code> der eigenen Seite im Browser aufzurufen. Erscheint eine Dateiliste statt einer Fehlermeldung oder leeren Seite, ist das Verzeichnislisting aktiv. Der vierte Schritt sucht von Hand nach Dateien, die nicht \u00f6ffentlich sein sollen: Exporte, Archive, Konfigurationskopien, Testseiten. Am zuverl\u00e4ssigsten gelingt das nicht \u00fcber Raten von au\u00dfen, sondern \u00fcber einen Blick ins Dateisystem des eigenen Servers. Was dort im \u00f6ffentlichen Ordner liegt, ist auch von au\u00dfen erreichbar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der f\u00fcnfte Schritt gilt den Nutzerangaben. Der Aufruf der REST-Nutzerliste, die Adresse eines Autoren-Archivs und eine absichtlich falsche Anmeldung zeigen, was die Seite preisgibt. Im sechsten Schritt wird mit <code>site:<\/code> und der eigenen Domain bei einer Suchmaschine gepr\u00fcft, was im Index steht. Der siebte Schritt betrifft Staging- und Testsysteme: Sind sie erreichbar, gesch\u00fctzt und aus dem Index ferngehalten? Die Abbildung fasst die Schritte als Checkliste zusammen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"786\" src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/checkliste-e9c88441-1024x786.webp\" alt=\"Checkliste zur Pr\u00fcfung der Website aus Angreifersicht in sieben Schritten\" class=\"wp-image-5741\" srcset=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/checkliste-e9c88441-1024x786.webp 1024w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/checkliste-e9c88441-300x230.webp 300w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/checkliste-e9c88441-768x589.webp 768w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/checkliste-e9c88441-1536x1179.webp 1536w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/checkliste-e9c88441-640x491.webp 640w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/checkliste-e9c88441.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Sieben Schritte zur Selbstpr\u00fcfung der eigenen Website.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Manuelle Pr\u00fcfung hat Grenzen. Sie ist langsam und h\u00e4ngt davon ab, dass die richtigen Stellen angesehen werden. Erg\u00e4nzend kommen automatisierte Auswertungen infrage. Der <a href=\"https:\/\/dr-dsgvo.de\/webseiten-check\/\" target=\"_blank\" rel=\"noopener\">Webseiten-Check von Dr. DSGVO<\/a> betrachtet eine Seite aus datenschutzrechtlicher Sicht, etwa Drittdienste und Cookies. F\u00fcr technische Aspekte wie Header, Versionsangaben und Standardpfade sind die <a href=\"https:\/\/wwwschutz.de\/security-checks.html\">Security-Checks von wwwschutz.de<\/a> eine m\u00f6gliche Erg\u00e4nzung. Beides ersetzt kein Gespr\u00e4ch mit dem Hoster oder der Agentur, hilft aber dabei, das Bild zu vervollst\u00e4ndigen. Und wer beim Netzwerk-Panel ohnehin sitzt, kann dort zugleich nachsehen, welche Anfragen die Seite beim Laden ausl\u00f6st, wie es der Beitrag zu <em>Speculation Rules und Datenschutz<\/em> f\u00fcr das Vorab-Laden zeigt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit: Sichtbarkeit begrenzen, Aktualit\u00e4t sichern<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die erste Minute der Au\u00dfensicht zeigt vor allem eines: Eine Website verr\u00e4t mehr, als ihre Betreiber ahnen. Das ist normal und l\u00e4sst sich nicht vollst\u00e4ndig verhindern. Es l\u00e4sst sich aber begrenzen und, wichtiger, entsch\u00e4rfen.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Informationen sind keine Schwachstellen, werden aber zu Wegweisern, wenn die Software veraltet ist.<\/li>\n\n\n<li>Aktualisierte Software ist wirksamer als jede Verschleierung. Ungenutzte Plugins und Themes werden gel\u00f6scht, nicht nur deaktiviert.<\/li>\n\n\n<li>Offene Verzeichnisse, vergessene Exporte und erreichbare Staging-Systeme sind die Funde mit dem gr\u00f6\u00dften Schaden und geh\u00f6ren zuerst behoben.<\/li>\n\n\n<li>Die Versionsangabe im Header zu verbergen ist eine sinnvolle Zusatzschicht, aber kein Ersatz f\u00fcr Updates.<\/li>\n\n\n<li>Bewusst Ver\u00f6ffentlichtes wie die <code>security.txt<\/code> hilft, Meldungen in die richtige Richtung zu lenken.<\/li>\n\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Eine regelm\u00e4\u00dfige Selbstpr\u00fcfung, etwa nach gr\u00f6\u00dferen \u00c4nderungen an der Seite, kostet wenig Zeit. Der Beitrag ist keine Rechtsberatung und keine Aufforderung, fremde Systeme zu scannen. Wo Unsicherheit besteht, hilft die R\u00fccksprache mit dem Hoster, der Agentur oder einer fachkundigen Stelle.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Welche Informationen eine Website in den ersten 60 Sekunden von au\u00dfen preisgibt, was davon nur Rauschen und was ein Risiko ist und wie sich die eigene Seite mit Bordmitteln pr\u00fcfen l\u00e4sst.<\/p>\n","protected":false},"author":4,"featured_media":5738,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[7,90],"tags":[94,95,96,97,22],"class_list":["post-5742","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-datenschutz","category-security","tag-informationspreisgabe","tag-plugins","tag-verzeichnislisting","tag-website-sicherheit","tag-wordpress","entry"],"blocks":"<!-- wp:paragraph -->\n<p><em>Wer eine Website angreifen will, beginnt mit Beobachten. Server-Header, Quelltext, Standardpfade und Zertifikate verraten oft in einer Minute, womit eine Seite arbeitet. Der Beitrag zeigt die Website aus Angreifersicht an der eigenen Seite, ordnet ein, was blo\u00df Information und was ein echtes Risiko ist, und beschreibt eine Selbstpr\u00fcfung mit Bordmitteln.<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Die meisten Betreiber kennen ihre Website von innen: Das Backend, die Plugins, die Einstellungen. Von au\u00dfen sieht die Seite anders aus. Dort gibt es keine Anmeldung und keine Rechte, nur das, was jeder Browser und jedes Skript abrufen kann. Genau diese Au\u00dfensicht ist der Ausgangspunkt f\u00fcr automatisierte Scans und f\u00fcr gezielte Vorbereitung.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Der Beitrag geht die erste Minute dieser Au\u00dfensicht in f\u00fcnf Etappen durch. Er betrachtet ausschlie\u00dflich \u00f6ffentlich abrufbare Informationen und Pr\u00fcfungen an der eigenen Website. Er enth\u00e4lt keine Anleitung zum Ausnutzen von L\u00fccken und keine Aufforderung, fremde Systeme zu untersuchen. Aktive Scans fremder Systeme ohne Erlaubnis k\u00f6nnen strafbar sein und sind deshalb tabu. Der Text ist keine Rechtsberatung. Am Ende stehen eine Gewichtung der Funde, eine Selbstpr\u00fcfung und eine Checkliste.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Die eigene Website aus Angreifersicht: Warum der Blick von au\u00dfen z\u00e4hlt<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Angriffe beginnen selten mit einem Angriff. Am Anfang steht die Aufkl\u00e4rung: Welche Software l\u00e4uft, in welcher Version, welche Pfade gibt es, was liegt dort wom\u00f6glich herum? Diese Phase nennt sich Informationsgewinnung. Das Open Worldwide Application Security Project (OWASP) f\u00fchrt sie in seinem <a href=\"https:\/\/wstg.owasp.org\/v4.2\/\">Web Security Testing Guide<\/a> als eigene Testphase auf, noch vor allen Pr\u00fcfungen auf konkrete Schwachstellen. Die Website aus Angreifersicht zu betrachten hei\u00dft also: dieselben ersten Schritte nachzuvollziehen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dabei ist kein pers\u00f6nliches Interesse n\u00f6tig. Ein gro\u00dfer Teil der Zugriffe auf jede \u00f6ffentliche Seite stammt von automatisierten Programmen. Sie arbeiten Adresslisten ab, lesen Header und Quelltext und gleichen das Ergebnis mit bekannten Schwachstellen ab. Eine kleine Firmenseite steht in derselben Liste wie ein Konzernauftritt. Wer sich fragt, wer ausgerechnet die eigene Seite anschauen sollte, \u00fcbersieht, dass hier niemand etwas anschaut. Es l\u00e4uft ein Abgleich.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Wichtig ist die Unterscheidung zwischen Information und Schwachstelle. Eine Information ist etwa die Angabe, dass ein Webserver in einer bestimmten Version l\u00e4uft. Eine Schwachstelle ist eine ausnutzbare L\u00fccke. Die Information ist noch keine L\u00fccke, sie hilft nur dabei, passende L\u00fccken zu finden. Dieser Unterschied zieht sich durch den ganzen Beitrag. Informationspreisgabe ist ein Risikoverst\u00e4rker, kein Einbruch.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Die folgende \u00dcbersicht fasst die f\u00fcnf Etappen zusammen, die in den n\u00e4chsten Abschnitten einzeln behandelt werden. Die Zeitangaben sind ein Gedankenmodell. In der Praxis laufen die Schritte automatisiert und parallel, sie dauern eher Sekundenbruchteile.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:html -->\n<!-- wp:image {\"id\":5739,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} --><figure class=\"wp-block-image size-large\"><img src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/zeitachse-9ca059fe-1024x632.webp\" alt=\"Zeitachse der ersten 60 Sekunden in f\u00fcnf Etappen von HTTP-Antwort bis Domain und Zertifikat\" class=\"wp-image-5739\"\/><figcaption class=\"wp-element-caption\">F\u00fcnf Etappen der Au\u00dfensicht in den ersten 60 Sekunden.<\/figcaption><\/figure><!-- \/wp:image -->\n<!-- \/wp:html -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Sekunde 0 bis 10: Was die HTTP-Antwort verr\u00e4t<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Schon der erste Abruf der Startseite liefert neben dem Inhalt eine Reihe von Kopfzeilen, die Header. Sie sind f\u00fcr den Browser gedacht, aber jeder kann sie lesen. Typisch ist der <code>Server<\/code>-Header. Er nennt h\u00e4ufig den Webserver, dessen Version und manchmal das Betriebssystem. Dazu kommt oft <code>X-Powered-By<\/code> mit der PHP-Version. Auch Cookie-Namen verraten viel: Ein Cookie mit dem Pr\u00e4fix <code>wordpress_<\/code> macht das eingesetzte System sofort erkennbar.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Das Auslesen dieser Angaben hei\u00dft Banner Grabbing. Der <a href=\"https:\/\/wstg.owasp.org\/v4.2\/4-Web_Application_Security_Testing\/01-Information_Gathering\/02-Fingerprint_Web_Server\">OWASP-Leitfaden zum Fingerprinting von Webservern<\/a> (WSTG-INFO-02) beschreibt den Zweck so: Typ und Version des Servers bestimmen, um zu pr\u00fcfen, ob bekannte Schwachstellen f\u00fcr diese Version vorliegen. Veraltete Server ohne aktuelle Korrekturen sind daf\u00fcr besonders anf\u00e4llig. Zugleich weist der Leitfaden darauf hin, dass sich solche Header \u00e4ndern oder verschleiern lassen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Auch fehlende Angaben sagen etwas aus. Wer die Header f\u00fcr den Transportschutz (HSTS) oder f\u00fcr eine Inhaltsrichtlinie (CSP) nicht setzt, zeigt, dass an der Konfiguration lange nichts getan wurde. Das ist kein Beweis f\u00fcr eine L\u00fccke, aber ein Hinweis auf den Reifegrad. Weiterleitungen von HTTP auf HTTPS, Fehlerseiten und die Reihenfolge der Header sind weitere Spuren.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:html -->\n<!-- wp:image {\"id\":5740,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} --><figure class=\"wp-block-image size-large\"><img src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/http-antwort-8dd2d8a3-1024x639.webp\" alt=\"Website aus Angreifersicht: Beispiel einer HTTP-Antwort mit Server- und PHP-Version und was daraus gelesen wird\" class=\"wp-image-5740\"\/><figcaption class=\"wp-element-caption\">Beispiel einer HTTP-Antwort mit erfundenen Werten und ihrer Lesart von au\u00dfen.<\/figcaption><\/figure><!-- \/wp:image -->\n<!-- \/wp:html -->\n\n<!-- wp:paragraph -->\n<p>Soll die Version nicht mehr im Header stehen, l\u00e4sst sich das bei Apache einstellen. Laut <a href=\"https:\/\/httpd.apache.org\/docs\/2.4\/mod\/core.html#servertokens\">Apache-Dokumentation<\/a> steuert die Direktive <code>ServerTokens<\/code>, wie viel der <code>Server<\/code>-Header preisgibt. Standardwert ist <code>Full<\/code> mit Version, Betriebssystem und Modulen. Mit <code>ServerTokens Prod<\/code> bleibt nur <code>Server: Apache<\/code> \u00fcbrig. Die Direktive <code>ServerSignature<\/code> regelt die Fu\u00dfzeile auf vom Server erzeugten Seiten, etwa Fehlerseiten. Ihr Standardwert ist <code>Off<\/code>. Bei nginx \u00fcbernimmt <code>server_tokens off<\/code> eine \u00e4hnliche Aufgabe. Bei PHP l\u00e4sst sich <code>expose_php<\/code> abschalten, damit <code>X-Powered-By<\/code> entf\u00e4llt. Wer die Server-Version verbergen will, findet die Einstellung also in der Regel in einer einzigen Zeile der Konfiguration.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Ehrlich bleibt das nur mit einem Zusatz: Das Verbergen ist keine Sicherheit, sondern bestenfalls Verz\u00f6gerung. Verhalten und Fehlerseiten eines Servers lassen sich weiterhin einordnen, wie auch der OWASP-Leitfaden festh\u00e4lt. Wichtiger als ein versteckter Header ist ein Server, der ohnehin aktuell ist.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Sekunde 10 bis 25: Quelltext, Plugin-Liste und Theme-Hinweise<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Der Quelltext einer Seite ist \u00f6ffentlich. Bei WordPress stehen darin die Adressen aller eingebundenen Skripte und Stylesheets. Diese Adressen enthalten die Pfade <code>wp-content\/plugins<\/code> und <code>wp-content\/themes<\/code> samt Ordnernamen. Daraus ergibt sich ohne jede Anmeldung eine Liste der aktiven Plugins und des Themes. Oft h\u00e4ngt am Ende der Adresse ein Versionsparameter wie <code>?ver=<\/code>. Auch das Generator-Meta-Tag nennt gelegentlich die WordPress-Version. Wer wissen will, wie leicht sich eine WordPress-Plugin-Version auslesen l\u00e4sst, muss nur den eigenen Quelltext durchsuchen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Erg\u00e4nzend k\u00f6nnen Dateien im Plugin-Ordner selbst Versionen nennen, zum Beispiel eine mitgelieferte <code>readme.txt<\/code>. Dazu kommen Kommentare im Quelltext, Pfade aus der Entwicklungsumgebung und Hinweise auf Werkzeuge, mit denen die Seite gebaut wurde. Nichts davon ist f\u00fcr sich gef\u00e4hrlich. Zusammen ergibt es aber ein ziemlich genaues Bild der technischen Grundlage.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Der n\u00e4chste Schritt ist ein Abgleich mit \u00f6ffentlichen Schwachstellendatenbanken. Dort sind bekannte L\u00fccken nach Produkt und Version aufgelistet, und zwar ausdr\u00fccklich, damit Betreiber ihre Seiten sch\u00fctzen k\u00f6nnen. Automatisierte Programme nutzen dieselben Daten. Ein Plugin, das seit Monaten kein Update erhalten hat und in der Liste auftaucht, ist damit auffindbar, ohne dass jemand die Seite je besucht h\u00e4tte.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:pullquote -->\n<figure class=\"wp-block-pullquote\"><blockquote><p>Eine Versionsnummer im Header ist noch keine Schwachstelle. Sie macht nur sichtbar, ob eine bekannte L\u00fccke offen sein k\u00f6nnte.<\/p><\/blockquote><\/figure>\n<!-- \/wp:pullquote -->\n\n<!-- wp:paragraph -->\n<p>Der Quelltext verr\u00e4t noch etwas anderes: Welche Drittdienste eingebunden sind. Tracking-Skripte, eingebettete Videos, externe Schriften und Karten tauchen als Adressen auf fremden Servern auf. F\u00fcr die Sicherheit ist das nebens\u00e4chlich. F\u00fcr den Datenschutz ist es ein Nebenbefund, denn jeder dieser Dienste erh\u00e4lt die IP-Adresse der Besucher. Ein Blick auf die Liste lohnt deshalb doppelt.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Eine Konsequenz ist deutlich: Plugins und Themes, die nicht gebraucht werden, geh\u00f6ren entfernt und nicht nur deaktiviert. Das <a href=\"https:\/\/developer.wordpress.org\/advanced-administration\/security\/hardening\/\">Hardening-Kapitel der WordPress-Entwicklerdokumentation<\/a> empfiehlt ebenfalls, Software aktuell zu halten und Unbenutztes zu l\u00f6schen. Was nicht installiert ist, kann nicht veralten.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Sekunde 25 bis 40: Offene Verzeichnisse, Standardpfade und vergessene Dateien<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Nach dem Quelltext folgen Pfade, die sich ohne Verlinkung erraten lassen. Bei WordPress sind das etwa <code>\/wp-admin<\/code>, <code>\/wp-login.php<\/code> und <code>\/wp-json<\/code>. Diese Pfade sind \u00fcberall gleich und \u00fcberall dokumentiert. Dass sie existieren, ist normal und kein Befund. Interessant wird es, wenn sich dahinter mehr zeigt als vorgesehen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Das erste Beispiel ist das Verzeichnislisting. Fehlt in einem Ordner eine Startdatei und ist die Auflistung erlaubt, erzeugt der Server eine Dateiliste. Die Apache-Dokumentation beschreibt das so: Wird eine Adresse angefragt, die auf ein Verzeichnis zeigt, und liegt dort kein <code>DirectoryIndex<\/code> wie <code>index.html<\/code>, liefert <code>mod_autoindex<\/code> eine formatierte Auflistung. Bei offenen Verzeichnissen kann jeder sehen, welche Dateien dort liegen, etwa im Upload-Ordner. Das Verzeichnislisting l\u00e4sst sich per Apache-Direktive <code>Options -Indexes<\/code> deaktivieren, bei nginx gen\u00fcgt es, <code>autoindex<\/code> nicht zu aktivieren.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Das zweite Beispiel sind vergessene Dateien. Beim Umbau oder Umzug einer Website bleiben gern Dinge liegen: ein Datenbank-Export, ein Archiv mit der alten Seite, eine Sicherungskopie der Konfiguration, ein Ordner der Versionsverwaltung, eine Datei mit Zugangsdaten, eine Testseite mit Systeminformationen. Die Dateiendungen und Namen sind so \u00fcblich, dass Skripte sie als Liste abfragen. Wer eine solche Datei auf dem eigenen Server nicht kennt, sollte sie finden, bevor es jemand anders tut.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Warum das mehr als ein Sch\u00f6nheitsfehler ist, liegt auf der Hand. Datenbank-Exporte enthalten Kundendaten, Konfigurationsdateien Zugangsdaten. Wer solche Dateien frei abrufbar l\u00e4sst, macht aus einem Verwaltungsfehler eine Datenpanne. Die DSGVO verlangt in <a href=\"https:\/\/dr-dsgvo.de\/artikel-32-dsgvo\">Artikel 32<\/a> technische und organisatorische Ma\u00dfnahmen, die dem Risiko angemessen sind. Offen herumliegende Exporte widersprechen dem, ohne dass es daf\u00fcr eine Angriffsleistung brauchte. Weiterf\u00fchrend zum Personenbezug solcher Datens\u00e4tze behandelt der Beitrag zu <em>personenbeziehbaren Daten<\/em> die Frage, wann Daten als personenbezogen gelten.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Die Gegenma\u00dfnahmen sind unspektakul\u00e4r. Sicherungen und Exporte geh\u00f6ren au\u00dferhalb des \u00f6ffentlich erreichbaren Verzeichnisses (Webroot) oder zumindest hinter eine Zugriffssperre. Die Dateirechte sollten nicht gro\u00dfz\u00fcgiger sein als n\u00f6tig. Die WordPress-Dokumentation nennt f\u00fcr Verzeichnisse 755 und f\u00fcr Dateien 644, f\u00fcr <code>wp-config.php<\/code> 400 oder 440. Debug-Ausgaben geh\u00f6ren im Livebetrieb abgeschaltet, ebenso Testskripte mit Systemangaben.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Sekunde 40 bis 50: Metadateien, Nutzernamen und Schnittstellen<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Metadateien sind f\u00fcr Suchmaschinen und Programme gedacht. Die bekannteste ist die <code>robots.txt<\/code>. Sie sagt Crawlern, was sie nicht abrufen sollen. Genau darin liegt ein Missverst\u00e4ndnis. Der <a href=\"https:\/\/wstg.owasp.org\/v4.2\/4-Web_Application_Security_Testing\/01-Information_Gathering\/03-Review_Webserver_Metafiles_for_Information_Leakage\">OWASP-Leitfaden zu Metadateien<\/a> (WSTG-INFO-03) stellt klar, dass die <code>robots.txt<\/code> nicht als Mechanismus zur Durchsetzung von Beschr\u00e4nkungen gelten sollte. Wer dort einen internen Pfad ausschlie\u00dft, nennt ihn zugleich jedem, der die Datei liest. Ein Pfad geh\u00f6rt also nicht in die <code>robots.txt<\/code>, wenn er geheim bleiben soll, sondern hinter eine Anmeldung. \u00c4hnlich verh\u00e4lt es sich mit der Sitemap: Sie ist eine bewusste Liste der Seiten und sollte nichts enthalten, was nicht \u00f6ffentlich sein soll.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dann die Benutzernamen. G\u00fcltige Benutzernamen sind f\u00fcr Angriffe auf Anmeldungen n\u00fctzlich, denn dann fehlt nur noch das Passwort. Mehrere Quellen kommen infrage: Autoren-Archive, die den Anmeldenamen in der Adresse tragen, Fehlermeldungen beim Login, die zwischen falschem Namen und falschem Passwort unterscheiden, und die REST-Schnittstelle. Laut <a href=\"https:\/\/developer.wordpress.org\/rest-api\/reference\/users\/\">REST-Referenz zu Nutzern<\/a> liefert die Abfrage von Nutzern im Kontext <code>view<\/code> Felder wie Anzeigename, Kurzname (slug), Link und Beschreibung. Felder wie E-Mail-Adresse und Rollen sind dem Kontext <code>edit<\/code> vorbehalten. Ob und welche Nutzer unangemeldet erscheinen, steht dort nicht eindeutig. Das Verhalten h\u00e4ngt von der WordPress-Version und der Konfiguration ab und l\u00e4sst sich am schnellsten an der eigenen Seite pr\u00fcfen: Ruft der Browser die Nutzer-Schnittstelle unter <code>\/wp-json\/wp\/v2\/users<\/code> der eigenen Domain ab, zeigt sich, was ohne Anmeldung ausgegeben wird. Der Kurzname entspricht nicht automatisch dem Anmeldenamen, kann ihm aber \u00e4hneln.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Als sinnvolle Gegenma\u00dfnahmen kommen einheitliche Fehlermeldungen beim Login, sparsam vergebene Autorenkonten, Anzeigenamen, die vom Anmeldenamen abweichen, und starke Passw\u00f6rter mit einem zweiten Faktor infrage. Ein verborgener Benutzername ist ebenfalls nur eine H\u00fcrde. Die eigentliche Absicherung ist, dass ein bekannter Name allein nichts n\u00fctzt.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Die <code>security.txt<\/code> ist das Gegenbeispiel: eine Metadatei, die ausdr\u00fccklich gefunden werden soll. <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9116\">RFC 9116<\/a> beschreibt sie als Datei unter <code>\/.well-known\/security.txt<\/code> mit den Pflichtfeldern <code>Contact<\/code> und <code>Expires<\/code>. Wer eine Schwachstelle findet, erf\u00e4hrt dort, wohin die Meldung gehen soll. Das ist die kontrollierte Variante von Sichtbarkeit.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Sekunde 50 bis 60: Domain, Zertifikat und Suchmaschinen<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Die letzte Etappe verl\u00e4sst die Seite selbst. Zertifikate f\u00fcr HTTPS werden in \u00f6ffentlichen Protokollen vermerkt, der sogenannten Zertifikatstransparenz. Das Verfahren ist in <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6962\">RFC 6962<\/a> beschrieben, die Nachfolgeversion tr\u00e4gt die Nummer 9162. Der Zweck ist, falsch ausgestellte Zertifikate sichtbar zu machen. Als Nebenwirkung steht in diesen Protokollen jeder Hostname, f\u00fcr den ein Zertifikat ausgestellt wurde. Wer f\u00fcr <code>test<\/code>, <code>staging<\/code> oder <code>intranet<\/code> unter der eigenen Domain ein Zertifikat beantragt, tr\u00e4gt diesen Namen damit \u00f6ffentlich ein.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Hinzu kommen die DNS-Eintr\u00e4ge der Domain. Sie zeigen Mailserver, Subdomains und Dienste. Und schlie\u00dflich der Suchmaschinen-Index: Eine Suche mit <code>site:<\/code> und der eigenen Domain listet auf, was Suchmaschinen kennen. Dazu k\u00f6nnen PDF-Dateien, Testseiten, Exportdateien und alte Seitenversionen geh\u00f6ren, die nie jemand finden sollte.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Besonders anf\u00e4llig sind Staging-Systeme. Das sind Kopien der Seite zum Testen. Sie laufen oft mit \u00e4lterer Software, schw\u00e4cheren Passw\u00f6rtern oder abgeschalteter Absicherung, enthalten aber nicht selten echte Daten. Wird ein Staging-System nicht mit einem Passwortschutz versehen, kann es in Suchmaschinen landen. F\u00fcr diese Etappe gilt wie f\u00fcr alle anderen: Es werden nur \u00f6ffentlich zug\u00e4ngliche Quellen genutzt, und nur f\u00fcr die eigene Domain. Das Durchsuchen fremder Systeme ist keine Pr\u00fcfung, sondern ein Eingriff.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Was aus den Funden folgt: Information, Risiko, Aufwand<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Nach den f\u00fcnf Etappen stellt sich die Frage der Gewichtung. Nicht jede sichtbare Angabe verlangt sofortiges Handeln. Eine Seite ohne sichtbare Spuren gibt es nicht. Die Frage lautet, was ein Fund f\u00fcr sich bedeutet, und was erst in Kombination gef\u00e4hrlich wird. Die Tabelle ordnet die h\u00e4ufigsten Funde ein.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table>\n<thead><tr><th>Fund<\/th><th>Was ein Angreifer daraus macht<\/th><th>Gegenma\u00dfnahme<\/th><th>Dringlichkeit<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>Server- und PHP-Version im Header<\/td><td>Abgleich mit bekannten L\u00fccken dieser Version<\/td><td>Updates einspielen, Version im Header ausblenden<\/td><td>Mittel<\/td><\/tr>\n<tr><td>Plugin-Liste mit Versionen im Quelltext<\/td><td>Suche nach veralteten Plugins mit bekannten L\u00fccken<\/td><td>Aktualisieren, Unbenutztes entfernen<\/td><td>Hoch bei veralteten Plugins<\/td><\/tr>\n<tr><td>Offenes Verzeichnislisting<\/td><td>Dateiliste durchsehen, interessante Dateien abrufen<\/td><td>Auflistung abschalten, Inhalte pr\u00fcfen<\/td><td>Mittel bis hoch<\/td><\/tr>\n<tr><td>Backup oder Datenbank-Export abrufbar<\/td><td>Zugangsdaten und personenbezogene Daten auslesen<\/td><td>Entfernen, au\u00dferhalb des Webroots speichern, Zugangsdaten \u00e4ndern<\/td><td>Sehr hoch, sofort<\/td><\/tr>\n<tr><td>Benutzernamen sichtbar<\/td><td>Gezielte Anmeldeversuche<\/td><td>Starke Passw\u00f6rter, zweiter Faktor, einheitliche Fehlermeldungen<\/td><td>Mittel<\/td><\/tr>\n<tr><td>Staging-System erreichbar<\/td><td>Schw\u00e4cher gesch\u00fctzte Kopie der Seite angreifen<\/td><td>Passwortschutz, Abschalten, Index pr\u00fcfen<\/td><td>Hoch<\/td><\/tr>\n<tr><td>robots.txt mit internen Pfaden<\/td><td>Pfade als Wegweiser nutzen<\/td><td>Pfade nicht auff\u00fchren, hinter Anmeldung legen<\/td><td>Niedrig<\/td><\/tr>\n<\/tbody>\n<\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:pullquote -->\n<figure class=\"wp-block-pullquote\"><blockquote><p>Wer Versionsnummern versteckt, gewinnt Zeit. Wer aktualisiert, gewinnt Sicherheit.<\/p><\/blockquote><\/figure>\n<!-- \/wp:pullquote -->\n\n<!-- wp:paragraph -->\n<p>Dieser Satz fasst die wichtigste Erkenntnis zusammen. Das Verbergen der Version ist ein Handgriff von wenigen Minuten und senkt das Rauschen, es ersetzt aber keine Aktualisierung. Fingerprinting erkennt Server h\u00e4ufig auch ohne Banner. Wer sich auf das Verstecken verl\u00e4sst, praktiziert Security through Obscurity, also Sicherheit durch Geheimhaltung der Technik. Die Verfahren bleiben sinnvoll als zus\u00e4tzliche Schicht, nicht als Ersatz.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Nach Aufwand sortiert ergibt sich eine einfache Reihenfolge. Zuerst kommen die Dinge, die schnell gehen und viel bringen: Updates f\u00fcr Kern, Plugins und Themes, ungenutzte Erweiterungen entfernen, offene Backups und Exporte wegnehmen. Danach folgen Verzeichnislisting abschalten, Dateirechte pr\u00fcfen, Debug-Ausgaben ausschalten und Staging-Systeme absichern. Zum Schluss kommen die Feinarbeiten: Header minimieren, Sicherheits-Header erg\u00e4nzen und eine <code>security.txt<\/code> bereitstellen. Wer so vorgeht, verkleinert die Angriffsfl\u00e4che der Website dort am st\u00e4rksten, wo es z\u00e4hlt.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Die zentrale Frage dieses Beitrags l\u00e4sst sich nach den f\u00fcnf Etappen so beantworten:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:shortcode -->\n[faq]Was sieht ein Angreifer von au\u00dfen auf einer Website, ohne sich anzumelden?|=|Ohne Anmeldung lassen sich oft Webserver-Typ und Version aus den HTTP-Headern, eingesetzte Plugins samt Versionen aus dem Quelltext, offene Verzeichnisse, Standardpfade, Hinweise in der robots.txt und teilweise Benutzernamen ablesen. Das sind zun\u00e4chst nur Informationen, noch keine Schwachstellen. Gef\u00e4hrlich werden sie, wenn eine Version mit einer bekannten L\u00fccke zusammentrifft. Wirksamer als das Verbergen von Versionsnummern sind zeitnahe Updates, das Entfernen ungenutzter Plugins und abgeschaltetes Verzeichnislisting.[\/faq]\n<!-- \/wp:shortcode -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Selbstpr\u00fcfung der eigenen Website: Schritt f\u00fcr Schritt mit Bordmitteln<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>F\u00fcr die erste Bestandsaufnahme gen\u00fcgt ein Browser. Wichtig ist der Rahmen: Gepr\u00fcft wird ausschlie\u00dflich die eigene Website, oder eine, f\u00fcr die eine ausdr\u00fcckliche Erlaubnis vorliegt. Fremde Seiten sind tabu, auch aus Neugier.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Der erste Schritt sind die Header. In den Entwicklerwerkzeugen des Browsers zeigt der Reiter Netzwerk beim Laden der Seite die Antwort-Header des ersten Abrufs. Wer die Kommandozeile bevorzugt, bekommt dasselbe mit <code>curl -I https:\/\/domain.example\/<\/code>, wobei die Beispieladresse durch die eigene Domain zu ersetzen ist. Notiert werden <code>Server<\/code>, <code>X-Powered-By<\/code>, Cookies und vorhandene Sicherheits-Header.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Der zweite Schritt ist der Quelltext. Die Ansicht des Seitenquelltexts l\u00e4sst sich mit der Suche nach <code>wp-content<\/code>, <code>?ver=<\/code>, <code>generator<\/code> und nach Kommentaren durchgehen. Das ergibt die Plugin- und Theme-Liste, wie sie auch von au\u00dfen zu sehen ist. Danach folgt der Abgleich mit dem Backend: Gibt es dort Erweiterungen, die nicht mehr gebraucht werden?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Der dritte Schritt betrifft Verzeichnisse. WordPress-Ratgeber empfehlen, Ordner wie <code>\/wp-content\/uploads\/<\/code> oder <code>\/wp-includes\/<\/code> der eigenen Seite im Browser aufzurufen. Erscheint eine Dateiliste statt einer Fehlermeldung oder leeren Seite, ist das Verzeichnislisting aktiv. Der vierte Schritt sucht von Hand nach Dateien, die nicht \u00f6ffentlich sein sollen: Exporte, Archive, Konfigurationskopien, Testseiten. Am zuverl\u00e4ssigsten gelingt das nicht \u00fcber Raten von au\u00dfen, sondern \u00fcber einen Blick ins Dateisystem des eigenen Servers. Was dort im \u00f6ffentlichen Ordner liegt, ist auch von au\u00dfen erreichbar.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Der f\u00fcnfte Schritt gilt den Nutzerangaben. Der Aufruf der REST-Nutzerliste, die Adresse eines Autoren-Archivs und eine absichtlich falsche Anmeldung zeigen, was die Seite preisgibt. Im sechsten Schritt wird mit <code>site:<\/code> und der eigenen Domain bei einer Suchmaschine gepr\u00fcft, was im Index steht. Der siebte Schritt betrifft Staging- und Testsysteme: Sind sie erreichbar, gesch\u00fctzt und aus dem Index ferngehalten? Die Abbildung fasst die Schritte als Checkliste zusammen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:html -->\n<!-- wp:image {\"id\":5741,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} --><figure class=\"wp-block-image size-large\"><img src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/checkliste-e9c88441-1024x786.webp\" alt=\"Checkliste zur Pr\u00fcfung der Website aus Angreifersicht in sieben Schritten\" class=\"wp-image-5741\"\/><figcaption class=\"wp-element-caption\">Sieben Schritte zur Selbstpr\u00fcfung der eigenen Website.<\/figcaption><\/figure><!-- \/wp:image -->\n<!-- \/wp:html -->\n\n<!-- wp:paragraph -->\n<p>Manuelle Pr\u00fcfung hat Grenzen. Sie ist langsam und h\u00e4ngt davon ab, dass die richtigen Stellen angesehen werden. Erg\u00e4nzend kommen automatisierte Auswertungen infrage. Der <a href=\"https:\/\/dr-dsgvo.de\/webseiten-check\/\">Webseiten-Check von Dr. DSGVO<\/a> betrachtet eine Seite aus datenschutzrechtlicher Sicht, etwa Drittdienste und Cookies. F\u00fcr technische Aspekte wie Header, Versionsangaben und Standardpfade sind die <a href=\"https:\/\/wwwschutz.de\/security-checks.html\">Security-Checks von wwwschutz.de<\/a> eine m\u00f6gliche Erg\u00e4nzung. Beides ersetzt kein Gespr\u00e4ch mit dem Hoster oder der Agentur, hilft aber dabei, das Bild zu vervollst\u00e4ndigen. Und wer beim Netzwerk-Panel ohnehin sitzt, kann dort zugleich nachsehen, welche Anfragen die Seite beim Laden ausl\u00f6st, wie es der Beitrag zu <em>Speculation Rules und Datenschutz<\/em> f\u00fcr das Vorab-Laden zeigt.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Fazit: Sichtbarkeit begrenzen, Aktualit\u00e4t sichern<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Die erste Minute der Au\u00dfensicht zeigt vor allem eines: Eine Website verr\u00e4t mehr, als ihre Betreiber ahnen. Das ist normal und l\u00e4sst sich nicht vollst\u00e4ndig verhindern. Es l\u00e4sst sich aber begrenzen und, wichtiger, entsch\u00e4rfen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\">\n<!-- wp:list-item -->\n<li>Informationen sind keine Schwachstellen, werden aber zu Wegweisern, wenn die Software veraltet ist.<\/li>\n<!-- \/wp:list-item -->\n<!-- wp:list-item -->\n<li>Aktualisierte Software ist wirksamer als jede Verschleierung. Ungenutzte Plugins und Themes werden gel\u00f6scht, nicht nur deaktiviert.<\/li>\n<!-- \/wp:list-item -->\n<!-- wp:list-item -->\n<li>Offene Verzeichnisse, vergessene Exporte und erreichbare Staging-Systeme sind die Funde mit dem gr\u00f6\u00dften Schaden und geh\u00f6ren zuerst behoben.<\/li>\n<!-- \/wp:list-item -->\n<!-- wp:list-item -->\n<li>Die Versionsangabe im Header zu verbergen ist eine sinnvolle Zusatzschicht, aber kein Ersatz f\u00fcr Updates.<\/li>\n<!-- \/wp:list-item -->\n<!-- wp:list-item -->\n<li>Bewusst Ver\u00f6ffentlichtes wie die <code>security.txt<\/code> hilft, Meldungen in die richtige Richtung zu lenken.<\/li>\n<!-- \/wp:list-item -->\n<\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Eine regelm\u00e4\u00dfige Selbstpr\u00fcfung, etwa nach gr\u00f6\u00dferen \u00c4nderungen an der Seite, kostet wenig Zeit. Der Beitrag ist keine Rechtsberatung und keine Aufforderung, fremde Systeme zu scannen. Wo Unsicherheit besteht, hilft die R\u00fccksprache mit dem Hoster, der Agentur oder einer fachkundigen Stelle.<\/p>\n<!-- \/wp:paragraph -->","_links":{"self":[{"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/posts\/5742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/comments?post=5742"}],"version-history":[{"count":1,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/posts\/5742\/revisions"}],"predecessor-version":[{"id":5743,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/posts\/5742\/revisions\/5743"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/media\/5738"}],"wp:attachment":[{"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/media?parent=5742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/categories?post=5742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/tags?post=5742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}