Iniezione remota

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

Level 07

<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

Analisi di 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

Lo script