Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> Zabezpieczenie przed uploadem obrazka z wirusem, exif tags obrazka z kodem php
daren88
post
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)

  1. $get = file_get_contents( $_FILES['img']['tmp_name'] );
  2.  
  3.  
  4.  
  5. $pattern = '/<?php./';
  6.  
  7. if( preg_match($pattern,$get, $matches, PREG_OFFSET_CAPTURE) ){
  8.  
  9. echo' obrazek z kodem php ';
  10.  
  11. }
  12. else{
  13.  
  14. echo' nie ma kodu php';
  15.  
  16. }



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.
Go to the top of the page
+Quote Post
darko
post
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?
Go to the top of the page
+Quote Post
daren88
post
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ć.
Go to the top of the page
+Quote Post
pyro
post
Post #4





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(darko @ 24.11.2011, 17:14:14 ) *
Ż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
Go to the top of the page
+Quote Post
erix
post
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.
Go to the top of the page
+Quote Post
darko
post
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
Go to the top of the page
+Quote Post
eccocce
post
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.
Go to the top of the page
+Quote Post
cojack
post
Post #8





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


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.
Go to the top of the page
+Quote Post
Niktoś
post
Post #9





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


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 
Go to the top of the page
+Quote Post
daren88
post
Post #10





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 3.09.2011

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


Cytat(cojack @ 25.11.2011, 13:20:18 ) *
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.
Go to the top of the page
+Quote Post
cojack
post
Post #11





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


includowałeś kiedyś obrazek w kodzie php? Oo
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Niebezpieczny nie jest sam kod doklejony do obrazka - niebezpieczne jest używanie include / require do wypluwania tych obrazków!

Hah, nie trzeba require/include:

[APACHE] pobierz, plaintext
  1. AddType application/x-httpd-php .jpg
[APACHE] pobierz, plaintext


i hulaj dusza.
Go to the top of the page
+Quote Post
darko
post
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.
Go to the top of the page
+Quote Post
pyro
post
Post #14





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(Niktoś @ 25.11.2011, 14:23:00 ) *
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
Go to the top of the page
+Quote Post
viking
post
Post #15





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


http://www.php.net/manual/en/function.imagick-stripimage.php

Nie pamiętam jak w GD.
Go to the top of the page
+Quote Post
cojack
post
Post #16





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Cytat(pyro @ 25.11.2011, 21:09:43 ) *
Nie, nie wystarczy.



Nie masz pojęcia o czym piszesz...

Udowodnij.
Go to the top of the page
+Quote Post
erix
post
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. [;
Go to the top of the page
+Quote Post
szmerak
post
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
Go to the top of the page
+Quote Post
Niktoś
post
Post #19





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


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ę.
Go to the top of the page
+Quote Post
szmerak
post
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
  1. <style>body{font-size: 0;} h1{font-size: 12px !important;}</style><h1><?php echo "<hr />THIS IMAGE COULD ERASE YOUR WWW ACCOUNT, it shows you the PHP info instead...<hr />"; phpinfo(); __halt_compiler(); ?></h1


Ten post edytował szmerak 26.11.2011, 16:11:05
Go to the top of the page
+Quote Post
Niktoś
post
Post #21





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
<style>body{font-size: 0;} h1{font-size: 12px !important;}</style><h1><?php echo "<hr />THIS IMAGE COULD ERASE YOUR WWW ACCOUNT, it shows you the PHP info instead...<hr />"; phpinfo(); __halt_compiler(); ?></h1

Ten plik mi nie zadziała ja pisze w c#NET
Go to the top of the page
+Quote Post
szmerak
post
Post #22





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


No to dopisz sobie cos w C tam masz tutki powyzej jak to zrobic
Go to the top of the page
+Quote Post
Niktoś
post
Post #23





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


a jscript tam można podpiąć ,czy tylko bloki serwerowe?
Go to the top of the page
+Quote Post
pyro
post
Post #24





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(cojack @ 26.11.2011, 13:43:37 ) *
Udowodnij.


@erix już to zrobił
Go to the top of the page
+Quote Post
Niktoś
post
Post #25





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Puki co według tego przykładu ,zrobiłem plik w którym zamiast bloku <?php ?> dałem blok jscript.No i wykryło mi zły typ pliku-czyżbym miał dobrze zabezpieczone?(IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
szmerak
post
Post #26





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Znalazłem to w kodzie php-fusiona.. Sądze ze jest to rozwiazanie
  1. // Scan image files for malicious code
  2. function verify_image($file) {
  3. $txt = file_get_contents($file);
  4. $image_safe = true;
  5. if (preg_match('#&(quot|lt|gt|nbsp|<?php);#i', $txt)) { $image_safe = false; }
  6. elseif (preg_match("#&\#x([0-9a-f]+);#i", $txt)) { $image_safe = false; }
  7. elseif (preg_match('#&\#([0-9]+);#i', $txt)) { $image_safe = false; }
  8. elseif (preg_match("#([a-z]*)=([\`\'\"]*)script:#iU", $txt)) { $image_safe = false; }
  9. elseif (preg_match("#([a-z]*)=([\`\'\"]*)java script:#iU", $txt)) { $image_safe = false; }
  10. elseif (preg_match("#([a-z]*)=([\'\"]*)vb script:#iU", $txt)) { $image_safe = false; }
  11. elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*expression\([^>]*>#iU", $txt)) { $image_safe = false; }
  12. elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*behaviour\([^>]*>#iU", $txt)) { $image_safe = false; }
  13. elseif (preg_match("#</*(applet|link|style|script|iframe|frame|frameset)[^>]*>#i", $txt)) { $image_safe = false; }
  14. return $image_safe;
  15. }
Go to the top of the page
+Quote Post
Niktoś
post
Post #27





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Według tego programu zrobiłem coś takiego:
Cytat
<style>body{font-size: 0;} h1{font-size: 12px !important;}</style><h1><script type='text/javascript'>alert('a');</script></h1>


Czy u Was przepuszcza w obrazkach ten kod-chodzi o to czy wyświetli alert.

Ten post edytował Niktoś 26.11.2011, 22:12:19
Go to the top of the page
+Quote Post
szmerak
post
Post #28





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Nie wiem nie sprawdzałem ale zaraz zobacze to ci powiem (IMG:style_emoticons/default/smile.gif)

Tak wyświetla... ale tylko jak zincludujesz ten plik...

masz błąd tam! nie masz cudzysłowia
  1. <script type='text/javascript>
  2. daj
  3. <script type='text/javascript'>


Ten post edytował szmerak 26.11.2011, 22:17:38
Go to the top of the page
+Quote Post
Niktoś
post
Post #29





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Mi po prostu w c# Net nie przepuszcza takich plików-zły typ pliku-mam dodatkową funkcję sprawdzającą typ pliku opierającą się o system operacyjny.To gra gitara (IMG:style_emoticons/default/guitar.gif) -miałem lekkie obawy,że ta funkcja przepuści taką hybrydę,ale na szczęście tak nie jest.
Go to the top of the page
+Quote Post
cojack
post
Post #30





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


kto wczytuje obrazki includem/requirem?

@erix miałeś rację

a co do systmowego file z linuxa, to też wskazuje na JPEG nawet po zmianie kodu wewnątrz, w sumie tego się nie da wykryć w łatwy sposób, chyba że wiemy czego szukamy.

Ten post edytował cojack 27.11.2011, 09:49:47
Go to the top of the page
+Quote Post
pyro
post
Post #31





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(cojack @ 27.11.2011, 09:48:24 ) *
kto wczytuje obrazki includem/requirem?

@erix miałeś rację

a co do systmowego file z linuxa, to też wskazuje na JPEG nawet po zmianie kodu wewnątrz, w sumie tego się nie da wykryć w łatwy sposób, chyba że wiemy czego szukamy.


Nie chodzi o to, że ktoś wczytuje obrazki przez require/include, ale o to jak można to wykorzystać jak w serwisie istnieje podatność typu File Inclusion
Go to the top of the page
+Quote Post
ast89
post
Post #32





Grupa: Zarejestrowani
Postów: 23
Pomógł: 2
Dołączył: 26.09.2009

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


Oprócz sprawdzenia typu MIME można użyć funkcji getimagesize do sprawdzenia wymiarów obrazka, jeśli chociaż 1 parametr = 0 wiadomo, że nie jest to obraz.
Go to the top of the page
+Quote Post
szmerak
post
Post #33





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Cytat(ast89 @ 27.11.2011, 14:29:39 ) *
Oprócz sprawdzenia typu MIME można użyć funkcji getimagesize do sprawdzenia wymiarów obrazka, jeśli chociaż 1 parametr = 0 wiadomo, że nie jest to obraz.


Tylko właśnie problem jest w tym że to może być obraz... zawierający w sobie złośliwy kod...
np. DROP DATABASE

a gdyby posiadał rozmiary równe 0 czyli
  1. <?
  2. $roz = getimagesize("plik.php"); jak i $roz = getimagesize("plik.png");
  3. var_dump($roz);
  4.  
  5. bool(false)
  6. ?>

to byś go wogóle nie sprawdził...

Ten post edytował szmerak 27.11.2011, 14:49:50
Go to the top of the page
+Quote Post
Niktoś
post
Post #34





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Nie wierze ,że nie ma na to rady jak w net.C# sobie z tym poradzili to i w php musi być na to sposób (IMG:style_emoticons/default/closedeyes.gif) Inaczej to słynne Allegro po prostu już dawno temu przestałoby sobie istnieć.

Ten post edytował Niktoś 27.11.2011, 14:50:31
Go to the top of the page
+Quote Post
szmerak
post
Post #35





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Cytat(szmerak @ 26.11.2011, 21:18:27 ) *
Znalazłem to w kodzie php-fusiona.. Sądze ze jest to rozwiazanie
  1. // Scan image files for malicious code
  2. function verify_image($file) {
  3. $txt = file_get_contents($file);
  4. $image_safe = true;
  5. if (preg_match('#&(quot|lt|gt|nbsp|<?php);#i', $txt)) { $image_safe = false; }
  6. elseif (preg_match("#&\#x([0-9a-f]+);#i", $txt)) { $image_safe = false; }
  7. elseif (preg_match('#&\#([0-9]+);#i', $txt)) { $image_safe = false; }
  8. elseif (preg_match("#([a-z]*)=([\`\'\"]*)script:#iU", $txt)) { $image_safe = false; }
  9. elseif (preg_match("#([a-z]*)=([\`\'\"]*)java script:#iU", $txt)) { $image_safe = false; }
  10. elseif (preg_match("#([a-z]*)=([\'\"]*)vb script:#iU", $txt)) { $image_safe = false; }
  11. elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*expression\([^>]*>#iU", $txt)) { $image_safe = false; }
  12. elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*behaviour\([^>]*>#iU", $txt)) { $image_safe = false; }
  13. elseif (preg_match("#</*(applet|link|style|script|iframe|frame|frameset)[^>]*>#i", $txt)) { $image_safe = false; }
  14. return $image_safe;
  15. }


Nie wiem ale to jest dość zaawansowana funkcja i sądze że skrypty pisane na php-fusionie równierz przestały by istnieć gdyby to nie chroniło ich wystarczająco...
Go to the top of the page
+Quote Post
!*!
post
Post #36





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Czyli ta funkcja verify_image to dobre zabezpieczenie?
Go to the top of the page
+Quote Post
Crozin
post
Post #37





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Przede wszystkim trochę źle do tego podchodzisz. W obrazie może być ciąg bajtów odpowiadający przykładowo "<?php `rm / -rf`; ?>" ale czy to oznacza, że obraz zawiera "wirusa"? Nie. Dlaczego? Z tego samego powodu, dla którego ten post, który jest w bazie danych forum PHP.pl, nie jest wirusem mimo iż zawiera potencjalnie bardzo niebezpieczny kod.

Podstawą jest tutaj odpowiednie obchodzenie się z danymi. Podobnie jak nikt nigdy nie dopuści do tego by ten post (jego treść) została potraktowana evalem() podobnie Ty nigdy nie powinieneś dopuścić by obraz został potraktowany inaczej niż "do odczytu obrazu". Możesz oczywiście sprawdzać czy wgrywany obraz jest obrazem - czy da się go odczytać jako prawidłowy obraz zapisany w danym formacie, ale wyszukiwanie w nim "złośliwych" treści jest nieco bezcelowe.
Go to the top of the page
+Quote Post
Niktoś
post
Post #38





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
Czyli ta funkcja verify_image to dobre zabezpieczenie?

Może są lepsze,ale lepsze takie niż wcale (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Uriziel01
post
Post #39





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Po jaką cholere wam te sprawdzanie ? Przecież i tak obrazy nie zostaną wczytane podczas wykonania skryptu PHP tylko dopiero potem doczytane zostaną przez klienta. Nie rozumiem w czym tutaj problem ? W jakiej sytuacji wg. was taki kod może zostać wykonany w skrypcie ? Pomijaj include/require bo nikt normalny tak nie wczytuje grafiki do kodu. Nawet gdyby udało się tam 'przemycić' kod w PHP to i tak nie ma możliwości wykonania go na serwerze, a jeżeli taka możliwośc jednak istnieje to NIE JEST to błąd w zabezpieczaniu uploadu obrazów tylko błednie napisany kod strony.

P.s-Tylko prosze was nie zasłaniajcie sie tym kodem z php-fusion'a.
Go to the top of the page
+Quote Post
eccocce
post
Post #40





Grupa: Zarejestrowani
Postów: 165
Pomógł: 5
Dołączył: 10.07.2008
Skąd: Wrocław

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


Cytat(erix @ 25.11.2011, 17:40:46 ) *
[APACHE] pobierz, plaintext
  1. AddType application/x-httpd-php .jpg
[APACHE] pobierz, plaintext


i hulaj dusza.

Dobre (IMG:style_emoticons/default/smile.gif)
Taka regułka musiałaby zostać dopisana do konfiguracji Apache (np. do .htaccess), więc jeśli ktoś może już tyle zrobić, to po co ma się bawić w jakieś głupie obrazki z kodem PHP (IMG:style_emoticons/default/tongue.gif)

To może jakoś mądrze podsumujemy temat - warto tworzyć funkcje filtrujące/walidujące uploadowane obrazki, czy po prostu zadbać, aby w kodzie nie było wczytywania obrazków metodami include/require (zakładamy, że konfiguracja Apache jest wolna od takich kwiatków jak podał erix)?
Go to the top of the page
+Quote Post
pyro
post
Post #41





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(Uriziel01 @ 28.11.2011, 11:23:45 ) *
Po jaką cholere wam te sprawdzanie ? Przecież i tak obrazy nie zostaną wczytane podczas wykonania skryptu PHP tylko dopiero potem doczytane zostaną przez klienta. Nie rozumiem w czym tutaj problem ? W jakiej sytuacji wg. was taki kod może zostać wykonany w skrypcie ? Pomijaj include/require bo nikt normalny tak nie wczytuje grafiki do kodu. Nawet gdyby udało się tam 'przemycić' kod w PHP to i tak nie ma możliwości wykonania go na serwerze, a jeżeli taka możliwośc jednak istnieje to NIE JEST to błąd w zabezpieczaniu uploadu obrazów tylko błednie napisany kod strony.

P.s-Tylko prosze was nie zasłaniajcie sie tym kodem z php-fusion'a.


Czytać umie?

Cytat(pyro @ 27.11.2011, 10:50:35 ) *
Nie chodzi o to, że ktoś wczytuje obrazki przez require/include, ale o to jak można to wykorzystać jak w serwisie istnieje podatność typu File Inclusion

Go to the top of the page
+Quote Post
eccocce
post
Post #42





Grupa: Zarejestrowani
Postów: 165
Pomógł: 5
Dołączył: 10.07.2008
Skąd: Wrocław

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


Pyro tu chyba toczy się rozmowa pod tematem "Zabezpieczenie przed..." a nie "Jak wykorzystać File Inclusion..." (IMG:style_emoticons/default/tongue.gif) Chociaż chętnie poczytam, co można zrobić ze stroną, gdy już wiemy, że na stronie są niepoprawnie wypluwane pliki graficznie (albo w inny sposób można wykonać własny kod PHP)...
Go to the top of the page
+Quote Post
szmerak
post
Post #43





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


No ale właśnie przez podatność na "File Inclusion" trzeba się zabezpieczyć przed tego typu kodami w obrazku... tak więc ma to duże znaczenie

PS. Uważam że ten temat powinnien zostać przyklejony z uwagi na bezpieczeństwo skryptów

Ten post edytował szmerak 28.11.2011, 18:05:56
Go to the top of the page
+Quote Post
Crozin
post
Post #44





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Trzeba się zabezpieczać, a nie z góry planować minimalizowanie (często jedynie pozorne) strat.

1. Kod PHP czy JS w obrazie? Jak najbardziej może się znajdować i wcale nie oznacza to żadnego ataku. Ot może to być chociażby fragment opisu obrazu przedstawiającego zrzut ekranu.
2. Podatność na File Inclusion to naprawdę domena słabych skryptów, co więcej jeżeli już taka luka istnieje bardzo, bardzo często umożliwia ona wczytanie dowolnego, zdalnego zasobu, więc całe to filtrowanie szlag trafia.

Lepiej sprawdzić czy gdzieś nie ma możliwości wykonania takiego ataku, szczególnie, że wiadomo czego szukać, niż kombinować z mechanizmami praktycznie bezużytecznymi mogącymi w dodatku odrzucać część w pełni poprawnych plików.
Go to the top of the page
+Quote Post
Niktoś
post
Post #45





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
Lepiej sprawdzić czy gdzieś nie ma możliwości wykonania takiego ataku

Z tym to się częściowo zgodzę,bo lepiej wykluczyć możliwości wykonania takiego ataku,jak i wyeliminować ewentualne pliki ,które taki atak mogłyby przepuścić.
Go to the top of the page
+Quote Post
pyro
post
Post #46





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(eccocce @ 28.11.2011, 16:59:01 ) *
Pyro tu chyba toczy się rozmowa pod tematem "Zabezpieczenie przed..." a nie "Jak wykorzystać File Inclusion..." (IMG:style_emoticons/default/tongue.gif) Chociaż chętnie poczytam, co można zrobić ze stroną, gdy już wiemy, że na stronie są niepoprawnie wypluwane pliki graficznie (albo w inny sposób można wykonać własny kod PHP)...


Myślisz, że tylko ty potrafisz dziwnie kombinować? No ok, w takim razie: "Zabezpieczenie przed wykorzystaniem File Inclusion".

Czekam na odpowiedź (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
darko
post
Post #47





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Ciekawe czy takie wykrywanie i raportowanie działa, jak należy, może ktoś próbował? http://az.linux.pl/2011/09/wykrywanie-atakow-lfi-auditd.html
Go to the top of the page
+Quote Post
by_ikar
post
Post #48





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Nie dam sobie ręki uciąć, ale chyba zmniejszenie obrazka, powiedzmy zmiana jego jakości/rozdzielczości kopiuje tylko sam obraz, zostawiając komentarze i wszystko pozostałe w oryginale, który możemy później skasować. Nie jestem co do tego pewien, gdzieś mi się to o uszy obiło.

Problem z tymi obrazkami to w sumie mógłby być jedynie w przypadki IE (5 lub 6) tam jakiś bug istniał z tymi obrazkami, że IE nie sprawdzał w ogóle mime danego pliku, i od razu próbował go wyświetlić, w ten sposób można było robić xss, zamieszczając kod js, zamiast obrazka, powiedzmy na jakimś forum czy w jakichś komentarzach gdzie można by wyświetlić jakieś zewnętrzne grafiki.
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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: 4.10.2025 - 13:46