
Proof-of-Concept-Exploit für die Ausführung beliebigen Codes über das DCP-URI-Schema von Real Player unter Ausnutzung von File Planting und Umgehung von ActiveX-Steuerelementen.
Real Player 'DCP://' URI: Sicherheitslücke für Remote-Ausführung beliebigen Codes
Video-Demo: https://youtu.be/AMODp3iTnqY
Das 'DCP://'-URI-Schema ist ein internes Protokoll, das von Real Player verwendet wird, um URLs abzurufen, die im Browser-Tab des Players angezeigt werden sollen. Es steht für 'Data Cache Protocol'. Es ruft Dateien aus '%appdata%\real\realplayer' ab. Bei diesen Dateien handelt es sich um einfache '.ini'-Dateien mit folgendem Code:
Das 'offlineurl'-Attribut scheint ignoriert zu werden, allerdings ist es möglich, beliebige URLs zu übergeben, einschließlich URLs zu lokalen Dateien und unsicheren 'Javascript:'-URIs.
Beispiel: dcp://custom.ini
Dies erzeugt potenziell eine universelle Cross-Site-Scripting-Bedingung (uXSS).
Real Player nutzt die Funktionalität von Microsoft Internet Explorer und stellt auf eine spezielle, anwendungsspezifische Art und Weise Eigenschaften und Methoden bereit:
Das 'external'-Objekt stellt mehrere benutzerdefinierte Methoden und Eigenschaften bereit.
Es ist nicht möglich, entfernte Dateien abzurufen, aber es ist möglich, übergeordnete Verzeichnisse (..) zu verwenden, um die Dateien abzurufen. Dafür können wir die Methode 'external::OpenURLInPlayerBrowser()' verwenden.
Durch die Kombination dieses Problems mit einem File-Planting-Problem bei der Methode 'external::RecordClip()' sind wir in der Lage, gültige '.ini'-Dateien (obwohl sie keine Erweiterung haben) an einem vorhersehbaren Speicherort abzulegen:
'Videos\RealPlayer Downloads'.
Durch das Ablegen von 2 Dateien und deren weitere Referenzierung über eine 'DCP://'-URI ist es möglich, eine URL zu referenzieren, die zu einer beliebigen Domäne oder "Sicherheitszone" (Windows-Sicherheitszonen) gehört, und dann benutzerdefinierten JavaScript-Code einzuschleusen.
Der PoC verwendet Code, der die Eingabeaufforderung für unsichere ActiveX-Steuerelemente "aushebelt" und MSHTA ausführt, das auf die zweite Datei verweist, die Code zum Ausführen von 'cmd.exe' enthält. Sie könnte z. B. eine eingebettete EXE enthalten.
Um dieses Problem zu reproduzieren, müssen Sie lediglich die Dateien bearbeiten und '%server%' durch den tatsächlichen Server- Hostnamen oder die IP-Adresse ersetzen. Ersetzen Sie außerdem '%username%' durch den tatsächlichen Windows-Benutzernamen des Ziels in den Dateien 'dcp1.txt' und 'rp_dcp.htm'.
Hinweis: Der Windows-Benutzername kann über Anfragen an einen SMB-Server oder WebDAV-Server ermittelt werden.
Betroffene Versionen: 16.0.3.51, Cloud 17.0.9.17, v.20.0.7.309 auf allen Windows-Versionen (XP bis 11)