• Auditoria Web

  • Aquí se discutirán las principales técnicas usadas para auditar las aplicaciones web, técnicas como SQL Injection, XSS, CSRF, etc.
Aquí se discutirán las principales técnicas usadas para auditar las aplicaciones web, técnicas como SQL Injection, XSS, CSRF, etc.
 #475529  por 2Fac3R
 29 Jul 2015, 00:36
Siguiendo con la práctica y los POC que he estado realizando, me doy cuenta que en esta sección, una de las cosas que falta es este bug llamado "Form Tampering", ya hay bastante información sobre XSS, SQLi, webshells, etc, etc. Así que empecemos.

FORM TAMPERING

Este metodo consiste en modificar los datos "ocultos" del formulario que use la web victima para algun beneficio, en este ejemplo, veremos un simple (bastante sencillo xD) ejemplo sobre un "carrito de compra", para modificar los precios de los productos.

código php
<?php
// Form tampering bug PoC
$presupuesto = 100;
$compra = strip_tags($_POST['producto']);
function correcto(){
    global $compra;
    echo "Felicidades $compra comprado correctamente";
}
if(isset($_POST['producto']) && !empty($_POST['producto'])){
    if($presupuesto >= $_POST['v_botella']){
        correcto();
    }else if ($presupuesto >= $_POST['v_cervesa']){
        correcto();
    }else{
        echo "Lo sentimos, no tienes los fondos suficientes"; 
    }
}else{
    if(isset($_POST['send'])){
        die("Debes seleccionar un producto");
    }
    echo "Tu presupuesto es : $presupuesto";
?>
<form action="" method="POST">
    <select name="producto">
        <option value="Botella"> Botella </option>
        <option value="Cerveza"> Cervesa </option>
    </select>
    <input type="hidden" name="v_botella" value="500">
    <input type="hidden" name="v_cervesa" value="200">
    <input type="submit" name="send" value="Comprar!">
</form>
<?}?>
Como podemos observar, tenemos los precios de los productos en un atributo "hidden". Bien, ¿Cómo podemos aprovecharnos de eso?.


MODIFICANDO CABECERAS HTTP

Lo que vamos a hacer, es "sniffear" lo que nuestro navegador manda al servidor (cabeceras http), vamos a hacer esto con el http live headers (Add-on de Firefox). Despues de instalarlo en nuestro navegador, vamos a la página donde tenemos alojado nuestro PoC y abrimos el add-on, hacemos una petición simplemente "tratando" de comprar un producto y nos damos cuenta que en el live headers nos ha salido la petición http que hemos hecho.

Algo así:
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://127.0.0.1/bugs/formtamp.php
Content-Type: application/x-www-form-urlencode2d
Content-Length: 60
Y:
producto=Botella&v_botella=500&v_cervesa=200&send=Comprar%21
Ahora vemos que podemos modificar los valores de los productos, cambiamos a 0 y le damos a repetir/replay
producto=Botella&v_botella=00&v_cervesa=00&send=Comprar%21
Y vuala! , hemos comprado el producto

Espero les sea de ayuda, cualquier duda, comentario y/o sugerencia publiquen aquí mismo.
Zalu2
 #475576  por n0z
 29 Jul 2015, 21:25
interesante jajajaj,gracias por el aporte y el source code
 #475594  por SuC
 30 Jul 2015, 00:56
Están bien, también se puede utilizar tamperdata, incluso botón derecho > inspeccionar elemento!

saludos
 #475634  por 2Fac3R
 30 Jul 2015, 20:39
Así es, en este caso como son datos "hidden" el objetivo es modificarlos, no importa mucho el método.
Zalu2