Categories
Firefox Seguridad

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/

Categories
PHP Quiz Seguridad

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.

Categories
Artí­culos Seguridad

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>
Categories
PHP Quiz Seguridad

Autenticación de usuarios y sesiones en PHP

Continuando con la pequeña serie de posts que intentan mostrar algunas fallas comunes que hacemos los aficionados a PHP, e incluso los que se dedican profesionalmente a desarrollar aplicaciones con este lenguaje, esta vez tocaremos el tema de sesiones.

user.php, necesita de la clase ezSQL, puedes saber mas sobre esta clase en este artículo.

php:

<?php

class User {
        var $id;
        var $name;
        var $email;
       
        function Authenticate($user, $password) {
                global $db, $site_key;

                $user = $db->get_row (
                        'SELECT id, name, email, password
                                FROM users
                                WHERE username = \''
. $db->escape($user) . '\'');
               
                if ( $user && $user->password == md5( $site_key . $password ) ) {                     
                        $this->id = $user->id;
                        $this->name = $user->name;
                        $this->email = $user->email;
                        return true;
                }
                return false;
        }
}

?>

php:

// login.php
<?php

include dirname(__FILE__) . '/db.php'; # genera una instancia de la clase ezSQL
include dirname(__FILE__) . '/user.php';

/*
if ( ! empty( $_SESSION['user'] ) ) {
        header( 'Location: /admin' );
        exit();
}
*/

if ( ! empty( $_POST['user'] ) && ! empty( $_POST['password'] ) ) {     
        $user = new User();
        if ( $user->Authenticate( $_POST['user'], $_POST['password'] ) === true ) {
                $_SESSION['user'] = $user;
               
                header( 'Location: /admin' );
                exit();
        }
}

?>

¿Qué problema existe en el código mostrado? -no es un error de sintáxis 😀

Nota: si eres testigo de otros errores 🙂 y quieres compartir esa información, no dudes en contactarnos (describe el problema, una posible solucion, si ya lo publicaste en tu blog, envíanos el link para comentar el problema y citar tu post)

Categories
.NET ASP.NET

ASP.NET Ajax Beta & AJAX Control Toolkit

Acaba de lanzarse la primera beta de ASP.NET Ajax (a.k.a Atlas)

Esta beta, como había anunciado Scott Guthrie, está dividido en:

También ha sido actualizado AJAX Control Toolkit, para esta beta que acaba de salir

Fuente: blog de Lauren Kempé