Nessus generische Plugins für Webapplikationen

Nessus generische Plugins für Webapplikationen

Marc Ruef
by Marc Ruef
time to read: 8 minutes

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.

About the Author

Marc Ruef

Marc Ruef has been working in information security since the late 1990s. He is well-known for his many publications and books. The last one called The Art of Penetration Testing is discussing security testing in detail. He is a lecturer at several universities, like ETH, HWZ, HSLU and IKF. (ORCID 0000-0002-1328-6357)

Links

Are you interested in a Penetration Test?

Our experts will get in contact with you!

×
Ransomware Detection, Defense, and Analysis

Ransomware Detection, Defense, and Analysis

Marc Ruef

Data Markets

Data Markets

Marc Ruef

Password Leak Analysis

Password Leak Analysis

Marc Ruef

MITRE ATT&CK

MITRE ATT&CK

Marc Ruef

You want more?

Further articles available here

You need support in such a project?

Our experts will get in contact with you!

You want more?

Further articles available here