Autor
|
Tema: Como bypassear función str_replace()? (Leído 3,852 veces)
|
Shell Root
Desconectado
Mensajes: 2.400
Alex Jurado
|
Supongamos que tenemos esta función: <?php function replace_sh($strTexto){ echo str_replace(">","[No]",str_replace("<","[No]",$strTexto));//Resultado }//End Function ?> Ingresaria algo como esto... <h1>Shell Root</h1> El resultado seria esto: [No]h1[No]Shell Root[No]/h1[No] Como Fuck, se puede bypassear esa función, es una duda que tengo desde hace raton, y le pregunte a Tomi, y no me entendio... xD
|
|
|
|
« Última modificación: 10 Marzo 2010, 06:58 por tooRllehS@xelA »
|
En línea
|
 ---
|
|
|
jdc
Desconectado
Mensajes: 3.228
janito dos cuatro...
|
Hace un tiempo pregunté mas o menos lo mismo en el foro de whk y al parecer sería con javascript algo como prueba.php?var=" onclick="alert(document.cookie)" algo mas no recuerdo xD Pero se deben cumplir ciertos requisitos al mostrar la variable, también podría ser con onload, la verdad no entendí muy bien xD
|
|
|
|
|
En línea
|
|
|
|
WHK
吴阿卡
Moderador Global
 
Desconectado
Mensajes: 3.944
The Hacktivism is not a crime
|
pues claro, todo depende como esté hecho el script, en que lugar pones esa función ya que así por si solo no impide xss si se encuentra dentro de un input o código javascript, etc debido a las comillas.
|
|
|
|
|
En línea
|
|
|
|
jdc
Desconectado
Mensajes: 3.228
janito dos cuatro...
|
Como me recomendaste esa vez mejor usar htmlspecialchars con ENT_QUOTES, aún asi sí quieres joder a los h4x0rs un rato podrías revisar la variable en busca de <, >, ' y " y lanzar un mensaje de "te estoy viendo eh!" ja ja ja
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.400
Alex Jurado
|
Como es una simple duda, es una funcion comun y corriente, que recibe como parametro el string para mostrarlo en la pagina, quitandole caracteres como < y >, la funcion en general es así: <?php function replace_sh($strTexto){ echo str_replace(">","[No]",str_replace("<","[No]",$strTexto)); }//End Function replace_sh("<h1>Shell Root</h1>"); ?> Hay forma de bypassearlo y generar un XSS?
|
|
|
|
« Última modificación: 10 Marzo 2010, 07:29 por tooRllehS@xelA »
|
En línea
|
 ---
|
|
|
jdc
Desconectado
Mensajes: 3.228
janito dos cuatro...
|
Sí lo muestras derecho en la página nop, sí por ejemplo está en el value de un input o dentro de parámetros de alguna etiqueta html sip Por ejemplo replace_sh($var) no es vulnerable <input type="text" value="'.replace_sh($var).'"> es vulnerable
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.400
Alex Jurado
|
mmm es verdad, bastaria con esto para generar un XSS. <?php function replace_sh($strTexto){ echo str_replace(">","[No]",str_replace("<","[No]",$strTexto)); }//End Function ?> <input type="text" value="<?php replace_sh(\"\"' onClick='alert(/XSS/);'"); ?>"> Interesante!  Entonces, definitivamente, no se puede generar un XSS mientras no este dentro de algo.
|
|
|
|
« Última modificación: 10 Marzo 2010, 07:53 por tooRllehS@xelA »
|
En línea
|
 ---
|
|
|
WHK
吴阿卡
Moderador Global
 
Desconectado
Mensajes: 3.944
The Hacktivism is not a crime
|
y porque no usar htmlspecialchars? es nativo de php y cumple bien su función.
Ahora también hay temas relacionados con la codificación de documento como utf-7 pero eso ya es otro tema.
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.400
Alex Jurado
|
y porque no usar htmlspecialchars? es nativo de php y cumple bien su función. Simon, pero como os dije al inicio, es una duda que tengo hace raton...
Ahora que entendí como es el bypasseo de la funcion str_replace(), con caracteres < y >. Ahora lo siguiente es incluir el caracter ". Así: <?php function replace_sh($strTexto){ echo str_replace("\"","[No]",str_replace(">","[No]",str_replace("<","[No]",$strTexto))); }//End Function ?> Ahora como seria ese bypasseo... Antes era algo así: \"' onClick='alert(/XSS/);' Ahora si pongo eso, el resultado seria: [No]' onClick='alert(/XSS/);' Que podria hacer en ese caso?
|
|
|
|
|
En línea
|
 ---
|
|
|
jdc
Desconectado
Mensajes: 3.228
janito dos cuatro...
|
SQLi xD Por sí acaso filtra la comilla simple también y los backslashes
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.400
Alex Jurado
|
mmm en el caso anterior no se podria generar un XSS  .
|
|
|
|
|
En línea
|
 ---
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 907
|
Hay mucha mas formas, pero también depende el entorno y donde vayas a usarlo xD, por ejemplo...
El codigo que usas se puede usar para detener XSS vía GET, mayormente se usa peticiones POST para enviar datos a hacia la BD pero ya el XSS puede convertirse en un XSS permanente y hay diferentes forma para ejecutar XSS, por eso te digo que depende mucho el ambiente, porque puedes ejecutar javascript desde CSS, llamando archivos externo, desde body, etc...
|
|
|
|
« Última modificación: 10 Marzo 2010, 18:02 por ~ Yoya ~ »
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.400
Alex Jurado
|
Hay mucha mas formas, pero también depende el entorno y donde vayas a usarlo xD, por ejemplo... Si seguimos el entorno en el que está es el siguiente: <input type="text" value="<?php replace_sh(\"o_O"); ?>">
|
|
|
|
|
En línea
|
 ---
|
|
|
jdc
Desconectado
Mensajes: 3.228
janito dos cuatro...
|
El xss permanente fue lo que mas me divirtio hace años cuando nacían los libros de visitas xD la gente decía... Hacker deja de molestar por favor, ja ja ja yo lo conocí como inyección html hasta que WHK me pregunto... "y sí inyecto javascript?" xD De todas formas siempre que quieras proteger tu página debes conocer el ataque que quieres parar, por ejemplo, como pasarías un SQLi sin saber como ejecutar uno? Para atacar hay que saber defender y viceversa
|
|
|
|
|
En línea
|
|
|
|
Pazador
Desconectado
Mensajes: 38
|
Como me recomendaste esa vez mejor usar htmlspecialchars con ENT_QUOTES, aún asi sí quieres joder a los h4x0rs un rato podrías revisar la variable en busca de <, >, ' y " y lanzar un mensaje de "te estoy viendo eh!" ja ja ja
y porque no usar htmlspecialchars? es nativo de php y cumple bien su función.
Ahora también hay temas relacionados con la codificación de documento como utf-7 pero eso ya es otro tema.
hay alguna diferencia si uso htmlentities("$X",ENT_QUOTES) ?? yo lo uso en lugar de htmlspecialchars 
|
|
|
|
|
En línea
|
La vida es un juego Mario Bross
|
|
|
|
|