Esegui il comando bash quando spazi e '' / \? & | sono filtrati?

4

Ho un codice PHP che esegue comandi bash e ha un bug che potrebbe renderlo vulnerabile all'esecuzione di codice in modalità remota.

Il comando eseguito sarebbe $(id) , ma se eseguo qualsiasi altro comando come ls -la lo spazio viene automaticamente sostituito con - . Ho controllato anche la sorgente e ho scoperto che oltre agli spazi, sono stati filtrati i seguenti caratteri: ''/\<>?&| .

Come posso ignorare il filtro ed eseguire un comando come wget link ?

Demo live.

    
posta user2444995 09.04.2018 - 03:55
fonte

1 risposta

4

Se gli spazi sono filtrati ma non le schede, basta usare una scheda. Se entrambi sono filtrati ma $ non lo è, puoi utilizzare ${IFS} .

Se puoi eseguire sostituzioni e spazi di comando, può essere d'aiuto usare vari specificatori di formato printf , tr con intervalli e eval per raggiungere caratteri proibiti.

    
risposta data 09.04.2018 - 07:11
fonte

Leggi altre domande sui tag