Iniezione di comando OS remoto - test

3

Lo scanner ZAP ha rilevato l'iniezione di comando del SO remoto.

C'è qualche modo infallibile per verificare se funziona e non è un falso positivo?

Ho provato a farlo dormire per 50 secondi ma non è qualcosa che posso vedere visivamente, anche la pagina non sembra impiegare più tempo per caricare.

Questo è l'URL che lo scanner ha trovato vulnerabile:

http://*SECRET*/*SECRET*?from&to

Questo è l'exploit:

Attack: ACG"&sleep 5s&"

Quindi presumo di dover scrivere l'URL in questo modo per sfruttarlo:

http://*SECRET*/*SECRET*?from=ACG&sleep 5s&to=AMR

Quanto sopra non sembra rendere la pagina più lunga da caricare. O ho fatto un refuso, o forse non è vulnerabile in quanto l'URL viene disinfettato in:

ACG&sleep%205s&to=AMR
    
posta k1308517 30.03.2016 - 11:57
fonte

2 risposte

5

Gli scanner automatici di vulnerabilità producono spesso falsi positivi con payload basati sulla temporizzazione.

Questo perché lo scanner controlla solo se la richiesta impiega più tempo della pausa iniettata. Se c'è un elevato traffico di rete - probabilmente perché lo scanner produce molte richieste - questo può accadere anche se il payload non è stato eseguito.

Ciò significa che dovresti sempre confermare manualmente i payload basati sulla tempistica (come dovresti confermare ogni altro risultato).

Non mi è chiaro quale sia il vero carico utile qui. Ci sono davvero due possibilità:

  • & è inteso per essere codificato, quindi la stringa di query sarebbe: ?from=ACG%22%26sleep%205s%26%22&to=AMR . Questo è il caso probabile. Il parametro vulnerabile sarebbe from e il carico utile sarebbe ACG%22%26sleep%205s%26%22 . Uscirebbe dal contesto di stringa corrente tramite " , quindi aggiungerebbe un comando aggiuntivo tramite & (che può essere usato per aggiungere comandi aggiuntivi in windows e linux), e infine liberare il% di trascinamento" aggiungendo un altro comando tramite & .
  • & non è inteso per essere codificato, quindi devi aggiungere un parametro aggiuntivo denominato sleep%005s senza valore (meno probabile, ma ancora possibile).

Dovresti provare entrambe le varianti, prima con un comando che produce un risultato visibile - come id , ls , dir , ecc. - e poi con un comando di temporizzazione come sleep .

    
risposta data 30.03.2016 - 12:46
fonte
1

sleep inserisce solo il thread nel sonno, se non del tutto. Prova qualcosa come

curl your.server.tld/whatever

e controlla se la richiesta arriva nei tuoi log del server.

Questo potrebbe non essere decisivo se la richiesta non viene soddisfatta, però.

Il traffico esterno potrebbe essere bloccato o l'arricciatura non installata o qualsiasi altra cosa potrebbe andare storta.

    
risposta data 30.03.2016 - 12:14
fonte