
Vulnerabilità RCE in Apache Struts 2.0 - Consente a un attaccante di iniettare comandi del sistema operativo in un'applicazione web tramite l'header content-type
Vulnerabilità RCE di Apache Struts 2.0
Questo è uno script per sfruttare CVE-2017-5638 - Consente a un attaccante di iniettare comandi del sistema operativo in un'applicazione web tramite l'header content-type.
Apache Struts 2 è un framework open-source per applicazioni web utilizzato per sviluppare applicazioni web Java EE. Usa ed estende l'API Java Servlet per incoraggiare gli sviluppatori ad adottare un'architettura model–view–controller (MVC).
Durante l'ultima settimana di marzo 2017, un hacker di Apache Struts che si fa chiamare "Nike Zheng" ha pubblicato un exploit proof-of-concept pubblico mostrando quanto facilmente qualcuno possa eseguire comandi del sistema operativo da remoto su un server Apache Struts 2 vulnerabile.
La vulnerabilità, CVE-2017-5638 - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5638, consente l'esecuzione remota di codice (RCE) non autenticata tramite un valore Content-Type appositamente predisposto in una richiesta HTTP. Un attaccante può creare un valore non valido per Content-Type che farà generare un'eccezione al software vulnerabile. Quando il software prepara il messaggio di errore per la visualizzazione, un difetto nel parser Jakarta Multipart di Apache Struts fa sì che il valore Content-Type dannoso venga eseguito invece di essere visualizzato.
Dal rilascio di questo exploit pubblico, sono state osservate un gran numero di scansioni alla ricerca di server Apache vulnerabili. Poiché l'exploit è davvero facile da eseguire, chiunque può sfruttare macchine vulnerabili da remoto con estrema facilità. Sono stati quindi segnalati frequenti exploit a seguito del gran numero di scansioni.
Uno dei nostri clienti ci ha chiesto di scansionare tutti i loro IP poiché utilizzavano in gran parte il vulnerabile framework Apache Struts 2 e non avevano registrazioni esatte di quali IP (server web) stessero eseguendo un framework Apache vulnerabile. C'erano quasi mille IP da testare.
Il cliente ha richiesto di presentare tutti i domini vulnerabili insieme all'indicazione se si trattasse di un server Linux o Windows. Per evitare il noioso compito di scansionare ogni IP singolarmente, ho scritto un piccolo script.
Lo script combina le seguenti funzioni/attività: