ugrás a tartalomhoz

register_globals

Szenya · 2003. Dec. 8. (H), 19.10
Hello!
Azt szeretném megkérdezni (főleg rendszergazdákra gondoltam), hogy ha a php.ini-be a register_globals-t on-ra állítom, akkor a betörési felületet adok, stb? Ajánlot vagy sem?
Előre is kösz!

Szenya
 
1

Re: register_globals

pp · 2003. Dec. 8. (H), 19.38
1. nem ajánlott
2. nem teremtesz betörési felületet, de nézzük a következő kódot:
loginform.html
-----
<form action="index.php">
<input type="text" name="login">
<input type="password" name="pwd">
<input type="submit" value="Belépés">
</form>
-----
index.php
-----
<?
if (jelszoellenorzes($login,$pwd)){
$belepett_user=$login;
}

if(!isset($belepett_user)){
include('loginform.html');
exit();
}

//id jonnek a vedett dolgok
?>

(En ilyet sose csinalok, csak a pelda kedveert irtam ide...)
Namost jon a "hacker" es beirja a bongeszobe:
index.php?belepett_user=admin

Es akkor a te kis scripted azt fogja hinni, hogy az "admin" nevu felhasznalo lepet be.
Ezt elkerulheted, ha a script elejen a $belepett_user nevu valtozot kinullazod, vagy r_g=off, es akkor nem tudsz _ilyen_ hibat elkovetni.
Azert gondolkodni sose art, r_g ide, vagy oda. ;))

pp
2

Re: register_globals

Szenya · 2003. Dec. 8. (H), 19.41
Most én nem ilyen "piti" dologra gondoltam speciel. Mert ez adott.
Ezt nem sértésként írtam pp.
3

Re: register_globals

Szenya · 2003. Dec. 8. (H), 19.43
A Te általad felvetett gondot, lehet cookie-val, vagy session-el kezelni biztibe...
4

Re: register_globals

pp · 2003. Dec. 8. (H), 22.51
Most én nem ilyen "piti" dologra gondoltam speciel. Mert ez adott.

;) mit ertesz az alatt, hogy "Mert ez adott"
Mi adott?

Meg egyszer leirnam, hogy amit irtam, az egy _bena_ kod, es pusztan a veszely szemleltetesere szolgal. Tehat sose szabad felteteleznunk, hogy egy valtozo ures kezdoertekkel indul, ha r_g on-on van.
Biztonsagi rest jelenthet, mert nagyobb odafigyelest igenyel ilyen kornyezetben jol megirni egy alkalmazast. Tehat nem a rendszergazda tevekenysege jelenti a veszelyforrast, hanem a felhasznalok meglete;))

Vegyunk akkor egy egyszeru fajlfeltolto formot. safe_mode=off beallitasnal ha a r_g on-on van, es nem hasznalod a move_uploaded_file es is_uploaded_file fuggvenyeket, tehat lehetoleg minden biztonsagi ajanlast figyelmen kivul hagysz, es egy egyszeru
copy($userfile_tmp_name,'idemasold') utasitassal masolod a webrol elerheto konyvtarba a "feltoltott" fajlt, akkor megtehetik azt, hogy atverik a programodat egy egyszeru kis formmal, mondjuk:

[nezd a formot 2 hozzaszolassal lejebb, es ne kerdezd miert nem kajalta meg itt a nuke....]

Nos erre is mondhatod azt, hogy "ilyen idiota ember nincsen", de ugyebar amikor biztonsagrol beszelunk, akkor erre mindig csak az az egy valasz lehet, hogy "de bizony van."
Mellekesen meg megjegyeznem, hogy sem ezt, sem az elobbi kis piti behatolasomat se lehet "cookival" kivedeni persze kerdes az, hogy mit ertesz cookie-s megoldas alatt.

Es akkor hogy tisztan lassunk en a kerdesedre probalok meg valaszolni, es te azt kerdezted, hogy rendszergazda szemmel jelent-e biztonsagi rest az r_g on hasznalata, amire a valasz az, hogy nem _jelent_, hanem _jelenhet_.
Tehat lehet ugy uzemeltettni egy komoly webszervert/webalkalmazast, hogy a r_g on-ra van allitva, be lehet ugy allitani ezt a webszervert, hgoy a felhasznalok csak a sajat dolgaikat tehessek tonkre.
Szoval csak ilyen kis piti hibak kihasznalasatol ov meg az r_g off.

pp
5

Re: register_globals

T.G · 2003. Dec. 8. (H), 22.52
Abban az esetben, ha a kódot nem csak magadnak írod, akkor mindenképpen érdemes használni a $_GET, $_POST, $_SESSION, ... tömböket.
Sokkal könnyebb úgy megérteni a forrást, ha nem kell azon gondolkodni, hogy melyik változó honnan való.

Ezt register_globals on mellett is érdemes használni! :)
És ha már úgyis használod, akkor nyugodtan kapcsold ki! :)

A példa talán erőltetett (tényleg az:) de mi van, ha valaki ismeri a kódot, és addig-addig turkászik benne, amíg megtalálja, hogy azzal a csokival, amivel ellenőrizted, hogy egy adat bejövő adatot vagy sem, azt is szimulálja. index.php?user=admin&csoki_ellenorzes=1
6

Re: register_globals

pp · 2003. Dec. 8. (H), 22.56
<form action="http://teservered/tescripted.php">
<input type="hidden" name="userfile_tmp_name" value="/etc/passwd">
<input type="submit" value="behatolas;)">
</form>
7

Re: register_globals

Szenya · 2003. Dec. 10. (Sze), 17.05
pp az admin-os példád tényleg _béna_ kód, de leírtad: "... mert nagyobb odafigyelest igenyel ilyen kornyezetben jol megirni egy alkalmazast ..." itt a pont, szal nem értem.
8

Re: register_globals

pp · 2003. Dec. 10. (Sze), 20.13
pp az admin-os példád tényleg _béna_ kód, de leírtad: "... mert nagyobb odafigyelest igenyel ilyen kornyezetben jol megirni egy alkalmazast ..." itt a pont, szal nem értem.


Szenya, evvel mit akarsz most mondani??
mi az, hogy itt a pont? Milyen pont, es miert ott van?? Hol??
Mit nem értesz?

pp
9

Re: register_globals

Hojtsy Gábor · 2003. Dec. 10. (Sze), 20.37
Kedves Szenya, nem tudom el tudod-e képzelni, hogy az oktatás általában hogyan folyik, illetve az úgynevezett "példákat" hogyan szokták adni. Tipikusan nem egy programrendszer teljes forráskódját másolják be a fórumba/könyvbe/cikkbe, hanem kiragadnak valamilyen úgynevezett "példát", amin az adott kérdés megmutatható. PP "példája" minden bizonnyal piti kis "példa", de a problémát illusztrálni szándékozik, nem feltételezendő, hogy bárki is ilyen kódot írjon (mint ahogy PP ezt megjegyezte). Sokkal bonyolultabb kódban arányosan nehezebb megtalálni az ilyen hibákat.

Mivel te úgy tűnik a komolyabb feladványokat szereted, próbáld meg kitalálni, hogy mi lehetett a gondja ennek a kódnak. Most ez nem lehet igazán nehéz, mert tudjuk, hogy a register_globals bekapcsolt állapotának problémájára adtam példát, és konkrétan megmutattam, hogy a webhely kód mely része hibás, de hátha még így is találsz kihívást a dologban...

http://cvs.php.net/co.php/phpweb/search.php?login=2&r=1.38
10

Re: register_globals

Bártházi András · 2003. Dec. 10. (Sze), 20.39
PP csak azt szerette volna kifejteni, hogy lehet, hogy ez egy egyszerű példa, de mivel nincs tökéletes ember, ezért ejthetünk akár alap hibákat is. A register_globals bekapcsolása egy fokkal növeli a biztonságot, egy kicsit biztosabb lehet benne az ember, hogy legalább ilyen jellegű hibát nem követ el. A másik dolog, hogy a PHP-ben nagyon sok az automatizmus. Van, lehet olyan benne, amiről nem tudsz/tudhatsz valamiért, és ezért figyelmen kívül hagyod azt, mint támadási felületet. Minél inkább csökkented a lehetséges felületek számát, annál nagyobb biztonságban van. Szerintem pp jól írta le, amit leírt, nem értem én sem, mit nem értesz rajta. :)
11

Re: register_globals

Szenya · 2003. Dec. 11. (Cs), 10.11
Én a nem értemet arra értettem, hogy miért mondják azt, hogy off. Mert ha körültekintően, alaposan, stb írod meg a kódod, akkor majdnem ugyanot vagy, mint ha off-on lenne. Valamint nem a felfogó képességemmel valamint az értelmezési készségemmel van gond.
12

Re: register_globals

pp · 2003. Dec. 11. (Cs), 16.37
Én a nem értemet arra értettem, hogy miért mondják azt, hogy off. Mert ha körültekintően, alaposan, stb írod meg a kódod, akkor majdnem ugyanot vagy, mint ha off-on lenne. Valamint nem a felfogó képességemmel valamint az értelmezési készségemmel van gond.


Nyilvan mi magyarazunk rosszul, ha te nem erted. ;) Kiemelnem a kovetekzo mondatodat, es kerlek olvasd vegig, amit mi mondtunk:
Mert ha körültekintően, alaposan, stb írod meg a kódod, akkor majdnem ugyanot vagy, mint ha off-on lenne.


Es akkor a temat lezarando:
Kivanom neked, hogy sose tevedj.

pp
13

Re: register_globals

Hojtsy Gábor · 2003. Dec. 12. (P), 11.48
Kedves Szenya!

Most azt mondod, hogy ha körültekintően írod meg a kódod, akkor nem lehet baj... Először is sose lehetsz eléggé körültekintő. A cirkuszi artisták is évtizedes tapasztalattal mennek a közönség elé, mégis használnak biztosítókötelet... Másrészt pedig rendszergazdáról volt szó, aki ugye nem igazán tudja befolyásolni, hogy milyen kódokat tesznek fel a szerver felhasználói...

Goba