karis
3.04.2009, 16:22:04
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
3.04.2009, 16:28:05
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
3.04.2009, 16:29:01
po co tak?
sprawdzaj czy typ mime jest taki jaki dopuszczasz np. jpg, gif.
karis
3.04.2009, 16:48:55
Dobra ale w jaki sposób to zrobią.
Przecież jak zmienią rozszerzenie skryptu to sie nie wykona
Crozin
3.04.2009, 17:12:38
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
3.04.2009, 17:17:27
w jaki sposób można sfałszować mime?
.radex
3.04.2009, 17:27:27
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.
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
3.04.2009, 17:34:33
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
3.04.2009, 20:51:19
Jak na moje oko to możesz wgrać plik na serwer, spakować go np. zipem i po sprawie.
tanwel_programmer
3.04.2009, 21:00:23
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
karis
3.04.2009, 21:40:49
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.

No załózmy ze wgraj spakowany plik php zipem.
Jak zostanie on wykonany?
mlattari
4.04.2009, 02:41:44
ale najprościej, jeżeli to grafika, będzie chyba uzycie getimagesize do sprawdzenia wymiarów pliku. Tego chyba nie da się oszukać :-)
Fifi209
4.04.2009, 08:14:19
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
4.04.2009, 09:04:16
A jak może zostać wykonany, chcę to wiedzieć
.radex
4.04.2009, 09:16:42
Cytat(karis @ 4.04.2009, 10:04:16 )

A jak może zostać wykonany, chcę to wiedzieć

Nie może

No chyba, że napiszesz moduł do Apache'a, który w czasie rzeczywistym wypakowuje plik zip i odpala zawarty w nim .php
kiamil
4.04.2009, 17:43:36
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
4.04.2009, 18:27:44
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
4.04.2009, 20:39:04
@Spawnm: do pobierania rozszerzenia pliku służy
pathinfo" title="Zobacz w manualu PHP" target="_manualCo 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
4.04.2009, 21:54:05
Dokładnie. A do obrazków można użyć exif_imagetype(). W ten sposób nie można uszkodzić sobie serwisu
bełdzio
4.04.2009, 22:24:19
co do spr rozszerzenia to NULL byte moze troszke namieszac :-) jest kilka sposobow zabezpieczenia wsio zalezy od funkcjonalnosci jaka ma byc spelniona

na blogasku (beldzio.com) w blizszym lub dalszym czasie mam zamiar cos ciekawego na ten temat napisac

ale sadzac po ankiecie z tematami raczej dalszym :-)
Fifi209
5.04.2009, 09:48:17
Cytat(.radex @ 4.04.2009, 10:16:42 )

Nie może

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

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
5.04.2009, 10:22:18
Cytat(.radex @ 4.04.2009, 08:16:42 )

Nie może

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

Już coś takiego istnieje, ale z GZIPEM.
Pozdrawiam, WebNuLL
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
9.04.2009, 19:00:33
Nie wiem czy ktoś wstawiał już, jak nie to zapraszam do literatury
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.