Ci sono vari modi per rendere un codice di esecuzione della macchina target. La maggior parte di essi sfrutta una sorta di iniezione di codice o inclusione di file remoti, basata su input utente non filtrato (il più delle volte).
Assumi il seguente servizio di caricamento file:
Un servizio fornisce example.com/upload_file.php
per consentire agli utenti di caricare file. Non è presente alcun controllo e i file caricati vengono memorizzati in example.com/uploads
, come si può notare dai caricamenti effettuati in passato. Carica evil.php
contenente il tuo codice dannoso e viene collocato in example.com/uploads/evil.php
.
Di solito, un utente si aspetterebbe di poter scaricare il file ma qui è diverso. Il server esegue questo file PHP con l'installazione di PHP. Usando questo, si può fare in modo che un server esegua un codice arbitrario. L'errore si trova nel server che non filtra l'input dell'utente e consente ciecamente di caricare i file, che possono essere eseguibili.
Questa è solo una (molto semplice) tecnica. Altri potrebbero sfruttare le Iniezioni SQL / Code come questa:
Un sito web ti consente di inserire un IP e il server esegue ping
su questo IP. Il tuo contributo potrebbe essere qualcosa come 8.8.8.8
, che va bene. 8.8.8.8NotAnIP
può essere meno fine, ma 127.0.0.1;rm -rf ~
, risultante in ping 8.8.8.8;rm -rf ~
in esecuzione sul server, in alcuni casi sarà sicuramente devastante.
La tua domanda è davvero ampia, poiché ci sono molti modi (creativi) per far eseguire codice alle macchine remote, ma spero che questo abbia fornito alcuni suggerimenti e idee.