Konkrete Kritik an CVSS4
Marc Ruef
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:
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.
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.
Unsere Spezialisten kontaktieren Sie gern!
Marc Ruef
Marc Ruef
Marc Ruef
Marc Ruef
Unsere Spezialisten kontaktieren Sie gern!