Nessus generische Plugins für Webapplikationen

Nessus generische Plugins für Webapplikationen

Marc Ruef
von Marc Ruef
Lesezeit: 8 Minuten

Die Entwickler von Nessus haben eine Reihe zusätzlicher generischer Plugins für Web Application Penetration Tests herausgegeben bzw. bestehende Tests erweitert. Das Ziel dieser ist, typische Schwachstellen – wie Cross Site Scripting und SQL-Injection – mittels Fuzzing zu identifizieren. Damit können also nun auch neue und nicht mit dedizierten Plugins abgearbeitete Schwachstellen gefunden werden:

ID Name
44967 CGI Generic Command Execution Vulnerability (time based)
44136 CGI Generic Cookie Injection Scripting
44135 Web Server Generic Cookie Injection
44134 CGI Generic Unseen Parameters Discovery
43160 CGI Generic SQL Injection (blind, time based)
42872 CGI Generic Local File Inclusion Vulnerability (2nd pass)
42479 CGI Generic SQL Injection Vulnerability (2nd pass)
42427 CGI Generic SQL Injection Vulnerability (HTTP Headers)
42426 CGI Generic SQL Injection Vulnerability (HTTP Cookies)
42425 CGI Generic Persistent Cross-Site Scripting Vulnerability
42424 CGI Generic SQL Injection (blind)
42423 CGI Generic SSI Injection Vulnerability
42056 CGI Generic Local File Inclusion Vulnerability
42055 CGI Generic Format String Vulnerability
42054 CGI Generic SSI Injection Vulnerability
39469 CGI Generic Remote File Inclusion Vulnerability
39468 CGI Generic Header Injection Vulnerability
39467 CGI Generic Path Traversal Vulnerability
39465 CGI Generic Command Execution Vulnerability
11139 CGI Generic SQL Injection Vulnerability

Diese Plugins arbeiten relativ simpel. Das Grundprinzip ist stets das Gleiche:

  1. Schnittstellen S zur Übergabe von Parametern werden gesucht.
  2. Varianten bösartigen Codes M werden generiert.
  3. Pattern P zur Identifikation der efolgreichen Injektion werden definiert.
  4. Die Anfragen der Form S(M) werden abgesetzt und damit die Resultate R generiert.
  5. In den erhaltenen Resultaten werden die Pattern (S(M) ⇒ R) = P) gesucht.
  6. Ist P in R enthalten, gilt die Schwachstelle als erfolgreich ausgenutzt. ∎

Konnte also eine Reaktion provoziert werden, die auf einen erfolgreichen Angriff hindeuten, wird die Schwachstelle als gegeben ausgewiesen. Dabei wird jenem Muster gefolgt, wie es auch bei manuellen Tests herangezogen wird:

Technik Resultat Beispiel
Cross Site Scripting Injizierten Code BODY ONLOAD=alert($URL$)
SQL-Injection SQL-Fehlermeldungen supplied argument is not a valid MySQL result

Der Pseudocode für die Implementierung eines Plugins, das SQL-Injection in HTTP-Headern prüft, sieht wie folgt aus. Neben der Definition der einzelnen Elemente in Arrays sind die verschachtelten Schleifen für das Ausprobieren der jeweiligen Anfragen verantwortlich:

function findXssInHeader($target=‘127.0.0.1’, $port=80){
   // Pre-defined arrays (some examples)
   $headerarr = array(‘User-Agent’, ‘Referer’, ‘Accept’);
   $maliciousarr = array(“’”, ‘”%22’, ‘—+’);
   $patternarr = array(‘Incorrect column name’, ‘Unknown table’);

// Generation of test requests foreach($headerarr as $header){ foreach($maliciousarr as $malicious){ // Sending dedicated test request $response = http_get_request($target, $port, $header, $malicious); // Identification of patterns foreach($patternarr as $pattern){ if(find($response, $pattern) == TRUE){ return 1; exit; } } } } return 0; }

Ein solcher Ansatz ist theoretisch für jede Schwachstelle umsetzbar, die sich durch eine korrupte Eingabe oder einen korrupten Programmablauf provozieren und anhand eines spezifischen Verhaltens (z.B. Rückgabewert einer typischen Struktur) ermitteln lässt. Eine erste Fokussierung von Nessus auf Webapplikationen liegt wohl darin begründet, dass das genutzte Anwendungsprotokoll relativ simpel ist (Klartext und umfassend dokumentiert), die Kombinationen aus Reiz/Reaktion gut erforscht sind sowie Webapplikationen eine sehr hohe Verbreitung finden. Weiterführende Implementierungen für anderweitige Angriffstechniken – wie zum Beispiel LDAP-Injection oder OS Command Injection – liessen sich nach dem selben Prinzip implementieren.

Fuzzing einer Directory Traversal-Schwachstelle

Diese Weiterentwicklung von Nessus ist wichtig und war dringend nötig. Der kommerzielle HTTP-Scanner N-Stalker hatte den exakt gleichen Schritt beispielsweise ebenfalls im umfassenden Rewrite der Version 2009 vollzogen. Denn nur damit kann den grundlegenden Schwächen des Produkts, das auf Reaktionen statt Aktionen setzt (auch ein grundlegendes Problem von Antivirus), entgegengetreten werden. Damit werden nun auch individuelle Applikationen, für die keine dedizierten Produkte-Plugin zur Verfügung stehen, erfolgreich angegriffen werden.

Über den Autor

Marc Ruef

Marc Ruef ist seit Ende der 1990er Jahre im Cybersecurity-Bereich aktiv. Er hat vor allem im deutschsprachigen Raum aufgrund der Vielzahl durch ihn veröffentlichten Fachpublikationen und Bücher – dazu gehört besonders Die Kunst des Penetration Testing – Bekanntheit erlangt. Er ist Dozent an verschiedenen Hochschulen, darunter ETH, HWZ, HSLU und IKF. (ORCID 0000-0002-1328-6357)

Links

Haben Sie Interesse an einem Penetration Test?

Unsere Spezialisten kontaktieren Sie gern!

×
Cyber Threat Intelligence

Cyber Threat Intelligence

Marc Ruef

3D Printing

3D Printing

Marc Ruef

Contact Tracing App DP3T

Contact Tracing App DP3T

Marc Ruef

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv