Más que enseñar a explotar esta vulnerabilidad para provocar un ataque de denegación de servicio, lo que busco es que los desarrolladores sepan la magnitud que puede tener una falla de este tipo (hay que encontrarle el lado white a las cosa :). Un ataque de denegación de servicio (DoS), como su nombre lo dice y en palabras simples, consiste en denegar un servicio para que éste deje de responder y se caiga. Este tipo de ataque se puede realizar de forma distribuida para que tenga mejor efecto, es decir, sincronizando y distribuyendo la carga y el ataque en distintas máquinas con el mismo objetivo.
(Imágen: https://nsl.cs.columbia.edu)
La teoría de esto es muy sencilla, pensemos que para hacer que un servicio deje de responder hay que hacer que se sature y esto se puede lograr de varias formas, muchas conexiones simultaneas, flood, synflood, etc. La forma que quiero enseñar es bastante más simple y consiste en modificar una consulta SQL, mediante SQL Injection, de manera tal que el servidor aumente considerablemente su carga y tiempo de respuesta hasta lograr el esperado denial of service.
Por ejemplo, pensemos en una tienda comercial que tiene en su base de datos miles (o millones) de productos, una tipica consulta para listar los productos de una categoría en particular sería:
SELECT id,producto,valor FROM productos WHERE categoria = (id de la categoría)
Y la URI sería algo como
https://sitio.com/tienda/productos.php?categoria=(id de la categoría).
Si este sitio permitiese inyectar código SQL podríamos modificar la consulta de manera tal que nos muestre todos los productos, sin importar la categoría, haciendo que la consulta quede de la siguiente forma:
SELECT id,producto,valor FROM productos WHERE categoria = (id de la categoría) OR 1 = 1
Para lograr esto, la dirección quedaría mas o menos asi:
https://sitio.com/tienda/productos.php?categoria=(id de la categoría)%20OR%201=1
Logrando que el sitio web nos muestre todos los productos y generando una carga mayor al servidor.
Si encontamos la forma de lograr la mayor carga en el servidor, podemos hacer un ataque sincronizado y distribuido para lograr nuestro objetivo: DDoS.
La distribución del ataque se puede realizar de distintas formas, muchos computadores atacando un sitio web o bien buscar las sitios web alojados en el mismo servidor o que usen el mismo recurso de base de datos y de esta forma generar más carga aún.
Está de más decir que esto es sólo una prueba de concepto y que si bien hay muchos sitios vulnerables a este tipo de ataque, la finalidad de todo esto es saber el alcance que puede tener una no-validación de datos.
Saludos.
Tambien otra forma seria hacerle consultas pesadas haciendo una productos cartesianos de las tablas que traen por default los motores. Por ejemplo en MySQL seria la information_schema.
Entonces en tu ejemplo. Hariamos una inyeccion asi
http://sitio.com/tienda/productos.php?categoria=(id de la categoria) and (select count(*) from information_schema.columns, information_schema.columns T1, information_schema.tables T2)
Atacando desde varios lugares hariamos un DoS.
Es mas eh probado en un target y con tan solo atacando una sola pc
Nos vemos
pero el iframe lo ejecuta "uno" no el site vulnerable a XSS seria cm hacer la peticion SQLi directamente, la vulnerabilidad XSS no tiene ningun aporte mas que ser un intermediario que retrasa la consulta.
quisas habria q analizar mas afondo un caso real.
pd: muy buen site sigue así.
ing.mujica@live.com.mx espero respuesta, para unirme a algun clan
SELECT * FROM categorias WHERE categorianombre = 'categoria';
como sería?
saludos
Por ej:
concat(md5(concat(concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf')),concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf')))),md5(concat(concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf')),concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf')))))
Y asi recursivamente.. Armando tu consulta asi:
1' or concat(md5(concat(concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf')),concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf')))),md5(concat(concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf')),concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf'))))) = concat(md5(concat(concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf')),concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf')))),md5(concat(concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf')),concat( md5( md5('asdf') ), concat( md5( md5('asdf') ), md5('asdf'))))) --
entiendes? La idea es sobrecargar el server con consultas estupidamente pesadas. Obviamente si lo haces una vez quiza no pase nada, pero si lo haces de forma distribuida podrias lograr un DoS o al menos un bloqueo temporal.
haber si por tirar una web jodeis algo :D
saludos
Puedes buscar en http://secureless.org sitios vulnerables a SQL Injection y aplicar los ejemplos del post y de los comentariosa.
Busacare en un rato mas material y lo publicare aqui mismo
porgfas
gracias
Ahora que si lo haceis por probar quiza os interese usar unos dummys que se lleven las cargas.
Ahora si lo que quereis es tirar un sitio como facebook quiza os interese mas vuscar otro tipo de vulneravilidades como las llamadas de php ;)
Un saludo
Yo lo se hacer ya lo he comprobado que si se puede y no importa si la web esta en un hosting de paga.
Mira resulta que yo encontre un chat en internet que trabaja con PHP MYSQL 5.1 , JQUERY Y AJAX. JAJJAJA Ese chat es muy facil de atacar con XSS permanente(aunke fue dificil conseguirlo para mi).
Mira yo puedo bloquear la BD(Base de datos) de forma temporal de ese chat.
A ver si logro que me entiendas....
Existe una pagina web con varios chats, esos chats funcionan con una base de datos mysql (esos chats estan hechos en mysql, php, javascript & jquery & Ajax). En esa base de datos se guarda los mensajes de todos los chats, se guardan Nicks, Ip, fecha y hora, mensaje.
Entonces yo se como introducir codigo Javascript y HTML a esos chats.
Yo tengo un script de Javascript alojado en DropBox.com que cuando ese script se ejecuta lo que hace es hacer FLOOD, ese script envia un mensaje "programado" a 3 chats (distintos que estan en la misma web y q comporten la misma base de datos) 10 veces por segundo, osea envia casi 10 mensajes en un segundo a esos 3 chats.
Entonces yo inyecto codigo javascript en 3 diferentes chats de esa misma web, yo inyecto este codigo:
Osea introduzco el script que hace el flood en 3 chat distintos de esa pagina web y lo hago de forma simultanea osea inyecto el codigo js en cada chat al mismo tiempo.
Entonces por cada persona que hayan en esos 3 chats se enviara a otros 3 chats 10 mensajes en un segundo.
En esos chats suelen haber hasta 8 o 9 personas al mismo tiempo chateando.
eso provoca que la base de datos se "sature" XD Y de Un Denial of Service temporal.
Cuando eso sucede y uno intenta entrar al cualquiera decesos chats la pagina nisiquiera se carga sino que imprime en pantalla el siguiente error:
Fatal error: Uncaught exception 'Exception' with message 'Unable to connect to the database, please check your configuration.' in /var/www/central/chat1/shoutbox/lib/shoutbox.class.php:80 Stack trace: #0 /var/www/central/chat1/shoutbox/lib/shoutbox.class.php(64): Shoutbox->connect_database() #1 /var/www/central/chat1/shoutbox/index.php(38): Shoutbox->__construct() #2 {main} thrown in /var/www/central/chat1/shoutbox/lib/shoutbox.class.php on line 80
Y YA VES ESTO LO HAGO CUANDO SE ME DA LA GANA Y ASI LE HAGO UN DENIAL OF SERVICE A LOS CHATS DE ESAS PAGINAS WEBS Y HE PROVAFO ESE SCRIPT UN MONTON DE VECES Y SIEMPRE ME FUNCIONA!
SALUDOS!!
ESTE DIA DURANTE LA TARDE LE ESTUVE HACIENDO UN FLOOD POTENTE A LA BASE DE DATOS DEL CHAT Y CUANDO YO HACIA EL FLOOD EL CHAT LANZABA UN ERROR QUE DECIAL ALGO ASI COMO QUE "Era imposible conectarse a la base de datos".
EN FIN CUANDO EL CHAT LANZABA ESE ERROR YO DEJABA DE HACER EL FLOOD OSEA DETENIA EL FLOOD . EN UNOS CUANTOS MINUTOS EL CHAT SE RECUPERABA Y VOLVIA A FUNCIONAR.
Y CUANDO YO VEIA QUE SE RECUPERABA LE VOLVIA A HACER FLOOD Y OTRA VEZ SE VOLVIA A CAER LA BASE DE DATOS.
Y SEGUI HACIENDO LO MISMO HASTA QUE SE CAYO LA PAGINA WEB COMPLETA!! ^__^
Y ESO QUE ES UNA PAGINA WEB QUE ESTA EN UN HOSTING DE PAGA ^__^
YO LA VERDAD NO ENTIENDO MUCHO DE "Seguridad y redes" NI DE ESTO PERO LO HIZE JEJEJE .
Yo tampoco es que tenga mucha, PERO Acabo de leer en un Libro PDF sobre "Ataques DDoS" que me descargue desde Google.
Donde se habla de las distintas formas de hacer el DDoS (Es muy bueno el librito).
Acabo de aprender que existe una Funcion de MYSQL que Ejecuta una Expresion el Numero de Veces que tu le indiques.
Eso crea un Bucle que consume muchisimo CPU en el servidor Sin gastar muchos recursos. Lo cual hace que no funcione la base de datos MYSQL y hasta QUE SE CAIGA LA PAGINA WEB COMPLETA ;)
Por ejemplo usando esa funcion tu haces que la expresion "1*1" se ejecute 7000000000000000000000 veces y eso crea un Bucle que consumiria mucho CPU y se haria un DDoS.
ESTO NO ES TEORIA!!
ES LA REALIDAD!! YO ACABO DE COMPROBARLO INYECTANDO ESA FUNCION EN UNA PAGINA WEB VUNERABLE Y EN MENOS DE UN MINUTO YO SOLO, CON UNA SOLA MAQUINA Y SIMPLEMENTE INYECTANDO ESA FUNCION LE HIZE UN DDoS A ESA WEB.
OBVIO NO VOY A DECIROS CUAL ES ESA FUNCION . POR QUE ES MUY FACIL Y RAPIDO HACER CAER CUALKIER PAGINA WEB VULNERABLE USANDO ESA FUNCION DE MYSQL.
SI KEREIS SABER CUAL ES LA FUNCION BUSCADLA EN GOOGLE (COMO HIZE YO, ESTUDIA SOBRE EL TEMA COMO HIZE YO ^_^)
ESA FUNCION TUMBA CUALKIER PAGINA WEB EN MENOS DE UN MINUTO!! LA PAGINA K YO ACABO DE TUMBAR ESTA EN UN HOSTING DE PAGA $$(DE ESAS QUE TIENEN "MAS RECURSOS") Y CAYO!!
SIMPLEMENTE INYECTANDOLE POR EL METODO POST CODIGO SQL , CON LA FUNCION K TE DIJE.
....
JAJAJA ACABO DE REVISAR SI LA PAGINA AUN SIGUE CAIDA Y EFECTIVAMENTE XD AUN ESTA CAIDA .. LA TUMBE HACE COMO 15 MINUTOS Y AUN SIGUE CAIDA JAJAJAJA NO LE FUNCIONA NADA A ESA PAGINA XD .. DDoS JAJAJAJAJA
ADIOS E INVESTIGUEN, SOLO QUERIA HACERLES SABER QUE SI QUIEREN TUMBAR UNA PAGINA WEB Y ESA WEB ES VULNERABLE A INYECCION SQL EXISTE UNA FUNCION DE MYSQL QUE PUEDE HACER EL DDoS POR TI (LITERALMENTE).
SI LA WEB ES VUNERABLE A SQL INJECTION NO NECESITAS USAR NINGUN PROGRAMA COMO "Hulk, Loic, Hoic, DDosHttp, etc" NI NINGUNO DE ESOS "Online".
Y BUENO SI QUIEREN SABER CUAL ES LA FUNCION ESTUDIEN Y BUSQUEN EN GOOGLE ^_^ QUE NO ES "Tan dificil" . Y LES HE DADO PISTAS SOBRE CUAL FUNCION ES ^_^(EN EL POST DE ARRIVA)
NO SE LAS DIGO POR AQUI POR QUE SE KE HAY GENTE "Mala".
Y ADEMAS SI TU ENCUENTRAS ESA FUNCION POR TI MISMO ESO QUIERE DECIR QUE NO ERES TAN UN LAMMER ^_^ JEJE
COMO PISTA LES DIRE QUE ESTA FUNCION EJECUTA UNA EXPRESION UN NUMERO DE VECES .
YA SE DIJE QUE NO LA HIBA A DECIR, PERO SI ESTA EN INTERNET... Y QUIEN REALMENTE ESTUDIA MYSQL LA CONOCE...
BUENO DE TODOS MODOS SE LAS DIGO:
EN EL METODO POST(OSEA INYECTANDO SQL POR UN FORMULARIO) SE HARIA ASI COMO EN ESTE EJEMPLO:
"+benchmark(70000000000000000000000000000000000000000000000000000000000000, 1*1) --"
SINO TE FUNCIONA CON LAS COMILLAS DOBLES , CAMBIALAS POR COMILLAA SIMPLES.
'+benchmark(70000000000000000000000000000000000000000000000000000000000000, 1*1) --'
YO INYECTE ESA FUNCION EN UN CHAT DONDE LOS MENSAJES SE GUARDAN EN UNA BASE DE DATOS MYSQL Y EL CHAT SE VA ABAJO POR MAS DE 1 HORA Y LANZA UN ERROR DE PHP...
SI COMBINAS ESO CON UN FLOOD DE PETICIONES HTTP POST PUEDS HACER CAER LA PAGINA COMPLETA ABAJO.
YO HIZE CAER LA MISMA PAGINA DEL CHAT ABAJO POR MAS DE 1 HORA.
EL ADMIN DEBE ESTAR "CABREADO" ... JEJEJE CADA VEZ QUE SU PAGINA SE "REPONE" YO SE LA VUELVO A TUMBAR .
TODO ESO YO LO HE HECHO DESDE UNA SOLA MAQUINA... SI TE DIJERA TE SORPRENDERIAS!...
Y LA PAGINA QUE YO TUMBE NO ES "UNA PAGINA PEQUE??A" ... ASI QUE!.