strstr e fopen, c'è un bypass?

3

Ho un file binario che fa questo:

if (strstr(USERCONTROLLERSTRING, "..")) exit;
fopen(CurrentPath+"\Data\"+USERCONTROLLEDSTRING, "r");

quindi sputa tutto il contenuto del file. C'è qualche ovvia vulnerabilità qui?

È un servizio di Windows, funziona come SYSTEM, sto cercando di farlo leggere file sensibili come SAM o forse qualche altra vulnerabilità.

Controlla solo ".." e aggiunge la stringa arbitraria fornita dall'utente a CURRENTPATH+"\Data\" quindi chiama fopen

P.S. Codifica, unicode, base64,% -coding, ecc non funzioneranno come fa il strstr giusto prima della chiamata di fopen dopo tutta la decodifica. Ma questo è praticamente tutto, nessun altro controllo è fatto

P.P.S. È un EXE di Windows

    
posta JohnDoes 18.07.2018 - 17:54
fonte

1 risposta

1

La documentazione di Windows include una sezione riguardante Considerazioni sulla sicurezza: Funzionalità internazionali potrebbe valere la pena di leggere, in particolare con la normalizzazione Unicode.

Per rispondere alla tua domanda: nel vuoto, supponendo che l'utente non abbia accesso al sistema se non attraverso il tuo programma, il tuo codice va bene.
Detto questo, se un utente malintenzionato ha accesso a determinate funzionalità, ad esempio la creazione di collegamenti simbolici / giunzioni di directory, potrebbe essere possibile ignorare il controllo di sicurezza. Dovrebbero semplicemente creare una giunzione di directory all'interno della directory \Data che punta altrove, quindi accedere ai file attraverso il nodo.

Inoltre, tieni presente che l'attaccante può avere il controllo sulla variabile che hai etichettato come CurrentPath . In Windows, è possibile eseguire un programma con una directory di lavoro specificata anche se quella directory non è quella in cui risiede l'eseguibile. Combinata con i nodi di directory, se esiste una posizione che l'utente malintenzionato può creare giunzione di directory, possono potenzialmente sfruttare il tuo programma.

Infine, vale la pena notare che NTFS ha dei bei caratteristiche di nicchia . Inoltre, Windows supporta più file e directory schemi di denominazione . Non sono sicuro se qualcuno di questi sia direttamente sfruttabile in questa situazione, ma vale la pena tenerlo a mente.

    
risposta data 19.07.2018 - 00:29
fonte