Libros o recursos para aprender sobre las distitnas versiones de SQL y otras BD?

Iniciado por @XSStringManolo, 21 Noviembre 2019, 18:56 PM

0 Miembros y 2 Visitantes están viendo este tema.

@XSStringManolo

Busco contenido intensivo que no se ande con rodeos sobre las diferentes versiones de SQL (PostgreSQL, MSSQL, MySQL, Oracle) y otras bases de datos como Mongo, MariaDB etc.

Orientado a explotación e inyecciones. Por ejemplo hay distintas formas de consultar la versión de la BD:
SELECT version()
SELECT @@version
SELECT version FROM v$instance
SELECT FROM PRODUCT_COMPONENT_VERSION
etc.


Me interesa aprender sobre los distintos métodos de mappeo, inyecciones, mensajes de error, vulnerabilidades... Con el objetivo de encontrar fallos de seguridad.

mr-medi

Hace poco me acabe de leer el libro de "Hacking y seguridad de paginas web" de Mundo Hacker y tiene un capitulo dedicado a SQL Injection y sus variantes.
Primero se se centra en aprender a construir las sentencias sql en base a mensajes de error para luego inyectarlas y conseguir información que no debería ser accesible como por ejemplo, obtener nombres de tablas, bases de datos accesibles, y sus datos correspondientes, después explica las particularidades en Mysql y Oracle aunque no de un modo muy intensivo. También hace hincapié en subir una webshell,BulkInsert, blind sql injection basado en true/false y en retardos de tiempo,
Lo que mola es que te enseña a hacer las cosas a mano dejando las herramientas de lado.

Por otro lado tengo pendiente de leer "SQL Injection Attacks and Defense" que aquí si que profundiza en estas versiones MySQL, Oracle SQL, SQL Server, PostgreSQL y parece muchos más intensivo que el anterior. Lo único es que no puedo opinar al respecto pero cuando lo lea si eso te digo.

Saludos

<?php
       header
("Location: TheHackerWay");

@XSStringManolo

De cuantas páginas es el primero? Podría estar bien si tienen bastante contenido que ando muy verde en estos temas. El segundo que mencionas apunta en la dirección de lo que busco. Gracias!

mr-medi

En total tiene unas 324 páginas pero el capitulo dedicado a sql injection consta de 80 sin contar que tambien cuenta con un capitulo de 20 paginas para evadir tecnicas de WAF.
Si lo que buscas es aprender las bases de sql injection y otros ataques comunes como XSS,File Inclusion, Session Fixation, Command Injection y algunas cosillas con HTML5 como WEBSOCKETS para escanear puertos, redes y WEBWORKERS para crackear hashes o crear Botnets te podria ser util.

Respecto a sql cogerás la soltura necesaria para conseguir explotar cualquier pagina vulnerable y extraer datos sustanciosos. La verdad es que el primer día que empece a leer el capitulo de sql injection probé en una pagina de mi entorno a introducir las comillas con sentencias SQL y el libro me guio bastante para extraer información valiosa. Por supuesto reporte el fallo, de hecho fui en persona y se lo demostré detalladamente pero a día de hoy no lo han corregido, aunque es una historia que tiene tela y es la primera vez que reporto algo.

De todos modos si no te acaba de convencer algo preguntame que tengo el libro a mano.

<?php
       header
("Location: TheHackerWay");

@XSStringManolo

Muy buena pinta. Apuntados!

Yo tengo reportado algunos SQLi. Encontré bastantes usando Dorks con cse(custom search engines) de Google. Simplemente con la cadena mágica y también algunos metiendo comillas y guiándome por los errores de a base de datos. Pero los Blind SQLi ni que me maten, no los entiendo en absoluto. Entiendo el concepto pero no la metodología. Supongo que eso es práctica y ya.

Lo que más e encontrado son CSRF, supongo porque los entendí a la primera hace tiempo.

En el último año también he encontrado un montón de XSS de todo tipo. Sobre todo reflected.

Algunos de estos bugs en páginas de usuarios del foro. Siempre que veo algún link le suelo hacer pentest for fun.

Ando mirando también los poliglotas, hay cosas muy chulas.

mr-medi

Con búsquedas avanzadas es bastante fácil encontrar webs vulnerables, por desgracia demasiado. Me acabas de recordar que tengo pendiente hacer un programa en java con librerías para automatizar navegadores y hacer búsquedas avanzadas para obtener webs vulnerables a sql injection y en caso de serlo que me las guarde en un txt  ;D.

Las blind es cuando no te queda mas remedio que usarlas, yo lo que entiendo de las que se basan en retardos de tiempo es que si pones una función para que espere x segundos y se cumple es que esta ejecutando la sentencia introducida pero también tienes que tener en cuenta tu conexión y es difícil dominar esa técnica.

Pues un foro que tenga XSS puedes armar el caos y si se te da bien la ingenieria social ni te cuento. Yo hace poco encontré algo curioso en una pagina y es que por ejemplo la url es así 'www.ejemplo/index.php?mensaje=hola'. Si cambias el parámetro GET por '?mensaje[]=hola' en la pagina te sale 'Array' tal cual, como interpretando código php pero no salta ningún Warning.

Lo de poliglotas no lo había oído nunca xD, tengo que informarme sobre eso.

También hace poco me metí en una pagina de bug bounty para ponerme a prueba pero con los WAF la cosa se complica.

<?php
       header
("Location: TheHackerWay");

@XSStringManolo

Cita de: MetaNoia en 28 Noviembre 2019, 23:36 PMCon búsquedas avanzadas es bastante fácil encontrar webs vulnerables, por desgracia demasiado. Me acabas de recordar que tengo pendiente hacer un programa en java con librerías para automatizar navegadores y hacer búsquedas avanzadas para obtener webs vulnerables a sql injection y en caso de serlo que me las guarde en un txt  ;D.
Oh, me encanta tu idea. Puedes usar los Dorks para sacar un montón de resultados y crawlear los sitios mientras vas testeando. Para probar en formularios puedes usar javascript con el método submit(). Puedes hacer una web desde la cual llames a Java utilizando una Interfaz O correr el javascript desde el propio Java usando WebKit con WebView, GetSettings y javascript enable usando LoadUrl para cargar tus documentos prediseñados con código HTML y javascript. O directamente zumbándole el javascript en la Url usando el Pseudo-Protocolo de javascript con load Url. Yo al estar 99% del tiempo en Android, es de las herramientas que más uso. Aunque perfectamente se puede crear un HTML sin limitaciones, cargar la web y poner la url del HTML en local. Así se ejecuta en el mismo contexto.

Cita de: MetaNoia en 28 Noviembre 2019, 23:36 PMLas blind es cuando no te queda mas remedio que usarlas, yo lo que entiendo de las que se basan en retardos de tiempo es que si pones una función para que espere x segundos y se cumple es que esta ejecutando la sentencia introducida pero también tienes que tener en cuenta tu conexión y es difícil dominar esa técnica.
Ando a tope aprendiendo de SQLi! Tengo que buscar páginas legales para ir practicando.

Cita de: MetaNoia en 28 Noviembre 2019, 23:36 PMLo de poliglotas no lo había oído nunca xD, tengo que informarme sobre eso.
Un políglota es un script que contiene varias formas distintas de explotar una o más vulnerabilidades a la vez. Por ejemplo varias inyecciones HTML y XSS en un mismo script. Si el elemento es vulnerable a alguno de los métodos que contiene el script salta. Así puedes probar con un mismo script varios payloads a la vez. https://github.com/0xsobky/HackVault/wiki/Unleashing-an-Ultimate-XSS-Polyglot
En el foro de dudas generales, diría que es en el último de los libros del listado de hacking se usan poliglotas, y temas muy interesantes que no se tocan en otros libros. Es una joya.

Cita de: MetaNoia en 28 Noviembre 2019, 23:36 PMPues un foro que tenga XSS puedes armar el caos y si se te da bien la ingenieria social ni te cuento. Yo hace poco encontré algo curioso en una pagina y es que por ejemplo la url es así 'www.ejemplo/index.php?mensaje=hola'. Si cambias el parámetro GET por '?mensaje[]=hola' en la pagina te sale 'Array' tal cual, como interpretando código php pero no salta ningún Warning.
Ostrás. Lo busqué y parece que puede llegar a ser un fallo gordo: https://security.stackexchange.com/questions/127808/is-array-injection-a-vulnerability-and-what-is-the-proper-term-for-it nunca se me ocurriría probar algo así. lol.

mr-medi

Cita de: @?0!,5^34 en 29 Noviembre 2019, 12:09 PM
Oh, me encanta tu idea. Puedes usar los Dorks para sacar un montón de resultados y crawlear los sitios mientras vas testeando. Para probar en formularios puedes usar javascript con el método submit(). Puedes hacer una web desde la cual llames a Java utilizando una Interfaz O correr el javascript desde el propio Java usando WebKit con WebView, GetSettings y javascript enable usando LoadUrl para cargar tus documentos prediseñados con código HTML y javascript. O directamente zumbándole el javascript en la Url usando el Pseudo-Protocolo de javascript con load Url. Yo al estar 99% del tiempo en Android, es de las herramientas que más uso. Aunque perfectamente se puede crear un HTML sin limitaciones, cargar la web y poner la url del HTML en local. Así se ejecuta en el mismo contexto.
Tenia pensado usar las librerías de HTMLUnit y Selenium porque tengo varios proyectos relacionados con navegadores y cogi cierta soltura pero me ha gustado tu idea de crear un html con javascript y desde ahí llamar a métodos de java. En temas de programación android no estoy muy metido pero no me cierro puertas a aprender nuevas cosas.

Si buscas una pagina donde practicar retos de hacking web y criptografía puede que te interese esta https://www.hackerone.com/. En el fondo es una pagina dedicada al bug bounty pero tiene una sección de CTF  con varias dificultades y bastante variados y suele llevar sus días resolver cada uno.
Pero si lo que buscas es sqli a secas ahí me pillas, yo lo que hago para estas cosas es programar una pagina en php vulnerable a sql injection,XSS,etc y ver todo lo que puedo hacer. Por ejemplo en un panel de login que he hecho uso la conexión de mysqli y descubrí que no permite ejecutar mas de una consulta tal que así  : " ; update usuarios set nombre="pepe" # ", siendo eso lo que pongo en el campo de email a la hora de iniciar sesión y en base a esos problemas voy intentando descubrir todas las posibilidades que me permite esa inyección.

Cuando lo haya conseguido lo que haré es incrementar la dificultad usando consultas preparadas y a ver si de algún modo es posible saltarse esa medida.

Lo que mola de hacer eso es que ves las dos caras de la moneda, por un lado aprendes a saltarte la seguridad y por otro aprendes a adoptar buenas practicas de programación para evitar esos incidentes. De hecho tengo un proyecto bastante completo en php que simula una agencia de viajes pero con fallos de seguridad a posta. Si quieres te lo paso para que lo eches un ojo, todavía me queda perfilar algunas cosas pero lo que es la parte funcional esta hecha.
Cita de: @?0!,5^34 en 29 Noviembre 2019, 12:09 PM
Un políglota es un script que contiene varias formas distintas de explotar una o más vulnerabilidades a la vez. Por ejemplo varias inyecciones HTML y XSS en un mismo script. Si el elemento es vulnerable a alguno de los métodos que contiene el script salta. Así puedes probar con un mismo script varios payloads a la vez. https://github.com/0xsobky/HackVault/wiki/Unleashing-an-Ultimate-XSS-Polyglot
En el foro de dudas generales, diría que es en el último de los libros del listado de hacking se usan poliglotas, y temas muy interesantes que no se tocan en otros libros. Es una joya.
Lo echo un vistazo y me apunto el libro.


Muchas gracias por toda la info.

<?php
       header
("Location: TheHackerWay");

@XSStringManolo

Cita de: MetaNoia en 29 Noviembre 2019, 23:59 PM
Tenia pensado usar las librerías de HTMLUnit y Selenium porque tengo varios proyectos relacionados con navegadores y cogi cierta soltura pero me ha gustado tu idea de crear un html con javascript y desde ahí llamar a métodos de java. En temas de programación android no estoy muy metido pero no me cierro puertas a aprender nuevas cosas.

Si buscas una pagina donde practicar retos de hacking web y criptografía puede que te interese esta https://www.hackerone.com/. En el fondo es una pagina dedicada al bug bounty pero tiene una sección de CTF  con varias dificultades y bastante variados y suele llevar sus días resolver cada uno.
Pero si lo que buscas es sqli a secas ahí me pillas, yo lo que hago para estas cosas es programar una pagina en php vulnerable a sql injection,XSS,etc y ver todo lo que puedo hacer. Por ejemplo en un panel de login que he hecho uso la conexión de mysqli y descubrí que no permite ejecutar mas de una consulta tal que así  : " ; update usuarios set nombre="pepe" # ", siendo eso lo que pongo en el campo de email a la hora de iniciar sesión y en base a esos problemas voy intentando descubrir todas las posibilidades que me permite esa inyección.

Cuando lo haya conseguido lo que haré es incrementar la dificultad usando consultas preparadas y a ver si de algún modo es posible saltarse esa medida.

Lo que mola de hacer eso es que ves las dos caras de la moneda, por un lado aprendes a saltarte la seguridad y por otro aprendes a adoptar buenas practicas de programación para evitar esos incidentes. De hecho tengo un proyecto bastante completo en php que simula una agencia de viajes pero con fallos de seguridad a posta. Si quieres te lo paso para que lo eches un ojo, todavía me queda perfilar algunas cosas pero lo que es la parte funcional esta hecha.Lo echo un vistazo y me apunto el libro.


Muchas gracias por toda la info.
En la de hackone no sé si estoy registrado, podría ser. La volveré a chequear, creo que anduve por ella no hará ni 3 semanas. Por las que mas ando son las de hackthissite.org y root-me.org me hice más de la mitad de los retos de ClientSide solo con el pseudo-protocolo jajaja. Me encantaría testear tu preyecto (si puedo correrlo sin pc en Android o en un hosting o algun sitio).

Yo normalmente uso mis propias bases de datos con mis cifrados, etc. Estuve pensando en montar varias DB MySQL en ByetHost simplemente para trastear con inyecciones. En algún momento lo haré jaja