Compilado de enlaces

Hola a todos!

Este es otro de los ya famosos compilados de enlaces.

Un abrazo grande!
Pedro

Compilado de enlaces

Hola a todos!

Este es un compilado de enlaces!

Un abrazo grande,
Pedro

Compilado de enlaces

Estimado usuario,

Comunicamos a usted que esto es un comunicado de enlaces.

Atentamente,
Pedro

Compilado de enlaces

este es el compilado de enlaces numero 914239781234798124798142897

para festejar, tendremos un compilado de enlaces

unabrazogrande,pedro

Compilado de enlace

Hola,

Se me ha atrasau el compilau de enlaces tradiciooonal, que siempre se ve por estas zonas. No es por falta de links igual, mas bien sino porque me cague olvidando.

Compilado de enlaces

¡Hola a todos!

Soy de la opinión que los compilados de enlaces son algo bueno; no te cambian la vida, pero algo aportan.

Un abrazo grande,
Pedro

Compilado de enlaces

¡Hola!

Hablando de compilado de enlaces, este es uno; siempre es bueno tener compilado de enlaces.

Un compilado,
Pedro

Compilado de enlaces

Hola a todos!

Este es un compilado de enlaces.

¡Eso nomás!

Un abrazo grande,
Pedro

Compilado de enlaces

Buenas,

Un compilado de enlaces, para festejar que me compre una patineta.

Un abrazo,
Pedro

 

Hackeando con matemáticas y números.

Esto podría ser aparente para cualquiera que haya estado trabajado en seguridad por algún tiempo, pero yo (siendo un noob) recientemente descubrí una propiedad muy interesante respecto a los números.

Consideremos en código a continuación:

    <?php
    $amount = $_GET['amount'];
    $price = '300';
    $user_balance = user_balance_get();

    // Actualizamos el balance del usuario para reflejar la compra.
    $user_balance = $user_balance - ($price * $amount);
    user_balance_set($user_balance);

Los números tienen una gran cantidad de propiedades que tenemos que considerar a la hora de testear la seguridad de una aplicación, que, nuevamente, son obvias para la gente inteligente pero siempre es importante repetir para aclarar.

  •  Multiplicar un número negativo por un número positivo nos va a dar como resultado un número negativo.
  • Al sumar un número positivo con un número negativo, se substraerá el valor absoluto del número negativo al número positivo. (por ej. 300 + (-200) va a dar como resultado 100.)
  • Lo inverso tambien es cierto. Restar un número negativo a un número positivo resultará en una suma.

Cosas básicas. Aplicar esto a la seguridad informática, sin embargo, es interesante. Viendo el código que escribí mas arriba, y habiendo mencionado los hechos que acabo de mencionar, debería ser aparente que el código es vulnerable.

La línea de código responsable de actualizar el balance de los usuarios (una operación muy riesgosa, desde el punto de vista de la seguridad) es:

    $user_balance = $current_user_balance - ($price_of_item * $user_submitted_quantity)

Esto es interesante porque nos permite aumentar el balance del atacante enviando números negativos. Si ponemos -1 en la cantidad, por ejemplo, sucedería lo siguiente:

    $user_balance = 1000 - (300 * -1)
    $user_balance = 1000 - ( -300 )
    $user_balance = 1300

Ka-ching! Así da gusto ir a comprar cosas.

El nuevo balance es mayor que el balance anterior, lo que significa que logramos una ganancia con esa compra. Otra situación que puede demostrarse como muy enriquecedora para nosotros como atacantes, es si pudieramos transferir plata entre diferentes usuarios (como por ejemplo, el sistema de transferencias de paypal, o un banco).

Consideremos el siguiente código:

    <?php
    $receiver = User(id=1);
    $sender = User(id=2);

    $amount = $_GET['amount'];

    $receiver->balance_set($receiver->balance + $amount);
    $sender->balance_set($sender->balance - $amount);

Parece bastante sencillo, y no particularmente inseguro. Poniendo un número negativo en el parametro “amount”, sin embargo, va a causar que el balance de la persona que reciba la transferencia disminuya, mientras que el balance de la persona que envía el dinero aumentará. En una manera muy real, el emisor esta robando dinero del receptor.

Antes de cerrar el post, otras cosas que pueden ser interesantes cuando lidiamos con aplicaciones son:

  • Integer overflows. Enviar un número muy grande (o muy pequeño, en los negativos), puede tener como consequencia que evitemos filtros como “solo números menores a X”, o viceversa.
  • Checkear que la aplicación no acepte operaciones matemáticas en lugar de números, como por ejemplo “10 + 10 + 10 + 10″
  •  A veces las aplicaciones pueden checkear por algo, por ejemplo, que el número sea menor a 50, y luego convierten el número a su valor absoluto. En esos casos, puedes enviar un gran número negativo y evitar el filtro.

Un abrazo grande,
Pedro