Foros del Web » Programando para Internet » PHP »

Script php y wordpress seguridad GET

Estas en el tema de Script php y wordpress seguridad GET en el foro de PHP en Foros del Web. Hola buenos días, tengo un problemilla con un script. Últimamente han atacado uno de mis sitios, con archivos infectados, y un programador me dice que ...
  #1 (permalink)  
Antiguo 14/12/2015, 17:19
 
Fecha de Ingreso: julio-2011
Ubicación: mexico
Mensajes: 41
Antigüedad: 13 años, 3 meses
Puntos: 5
Script php y wordpress seguridad GET

Hola buenos días, tengo un problemilla con un script.

Últimamente han atacado uno de mis sitios, con archivos infectados, y un programador me dice que es por un script que recoge variables GET.

el script es el siguiente

Código PHP:
    $post_type $_GET['type'];
    if( 
$post_type == 'remove' ){
        
$cart WC()->instance()->cart;
        
$id $_GET['product_id'];
        
$cart_id $cart->generate_cart_id($id);
        
$cart_item_id $cart->find_product_in_cart($cart_id);

        if(
$cart_item_id){
            
$cart->set_quantity($cart_item_id0);
        }
    }elseif( 
$post_type == 'get-total' ){
        echo 
WC()->cart->get_cart_total();
    }else{
        
$offset $_GET['from'];
        
$cat $_GET['slug'];
        
$args = array(
            
'post_type'      => $post_type,
            
'offset'         => $offset,
            
'product_cat'    => $cat,
            
'posts_per_page' => 12
        
);
        
$loop = new WP_Query$args );
        if ( 
$loop->have_posts() ) {
            while ( 
$loop->have_posts() ) : $loop->the_post();
                
wc_get_template_part'content''product' );
            endwhile;
        } else {
            echo 
__'No products found' );
        }
        
wp_reset_postdata();
    } 
lo que hace este código es simplemente generar consultas páginadas de productos, con un wpQuery.

¿Realmente es posible que un archivo malicioso sea insertado en este script por GET? la base de datos no tiene ningún problema. por eso se me hace raro que me diga que es este archivo.

Pero igual puedo estar cometiendo un grave error.

Muchas gracias por cualquier ayuda.
  #2 (permalink)  
Antiguo 14/12/2015, 18:01
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 11 años, 2 meses
Puntos: 145
Respuesta: Script php y wordpress seguridad GET

Un GET sin anti-XSS (y otros filtros) es como un ordenador sin antivirus.
__________________
¿Te sirvió la respuesta? Deja un +1
  #3 (permalink)  
Antiguo 14/12/2015, 18:06
 
Fecha de Ingreso: julio-2011
Ubicación: mexico
Mensajes: 41
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: Script php y wordpress seguridad GET

Cita:
Iniciado por NueveReinas Ver Mensaje
Un GET sin anti-XSS (y otros filtros) es como un ordenador sin antivirus.
¿Aunque no use esa variable para escribir datos o llamar un script include?

¿o sea simplemente ejecutan un código por GET tipo eval y ya?

¿Es decir esto puede crear un archivo y modificar otros?
  #4 (permalink)  
Antiguo 14/12/2015, 18:34
 
Fecha de Ingreso: julio-2011
Ubicación: mexico
Mensajes: 41
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: Script php y wordpress seguridad GET

Cita:
Iniciado por NueveReinas Ver Mensaje
Un GET sin anti-XSS (y otros filtros) es como un ordenador sin antivirus.
A lo que me refiero es, tengo un GET['test']

en mi script le pongo

Código PHP:
Ver original
  1. <?php echo $_GET['test'] ?>

si tu me pasas un XSS, y lo que quieras, ¿si el GET no hace otra cosa más que imprimir?

entiendo cuando se hacían webs modulares antes del mvc, que se llamaba un include o al hacer consultas sin ORM así raw sql.

pero esto no me queda claro.
  #5 (permalink)  
Antiguo 14/12/2015, 20:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Script php y wordpress seguridad GET

Cita:
si tu me pasas un XSS, y lo que quieras, ¿si el GET no hace otra cosa más que imprimir?
Y ese es el problema.

Imagina que te paso algo así: script.php?x=<script>alert(document.cookie)<%2Fscr ipt>

Y en tu script "sólo imprimes" inocentemente:
Código PHP:
Ver original
  1. echo $_GET['x'];

¿Qué crees que sucedería?

Los ataques de XSS se producen en el navegador, cuando precisamente no se tiene cuidado con lo que se imprime.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 14/12/2015 a las 20:55 Razón: xss-fix
  #6 (permalink)  
Antiguo 15/12/2015, 05:15
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 11 años, 5 meses
Puntos: 25
Respuesta: Script php y wordpress seguridad GET

Cita:
Iniciado por pateketrueke Ver Mensaje
Y ese es el problema.

Imagina que te paso algo así: script.php?x=<script>alert(document.cookie)<%2Fscr ipt>

Y en tu script "sólo imprimes" inocentemente:
Código PHP:
Ver original
  1. echo $_GET['x'];

¿Qué crees que sucedería?

Los ataques de XSS se producen en el navegador, cuando precisamente no se tiene cuidado con lo que se imprime.
¿Eso que propones que debilidad daría? Eso lo vería el mismo atacante, ¿pero que ve?, datos de cookie, ¿y de quienes son esas cookies? del mismo atacante. Ya que ese script se le ejecutaría al mismo atacante, y no a otra persona.

Vamos, yo puedo entrar en una web, desde mi navegador y modificarla desde el navegador, con firebug u otras herramientas. Y también puedo leer los datos almacenados de las cookies en mi navegador, con un poco de astucia. Sin necesidad de atacar a la pagina con XSS.
  #7 (permalink)  
Antiguo 15/12/2015, 09:14
 
Fecha de Ingreso: julio-2011
Ubicación: mexico
Mensajes: 41
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: Script php y wordpress seguridad GET

Cita:
Iniciado por pateketrueke Ver Mensaje
Y ese es el problema.

Imagina que te paso algo así: script.php?x=<script>alert(document.cookie)<%2Fscr ipt>

Y en tu script "sólo imprimes" inocentemente:
Código PHP:
Ver original
  1. echo $_GET['x'];

¿Qué crees que sucedería?

Los ataques de XSS se producen en el navegador, cuando precisamente no se tiene cuidado con lo que se imprime.
Y entiendo perfectamente, esa parte, pero mi pregunta era referente a mi script, en el que tomo un valor y hago una consulta, en la base de datos no he tenido problemas.

Mi pregunta es, si en ese script, en el que no hago impresión de ningún valor ni comprometo archivos, se puede crear un archivo con código eval dentro.

Por ejemplo en el caso de imprimir la variable GET con un echo y sin sanitize. Pues podría meter un script incluso he investigado crear archivos a través de la api de html5, hasta ahora no he tenido éxito.

pero eso sólo funcionaría en teoría si se imprime el $_GET, en mi script no lo hace. ¿como podría hacer eso para crear un archivo? Seguiré buscando, en este caso específico. Se me hace algo bastante difícil de lograr, aún con la poca seguridad.

PD: cambié el $_GET por get_query_var() por si las dudas.
  #8 (permalink)  
Antiguo 15/12/2015, 09:55
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 8 meses
Puntos: 1146
Respuesta: Script php y wordpress seguridad GET

Lo que ocurre es que esto debiste preguntarlo en el apartado de wordpress.

Presisamente que hace ese ataque que mencionas? , vamos que no somos adivinos... ya se te menciono una vulnerabilidad posible aunque para tu caso me parece que no aplica ya que solo aplica a la sesion actual.
  #9 (permalink)  
Antiguo 15/12/2015, 11:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Script php y wordpress seguridad GET

Cita:
¿Eso que propones que debilidad daría? Eso lo vería el mismo atacante, ¿pero que ve?, datos de cookie, ¿y de quienes son esas cookies? del mismo atacante. Ya que ese script se le ejecutaría al mismo atacante, y no a otra persona.
Sí y no, el atacante puede inyectar un <script> que simplemente haga una petición hacia un servidor conocido y le envíe datos del usuario que está visualizando el documento.

El atacante no tiene por qué ejecutar el código, digamos que tienes un blog muy simple con comentarios y no limpias el HTML. Entonces un atacante deja ahí su script y otro usuario al momento de cargar los comentarios ejecutará dicho script, etc. El atacante sólo ha dejado la carnada y otro más muerde el anzuelo.

Amiancht, te sugiero documentarte al respecto de XSS y CSRF (XSRF) para que comprendas cómo funcionan.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 16/12/2015, 01:40
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Script php y wordpress seguridad GET

Llamarme noob... pero yo no estoy de acuerdo

En ese trozo, no veo XSS...

Tiene 4 parámetros GET, type, product_id, from, y slug.

El primero, hace 2 comparaciones, no hay problema.
El segundo, se lo pasa a generate_cart_id, que lo que hace es generar un md5 de los parametros que le pases,

Y from y slug entran a WP_Query, que segun la documentación, wp lo "sanea".. otra cosa seria si fueran consultas de bbdd directas, pero al ser una funcion de "alto nivel" no hace falta sanear, ya lo hace wp por ti.

¿Que tendrá un problema de XSS? Es posible, pero no en ese trozo. O almenos, yo no lo veo
__________________
>> Eleazan's Source
>> @Eleazan
  #11 (permalink)  
Antiguo 16/12/2015, 15:08
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 11 años, 5 meses
Puntos: 25
Respuesta: Script php y wordpress seguridad GET

Cita:
Iniciado por pateketrueke Ver Mensaje
Sí y no, el atacante puede inyectar un <script> que simplemente haga una petición hacia un servidor conocido y le envíe datos del usuario que está visualizando el documento.

El atacante no tiene por qué ejecutar el código, digamos que tienes un blog muy simple con comentarios y no limpias el HTML. Entonces un atacante deja ahí su script y otro usuario al momento de cargar los comentarios ejecutará dicho script, etc. El atacante sólo ha dejado la carnada y otro más muerde el anzuelo.

Amiancht, te sugiero documentarte al respecto de XSS y CSRF (XSRF) para que comprendas cómo funcionan.
El ejemplo de los blogs, tiene sentido ya que se guardan los comentarios y son visibles para otros usuarios, y donde el atacante puede meter mano en cookies ajenas. Eso si lo tengo claro.

Sin embargo, en el caso expuesto. El echo, se lo daria a la persona que hace la petición http. Por lo que no lo veía muy claro. Por lo que el ejemplo que dabas a a enteder, el alert lo va a ver la misma persona que lo ejecuta. En ese caso, no hay problema de seguridad, ya que el mismo usuario que navega ve su propia información.

Pero supongamos, que en vez de ese sencillo javascript que pusistes, ponemos uno más elaborado. En vez de hacer un alert, hago una petición ajax a un servidor ajeno, enviando la información de la cookie, o cualquier otra acción de usuario, como por ejemplo, datos de login. Y luego, paso el enlace malicioso a un usuario de esa página, que inocentemente pica en él, a ese usuario en concreto se le inyectaria el javacript malicioso. Entonces aquí yo tendría acceso a sus datos ya que los recibiria el servidor ajeno bajo mi control. Ahí está la vulnerabilidad.

Pero bueno, yo solo preguntaba, en el caso concreto no se me ocurría la forma en que se pudiera usar esa vulnerabilidad como ataque, pero ya se me vino a la cabeza jaja. Por eso siempre prevengo todo aunque no se me ocurra como pueda hacerse un ataque. Siempre es bueno ser un tanto paranoico en PHP, sobre todo cuando hacer una API que va a manejar datos delicados.

Un saludo y gracias.

Etiquetas: seguridad, variable, wordpress
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 22:08.