
Report tecnico e proof-of-concept per CVE-2020-15778, una vulnerabilità di iniezione di comandi autenticata in OpenSSH scp (<=8.3p1) che consente l'esecuzione remota di codice tramite payload con backtick nei percorsi dei file.
Indirizzo email : [email protected]
Linkedin : www.linkedin.com/in/chinmay-pandya
Prodotto: Openssh
Componente interessato: SCP
scp è un programma per copiare file tra computer. Usa il protocollo SSH. È incluso di default nella maggior parte delle distribuzioni Linux e Unix
Durante la copia di file su un server remoto, il percorso del file viene aggiunto alla fine del comando scp locale. Ad esempio, se si esegue il seguente comando
scp SourceFile user@host:directory/TargetFile
eseguirà un comando locale
scp -t directory/TargetFile
Al momento della creazione del comando scp locale, il nome del file non viene sanificato. Un attaccante può passare un payload con backtick come nome del file e, quando il comando scp locale viene eseguito, la shell locale eseguirà anche il payload con backtick.
Esegui il seguente comando con scp
scp /sourcefile remoteserver:'`touch /tmp/exploit.sh`/targetfile'
Dopo aver eseguito questo comando, vai sul server remoto e vedrai nella directory /tmp/ che il file exploit.sh è presente. Mettere le virgolette singole nel nome del file è importante per prevenire l'esecuzione del payload sulla shell locale; in alternativa, usare caratteri di escape come le virgolette singole nel nome del file può prevenire l'esecuzione del payload sulla shell locale
QUESTO È UN EXPLOIT AUTENTICATO E RICHIEDE CREDENZIALI SSH / SCP VALIDE PER ESEGUIRE COMANDI SUL SERVER REMOTO
Il comando scp è un protocollo storico (chiamato rcp) che si basa su quel tipo di passaggio di argomenti e incontra problemi di espansione. È stato molto difficile aggiungere "sicurezza" al modello scp. Tutti i tentativi di "rilevare" e "prevenire" trasferimenti anomali di argomenti hanno un'alta probabilità di rompere i flussi di lavoro esistenti. Sì, riconosciamo che la situazione fa schifo. Ma non vogliamo rompere i semplici modelli per cui le persone usano scp, finché non esiste un sostituto comune. Le persone dovrebbero usare rsync o qualcos'altro se sono preoccupate.
Codice per SCP - https://github.com/openssh/openssh-portable/blob/master/scp.c