bueno, hace ya unos dias estoy tratando de pensar como carajo sdc encontro la vulnerabilidad xss en la expresion regular de smf:
$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!?!?!?
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
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...
eso se llama ReDoS (Regular Denial of Service)
por ahi anda un tuto, mañana lo busco que ya me voy a dormir :P
jajajaj oka, pero deja yaq con el nombre yo lo busco...
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 (http://www.checkmarx.com/CxDownloadRequest.aspx?id=9))
haciendo un redos, se descuaranguija todo pudiendo despues inyectar comillas :D
descuaranguija?? jejeje q palabra tran tecnica
ok ya entendi
jejeje pasa que dije que lobuscaba, pero no lo encuentro xD! pero hay uno por el foro???
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
Lo que pasa es que php tiene un sistema de protección que cuando intentas causar una denegación de servicio atraves de una expresión regular entonces lo detiene y como se detiene retorna el valor no filtrado.
http://www.checkmarx.com/Upload/Documents/PDF/Checkmarx_OWASP_IL_2009_ReDoS.pdf
Gracias!!!! un saludo grande whk!