![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 3.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Istnieje możliwość zapisania w exif tags obrazka kodu php co może być niebezpieczne. Napisałem bardzo prosty skrypt do sprawdzania kodu php w obrazkach i mam prośbę o sprawdzenie czy ten kod wystarczy, sprawdzałem kod i rzeczywiście odróżnia obrazek z niebezpiecznym kodem od zwykłego obrazka ale może ktoś z was ma inne zdanie i wie jak oszukać ten skrypt (IMG:style_emoticons/default/questionmark.gif) ? (IMG:style_emoticons/default/guitar.gif)
Pomijam resztę zabezpieczeń post jest tylko o exif tags. Bardzo fajny artykuł na ten temat jest tutaj http://php.webtutor.pl/pl/2011/04/11/code-...w-obrazku-jpeg/ ale nie ma tam info jak wykryć niebezpieczny kod. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Żartujesz sobie, prawda?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 3.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
czemu miałbym żartować ? jeżeli ktoś zapisze w exif tags obrazka kod php a ktoś ten obrazek wczyta funkcją include (tak nikt oczywiście nie robi) to kod php się wykona i nie wiem co w tym śmiesznego a ponieważ exif tags są zapisywane w fomie zwykłego textu to można to sprawdzić.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Żartujesz sobie, prawda? A Ty sobie żartujesz mówiąc, że on sobie żartuje? Prawda? @daren88, musiałbyś sprawdzać obrazek pod kątem wszystkich możliwych otwierających i i zamykających tagów. (nie tylko tego jednego) Zakładam, że takie rzeczy jak sprawdzanie rozszerzenia obrazka, tego czy ma wymiary i czy jest prawdłowy (jest uploadowanym plikiem) już masz wprowadzone. Bo to są podstawy. To co Ty próbujesz wprowadzić to tylko dodatkowe umocnienie. Ten post edytował pyro 24.11.2011, 17:44:45 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Żartujesz sobie, prawda? Nie żartuje. Osobiście widziałem atak, który polegał właśnie na wstrzykiwaniu kodu poprzez EXIF-y, wspominałem o tym też na phpconie. Interpreter nie sprawdza rozszerzenia odpalanego pliku. Szuka wyłącznie ciągu do przeparsowania. Przemycić go nawet w binarce, to nie problem. Któraś wersja SimpleMachines Forum 1.1x była podatna na ten atak. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie chodziło mi o samą możliwość takiego ataku, bo wiem, że takowa istnieje, a raczej o sposób rozwiązania problemu jako znalezienie otwierającego tagu <?php. Wydaje mi się, że to znacznie za mało, aby zmniejszyć ryzyko powodzenia tego typu ataku. Jeśli interpreter php obsługuje krótkie tagi czy tagi asp, to jest to marne rozwiązanie, bo kod zostanie prawdopodobnie wykonany. Do listy należałoby dodać jeszcze, o czym napisał już ~pyro:
<? <% Ten post edytował darko 25.11.2011, 03:11:12 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 5 Dołączył: 10.07.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Niebezpieczny nie jest sam kod doklejony do obrazka - niebezpieczne jest używanie include / require do wypluwania tych obrazków!
Także poza skleceniem filtra (fajnie wiedzieć, kto Ci próbuje wrzucić zainfekowany plik) warto przejrzeć skrypty pod kątem takiej podatności. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Obrazek z jakimś kodem nie będzie miał poprawnego mime/type. Jak ktoś sprawdza typy obrazków po ich rozszerzeniach a nie po mime/type to sam się prosi o problemy.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
A nie wystarczy sprawdzać pierwszych 250 bitów obrazka??.To jest przykład początku obrazka zapisanego jako txt-gif'a .
GIF89ajp÷ ÿÿÿ To początek kodu obrazka jpeg: ÿØÿà JFIF |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 3.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Obrazek z jakimś kodem nie będzie miał poprawnego mime/type. Jak ktoś sprawdza typy obrazków po ich rozszerzeniach a nie po mime/type to sam się prosi o problemy. mime/type można oszukać więc lepiej sprawdź twój kod. A jeżeli chodzi o mój skrypt to nie radze go używać zapomniałem o <? i <% ale niestety w połowie obrazków można znaleźć przypadkowe znaki <? bla bla bla ?> więc moja metoda odpada, a sam kod php w obrazkach nie jest szkodliwy jeżeli się go nie wykona np include czego nikt nie robi. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
includowałeś kiedyś obrazek w kodzie php? Oo
|
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Mime/type też można oszukać, nigdy nie masz pewności, co do rodzaju przesyłanego pliku. Kiedyś była obszerna dyskusja na ten temat na tym forum i niestety zakończyła się taką oto smutną konkluzją. Oczekiwanego rezultatu nie daje nawet sprawdzanie funkcją getimagesize poprawności nagłówka obrazka, bo i to można obejść, nie wspominając już o bardziej wyrafinowanych metodach type sprawdzenie typu pliku poleceniem systemowym file -ib <plik> gdyż to polecenie zachowuje się różnie na różnych wersjach systemów operacyjnych.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
A nie wystarczy sprawdzać pierwszych 250 bitów obrazka??.To jest przykład początku obrazka zapisanego jako txt-gif'a . GIF89ajp÷ (IMG:style_emoticons/default/questionmark.gif) ? To początek kodu obrazka jpeg: (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) JFIF Nie, nie wystarczy. Cytat Obrazek z jakimś kodem nie będzie miał poprawnego mime/type. Jak ktoś sprawdza typy obrazków po ich rozszerzeniach a nie po mime/type to sam się prosi o problemy. Nie masz pojęcia o czym piszesz... Ten post edytował pyro 25.11.2011, 21:09:55 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
|
|
|
![]()
Post
#17
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Mime/type też można oszukać, nigdy nie masz pewności, co do rodzaju przesyłanego pliku. Kiedyś była obszerna dyskusja na ten temat na tym forum i niestety zakończyła się taką oto smutną konkluzją Bo sprawdzanie tego z tablicy $_FILES, to proszenie się o problemy. Cytat Udowodnij. : Cytat Oczekiwanego rezultatu nie daje nawet sprawdzanie funkcją getimagesize poprawności nagłówka obrazka Gdyż sprawdza wyłącznie nagłówek i bloki, które mówią o rozmiarze obrazka. Resztę może stanowić nawet dump z /dev/urandom, a i tak przejdzie. Otwórz sobie jakiegoś JPEG-a w jakimś lepszym notepadzie albo edytorze heksadecymalnym, utnij mu kilkaset bajtów tak, aby pozostał nagłówek nieruszony, dopisz coś i otwórz w przeglądarce albo sprawdź MIME. [; Potem zabieraj głos. [; |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 12 Dołączył: 23.11.2006 Skąd: WL Ostrzeżenie: (0%) ![]() ![]() |
Ja na twoim miejscu poświęcił trochę więcej czasu i zrobił następująco:
Czy znajduje się znak otwierający php <? lub <?php jeśli tak pobierasz dalszą część i sprawdzasz czy jest to kod php, bo tak jak pisałeś wcześniej czasami występują przypadkowe znaki <? ale jest bardzo małe prawdopodobieństwo że wystąpi np. <? $ lub też tworzysz liste hexów czyli potencjalnych liter które mogły zostać użyte do stworzenia funkcji jeśli po tym znaku znajduje się pare hexów z listy pod rząd czy też jak tam to sobie wymyślisz to znaczy ze jest to php... Jest to wsumie jakies tam zabezpieczenie bo wiadomo ze funkcja ani zmienna nie moze miec takich znakow &^%$%#*... Mam nadzieje że dobrze myślę (IMG:style_emoticons/default/smile.gif) Ten post edytował szmerak 26.11.2011, 15:56:00 |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
Próbuje utworzyć plik ze skryptem javascript ,ale chyba źle coś robię ,czy ktoś może posiada taki plik,albo wie skąd można ściągnąć taki plik("tylko jakiś nie groźny-nie chciałbym mieć wirusów na kompie"), chciałbym przetestować swoją aplikację.
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 12 Dołączył: 23.11.2006 Skąd: WL Ostrzeżenie: (0%) ![]() ![]() |
http://www.programosy.pl/program,exifeditor.html tym programem mozesz to zrobic
tutek jak: http://php.webtutor.pl/pl/2011/04/11/code-...w-obrazku-jpeg/ url zainfekowanego obrazka: http://php.webtutor.pl/wp-content/uploads/...-logo-virus.jpg kod jaki sie w nim znajduje Ten post edytował szmerak 26.11.2011, 16:11:05 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 01:52 |