Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [security]kod w obrazku .jpg
Forum PHP.pl > Forum > PHP
Black-Berry
Odnosząc się do postu:
Cytat(kiler129 @ 11.05.2008, 23:24:41 ) *
...dodajac do pliku php na poczatku pierwsze kilka KB z obrazka i nadajc rozszeznie .jpg mozna upnac kod php co mi sie bardzo nie podoba
Przepraszam, że powielam temat ale ponieważ nie wiem o tym zupełnie nic będzie to dystkusja na wiele niższym poziomie...

Czy rzeczywiście takie coś jest możliwe? Kiedy taki kod się wykona? Czy zaraz po wysłaniu obrazka formularzem? Czy dopiero po próbie wyświetlenia zainfekowanego obrazka?

Edit: Co zrobić jeśli nie używamy bibliotek GD? Konwersja funkcją imagecopyresampled() nie zawsze jest rozwiązaniem bo powoduje utratę jakości.
Babcia@Stefa
To jest mało prawdopodobne jak dla mnie ponieważ parser PHP standardowo jest wyłączony dla obrazków (rozszeżenie), w htaccess możesz jedynie ustawić parser na czytanie gifów, jpegów itp.

Gdzieś tam miałem taką klasę (dawno ją pisałem tongue.gif):

http://manual.babciastefa.boo.pl/download/...ment.class.phps - Sama klasa
http://manual.babciastefa.boo.pl/download/db.eme - Baza danych klasy
http://manual.babciastefa.boo.pl/download/E.M.E.test.phps - Przykład

Klasa sprawdza nagłówki dla odpowiednich formatów (sprawdza czy ktoś nie oszukuje).
Jednak jeśli masz włączone czytanie przez parser PHP obrazki to mm... chyba jednak klasa Ci nie pomoże, bo ktoś wrzuci na początku kawałek np. GIF... - nagłówek gifa a później kod PHP winksmiley.jpg

1. Sprawdzaj obrazek przez GD
2. Nie ustawiaj intepretera PHP na pliki obrazkowe

@edit
Poprostu użyj getimagesize() do sprawdzenia obrazku, nie generuj go od nowa haha.gif
Po wywołaniu obrazka wywoła się kod.
Dziękuję, Babcia@Stefa
b_chmura
Babcia@Stefa - nie zrozumiałeś Black-Berry. On mówi o tym ze jeśli w pliku z rozszerzeniem PHP kilka pierwszych kb będzie z obrazka plik przejdzie jako obrazek.

Black-Berry - prawdy powiedziawszy nigdy się z tym nie spotkałem, zaraz zrobię parę testów. Nie mniej jednak zawsze możesz sprawdzać rozszerzenia (3 ostatni znaki za wyjątkiem jpeg)
l0ud
Cytat
Babcia@Stefa - nie zrozumiałeś Black-Berry. On mówi o tym ze jeśli w pliku z rozszerzeniem PHP kilka pierwszych kb będzie z obrazka plik przejdzie jako obrazek.


Plik przejdzie jako obrazek, ale to nic nie da, bo zapisze się pod rozszerzeniem obrazkowym. Jedyna groźba to lokalne zaincludowanie tego pliku, ale to inna dziura która nie występuje w dobrze napisanym skrypcie.

[edit]

Oczywiście mam na myśli pliki w których rozszerzenie jest dodawane 'ręcznie'. Zapisywanie plików o dokładnie takiej samej nazwie jak wejściowe to oczywiście głupota.
Black-Berry
@b_chmura Zrobiłeś juz może testy? Co z nich wyniknęło?

Czysto teoretycznie to jak ktoś mógłby wykonać taki skrypt? Np taki ustawiający sesję $_SESSION['admin_logged'] na true wydaje się być niebezpieczny... Jeśli się się dłużej zastanowić to uzyskanie dostępu do admina to jest najmniejszy problem. Taki haker mógłby przecież skasowac cały katalog ze stroną!

Znacie może inne możliwości takich włamów które pozwalają wykonać skrypt hakera? Myślałem, że takie rzczeczy to bajka?!
b_chmura
Testowałem, na moim serwerze nie ma takiej możliwości jednak w innym podobnym wątku twierdzą że przy jakiejś innej konfiguracji apache istnieje taka możliwość.
Babcia@Stefa
Cytat(b_chmura @ 13.05.2008, 18:28:11 ) *
Babcia@Stefa - nie zrozumiałeś Black-Berry. On mówi o tym ze jeśli w pliku z rozszerzeniem PHP kilka pierwszych kb będzie z obrazka plik przejdzie jako obrazek.

Black-Berry - prawdy powiedziawszy nigdy się z tym nie spotkałem, zaraz zrobię parę testów. Nie mniej jednak zawsze możesz sprawdzać rozszerzenia (3 ostatni znaki za wyjątkiem jpeg)


No to w takim razie parser jest ustawiony na włączony w pliku *.php, *.php4, *.php5 a więc jeśli na początku będzie obrazek to i tak kod się wykona, ale na początku będzie tylko kod obrazka, oczywiście mogą wystąpić problemy z używaniem wtedy funkcji header()" title="Zobacz w manualu PHP" target="_manual itp.

Pozdrawiam, Babcia@Stefa
pyro
Kod PHP da się przemycić w obrazkach i jak sie otworzy ten obrazek to nie jest wykonywany żaden kod, ale taki kod można ZAINCLUDOWAĆ, dlatego jest on szczególnie niebezpieczny przy atakach Local File Inclusion, aby się zabezpieczyć chyba wystarczy funkcja getimagesize()" title="Zobacz w manualu PHP" target="_manual
.radex
btw. Do poczytania: http://pornel.net/captcha
pyro
Cytat(radex_p @ 16.05.2008, 19:59:24 ) *
btw. Do poczytania: http://pornel.net/captcha


Co captcha ma wspólnego z tematem o.O?
.radex
No fakt.... Widziałem wiele takich tematów i kiedy zobaczyłem "kod w obrazku .jpg" od razu pomyślałem o CAPTCHA tongue.gif
stygma
Cytat
...dodajac do pliku php na poczatku pierwsze kilka KB z obrazka i nadajc rozszeznie .jpg mozna upnac kod php

Można cały kod wstawić do exif jpeg-a i jeżeli obrazek jest załadowany przez ftp do katalogu, który nie jest zabezpieczony przed uruchamianiem plików php mozna go uruchomić.

pozdrawiam stygma
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.