Per prima cosa ho alcune domande su Reverse shell.
COPERCHIO INVERSA
Sto cercando di capire la tecnica della Reverse Shell.
Il mio ragionamento è il seguente (sarei felice se potessi segnalare un errore a riguardo)
1) La shell inversa è diversa (direi il contrario) da una shell normale poiché in questo caso particolare il server remoto apre una connessione (la shell normale o diretta implica che il client stabilisce una connessione al server)
2) La shell inversa può ignorare i controlli del firewall poiché si tratta fondamentalmente di una connessione in uscita. I firewall dovrebbero proteggersi dalle connessioni in entrata (probabilmente questo potrebbe essere discutibile)
ATTACK
3) Inoltre, lo scenario seguente è fattibile? (Voglio dire, posso iniettare il comando attraverso un software proxy come ZAP?)
Scenario: un sito è vulnerabile ai dati di input dell'utente. Gli utenti inseriscono i dati attraverso un campo di testo.
Sistema operativo: GNU / Linux. Server: Apache / 2.2.15 X-Powered-By: PHP / 5.3.5
Supponiamo che attraverso un software proxy (come ZAP) dopo un controllo, tu sia in grado di farlo nota che c'è un campo che corrisponde al campo di input dell'utente disponibile attraverso l'interfaccia utente.
Il campo è chiamato: user_val
.
Detto questo, posso provare a iniettare un semplice separatore di comandi ";" che praticamente è come se imposti: user_val=;
Poi noto che ci sono alcuni file incorporati nella pagina web restituita dall'applicazione.
Wow, l'app è vulnerabile.
L'applicazione è vulnerabile, quindi è possibile interagire direttamente con il file system del server. Ora ... il problema nodoso (per me) 4) Il seguente comando è corretto? (Usando ZAP, cerco di aprire una shell inversa)
netcat -v -e '/bin/bash' -l -p 40552
-v (verbose), - e (quando viene stabilita una connessione esegue la shell Bash), -l (parametro per ascoltare una connessione) -p (consente di assegnare una porta per l'ascolto, qui la porta 40552), la porta scelta deve essere libera.
5) Quindi usando ZAP l'iniezione è il seguente codice corretto?:
user_val=; netcat -v -e '/bin/bash' -l -p 40552
Grazie mille (mi scuso per il post lungo).