Questa Tecnica di hacking permette di manipolare funzioni esistenti nei linguaggi di programmazione per le applicazioni web in modo da portare a compimento attacchi, agendo sul file System del web server da remoto permettendo quindi l’esecuzione di comandi arbitrari. Letteralmente si tratta di iniezioni di comandi inviati in input alle applicazioni web.
Molte applicazioni web usano le caratteristiche del sistema operativo e programmi esterni per visualizzare il contenuto di una directory, eliminare, modificare e creare file sul server, inviare e-email, eseguire comandi ad esempio ping, manipolare immagini, whois ecc. Queste funzioni, rendono i siti web più flessibili appoggiandosi a eseguibili di sistema preesistenti, tuttavia bisogna porre molta attenzione nel loro utilizzo per non permettere di eseguire comandi arbitrari.Quando un'applicazione Web invia le informazioni con una richiesta http attraverso un componente, l’input, deve essere attentamente controllato, altrimenti, un hacker potrebbe iniettare caratteri speciali e comandi ostili che verranno poi eseguiti dal sistema
Molte applicazioni web usano le caratteristiche del sistema operativo e programmi esterni per visualizzare il contenuto di una directory, eliminare, modificare e creare file sul server, inviare e-email, eseguire comandi ad esempio ping, manipolare immagini, whois ecc. Queste funzioni, rendono i siti web più flessibili appoggiandosi a eseguibili di sistema preesistenti, tuttavia bisogna porre molta attenzione nel loro utilizzo per non permettere di eseguire comandi arbitrari.Quando un'applicazione Web invia le informazioni con una richiesta http attraverso un componente, l’input, deve essere attentamente controllato, altrimenti, un hacker potrebbe iniettare caratteri speciali e comandi ostili che verranno poi eseguiti dal sistema
Alcuni comandi che possono essere vulnerabili all’attacco di command injection sono:
PHP
- require()
- include()
- eval()
- preg_replace() (with /e modifier)
- exec()
- passthru()
- `` (backticks)
- system()
- popen()
Perl
- open()
- sysopen()
- glob()
- system()
- '' (backticks)
- eval()
Java(Servlets, JSP's)
- System.* (especially System.Runtime)
C & C++
- system()
- exec**()
- strcpy
- strcat
- sprintf
- vsprintf
- gets
- strlen
- scanf
- fscanf
- sscanf
- vscanf
- vsscanf
- vfscanf
- realpath
- getopt
- getpass
- streadd
- strecpy
- strtrns
Questi tipi di attacchi vengono spesso utilizzati per:
- accedere al sistema operativo
- eseguire comandi che utilizzando perl php ecc.
- modificare i privilegi di accesso
- modificando il file system alcune volte questo può essere sostituito o eliminato
- modificare il comportamento delle applicazioni
Per attaccare con questa tecnica occorre iniettare codice nelle query string nei cookie e nei form
Un esempio di Command injection potrebbe essere l’esecuzione del comando “netstat -a”
che visualizza le porte aperte del server web esso può essere eseguito da remoto semplicemente iniettandolo via url nell'applicazione vulnerabile
Questi attacchi possono essere molto facili da scoprire e sfruttare. Per determinare se la nostra applicazione web è vulnerabile occorre cercare e filtrare tutte le chiamate alle risorse esterne presenti nelle pagine web del nostro sito è importante anche settare i giusti privilegi sul web server per l’esecuzione di particolari comandi .
Per ovvie ragioni non scendo nei dettagli dell'attacco, questo testo a solo l' obiettivo di mettere al corrente i web master dei pericoli che si corrono non proteggendo adeguatamente le applicazioni web
che visualizza le porte aperte del server web esso può essere eseguito da remoto semplicemente iniettandolo via url nell'applicazione vulnerabile
Questi attacchi possono essere molto facili da scoprire e sfruttare. Per determinare se la nostra applicazione web è vulnerabile occorre cercare e filtrare tutte le chiamate alle risorse esterne presenti nelle pagine web del nostro sito è importante anche settare i giusti privilegi sul web server per l’esecuzione di particolari comandi .
Nessun commento:
Posta un commento