Evasión del filtro anti-phishing en Firefox 2.0

Al parecer la última versión de Firefox 2 hace una validación sencilla para comprobar si un sitio es falso o no.

Por ejemplo, al entrar a la siguiente dirección se muestra la advertencia indicando que es un sitio fraudulento: http://200.119.135.99/ebay/login5878/

Sin embargo, al ingresar a la misma dirección pero con el IP en formato hexadecimal, ya no aparece tal advertencia: http://0xc8.0x77.0x87.0x63/ebay/login5878/

Fuente: http://ha.ckers.org/

Más sobre validación de datos en PHP

Como había mencionado anteriormente, para desarrollar aplicaciones seguras, hay que conocer bien la herramienta o lenguaje con el que se trabaja. Espero que estos pequeños quiz intenten mostrar algunas de las fallas más comunes que cometen los que recién empiezan o ya desarrollan con PHP.

El código mostrado a continuación, ¿tiene alguna falla? ¿cuál?

php:
<?php

if      ( empty( $_GET['user'] ) && empty( $_POST['user'] ) )
        die( 'Bad parameter' );
elseif ( ! empty( $_GET['user'] ) && intval( $_GET['user'] ) < 0 )
        die( 'Bad parameter' );
elseif ( ! empty( $_POST['user'] ) && intval( $_POST['user'] ) < 0 )
        die( 'Bad parameter' );

$sql = 'SELECT  id, name, email
        FROM    users
        WHERE   id = '
. mysql_real_escape_string($_REQUEST['user']);

echo $sql;

?>

Como ya saben, el código mostrado sólo es referencial, pero vale comentar la forma correcta de implementar ese pedazo de código.

Otra vulnerabilidad en IE7

Secunia muestra una segunda vulnerabilidad en Internet Explorer 7 que facilita los ataques phishing, al mostrar sólo parte de una URL que contiene caracteres 0xA0.

A continuación, parte del contenido de la prueba de concepto que hizo Secunia.

html:
<div id="start"><a href="javascript:StartTest();"><font color="#000000">Test Now - Left Click On This Link</font></a></div>
javascript:
<script language="JavaScript">
function StartTest()
{
 var padding = '';
 for ( i=0 ; i<108 ; i++)
 {
  padding += unescape("%A0");
 }
 newWindow = window.open("", "Win", "width=500,height=325,scrollbars=yes");
 newWindow.moveTo( (screen.width-325) , 0 );
 newWindow.document.location = "/result_22542/?" + unescape("%A0") + unescape("%A0") + "http://www.microsoft.com/"+padding;
 document.location = "http://www.microsoft.com/windows/ie/default.mspx";
}
</script>

Buscando nuevo hosting

Luego de superar en parte algunos problemas, andamos buscando una cuenta reseller no muy grande que permita alojar unas cuantas páginas sin mucho tráfico.

Las cosas que necesitamos son:

  • Apache - mod_security* + mod_rewrite habilitado + MySQL + PHP 4.x o 5.x / necesario para el blog
  • Espacio en disco de 1GB o más, transferencia mensual de 20GB o más
  • mod_mono para los demos de aplicaciones asp.net: deseable pero no indispensable.
  • SSH, si es que se puede
  • Que no sea demasiado caro 🙂
  • Urgente!!!!

¿Alguna sugerencia?

*: tuvimos problemas al publicar código "peligroso" en los artículos.

Pequeño ejemplo de XSS

XSS, es según la Wikipedia un tipo de vulnerabilidad surgida como consecuencia de errores de filtrado de las entradas del usuario en aplicaciones web.

Mostraré un ejemplo que creo que todos hemos hecho o seguimos haciendo hasta ahora:

HTML:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
</form>

Y ahora las preguntas: ¿Qué tiene de malo este código?, ¿Es vulnerable a ataques XSS? Espero sus respuestas.