Foros del Web » Programando para Internet » PHP »

paginator 1.6.3 con fallo xss

Estas en el tema de paginator 1.6.3 con fallo xss en el foro de PHP en Foros del Web. Hola. Hace unos dias comentaba un error en paginator 1.6.3. El cual con ayuda hemos resuelto facilmente http://www.forosdelweb.com/f18/pagin...-error-936617/ sin embargo he vuelto a encontrar un ...
  #1 (permalink)  
Antiguo 16/08/2011, 18:42
 
Fecha de Ingreso: noviembre-2009
Mensajes: 64
Antigüedad: 14 años, 5 meses
Puntos: 1
paginator 1.6.3 con fallo xss

Hola.

Hace unos dias comentaba un error en paginator 1.6.3. El cual con ayuda hemos resuelto facilmente

http://www.forosdelweb.com/f18/pagin...-error-936617/

sin embargo he vuelto a encontrar un fallo, que al parecer es en la propagación de url.

digamos que estas es la url a la pagina 2

el problema esta, no entiendo bien, en que el ataque xss se aprovecha de un posible fallo en la propagación de la url y altera la url. eso lo descubri con el acunetix.



es decir, intercambia _pagi_pg por tema y viceversa

es un xss no persitente, pero me gustaria arreglar este problemilla.

a continuación pongo parte del codigo.


Código PHP:
/*
 * Propagación de variables por el URL.
 *------------------------------------------------------------------------
 */
 // La idea es pasar también en los enlaces las variables hayan llegado por url.
 
$_pagi_enlace $_SERVER['PHP_SELF'];
 
$_pagi_query_string "?";
 
 if(!isset(
$_pagi_propagar)){
     
//Si no se definió qué variables propagar, se propagará todo el $_GET (por compatibilidad con versiones anteriores)
    //Perdón... no todo el $_GET. Todo menos la variable _pagi_pg
    
if (isset($_GET['_pagi_pg'])) unset($_GET['_pagi_pg']); // Eliminamos esa variable del $_GET
    
$_pagi_propagar array_keys($_GET);
 }elseif(!
is_array($_pagi_propagar)){
    
// si $_pagi_propagar no es un array... grave error!
    
die("<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
 }
 
// Este foreach está tomado de la Clase Paginado de webstudio
 // (http://www.forosdelweb.com/showthread.php?t=65528)
 
foreach($_pagi_propagar as $var){
     if(isset(
$GLOBALS[$var])){
        
// Si la variable es global al script
        
$_pagi_query_string.= $var."=".$GLOBALS[$var]."&";
    }elseif(isset(
$_REQUEST[$var])){
        
// Si no es global (o register globals está en OFF)
        
$_pagi_query_string.= $var."=".$_REQUEST[$var]."&";
    }
 }

 
// Añadimos el query string a la url.
 
$_pagi_enlace .= $_pagi_query_string;
 
//------------------------------------------------------------------------


/*
 * Generación de los enlaces de paginación.
 *------------------------------------------------------------------------
 */
 // La variable $_pagi_navegacion contendrá los enlaces a las páginas.
 
$_pagi_navegacion_temporal = array();
 if (
$_pagi_actual != 1){
    
// Si no estamos en la página 1. Ponemos el enlace "primera"
    
$_pagi_url 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_primera</a>";

    
// Si no estamos en la página 1. Ponemos el enlace "anterior"
    
$_pagi_url $_pagi_actual 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_anterior</a>";
 } 

la verdad no se bien como resolverlo, pero creo que se podría pasar la cadena de variables que forma la url en el motor del blog directo a paginator

ustedes que dicen?

saludos
  #2 (permalink)  
Antiguo 18/08/2011, 12:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: paginator 1.6.3 con fallo xss

De hecho, parece que lo unico que tienes que hacer es definir $_pagi_propagar antes de incluir el script del paginator, revisa esta parte:

Código PHP:
Ver original
  1. // Codigo de paginator:
  2.  
  3. /*
  4.  * Propagación de variables por el URL.
  5.  *------------------------------------------------------------------------
  6.  */
  7.  // La idea es pasar también en los enlaces las variables hayan llegado por url.
  8.  $_pagi_enlace = $_SERVER['PHP_SELF'];
  9.  $_pagi_query_string = "?";
  10.  
  11.  if(!isset($_pagi_propagar)){
  12.      //Si no se definió qué variables propagar, se propagará todo el $_GET (por compatibilidad con versiones anteriores)
  13.     //Perdón... no todo el $_GET. Todo menos la variable _pagi_pg
  14.     if (isset($_GET['_pagi_pg'])) unset($_GET['_pagi_pg']); // Eliminamos esa variable del $_GET
  15.     $_pagi_propagar = array_keys($_GET);
  16.  }elseif(!is_array($_pagi_propagar)){
  17.     // si $_pagi_propagar no es un array... grave error!
  18.     die("<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
  19.  }

Entonces, tu codigo deberia ser:
Código PHP:
Ver original
  1. $_pagi_propagar = array('var1', 'var2', 'varN');
  2.  
  3. // Aqui deberias ejecutar una funcion para limpiar todo lo que estes recibiendo por $_GET
  4. // En el foro hay varios aportes al respecto
  5.  
  6. include 'script_del_paginator.php';

Ejemplo de funcion de limpieza : http://www.forosdelweb.com/3497564-post2.html

Deberias hacer un ciclo para limpiar cada valor.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: fallo, paginator, xss, variables
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

SíEste tema le ha gustado a 1 personas




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