SQL Injection a Shell

Iniciado por nuclan, Septiembre 01, 2015, 11:23:09 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Septiembre 01, 2015, 11:23:09 AM Ultima modificación: Septiembre 02, 2015, 01:27:51 PM por Expermicid
Buenas, estoy realizando un pentest a una web y le encontré una inyección SQL la cual tiene privilegios root de mysql y puedo leer /etc/passwd

Quiero subir shell pero no se el path completo de la web, tampoco hay ningún FPD por la web, por lo que debo sacar el path por lógica o mediante el LOAD_FILE()

Se que el servidor es nginx, he probado a intentar cargar los archivos por defecto de access.log y error.log para que me tire el path de la web pero no lo encuentro, por eso pido ayuda si alguien puede darme algún consejo para conseguir el path completo, como por ejemplo otras rutas de error.log de nginx u otro método para sacar el path teniendo LOAD_FILE()

Saludos y gracias de antemano.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta lo que se me ocurre es que con LOAD_FILE() trates de cargar algún archivo de configuración que pueda contener el path del servidor como el típico "config.php", o si no buscar por reverseip las webs alojadas en el mismo server y tratar de ver si alguna tiene FPD y te pueda decir la ruta del servidor para inyectar la shell, y si no pudiste con ninguna de las ideas que te di, proba con algún bruteforce que trate de a "adivinar" la ruta del server, como por ejemplo el que trae SQLMap.

Saludos!

Septiembre 02, 2015, 07:01:47 AM #2 Ultima modificación: Septiembre 02, 2015, 07:04:27 AM por nuclan
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta lo que se me ocurre es que con LOAD_FILE() trates de cargar algún archivo de configuración que pueda contener el path del servidor como el típico "config.php", o si no buscar por reverseip las webs alojadas en el mismo server y tratar de ver si alguna tiene FPD y te pueda decir la ruta del servidor para inyectar la shell, y si no pudiste con ninguna de las ideas que te di, proba con algún bruteforce que trate de a "adivinar" la ruta del server, como por ejemplo el que trae SQLMap.

Saludos!
@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ya conseguí sacar el path de la web, para quien lo quiera saber lo que hice fue leer el archivo de configuracion que estaba en /etc/nginx/nginx.conf

El problema es que leer archivos si tengo permiso, pero escribir no. Ni siquiera en /tmp, algo que no entiendo muy bien ya que cuando inyecté para ver los permisos todo me tiraba "Y" y "root". Leyendo ficheros he sacado hasta la contraseña de root de mysql pero los servidores de base de datos he visto que estan en su red local y sin subir una shell no puedo hacer pivoting.

Tambien pense en usar la opcion --sql-shell de sqlmap y logearme como root para desde ahi hacer INTO OUTFILE, pero tampoco funciona esa shell.

No se si a alguien se le ocurre alguna otra idea que me ilumine, pero por le momento no se me ocurre que mas intentar.

Saludos

La verdad que es raro, por que si tenes en YES el permiso FILE() en MYSQL  tendrías que poder crear un archivo y subir una shell tranquilamente, ya que la única limitación que tiene es que no se pueden sobre escribir archivos ya creados. Ahora lo que mas me llamo la atención es que no te deje escribir en /tmp/ siendo un directorio que siempre tiene permisos de escritura (por cierto no es accesible desde la web, por lo que no tiene sentido subir algo ahí), yo  diría que nginx.conf no te dio bien la ruta del servidor, yo tengo una shell en un servidor con nginx y la ruta que da ese archivo (/var/www/) no es para nada la misma de donde esta la web vulnerable (/websites/site.com/ ) por lo que FILE no encuentra ruta para escribir la shell.

PD: Cuando tengas bien la ruta te recomiendo meter la shell directamente en un directorio de uploads de imágenes, casi siempre tienen permisos 777

Saludos!

Septiembre 02, 2015, 04:24:48 PM #4 Ultima modificación: Septiembre 18, 2015, 09:17:44 AM por nuclan
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
La verdad que es raro, por que si tenes en YES el permiso FILE() en MYSQL  tendrías que poder crear un archivo y subir una shell tranquilamente, ya que la única limitación que tiene es que no se pueden sobre escribir archivos ya creados. Ahora lo que mas me llamo la atención es que no te deje escribir en /tmp/ siendo un directorio que siempre tiene permisos de escritura (por cierto no es accesible desde la web, por lo que no tiene sentido subir algo ahí), yo  diría que nginx.conf no te dio bien la ruta del servidor, yo tengo una shell en un servidor con nginx y la ruta que da ese archivo (/var/www/) no es para nada la misma de donde esta la web vulnerable (/websites/site.com/ ) por lo que FILE no encuentra ruta para escribir la shell.

PD: Cuando tengas bien la ruta te recomiendo meter la shell directamente en un directorio de uploads de imágenes, casi siempre tienen permisos 777

Saludos!
Exacto, se que escribir en /tmp es una tonteria sin un LFI, pero sabiendo que ahi siempre hay permisos de escritura queria comprobar si la consulta devolvía false al igual que si intento escribir en el path de la web.
La ruta que me dio nginx.conf esta perfecta, ya que con LOAD_FILE() me he visto el codigo fuende de media web xD
El usuario en sí no es root, pero tiene privilegios de tal, te adjunto una imagen para que lo veas. La verdad es que es raro y deberia dejar de escribir.

Si quieres verlo tu mismo podemos hacer un teamviwer y te haces una idea de lo que pasa
Saludos amigo

Mi conexión a Internet esta bajisima y por el momento apenas puedo ingresar al foro. Esos datos están bien y tendría que dejarte crear un archivo, proba como te dije anteriormente en un directorio de imágenes  o alguno que veas en la estructura de la web y que parezca con permisos para eso, y si no, lo único que se me ocurre es que la inyección puede estar mal.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Mi conexión a Internet esta bajisima y por el momento apenas puedo ingresar al foro. Esos datos están bien y tendría que dejarte crear un archivo, proba como te dije anteriormente en un directorio de imágenes  o alguno que veas en la estructura de la web y que parezca con permisos para eso, y si no, lo único que se me ocurre es que la inyección puede estar mal.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta He probado a intentar subirlo a otros directorios sin éxito, como ya me temia. Si no me deja escribir en /tmp, difícilmente me dejara escribir en otros directorios. Quiza sea que mysql si tiene permisos pero no el servidor nginx. Si me dejara conectarme con --sql-shell de sqlmap podria intentar acceder a otros servidores de base de datos de su red local ya que tengo las credenciales pero esa función no me funciona en sqlmap y manual, la verdad no se como hacerlo, he googleado pero sin resultados.

Y sino, aprobechando que tengo LOAD_FILE() que mas archivos podría cargar para intentar conseguir algo útil? tipo a logs para ftp,comandos de sistema como .bash_history...etc

Primero diría que quizás la inyección pueda estar mal echa y por eso no crea el archivo, y por otra parte podrías fijarte si los datos de logeo a la DB MYSQL concuerdan con los del FTP (Me ocurrió muchas veces), y esos logs que nombras de ftp y .bash_history no creo que te sirvan de mucho, y como ultima medida quizas con un reverse ip puedas llegar a esa web.

Saludos!

Septiembre 04, 2015, 04:56:38 PM #8 Ultima modificación: Septiembre 04, 2015, 06:27:35 PM por nuclan
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Primero diría que quizás la inyección pueda estar mal echa y por eso no crea el archivo, y por otra parte podrías fijarte si los datos de logeo a la DB MYSQL concuerdan con los del FTP (Me ocurrió muchas veces), y esos logs que nombras de ftp y .bash_history no creo que te sirvan de mucho, y como ultima medida quizas con un reverse ip puedas llegar a esa web.

Saludos!
La inyecion esta bien, no es nada del otro mundo. El select 1,2,3,4,0x333c3c3c.... into outfile '/var/www/web/imagenes/file.php'. Es más, el sqlmap tampoco puede subir la shell con los dos metodos que tiene. Hice un reverse DNS y un lookup de dominios, que metiro el del webmail, subdominio de admin y otros. Ya probe a conectarme al puerto de mysql que me consta en los archivos de configuracion pero parece ser que no aceptan conexiones desde fuera de la red local, como suele ocurrir. Tendre que correr un nmap en todos los servidores que encuentre para encontrar el puerto ssh y ftp que estan cambiados y probar con las credenciales de mysql. Otra cosa ya no se me ocurre

EDIT: no usan ftp, solo ssh y no permite logear con usuario y contraseña, solo con llave RSA. La version mas desactualizada que he encontrado ha sido OpenSSH 6.0.p1

que tal NUCLAN, me preguntaba si lograste hacer algo con esto?

tengo exactamente el mismo problema solamente que yo si puedo escribir en /tmp .... pero no me deja en el /www/web/dir ...

de hecho mi injeccion es tanto por sqlmap como manual ... y manual me da error:

Can't create/write to file '/var/www/web/udx.php' (Errcode: 13)

si alguien sabe como lograr escribir sin tener permisos alli ...

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
que tal NUCLAN, me preguntaba si lograste hacer algo con esto?

tengo exactamente el mismo problema solamente que yo si puedo escribir en /tmp .... pero no me deja en el /www/web/dir ...

de hecho mi injeccion es tanto por sqlmap como manual ... y manual me da error:

Can't create/write to file '/var/www/web/udx.php' (Errcode: 13)

si alguien sabe como lograr escribir sin tener permisos alli ...
No amigo, debe tener restricción de escritura en esas carpetas vía apache.
Prueba a intentar escribir la shell en carpetas de imágenes que suelen tener permisos 755.
Si no te funciona, te puedo aconsejar que mediante load_file() vayas leyendo el código fuente y buscando otras vulnerabilidades.
si encuentras un LFI ya esta todo hecho, simplemente subiendo la shell a /tmp y cargándola con el LFi

Saludos

nuclan, no usan ftp??, son muchos dominios alojados ahi?, si la respuesta es "si" entonces tiene q tener sftp....

Se me ocurre q veas el config.php de los demas dominios, y si encontras el sftp podes probar dichas credenciales de mysql en el sftp, quizas alguna sea igual para entrar. Tambien las mismas creedenciales las podes probar en el admin (directorio de cada web).

Y sino la mas simple la cual todavia no vi que te hayan recomendado hasta el momento es... tenes un SQL, podes consultar la DB, fijate si podes ver todas las DB's, el objetivo es lograr encontrar las creedenciales del admin de alguna web, entrar al admin de la web y buscar un upload, bypasseas el upload y listo.

Saludos.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
nuclan, no usan ftp??, son muchos dominios alojados ahi?, si la respuesta es "si" entonces tiene q tener sftp....

Se me ocurre q veas el config.php de los demas dominios, y si encontras el sftp podes probar dichas credenciales de mysql en el sftp, quizas alguna sea igual para entrar. Tambien las mismas creedenciales las podes probar en el admin (directorio de cada web).

Y sino la mas simple la cual todavia no vi que te hayan recomendado hasta el momento es... tenes un SQL, podes consultar la DB, fijate si podes ver todas las DB's, el objetivo es lograr encontrar las creedenciales del admin de alguna web, entrar al admin de la web y buscar un upload, bypasseas el upload y listo.

Saludos.
Pues el tema es que no es un servidor compartido. Es justo todo lo contrario, son varios servidores para una misma web
Aún sigo sin poder subir shell xD

Hola @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, me tiene intrigado ese target, muchas veces encontramos graves agujeros de seguridad, pero eso no significa que en su mayoria nos den acceso al server, o bien no sea facil conseguirlo, pero en este caso confio en que tiene que haber alguna manera de entrar. Si no te molesta pasarme la url por privado para testear, ando con tiempo de sobra!.

Saludos!.
Web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Twitter: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta