2010-08-31 6 views
35

Czy można zastosować skrypty cross site w arkuszu stylów CSS? Na przykład referencyjny arkusz stylów zawiera złośliwy kod, jak by to zrobić? Wiem, że możesz używać znaczników stylu, ale co z arkuszami stylów?Skrypty krzyżowe w arkuszu stylów CSS

Odpowiedz

32

Z browser security handbook

Ryzyko realizacji JavaScript. Jako mało znana funkcja, niektóre implementacje CSS zezwalają na osadzanie kodu JavaScript w arkuszach stylów. Istnieją co najmniej trzy sposoby osiągnięcia tego celu: za pomocą dyrektywy expression (...), która daje możliwość oceny dowolnych instrukcji JavaScript i wykorzystania ich wartości jako parametru CSS; za pomocą dyrektywy url (javascript: ...) dotyczącej właściwości, które ją obsługują; lub przez wywołanie funkcji specyficznych dla przeglądarki, takich jak -moz-binding mechanism of Firefox.

... i po przeczytaniu tego, znajduję to na StackOverflow. Zobacz: Using Javascript in CSS W przeglądarce Firefox można użyć XBL do wstrzyknięcia javascript na stronę za pomocą CSS. Jednak plik XBL musi znajdować się w tej samej domenie, teraz: bug 324253 is fixed.

Istnieje jeszcze jeden ciekawy (choć inny niż twoje pytanie) sposób nadużywania CSS. Zobacz http://scarybeastsecurity.blogspot.com/2009/12/generic-cross-browser-cross-domain.html. Zasadniczo niewłaściwie używasz parsera CSS do kradzieży treści z innej domeny.

+0

Słyszałem o tym podręczniku, ale nie sądziłem, że warto przeczytać. Teraz ja robię. Dziękuję za odpowiedź. :) Tak więc IE8 nie obsługuje funkcji expression() w trybie standardowym. (Pomyślałem, że wspomnę) – Johnny

3

Projekt OWASP Mutillidae ma CSS przykład podatności wtryskowa na stronie: http://localhost/mutillidae/index.php?page=set-background-color.php

Oczywiście musisz ustawić ENV lokalnie pierwszy. Można pobrać i ustawić go na localhost z poniższego linku: https://www.owasp.org/index.php/OWASP_Mutillidae_2_Project

Oto istotne podpowiedź: https://github.com/hyprwired/mutillidae/blob/master/includes/hints-level-1/cascading-style-sheet-injection-hint.inc

+0

Czy mógłbyś mi powiedzieć, dlaczego spadłeś? – ZillGate

+2

Nie wiem, dlaczego w dół, ale pierwszy link jest skierowany na maszynę localhost. – Tomor

+1

@Tomor Jest to środowisko eksperymentalne i powinno być używane wyłącznie lokalnie. Dodałem kilka wyjaśnień. Dzięki! – ZillGate