Ysoserial e Jenkins commons collection exploit - cosa puoi fare?

4

Ho letto dell'exploit Jenkins del vulnerabilità di Commons Collections . Ho provato questo (legittimamente) su un sistema, ma non sono molto bravo in questo, quindi non riesco a ottenere molto. Qual è lo scenario peggiore se qualcuno approfitta di questa vulnerabilità? Cosa è possibile fare?

    
posta user16655 16.12.2015 - 09:21
fonte

3 risposte

3

Questa vulnerabilità è in realtà molto diffusa soprattutto nelle aziende che usano pesantemente Java. C'è un eccellente articolo scritto da Sijmen Ruwhof che copre questo argomento e come influisce su molti server e strumenti di applicazioni Java come Jenkins.

C'è anche un ottimo articolo scritto da Will Sargent che entra nei problemi con la serializzazione Java, i vari modi in cui può essere sfruttato e suggerisce alcune attenuazioni. Una delle attenuazioni consiste nell'installare l'agente Java NotSoSerial su tutte le JVM della tua rete. Questa sarebbe una soluzione più semplice a breve termine in attesa che tutte le applicazioni venissero riparate e ricostruite. Implica solo la modifica degli argomenti di avvio di JVM.

    
risposta data 16.12.2015 - 17:50
fonte
6

Continua a leggere nello stesso articolo e troverai:

This vulnerability is amazing. Runs in memory and isn’t going away anytime soon. Remote code execution in many many things including custom applications

Quindi questa vulnerabilità consentirà l'esecuzione remota come utente non privilegiato in molti casi. Da lì è spesso possibile elevare i privilegi, cioè superutente e magari attaccare altre macchine nella rete interna.

Ovviamente questo ha bisogno di input da parte di utenti malintenzionati. Se è possibile garantire che nessun input di questo tipo venga mai inviato all'applicazione, probabilmente si è sicuri. Probabilmente non puoi garantirlo per installazioni pubbliche. Potresti pensare di poterlo controllare per le installazioni interne, ma non ci conterei, perché le applicazioni interne ed esterne sono in genere entrambe accessibili dallo stesso browser. E utilizzando CSRF, XSS o attacchi simili, un sito esterno può danneggiare un sito interno utilizzando il browser come trampolino.

What is possible to do?

Questo è anche spiegato nel The Fix - Kind of ... parte del post. In effetti, è necessario correggere la libreria pertinente, sostituire la libreria con una fissa all'interno dell'applicazione e distribuire l'applicazione ovunque.

    
risposta data 16.12.2015 - 10:24
fonte
2

Oltre a ciò che altri hanno detto (i post di Blownie55 e Steffen Ullrich sono eccellenti), vorrei aggiungere un po 'di informazioni extra qui.

Scenario peggiore per i casi

What is the worst case scenario if someone takes advantage of this vulnerability? What is possible to do?

Se la tua applicazione è stata bersagliata con successo, allora questo attacco consente l'esecuzione di codice in remoto, il che significa che un utente malintenzionato può probabilmente qualsiasi cosa voglia al tuo sistema. Ciò consente loro di eseguire le proprie applicazioni, alterare il tuo codice non firmato, modificare il codice firmato se sono in grado di compromettere il repository di origine e, peggio ancora, accedere ai dati del cliente.

Qualsiasi macchina accessibile alla macchina compromessa dovrebbe essere considerata vulnerabile.

Nel peggiore dei casi, è essenzialmente una violazione dei dati dei clienti e / o degli utenti, o anche dei tuoi segreti commerciali - qualcosa che nessuna società legittima vorrebbe mai accadere.

Se stai utilizzando WebSphere, allora IBM ha rilasciato una patch per questo .

Determinazione della vulnerabilità

Prelevato dal sito Web di IBM : il profilo IBM WebSphere Application Server Liberty abilita solo il Collezioni Apache Commons se si utilizza UNA delle seguenti tre funzioni:

  • jsf-2.0
  • jsf-2.2
  • APP-2.0

Potresti essere vulnerabile se stai utilizzando una di queste funzionalità. Per determinare se sei vulnerabile puoi cercare nel file console.log per questo messaggio:

[AUDIT ] CWWKF0012I: The server installed the following features: [xxxxx]

Se al posto di xxxxx , non contiene nessuna di queste tre funzionalità elencate, quindi non sei vulnerabile.

Regole Snort IDS

Dovrai proteggere il tuo server dagli exploit in arrivo sulla rete. Snort è un sistema di rilevamento delle intrusioni che aiuta a prevenire l'accesso non autorizzato. Se stai usando Snort, ecco le regole che ti serviranno:

alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Java Object Calling Common Collection Function"; flow:to_server,established; content:"rO0ABXNyA"; content:"jb21tb25zLmNvbGxlY3Rpb25z"; fast_pattern; distance:0; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814811; rev:1;)

alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Java Object Calling Common Collection Function"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"commons.collections"; nocase; distance:0; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814812; rev:1;)

alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Java Object Generated by ysoserial"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"java/io/Serializable"; nocase; distance:0; content:"ysoserial/payloads/util/Gadgets"; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814813; rev:1;)

alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Groovy Java Object Generated by ysoserial"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"org.codehaus.groovy.runtime.ConversionHandler"; nocase; distance:0; content:"ysoserial/payloads/util/Gadgets"; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814814; rev:1;)

alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Spring Java Object Generated by ysoserial"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"org.springframework.core.SerializableTypeWrapper"; nocase; distance:0; content:"ysoserial/payloads/util/Gadgets"; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814815; rev:1;)

Aftermath

Poiché questo exploit ha consentito l'esecuzione di codice in modalità remota, è necessario eseguire una scansione forense del sistema interessato e di tutte le macchine a cui ha avuto accesso. C'è una possibilità che la tana del coniglio vada molto più in profondità. Tuttavia, questo tipo di sweep è un po 'troppo ampio per questa risposta.

    
risposta data 18.12.2015 - 02:43
fonte

Leggi altre domande sui tag