Foros del Web » Programando para Internet » PHP »

¿ataque php?

Estas en el tema de ¿ataque php? en el foro de PHP en Foros del Web. como es esto posible @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original if ( isset ( $_POST [ 'url' ] ) ) {     $url = ...
  #1 (permalink)  
Antiguo 26/07/2016, 20:40
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
¿ataque php?

como es esto posible

Código PHP:
Ver original
  1. if (isset($_POST['url'])){
  2.     $url=$_POST['url'];
  3.    
  4.     if(strlen($url)>100)
  5.     {
  6.         header("location: index.php?v=url menor a 100 caracteres");
  7.         exit;
  8.     }
  9.     if($url=="")
  10.     {
  11.         header("location: index.php?v=Falta agregar la url");  
  12.         exit;
  13.     }
  14.      if(stristr($url,"http://")==false )
  15.      {
  16.           if(stristr($url,"https://")==false )
  17.           {
  18.              header("location: index.php?v=La url es invalida debe ser http o https");
  19.              exit;           
  20.           }      
  21.      } 
  22. }
la persona logro insertar el # en el campo url
y no me habia percatado de ese error garrafal siendo que lo habia visto ya hace varios meses casi el año.

¿como es eso posible?
como pudo burlar esas validaciones?

de antemano gracias
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #2 (permalink)  
Antiguo 26/07/2016, 23:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿ataque php?

Pues en ningún momento validas que hacer en caso contrario de que la URL no tenga http:// ni https:// así que podría colocar incluso "x" y pasaría tus validaciones.

Además poder introducir "#" está muy lejos de ser considerado un ataque, no lo es, es un descuido tuyo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/07/2016, 09:55
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: ¿ataque php?

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues en ningún momento validas que hacer en caso contrario de que la URL no tenga http:// ni https:// así que podría colocar incluso "x" y pasaría tus validaciones.

Además poder introducir "#" está muy lejos de ser considerado un ataque, no lo es, es un descuido tuyo.
justo en estas lineas estoy validando lo que dices que no valido XD

Código PHP:
Ver original
  1. if(stristr($url,"http://")==false )
  2.      {
  3.           if(stristr($url,"https://")==false )
  4.           {

Y en el caso contrario de que si lo tenga, guardo la url..
No necesito poner un else por que es lo mismo, si no entra a las condiciones las pasa y ejecuta la instruccion que sigue, en este caso guardar la url que empiece con http:// o https://
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #4 (permalink)  
Antiguo 27/07/2016, 10:04
Avatar de fishdesign  
Fecha de Ingreso: abril-2011
Ubicación: Málaga
Mensajes: 389
Antigüedad: 13 años
Puntos: 95
Respuesta: ¿ataque php?

En esas validaciones no aparece ningún control para el #, ni tan siquiera para meter query strings...

No conozco el contexto del script, pero como validación/seguridad, no tiene mucho sentido ese código
__________________
Web Designer.
Themes-Up!, próximamente
  #5 (permalink)  
Antiguo 27/07/2016, 10:44
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: ¿ataque php?

Cita:
Iniciado por fishdesign Ver Mensaje
En esas validaciones no aparece ningún control para el #, ni tan siquiera para meter query strings...

No conozco el contexto del script, pero como validación/seguridad, no tiene mucho sentido ese código
mas adelante hago un saneamiento para inyecciones sql, se supone que todo entra como texto plano, tal y como el usuario lo escribe.
pero aquí el detalle es como a pesar de esas condiciones paso desapercibido el #
aunque alli no diga explicitamente sobre #..
esa condicion jamas permitiria que pasara el # únicamente..
podria pasar el #http:// , esa validación no la tengo, pero el # solo jamas pasaria, se supone..
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #6 (permalink)  
Antiguo 27/07/2016, 11:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿ataque php?

El símbolo # no es dañino, sencillamente estás validando mal todo: debes verificar que sí sea una URL completa, no sólo comprobar partes de ella.

Busca en el manual sobre la extensión filter, ya tiene dichas validaciones.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 27/07/2016, 12:12
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: ¿ataque php?

Cita:
Iniciado por fishdesign Ver Mensaje
En esas validaciones no aparece ningún control para el #, ni tan siquiera para meter query strings...

No conozco el contexto del script, pero como validación/seguridad, no tiene mucho sentido ese código
De hecho ayer apenas me entere de ella, pero gracias por recordarmelo :), es que esa validación ya tiene mucho y también cuando ocurrió eso.
independientemente de validar si la url esta bien o está mal.

es posible que el simbolo # como unico caracter en el campo se brinque esas validaciones??

Osea
Código PHP:
Ver original
  1. if (isset($_POST['url'])){
  2.     $url=$_POST['url'];
  3.    
  4.     if(strlen($url)>100)
  5.     {
  6.         header("location: index.php?v=url menor a 100 caracteres");
  7.         exit;
  8.     }
  9.     if($url=="")
  10.     {
  11.         header("location: index.php?v=Falta agregar la url");  
  12.         exit;
  13.     }
  14.      if(stristr($url,"http://")==false )
  15.      {
  16.           if(stristr($url,"https://")==false )
  17.           {
  18.              header("location: index.php?v=La url es invalida debe ser http o https");
  19.              exit;          
  20.           }      
  21.      }  
  22. }
  23.  
  24. echo $url;

en pantalla sale #
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #8 (permalink)  
Antiguo 27/07/2016, 14:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿ataque php?

Cita:
en pantalla sale #
Porque no tienes nada para un else, por lo cual simplemente termina las condiciones IF e imprime lo que haya recibido...

En serio, tendrías que ser mas meticuloso en lo que va sucediendo y lo que pasa luego. Sencillamente el código que pones solo valida que hacer en cierta condiciones, pero no qué debe hacer en caso de no corresponder a false. Validas solo lo que e true.

Por su lado, el caracter "#" en el acceso a bases de datos como MySQL, por ejemplo, simplemente elimina todo lo que sigue, porque se usa para comments, es decir, comentarios en la misma linea. Todo lo que sigue a ese caracter es ignorado sin mas, por lo que no es, como ya te dijeron, un caracter "dañino" o peligroso ne ese sentido.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 27/07/2016, 14:59
 
Fecha de Ingreso: enero-2015
Mensajes: 205
Antigüedad: 9 años, 2 meses
Puntos: 18
Respuesta: ¿ataque php?

Código PHP:
Ver original
  1. if (isset($_POST['url'])){
  2.     $url=$_POST['url'];
  3.    
  4.     if(strlen($url)>100)
  5.     {
  6.         header("location: index.php?v=url menor a 100 caracteres");
  7.         exit;
  8.     }
  9.     if($url=="")
  10.     {
  11.         header("location: index.php?v=Falta agregar la url");  
  12.         exit;
  13.     }
  14.      if(stristr($url,"http://")==false )
  15.      {
  16.   // AQUI  --->
  17.           if(stristr($url,"https://")==false )
  18.           {
  19.              header("location: index.php?v=La url es invalida debe ser http o https");
  20.              exit;          
  21.           }      
  22.      }  
  23. }
  24.  
  25. echo $url;


Se queda dónde te he dicho, // AQUI--->
como luego no entra en el if de más abajo no te marca tu mensaje y te muestra por pantalla el echo $url; al seguir la ejecución del código.


puedes controlarlo con un OR y juntar los dos IFs.

No se si me he explicado correctamente.
  #10 (permalink)  
Antiguo 27/07/2016, 15:59
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: ¿ataque php?

Cita:
Iniciado por Nedned Ver Mensaje
Código PHP:
Ver original
  1. if (isset($_POST['url'])){
  2.     $url=$_POST['url'];
  3.    
  4.     if(strlen($url)>100)
  5.     {
  6.         header("location: index.php?v=url menor a 100 caracteres");
  7.         exit;
  8.     }
  9.     if($url=="")
  10.     {
  11.         header("location: index.php?v=Falta agregar la url");  
  12.         exit;
  13.     }
  14.      if(stristr($url,"http://")==false )
  15.      {
  16.   // AQUI  --->
  17.           if(stristr($url,"https://")==false )
  18.           {
  19.              header("location: index.php?v=La url es invalida debe ser http o https");
  20.              exit;          
  21.           }      
  22.      }  
  23. }
  24.  
  25. echo $url;


Se queda dónde te he dicho, // AQUI--->
como luego no entra en el if de más abajo no te marca tu mensaje y te muestra por pantalla el echo $url; al seguir la ejecución del código.


puedes controlarlo con un OR y juntar los dos IFs.

No se si me he explicado correctamente.
Si entendi, en vez de if anidados meter el mismo resultado de las 2 condiciones en una sola..

En cuanto a lo que me dijeron de lo que hay que hacer en el else,
eso se sustituye por los headers..
osea si se cumple la condición que esta validando que los datos sean incorrectos entonces los desvía para el mensaje de error.. en caso contrario pasa de lado las condiciones y hace los inserts que tiene que hacer cuando está todo correcto.
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #11 (permalink)  
Antiguo 19/08/2016, 14:58
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: ¿ataque php?

solo por curiosidad ese script en que version de PHP esta corriendo?? si es de php5.3 o anterior puedo suponer que se debe a REGISTER_GLOBALS

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:36.