Effizientes Testen von Excel-Uploads

Dec 20, 2023 von Milan Bharanya

Microsoft Excel kommt immer noch sehr häufig zum Einsatz – trotz modernen Web Applikationen. Die Funktion des Exports und Imports von Excel-Dateien bietet eine Angriffsfläche für Kriminelle, weshalb dies mittels Penetration Tests geprüft werden sollte. Solche Schnittstellen umfassend und effizient auf allfällige Schwachstellen zu untersuchen, stellt sich jedoch meistens komplexer und aufwendiger dar, als dies initial den Anschein macht. Um unseren Kunden die bestmögliche Effizienz bei möglichst breiter Testabdeckung zu ermöglichen, haben wir eine Erweiterung für den Interception-Proxy Burp Suite programmiert, welche diese Komplexität reduziert und die Effizienz des Security Testers erhöht. So können wir diesen Angriffsvektor als Teil Ihres nächsten Web Penetration Tests noch umfassender und effizienter analysieren.


Excel wird weiter genutzt – mit Risiko

Moderne Anwendungen werden heute wenn immer möglich als Web Applikationen gebaut und sind via Web Browser erreichbar. Da sich durch die damit verbundene, erhöhte Exponiertheit auch die Risikoeinschätzung zwangsläufig ändert, bedingt dies erweiterte Sicherheitsvorkehrungen und vertiefte Überprüfungen. Regelmässig werden wir von unseren Kunden deshalb beauftragt Penetration Tests für Web Applikationen durchzuführen.

Bei der Modernisierung und Digitalisierung von Prozessen kommt jedoch trotz modernen Web Applikationen basierend auf den neusten Frameworks noch sehr häufig Microsoft Excel zum Einsatz. Exports und Imports von Excel-Dateien stellen einen einfachen Weg für Benutzer dar, komplexe Daten mit gewohnten Tools weiterzubearbeiten und zu verteilen. Dies öffnet aber auch einen neuen Angriffsvektor für potentielle Angreifer, welche solche Funktionen für bösartige Zwecke zu verwenden versuchen. Deshalb müssen diese im Rahmen eines Penetration Tests mit einem speziellen Augenmerk geprüft werden.

Burp Suite für Web Pentests – aber nicht für Excel?

Innerhalb von Redguard kommt zur Durchführung von Web Penetration Tests das Tool Burp Suite Professional zum Einsatz. Dabei handelt es sich um einen sogenannten “Interception-Proxy”, welcher uns erlaubt jegliche Kommunikation mit einer Web-Anwendung mitzulesen und beliebig zu verändern.


Dieses Tool erlaubt dem Security Tester auch, effizient sogenanntes “Fuzzing” zur Prüfung der Reaktion eines Endpunktes einzusetzen. Bei dieser Testart werden viele verschiedene Eingaben automatisiert an den Server gesandt, um eine passende Reaktion wie beispielsweise eine Fehlermeldung auszulösen. Je nach Ausprägung der Reaktion, verwendet ein erfahrener Security Tester diese dann gekonnt weiter und entwickelt daraus einen funktionierenden Exploit, um so beispielsweise sensitive Informationen auszulesen oder die Web Applikation vollständig zu übernehmen.

Da die Burp Suite als Interception Proxy standardmässig lediglich Fuzzing im Web-Protokoll ermöglicht, ist Fuzzing auf Basis des Inhaltes einer Excel-Datei innerhalb von Burp Suite standardmässig nicht möglich. Dies wird offensichtlich, sobald man sich den Request für einen Datei-Upload genauer anschaut:

Dabei ist direkt ersichtlich, dass es sich bei Excel-Dateien um ein Binärformat handelt, da solche Dateien aus komprimierten und gepackten Einzeldateien bestehen, welche auf Web-Ebene nur nicht wirklich sinnvoll modifiziert werden können, sodass die Gültigkeit des Dateiformates erhalten bleibt.

Unsere Erweiterung zur Burp Suite zum Testen von Excel

Um diesen Angriffsvektor in unseren Penetration Tests jedoch trotzdem sinnvoll abdecken zu können, entschieden wir uns eine eigene Erweiterung (oder BApp) für die Burp Suite zu programmieren und haben diese Sheet Intruder getauft. Basis dieser Erweiterung ist die brandneue Montoya API von Burp Suite, welche wir natürlich sogleich ausprobieren mussten. Dadurch wird es einem Plug-in möglich, sich in die internen Vorgänge und Prozesse der Burp Suite einzuklinken und diese beliebig zu verändern. Ziel unserer Erweiterung ist es dabei, innerhalb einer beliebigen Excel-Datei den Inhalt von einer oder mehreren Zellen aus der Burp Suite heraus zu modifizieren, wodurch ein Fuzzing auf Basis des Inhaltes der Excel-Datei möglich wird.

Schauen wir uns das anhand eines praktischen Beispieles an:

Als Ausgangspunkt nutzen wir eine klassische Excel-Datei mit beliebigem Inhalt unter dem Namen Sample.xlsx. Diese Datei kann beliebig an die Format- und Inhaltsvorgaben der Web Applikation angepasst werden. Zusätzlich wird neben XLSX auch das alte Dateiformat von Excel XLS unterstützt:

Durch die Installation der Erweiterung Sheet Intruder erlangen wir innerhalb der Burp Suite Zugriff auf einen zusätzlichen Tab. Darin spezifizieren wir im Sinne einer Grundkonfiguration den Pfad auf unsere Excel-Datei von vorhin, welche als Basis für jegliche Modifikation genutzt wird:


Durch die Verwendung eines speziell für Sheet Intruder definierten Syntaxes kann die definierte Excel-Datei Sample.xlsx nun in anderen Tabs der Burp Suite wie beispielsweise dem Repeater oder Intruder genutzt werden. Im Falle des Repeaters sieht das beispielsweise wie folgt aus:

Sobald dieser Request nun abgeschickt wird, sorgt unsere Erweiterung automatisch und für den Benutzer vollständig transparent dafür, dass die Excel-Datei Sample.xlsx als Basis herangezogen wird und jede Zelle mit dem Wert Montana durch den Wert My-Evil-String ersetzt wird. Ebenso werden alle Zellen mit dem Wert June mit dem Wert My-Other-Evil-String ersetzt. Innerhalb von Sheet Intruder nennen wir diese Technik “Value Replacement Mode”. Nachdem die gewünschte Modifikation vorgenommen wurde, wird die angepasste Excel-Datei wiederrum als Binärdatei eingesetzt und als gültiger Web-Request an den Webserver geschickt.

Da der definierte Syntax beispielsweise auch innerhalb vom Intruder genutzt werden kann, erlaubt dies dem Security Tester so ein einfaches Fuzzing auf Basis von Zellwerten innerhalb einer Excel-Datei, wobei ohne manuellen Aufwand eine ganze Liste an Payloads zuerst in das definierte Excel eingesetzt und dann an den Webserver geschickt werden kann:

Der Syntax von Sheet Intruder erlaubt dabei nicht nur simples Suchen und Ersetzen wie im obigen Beispiel demonstriert, sondern bietet auch Möglichkeiten zum Spezifizieren von Zellkoordinaten. Innerhalb von Sheet Intruder nennen wir diese Technik “Cell Replacement Mode”. Diese Technik wird folgendermassen spezifiziert und erlaubt neben dem Ersetzen von einzelnen Zellen auch das Ersetzen von Zellen fremder Sheets sowie ganzer Ranges:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<$SheetIntruderCell>
{
   "A1": "My-Evil-String",
   "B1": "My-Other-Evil-String"
}
</$SheetIntruderCell>

<$SheetIntruderCell>
{
   "A1": "My-Evil-String",
   "CustomSheet!B21": "My-Other-Evil-String-in-another-Sheet"
}
</$SheetIntruderCell>

<$SheetIntruderCell>
{
   "A1:B12": "My-Many-Evil-Strings",
   "CustomSheet!A1:D5": "My-Many-Other-Evil-Strings-in-another-Sheet"
}
</$SheetIntruderCell>

Erweiterung selbst ausprobieren?

Wenn Sie die Erweiterung gerne selbst ausprobieren möchten, dann finden Sie weitere Informationen und technische Details in unserem Github unter https://github.com/Redguard/Sheet-Intruder sowie in Kürze auch im BApp Store von PortSwigger.

Jetzt von noch effizienteren Pentests profitieren

Durch unsere Burp Suite-Erweiterung ist es unseren Security Testern in Zukunft möglich, diesen Angriffsvektor als Teil Ihres nächsten Web Penetration Tests bei uns noch umfassender und effizienter analysieren zu können. Nehmen Sie noch heute mit uns Kontakt auf für Ihr persönliches Angebot.


< zurück