Este nivel me resultó muy divertido y me recordó a tiempos de Slackware 7.2 por lo menos, veamos.
En el directorio /home/flag07/ hacia cuyo usuario queremos elevar privilegios, nos encontramos varios ficheros:
– index.cgi
#!/usr/bin/perl use CGI qw{param}; print "Content-type: text/html\n\n"; sub ping { $host = $_[0] print("Ping results <pre>"); @output = `ping -c 3 $host 2>&1`; foreach $line (@output) { print "$line"; } print("</pre> &amp;nbsp; "); &amp;nbsp; } # check if Host set. if not, display normal page, etc ping(param("Host"));
– thttpd.conf ( Fichero de configuración de un servidor web liviano )
Observando el fichero de configuración nos dice el puerto que está escuchando las peticiones de dicho servidor web ( 7007 ), de manera que sabemos que por ahí van los tiros, el script en perl que hemos visto anteriormente lo que hace es ping hacia la dirección que le especifiquemos, y nos devuelve el resultado por el navegador ( fácil ), para ello he utilizado el software links2, ya que siempre que puedo aprovecho para usar este navegador por consola.
Este screen muestra la peticion GET que se hace a la dirección donde se encuentra alojado el script, en este caso http://192.168.1.33:7007/index.cgi
Vemos como, sin meterle ningún argumento nos muestra la salida del comando ping, a secas, pero vamos a realizar la petición que está en el cuadro de diálogo, para ver como responde el script, indicandole la dirección 192.168.1.38, el resultado es el siguiente :
El script funciona como se esperaba, lo único que tenemos que hacer aquí es otro Pipe para poder ejecutar el comando que queramos bajo los privilegios del usuario flag07, que es el owner del script en cuestión y al que como decimos queremos escalar privilegios. de la siguiente manera:
Vemos como se ha ejecutado la orden correctamente y nos muestra la info relacionada a la CPU de nuestro sistema, sólo nos queda ejecutar getflag para completar este nivel !