Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ominięcie zabezpieczenia
Forum PHP.pl > Forum > PHP
karis
Czy mogą inni jeśli tak to w jaki sposób obejść moje zabezpieczenia dotyczące uploadu plików?

Sprawdzam za pomocą ereg() czy w nazwie występuje np: php, php3, php4, php5....

Czy mogą oni w jakiś sposób wgrać plik php?
.radex
mogą. Wystarczy, że rozszerzenie będzie inne. Ale wtedy nic z tym nie zrobisz, bo i tak nie odpalisz pliku php, jeśli nie ma on rozszerzenia .php

Sprawdzanie po rozszerzeniach wystarcza. Raz widziałem stronę z uploadem (nie będę podawał linku, żeby nie robić antyreklamy), na której nie było sprawdzane rozszerzenie, a mime type - takie zabezpieczenie można o kant dupy potłuc, bo mime type można sfałszować (kolega myślał, że mime type jest mu zwracane na podstawie zawartości pliku)
Spawnm
po co tak?
sprawdzaj czy typ mime jest taki jaki dopuszczasz np. jpg, gif.
karis
Dobra ale w jaki sposób to zrobią.
Przecież jak zmienią rozszerzenie skryptu to sie nie wykona
Crozin
Wsz7ystko zależy od konfiguracji serwera. Miałem już sam doczynienia z serwererami, gdzie dla wszystkich plików poza jpg,png,gif było włączone parsowanie kodu PHP.

Co do mime. Zależy które jest sprawdzane. Jeżeli to wyłane przez przeglądarkę to jest to błąd - bo to można sfałszować. Dużo pewniejsze jest sprawdzanie mime po stronie serwera.
karis
w jaki sposób można sfałszować mime?
.radex
Cytat(karis @ 3.04.2009, 18:17:27 ) *
w jaki sposób można sfałszować mime?


No przecież Crozin już wyjaśnił. Jeśli sprawdzamy mime type wysyłane przez przeglądarkę, to równie dobrze ta przeglądarka może wysłać sfałszowane mime. Po prostu wystarczy "powiedzieć" przeglądarce jakie MIME ma wysłać serwerowi.
pyro
Cytat(.radex @ 3.04.2009, 18:27:27 ) *
No przecież Crozin już wyjaśnił. Jeśli sprawdzamy mime type wysyłane przez przeglądarkę, to równie dobrze ta przeglądarka może wysłać sfałszowane mime. Po prostu wystarczy "powiedzieć" przeglądarce jakie MIME ma wysłać serwerowi.


a konkretniej nagłówek HTTP
Kocurro
Widziałem jakiś czas temu funkcję, moduł, klasę (co to było nie pamiętam), które sprawdzały w locie mime-type bazując na ustalonych regułach.

pozdrawiam,
Łukasz
Fifi209
Jak na moje oko to możesz wgrać plik na serwer, spakować go np. zipem i po sprawie. winksmiley.jpg
tanwel_programmer
Moim skromnym zdaniem zapominając o mime istnieje jeszcze jedna ważna reguła. Jeżeli zdarzy się, że na serwerze występują pliki ".inc" to należy pamiętać równierz o nich. Często się żdarza, że na serwer nie prasuje plików inc i można je nie tylko podmienić ale równierz sobie obejrzeć w przeglądarce smile.gif
karis
Cytat(fifi209 @ 3.04.2009, 21:51:19 ) *
Jak na moje oko to możesz wgrać plik na serwer, spakować go np. zipem i po sprawie. winksmiley.jpg


No załózmy ze wgraj spakowany plik php zipem.

Jak zostanie on wykonany?
mlattari
ale najprościej, jeżeli to grafika, będzie chyba uzycie getimagesize do sprawdzenia wymiarów pliku. Tego chyba nie da się oszukać :-)
Fifi209
Cytat(karis @ 3.04.2009, 22:40:49 ) *
No załózmy ze wgraj spakowany plik php zipem.

Jak zostanie on wykonany?


Właśnie chyba w tym rzecz aby nie został wykonany. ;p

@edit
Mam tu na myśli pakowanie plików php. Nie napisałeś co chcesz uploadować. ;d
karis
A jak może zostać wykonany, chcę to wiedzieć tongue.gif
.radex
Cytat(karis @ 4.04.2009, 10:04:16 ) *
A jak może zostać wykonany, chcę to wiedzieć tongue.gif


Nie może tongue.gif

No chyba, że napiszesz moduł do Apache'a, który w czasie rzeczywistym wypakowuje plik zip i odpala zawarty w nim .php tongue.gif
kiamil
A rozszerzenia .phtml .shtml .asp .aspx .json .js .html .xhtml .htm itp. ? .phtml .shtml moze odpalacc php, .json mzoe sluzyc jako serwer danych, .js tez jako keylogger, .asp .aspx moze odpalic asp, .*htm* moze zawierac js..
Spawnm
zamiast sprawdzać czy w nazwie czasem nie pojawiło się .php itp
lepiej daj tablicę z dozwolonymi formatami, z nazwy nadesłanej grafiki/aplikacji odcinaj 4 ostatnie znaki i potem sprawdzaj w in_array" title="Zobacz w manualu PHP" target="_manual .
Crozin
@Spawnm: do pobierania rozszerzenia pliku służy pathinfo" title="Zobacz w manualu PHP" target="_manual

Co do tematu: finfo_file" title="Zobacz w manualu PHP" target="_manual lub coś innego, co po stronie serwera odczytuje mime pliku już wgranego na serwer oraz sprawdzanie rozszerzenia. I tyle.
megawebmaster
Dokładnie. A do obrazków można użyć exif_imagetype(). W ten sposób nie można uszkodzić sobie serwisu winksmiley.jpg
bełdzio
co do spr rozszerzenia to NULL byte moze troszke namieszac :-) jest kilka sposobow zabezpieczenia wsio zalezy od funkcjonalnosci jaka ma byc spelniona smile.gif na blogasku (beldzio.com) w blizszym lub dalszym czasie mam zamiar cos ciekawego na ten temat napisac smile.gif ale sadzac po ankiecie z tematami raczej dalszym :-)
Fifi209
Cytat(.radex @ 4.04.2009, 10:16:42 ) *
Nie może tongue.gif

No chyba, że napiszesz moduł do Apache'a, który w czasie rzeczywistym wypakowuje plik zip i odpala zawarty w nim .php tongue.gif


A nie lepiej po prostu skorzystać z gotowych bibliotek i rozpakować plik i możesz go potem uruchomić np. eval()" title="Zobacz w manualu PHP" target="_manual
Babcia@Stefa
Cytat(.radex @ 4.04.2009, 08:16:42 ) *
Nie może tongue.gif

No chyba, że napiszesz moduł do Apache'a, który w czasie rzeczywistym wypakowuje plik zip i odpala zawarty w nim .php tongue.gif


Już coś takiego istnieje, ale z GZIPEM.

Pozdrawiam, WebNuLL
erix
Cytat
z nazwy nadesłanej grafiki/aplikacji odcinaj 4 ostatnie znaki

asdasd.phpaaaa i Twoje "zabezpieczenie" leży.

Najpewniejsze jest zapisanie do katalogu poza public_html, sprawdzenie MIME po stronie serwera (file -bi) i tylko nagrzebanie w konfiguracji serwera/skopany skrypt może odpalić intruza.
Kocurro
Nie wiem czy ktoś wstawiał już, jak nie to zapraszam do literatury smile.gif

http://isc.sans.org/diary.html?storyid=6139
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.