Vulnerabilidades en Expresiones Regulares, ¿cómo?

Iniciado por Castg!, 3 Febrero 2010, 23:21 PM

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

Castg!

bueno, hace ya unos dias estoy tratando de pensar como carajo sdc encontro la vulnerabilidad xss en la expresion regular de smf:
Código (php) [Seleccionar]
$data = preg_replace(array('~(?<=[\s>\.(;\'"]|^)((?:http|https|ftp|ftps)://[\w\-_%@:|]+(?:\.[\w\-_%]+)*(?::\d+)?(?:/[\w\-_\~%\.@,\?&;=#+:\'\\\\]*|[\(\{][\w\-_\~%\.@,\?&;=#(){}+:\'\\\\]*)*[/\w\-_\~%@\?;=#}\\\\]?)~i', '~(?<=[\s>(\'<]|^)(www(?:\.[\w\-_]+)+(?::\d+)?(?:/[\w\-_\~%\.@,\?&;=#+:\'\\\\]*|[\(\{][\w\-_\~%\.@,\?&;=#(){}+:\'\\\\]*)*[/\w\-_\~%@\?;=#}\\\\])~i'), array('[url]$1[/url]', '[url=http://$1]$1[/url]'), $data);

estuve primero averiguando sobre expresiones regulares obvio xD! y una base se, ahora esto ya es avanzado.. pero como lo hiciste!?!?!?

kamsky

no se muy bien a que vulnerabilidad te refieres, pero a mi se me ocurre  que una posible forma de explotar patrones o expr. regulares es introducir una cadena que haga que él patrón siempre se cumpla de forma que se entre en una especie de bucle infinito y se pete el asunto
----NO HAY ARMA MÁS MORTÍFERA QUE UNA PALABRA BROTADA DE UN CORAZÓN NOBLE, Y UN PAR DE HUEVOS QUE LA RESPALDEN---

                       hack 4 free!!

Castg!

apa!! como es eso? que siemple se cumpla? como seria?? esa cadena que puse anteriormente es de un bug de smf, se hizo una competencia de "Hackea a elhacker.net". no se si te acordas...

WHK

eso se llama ReDoS (Regular Denial of Service)
por ahi anda un tuto, mañana lo busco que ya me voy a dormir :P


isseu

pero tengo entendido que redos causa un dos ¿o no? y lo que quieren causar es un xss
(paper redos http://www.checkmarx.com/CxDownloadRequest.aspx?id=9)

Castg!

haciendo un redos, se descuaranguija todo pudiendo despues inyectar comillas :D

isseu

descuaranguija?? jejeje q palabra tran tecnica
ok ya entendi

Castg!

jejeje pasa que dije que lobuscaba, pero no lo encuentro xD! pero hay uno por el foro???

tragantras

un redos segun tengo entendido es algo así como que el tiempo de cómputo para determinar si la expresion es "valida" excede unos límites razonables, dándose por váilida la cadena entera, permitiendose así la inyección de caracteres especiales



segun entendí cuando lo pusieron por aqui... xD
Colaboraciones:
1 2