Widzę panowie, że zaczynacie się lekko "spinać". Pozwólcie więc, że wtrącę moje "8 groszy".
Cytat(Łukasz Piotr Łuczak @ 15.02.2013, 15:11:50 )

...
1) wykorzystujemy dziurę w uploadzie plików graficznych i dodajemy javascriptowy comment payload do gifa test.gif
Rozwijając słowa Łukasza "comment payload", to wcale nie trzeba doklejać złośliwego kodu "na koniec" pliku, ale np. w przypadku formatu GIF można dodać do pliku komentarz (wszystko zgodnie ze specyfikacją). Tak samo w przypadku JPEGów można spreparować dane EXIF, itd. (Gdyby ktoś był ciekawy gdzie fizycznie w pliku ląduje taki komentarz oto *
hexdump* z gifa 1x1 i komentarzem w postaci skryptu js). Trzeba tutaj zaznaczyć, że o ile doklejenie "byle czego" na koniec pliku może powodować gubienie tych danych w przypadku obrabiania obrazków (lub nawet "błędy formatu" czy walidacji), to format takiego gifa z komentarzem jest w 100% poprawny. Dlatego też, nawiązując do samego wątku doklejanie czegokolwiek na koniec pliku jest dla mnie trochę dziwne i wygląda to właśnie na jakiś automat co infekuje wszystko co może bez analizy - czyli "dawaj na koniec". (drobna dygresja: większość binarnych formatów plików z którymi miałem coś więcej do czynienia, była/jest w formie "fixed-length", więc żadne dane nadmiarowe na końcu nie powinny ich zepsuć).
Cytat(Łukasz Piotr Łuczak @ 15.02.2013, 15:11:50 )

2) wykorzystujemy inny błąd (np. przy komentarzach, sql injection) i wstawiamy na stronę małe cuś: <script src="...../test.gif"></script>
Takie coś zadziała tylko pod warunkiem, że jak już napisał @nospor plik test.gif będzie tak naprawdę skryptem javascript o zmienionym rozszerzeniu na gif. Wątek natomiast tyczy się kodu javascript wplecionego w obrazek (pal licho czy "na końcu", czy "w środku" wykorzystując właściwości formatu pliku) i biorąc to pod uwagę to wykonanie tego kodu graniczy z cudem, bo przeglądarka (pomijając IE6 i inne eksponaty z muzeum) próbując sparsować taki plik zwyczajnie napotka "syntax error" i przestanie parsować ten skrypt (Chrome:"Unexpected token ILLEGAL", Firefox:"SyntaxError: illegal character", IE: "SCRIPT1014: Nieprawidłowy znak"). Zresztą gdyby to zadziałało, to każdy serwis przyjmujący obrazki od użytkowników i nie usuwający z automatu takich rzeczy z przesyłanych plików, mógłby "hostować" jakieś dziwne kody javascript.
Cytat(Łukasz Piotr Łuczak @ 15.02.2013, 15:11:50 )

...
Dzięki temu omijamy sprawdzanie origin i możemy dorwać się do ciasteczka. Jedynie pod IE jest to trochę utrudnione (ale nie niemożliwe).
To śmiało możesz doprecyzować bo wydawało mi się że same origin policy czy CORS nie dotyczy tagu <script>? [

]