Ich habe ASP ARF-Token in meiner MVC3-Webanwendung implementiert und in die Funktionsweise des CSRF-Exploits eingelesen und wie ARF-Tokens dagegen vorgehen. Jetzt habe ich mich gefragt, ob 'Hacker' die ARF-Prüfung nicht umgehen konnten, indem sie einen zusätzlichen Schritt benutzten. Der normale CSRF Szenario ist wie:ASP Anti Request Forgery, warum würde der Hacker nicht zuerst einen bekommen?
- Erstellen einer Website (wir nennen es HackerSite), die Beiträge zu der Ziel-Website BankingSite
- Nutzung Social Engineering (oder XSS in der Werbung etc.), so dass ein Benutzer Besuch Website HackerSite
- Ein Skript auf HackerSite zum BankingSite Post wird den Benutzer Cookies/Credentials damit unter seinen/ihren Namen
Aufgrund unserer ARF Token Posting mit, weiß der BankingSite die POST kommt von Standort zu ignorieren H ackerSite. Weil es das richtige AFR-Token fehlt. Kann mir jemand sagen, warum der Hacker das Token nicht einfach durch eine GET-Anfrage auf der BankingSite bekommen konnte? Wie folgt aus:
- Erstellen einer Website (wir nennen es HackerSite), die Beiträge zu der Ziel-Website BankingSite
- Nutzung Social Engineering (oder XSS in der Werbung etc.), so dass ein Benutzer Besuch Website HackerSite
- ein Skript auf HackerSite wird eine GET-Anfrage tun und schnappt sich die ARF-Token aus dem HTML-Code in der Antwort wird diese Anforderung auch die ARF-Token in das Cookie des Benutzers eingestellt
- ein zweites Skript auf HackerSite zum BankingSite wird Post Verwendung die packte ARF Token + die Benutzer Cookies/Anmeldeinformationen so Posting unter seinen/ihren Namen
Weiß jemand, was ich hier fehlt, und wie ARF gegen einen solchen Angriff gesichert ist?
Ich denke, dass dieser Link gut erklären das Problem und die Lösung http://www.asp.net/web-api/overview/security/preventing-cross-site-request-forgery-(csrf)-attacks auf 'Fälschungssicherheitstoken funktionieren, weil die böswillige Seite die Token des Benutzers aufgrund derselben Richtlinien nicht lesen kann. ' – Aristos
AFAIK gleichen Ursprungs schützt den Cookie davor, von Javascript gelesen/manipuliert zu werden + schützt gegen IFrames. In meinem Beispiel habe ich die Annahme gemacht, dass ein Hacker leicht Cross-Site-Ajax-Anfragen machen kann (zum Beispiel mit JSONP). Ich denke, dass ich da falsch liegen könnte, was diese Angriffsmethode ungültig macht. Kann jemand überprüfen, dass Sie möglicherweise keine Ajax-Anfragen über die Site stellen können (ohne dass der Browser des Benutzers kompromittiert wird). – Rob
Bitte zeigen Sie uns, wie ein Skript auf HackerSite.com HTML von BankingSite.com im Browser eines Benutzers erhalten kann –