elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Fragmentando código y saltando la limitación de characters (XSS)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Fragmentando código y saltando la limitación de characters (XSS)  (Leído 2,965 veces)
Preth00nker

Desconectado Desconectado

Mensajes: 43


Mov MyHeart, 4C6F7665h!!!


Ver Perfil
Fragmentando código y saltando la limitación de characters (XSS)
« en: 9 Mayo 2010, 04:11 am »

Vamos al punto.

Supongamos que existe un xss difícil de explotar debido a las siguientes limitación en el número de bytes;
Del lado del cliente el input está limitado mediante max-lenght, en el script del servidor se hace una comprobación sobre la longitud de la variable antes de salvar el dato, incluso en la estructura de la tabla (en la DB) está indicado que ese campo no puede tener más de N bytes.
Ahora, Algo fundamental para esta técnica es que el xss posea la siguiente propiedad:
 
Es necesario que Que podamos postear en varias partes del documento, esto es:
1) Ya sea mediante varias inyecciones
2) o una misma que pueda postearse varias veces.

el objetivo será siempre unir código para darle sentido al mismo.

Bien, si conseguimos postear en varias partes del documento las limitaciones de longitud no serán un problema muy grave, debido a que entre linea y linea podemos hacer comentarios de bloque para omitir el código original de la página, dependiendo si lo que deseamos es inyectar Jacascript o HTML los siguientes dos ejemplos nos podrían guiar en el ataque

javascript:
Citar
<script>
alert(1);/*
basura.....<h1>eaea</h1></body>
*/

alert(2);</script>

HTML:
Citar
<iframe width=100% src="http://hakim.ws/">
<!--
basura.....<h1>eaea</h1></body>
 -->
</iframe><h1>you were p0wned<!--
fddgdfgdfgdf
 -->

así, podemos ver que no importa mucho lo que haya en los comentarios, lo cual, podemos ocuparlo a nuestro favor.

Imaginemos que se encuentran con la primer situación: hallamos dos variables vulnerables a xss, pongámosle nombre y apellido, digamos  title y search, ocupadas por el archivo index.php, estas son pasadas por método GET y en este caso NO es un xss persistente. lo que podemos hacer es dividir nuestra inyección de modo que en la primera que aparezca (ejemplo title) pongamos una parte da la inyección y en la siguiente (search) la continuación. algo como
Citar
<...>
<title>
<?
echo $_GET['title'];
?>
</title>
<..>
<?
if($result==false)
echo "the word ".$_GET['search']." wasn't found as a valid register";
?>
así que la inyección quedaría algo como index.php?title=<script>alert(1);/*&search=*/alert(2);</script> lo cual le dice al navegador que omita todo el código hasta que nuestro script continue :)

Si en otra instancia nos encontramos con la segunda situación planteada, suponiendo que estamos dentro de un foro y encontramos un xss persistente en el título de los mensajes, de modo que este campo esta limitado a n bytes, lo que podríamos hacer es fragmentar nuestro script y dejar dos mensajes en lugar de uno, lo cual se vería como se sigue:

Citar
inyección No. 1:
    <script>alert(1);/*
inyección No. 2:
    */alert(2);</script>

De modo que no importará lo que haya entre el título 1 y el título 2, y nuestra inyección tendrá sentido
como nota final cabe mencionar que en un foro real tendríamos que postear primero la inyección 2 y luego la inyección 1 pues comunmente los mensajes se ordenan por fecha de insersión o modificado.
Espero haber sido claro, cualquier duda pues estamos a sus servicios.
un saludo!
En línea

mov [MyBrain], IA
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Fragmentando código y saltando la limitación de characters (XSS)
« Respuesta #1 en: 9 Mayo 2010, 15:39 pm »

hola, buena, un poco viejo pero buena xD

también sirve en estos casos:
Código
  1. <script>
  2. var a = '<?php echo filtro($_GET['a']); ?>';
  3. var b = '<?php echo filtro($_GET['b']); ?>';
  4. restodelcodigo.posible();
  5. </script>

Digamos que ese filtro e come las comillas simples e impide escapar con una comilla para ejecutar xss, en ese caso hacemos esto:

test.php?a=\&b=;alert(document.cookie);//

Entonces quedaría así:
Citar
<script>
var a = '\';
var b =
';alert(document.cokie);//';
restodelcodigo.posible();
</script>

el backslash va a invalidar la comilla simple que encerraba la variable y va a pasar a cerrar la que abre en la variable b, asi que nos aprobechamos y nos vamos en eval() y luego finalizamos con comentario de linea solamente para no corromper la ejecución normal del tag en javascript.

Lo colocaré en el post de recopilaciones. Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crear downloader saltando el captcha
Hacking
jor1980 4 6,082 Último mensaje 8 Diciembre 2010, 21:34 pm
por Søra
Problema con unicode ansi utf wide characters...
Programación C/C++
patilanz 0 1,587 Último mensaje 22 Diciembre 2014, 14:30 pm
por patilanz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines