Einen spezifischen virtuellen Host mit Nikto scannen

Kali LinuxBeginner
Jetzt üben

Einleitung

Nikto ist ein beliebter Open-Source-Webserver-Scanner, der umfassende Tests gegen Webserver für mehrere Elemente durchführt, darunter über 6700 potenziell gefährliche Dateien/Programme, Prüfungen auf veraltete Versionen von über 1250 Servern und versionsspezifische Probleme auf über 270 Servern.

Eine gängige Webserver-Konfiguration ist Virtual Hosting, bei dem ein einzelner Server mit einer IP-Adresse mehrere Websites hostet (z. B. site1.example.com und site2.example.com). Wenn Sie die IP-Adresse des Servers direkt scannen, testet ein Scanner wie Nikto möglicherweise nur die Standard-Website, die auf dem Server konfiguriert ist, und übersieht dabei vollständig die anderen Websites.

In diesem Lab lernen Sie, wie Sie die Option -vhost von Nikto verwenden, um gezielt einen der virtuellen Hosts auf dem Server anzusprechen und sicherzustellen, dass Ihr Scan genau und fokussiert ist.

Identifizieren eines Servers, der mehrere Websites auf einer IP hostet

In diesem Schritt überprüfen Sie, ob der Webserver in unserer Umgebung zwei verschiedene Websites auf derselben IP-Adresse (127.0.0.1) hostet. Dies können wir tun, indem wir HTTP-Anfragen mit unterschiedlichen Host-Headern über den curl-Befehl senden. Der Host-Header teilt dem Webserver mit, auf welche Website der Client zugreifen möchte.

Zuerst senden wir eine Anfrage an site1.labex.io. Die Option --header "Host: site1.labex.io" weist curl an, den angegebenen Host-Header zu senden.

curl --header "Host: site1.labex.io" http://127.0.0.1

Sie sollten den HTML-Inhalt für die erste Website sehen:

<html><body><h1>Welcome to Site 1</h1></body></html>

Als Nächstes senden wir eine Anfrage an site2.labex.io, indem wir den Host-Header ändern.

curl --header "Host: site2.labex.io" http://127.0.0.1

Dieses Mal sehen Sie den Inhalt von der zweiten Website:

<html><body><h1>This is Site 2</h1><p>This site has a test.txt file.</p></body></html>

Dies bestätigt, dass unser Server unter 127.0.0.1 basierend auf dem Hostnamen unterschiedliche Inhalte bereitstellt, was die Definition von Virtual Hosting ist.

Ermitteln des Hostnamens des spezifischen Ziel-Virtual-Hosts

In diesem Schritt bestätigen wir die Hostnamen, die für unseren lokalen Server konfiguriert sind. In einem realen Szenario würden Sie Aufklärungstechniken wie DNS-Enumeration oder die Analyse von SSL-Zertifikaten verwenden, um virtuelle Hosts zu finden. Für dieses Lab wurden die Hostnamen in der Datei /etc/hosts vorkonfiguriert. Diese Datei wird vom Betriebssystem verwendet, um Hostnamen IP-Adressen zuzuordnen.

Untersuchen wir den Inhalt der Datei /etc/hosts mit dem Befehl cat, um die Zuordnungen anzuzeigen.

cat /etc/hosts

Die Ausgabe zeigt die Standard-Localhost-Zuordnungen sowie die beiden benutzerdefinierten Einträge, die wir für unsere virtuellen Hosts hinzugefügt haben:

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 site1.labex.io
127.0.0.1 site2.labex.io

Aus dieser Ausgabe können wir bestätigen, dass site1.labex.io und site2.labex.io die Hostnamen sind, die wir für unseren gezielten Scan verwenden können. In den folgenden Schritten werden wir uns auf site2.labex.io konzentrieren.

Verwenden der Option -vhost zur Angabe des Ziel-Hostnamens

In diesem Schritt lernen Sie die Nikto-Option kennen, die zum Scannen eines bestimmten virtuellen Hosts verwendet wird. Standardmäßig würde nikto -h 127.0.0.1 den ersten konfigurierten virtuellen Host (site1.labex.io) scannen. Um Nikto anzuweisen, einen anderen virtuellen Host zu scannen, müssen wir die Option -vhost (oder -host+) verwenden.

Diese Option weist Nikto an, den bereitgestellten Hostnamen im Host-Header aller seiner HTTP-Anfragen zu verwenden, um sicherzustellen, dass der Webserver die Anfragen an die richtige Website weiterleitet.

Die Syntax lautet: nikto -h <IP_ADRESSE> -vhost <HOSTNAME>

Führen wir einen schnellen Test durch, ohne einen vollständigen Scan durchzuführen. Wir können die Option -Display V verwenden, um die ausführliche Ausgabe anzuzeigen, die uns die effektive Konfiguration für den Scan zeigt. Wir werden site2.labex.io als Ziel verwenden.

nikto -h 127.0.0.1 -vhost site2.labex.io -Display V

Die Ausgabe zeigt Details zur Scan-Konfiguration. Suchen Sie nach dem Wert des Host-Headers, um zu bestätigen, dass er korrekt eingestellt ist.

...
---------------------------------------------------------------------------
- Nikto 2.x
---------------------------------------------------------------------------
...
- Scan Options:
    ...
    Host -> 127.0.0.1
    ...
    VHost -> site2.labex.io
...
- Headers:
    ...
    Host: site2.labex.io
    ...
---------------------------------------------------------------------------
+ 1 host(s) to test

Die Ausgabe zeigt deutlich, dass Nikto Host: site2.labex.io in seinen Anfragen verwenden wird, was genau das ist, was wir wollen.

Ausführen des Scans gegen die Server-IP mit dem vhost-Flag

Nachdem Sie nun verstehen, wie die Option -vhost funktioniert, ist es an der Zeit, den vollständigen Scan gegen unseren Ziel-Virtual-Host site2.labex.io auszuführen.

Führen Sie den folgenden Befehl in Ihrem Terminal aus. Der Scan wird einige Momente dauern, da Nikto seine verschiedenen Tests durchführt.

nikto -h 127.0.0.1 -vhost site2.labex.io

Nachdem der Scan gestartet ist, sehen Sie eine Ausgabe, die der folgenden ähnelt. Beachten Sie, dass die Ausgabe zeigt, dass der Target Host site2.labex.io ist, was bestätigt, dass wir den richtigen virtuellen Host scannen.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    site2.labex.io
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ /test.txt: A text file was found.
+ 7 requests: 0 error(s) and 5 item(s) reported on remote host
+ End Time:           ...
+ 1 host(s) tested

Beachten Sie die Zeile + /test.txt: A text file was found.. Diese Datei existiert nur auf site2.labex.io, was weiter bestätigt, dass unser Scan korrekt ausgerichtet war.

Bestätigen, dass die Ergebnisse spezifisch für den angesprochenen vhost sind

In diesem letzten Schritt führen wir einen weiteren Scan durch, diesmal ohne das -vhost-Flag, um den Unterschied in den Ergebnissen zu demonstrieren. Dies wird beweisen, dass die Option -vhost unerlässlich ist, um eine bestimmte Website in einer virtuellen Hosting-Umgebung genau zu scannen.

Führen Sie einen Standard-Nikto-Scan gegen die IP-Adresse des Servers aus:

nikto -h 127.0.0.1

Beobachten Sie die Ausgabe dieses neuen Scans.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
...
(other findings)
...
+ End Time:           ...
+ 1 host(s) tested

Vergleichen Sie diese Ausgabe mit dem Scan aus dem vorherigen Schritt. Sie werden zwei wichtige Unterschiede feststellen:

  1. Der Target Hostname ist jetzt localhost (oder 127.0.0.1), was der Standard des Servers ist.
  2. Der Fund + /test.txt: A text file was found. fehlt. Dies liegt daran, dass test.txt auf der Standard-Website (site1.labex.io) nicht existiert und dieser Scan site2.labex.io nicht anvisiert hat.

Dieser Vergleich zeigt deutlich, dass Sie ohne -vhost Schwachstellen und Informationen, die spezifisch für site2.labex.io sind, übersehen hätten.

Zusammenfassung

In diesem Lab haben Sie eine entscheidende Technik für das Scannen von Webserver-Schwachstellen gelernt. Sie verstehen nun, was Virtual Hosting ist und warum es bei einer Sicherheitsbewertung besondere Behandlung erfordert.

Sie haben geübt:

  • Die Verwendung von curl mit einem benutzerdefinierten Host-Header, um verschiedene Websites auf derselben IP manuell zu inspizieren.
  • Die Identifizierung des Zwecks der -vhost-Option von Nikto.
  • Die Ausführung eines gezielten Scans gegen einen bestimmten virtuellen Host mit nikto -h <IP> -vhost <HOSTNAME>.
  • Den Vergleich der Ergebnisse eines gezielten Scans und eines Standard-Scans, um die Bedeutung dieser Technik zu verstehen.

Diese Fähigkeit ist für jeden Penetrationstester oder Sicherheitsanalysten unerlässlich, um sicherzustellen, dass alle Webanwendungen auf einem Server gründlich getestet werden, nicht nur die Standardanwendung.