L’iniezione remota è un’iniezione che avviene mediante un vettore di attacco remoto
I dati delle richieste e delle risposte sono trasmessi tramite protocollo TCP/IP
I dati delle richieste contengono iniezioni per uno specifico linguaggio
I dati delle richieste sono ricevuti tramite un protocollo applicativo e inoltrai ad altri asset tramite un altro protocollo applicativo
<aside> 🚩
L’utente flag07 stava scrivendo il suo primissimo programma in Perl, che gli permetteva di pingare degli host per verificare se fossero raggiungibili dal server web
</aside>
L’obiettivo della sfida è l’esecuzione del programma /bin/getflag
con i privilegi dell’utente flag07
L’utente può accedere alla directory /home/flag07
che contiene file di configurazione di bash e altri due file index.cgi
e thttpd.conf
Visualizziamo i metadati di index.cgi
ls -l /home/flag07/index.cgi
-rwxr-xr-x 1 root root ... /home/flag07/index.cgi
→ il file index.cgi
è leggibile ed eseguibile da tutti gli utenti, modificabile solo da root ed è SETUID
index.cgi
#!/usr/bin/perl
use CGI qw{param};
print "Content-type: text/html\\n\\n";
sub ping {
$host = $_[0];
print("<html><head><title>Ping results</title></head><body><pre>");
@output = `ping -c 3 $host 2>&1`;
foreach $line (@output) { print "$line"; }
print("</pre></body></html>");
}
# check if Host set. if not, display normal page, etc
ping(param("Host"));
Lo script riceve input
Host=IP
se invocato tramite linea di comandoGET /index.cgi?Host=IP
se invocato tramite un server WebLo script