← Back to team overview

sslug-teknik team mailing list archive

RE: PHP gennem suEXEC på Apache?

 

Poul-Erik skrev:

> Morten Egelund Rasmussen wrote:
> >
> > Hejsa,
> >
> > Jeg har nu fået konfigureret min Apache, så alle CGI-scripts går
gennem
> > suEXEC, og de enkelte brugere på serveren ikke kan læse spændende
ting
> > hos naboen herigennem.
> >
> > Men-men-men: PHP bliver jo normalt kørt direkte ind i Apache under
> > kompileringen (som modul), og suEXEC vil derfor være ligeglad med
alle
> > PHP-scripts. :-(
> >
> > Begynder man så at læse lidt rundt på nettet, finder man ud af at
PHP
> > godt kan køre i "safe mode", hvilket er helt udenom suEXEC (se
> > http://www.php.net/manual/en/features.safe-mode.php). Det ser dog
*IKKE*
> > ud til at det er vejen frem, da det ændrer en masse ting i PHP.
F.eks.
> > kræves det at filer som forsøges åbnet via et script, har samme ejer
> > (UID) som scriptet selv. (Og vupti: så var min gruppeopsætning
væk!)...
> >
> > Vejen frem må således være at få PHP til at fungere som CGI-parser
(som
> > f.eks. Perl). For at få kørt hastigheden op i nærheden af det
> > oprindelige kan man evt. (vistnok) gøre dette gennem FastCGI-modulet
til
> > Apache. --Dokumentationen på dette område er dog ret sparsom! :-(
> >
> > Imidlertid er jeg lidt ked af, hvis alle PHP-scripts nu SKAL have en
> > "shebang"-linie i toppen og rettighederne sættes til noget med
"x"...
> >
> > Derfor: Kan man konfigurere Apache til automatisk at finde ud af
hvilken
> > CGI-parser en fil skal gennem, udelukkende ud fra dens extension? --
> > Eller lægger CGI-modellen op til, at CGI-programmerne kører helt
> > uafhængigt af Apache, og Apache egentlig kun læser stdout fra disse?
(Og
> > da CGI-scripts her *er* programmer, skal de have shebang+execute.)
> >
> > Det korte af det lange er: Hvordan kalder jeg bedst muligt
PHP-scripts
> > gennem suEXEC?
> >
> 
> Du har ikke brug for suexec Det du har brug for er følgende i
> httpd.conf:
> 
> <Directory /docroot>
> php_admin_value open_basedir /docroot
> </Directory>
> 
> 
> Det direktiv kan lægges ind i dine virtulles servere. Du kan så
> sætte dem i samme gruppe i et fælles directory. Der er så vidt
> jeg kan se heller ikke noget i vejen for at samme virtuelle
> server har adgang til flere
> Directories.

Idéen er fin, men der er jo fortsat en masse sikkerhedshuller i PHP.
(F.eks. backticks.)

Hvis man vælger at køre safe_mode, så komme der imidlertid en kæmpe
begrænsning på systemet: Alle filer som forsøges åbnet SKAL have samme
UID som ejer som scriptet har. (Og der kan jo godt være f.eks. globale
includes m.v., som skal være tingængelige for alle brugere af mit
webhotel. -- For slet ikke at snakke om de andre fælles ting på
webhotellet, som folk GERNE på have adgang til.)

Anyway: Jeg er faktisk kommet så langt, at jeg kan få PHP-scripts til at
køre som CGI gennem suEXEC uden shebang. (Det krævede godt nok lige at
man modificerede kildekoden til suEXEC!!!!! GNÆK!) Nu kører PHP som den
bruger som oprettede scriptet. :-)

Men-men-men: Så vidt jeg kan se, så ryger der nogle HTTP headers af i
farten når man konverterer til CGI. F.eks. virker det ikke, hvis
PHP-scriptet laver "authentication" som Apache ellers ville gøre... (Det
konkrete eksempel er phpMyAdmin i "Advanced Authentication" mode.)

Æv-æv-æv. Så vidt jeg kan se på Apache log-filerne, så kan den ikke lide
de headers som kommer fra scriptet:

[error] [client 62.242.140.xx] malformed header from script. Bad
header=HTTP/1.0 401 Unauthorized: [absolut_sti_til_mit_script.php]

Er der også en patch til dette, eller skal jeg bare i gang med at lave
et wrapper-script?!!! (Man kan vel altid lave en lille wrapper, der
lægger scriptets output ud i en fil til nærmere beskuelse.)

Hjælp!

^Morten


Lige til sidst (jvf. Poul-Eriks indlæg):
> I øvrigt forbavser det mig ikke det mindste at det ikke er sat op
> på Webhoteller. Det fungere sikkert sådan mange steder at folk
> selv stort set kan give sig selv de rettigheder de nu synes at de 
> skal have.

Jaeh.... Men det betyder også at man som kunde på et webhotel har fri
adgang til at se kildekode ovre hos naboen. (Password til hans
mySQL-kundedatabase må der jo nødvendigvis også stå et eller andet sted
i hans scripts!) -- Et eller andet sted, så mener jeg at det er dybt
kritisabelt at der ikke er mere fokus på dette. (Gad vide hvad
ComputerWorld ville sige til en lille "webhotel hacking how-to"?) -- Så
kom der måske lidt gang i systemadministratorerne rundt omkring?! Jeg
skal bare lige selv have styr på det først, så kan man vel altid udråbe
sig selv til freelance-konsulent! ;-p (LOL)



Follow ups

References