PHP in BASH
 
sce 18. dec 2009 13:24:16 Pridružen od:
27. maj 2007
995 objav
313 60 26
#1

Pozdravljeni kolegi. Tokrat imam pa jaz problem in potrebujem vašo pomoč.

Programiram majhno skriptico v PHP in hočem z njo poslati neke podatke v bash...



PHP:




$scriptExecStr = sprintf("test.sh '%s' '%s'",

"mapa",

"dir",

);



passthru($scriptExecStr);




test.sh:




#!/bin/bash

cd $1

mkdir $2




Zadeva je po logiki simple ampak mi ne deluje. Kaj bi lahko bilo preden dobim sivo frizuro? :)



Hvala za odgovore,

S.


všeč(0) ni všeč(0) spam(0)
It's unknown, but I could be a cactus with two cats. I could also be an IT specialist. Who knows...
 
Roky 18. dec 2009 13:28:48 Pridružen od:
9. apr 2008
2506 objav
3240 335 107
#2

Tole meni deluje.


//PHP
exec("/bash_skripta/test.sh {$param1} {$param2}", $data);
$data = implode("\n", $data);

#BASH
if [ -z $1 ]; then # -n tests to see if the argument is non empty
echo "Kateri paremetri manjkajo"
else

fi
všeč(0) ni všeč(0) spam(0)
rok.meglic@gmail.com - 031 492 148
 
sce 18. dec 2009 14:37:26 Pridružen od:
27. maj 2007
995 objav
313 60 26
#3

Roky hvala. Tudi svojo sem preštudiral samo odklopit se je bilo treba za 20min :) Manjkalo je ./ za zagon skripte :)


všeč(0) ni všeč(0) spam(0)
It's unknown, but I could be a cactus with two cats. I could also be an IT specialist. Who knows...
 
Roky 18. dec 2009 14:40:14 Pridružen od:
9. apr 2008
2506 objav
3240 335 107
#4

Ni problema, tut meni se dostikrat dogaja da glavo razbijam za eno malenkost:)


všeč(0) ni všeč(0) spam(0)
rok.meglic@gmail.com - 031 492 148
 
fatg 18. dec 2009 15:43:45 Pridružen od:
28. jan 2008
94 objav
73 2 0
#5

pa ne pozabi poklicati escapeshellarg() na podanih parametrih ($param1 in $param2), preden jih sestaviš v ukaz za exec().


všeč(0) ni všeč(0) spam(0)
 
bl4ckb1rd 18. dec 2009 16:43:10 Pridružen od:
18. avg 2008
1122 objav
750 91 11
#6

na splošno je varnostno vprašljivo da ti ta komanda v phpju sploh deluje... exec in vse te funkcije morajo biti v basediru, ali čisto generalno izključene... drugače je tu velika varnostna luknja. Ne glede na to da si svojo aplikacijo, ki kliče tole funkcijo v phpju čisto zavaroval, da ne pride do čudnih vnosov kot je ";cat /etc/passwd" za $param1 recimo... Generalno so ogoržene vse skripte na celotnem strežniku zaradi obstoja take funkcije, vendar kakorkoli... že veš kaj delaš.


všeč(0) ni všeč(0) spam(0)
blackbird.si - Moj plac za odlaganje problemov in rešitev...
 
Roky 18. dec 2009 17:03:59 Pridružen od:
9. apr 2008
2506 objav
3240 335 107
#7

bl4ckb1rd, če uporabljaš suPHP, torej da lahko le v svojem delovnem okolju zadeve kličeš le pod userjem accounta, potem je malce manj nevarno.


všeč(0) ni všeč(0) spam(0)
rok.meglic@gmail.com - 031 492 148
 
sce 18. dec 2009 17:06:24 Pridružen od:
27. maj 2007
995 objav
313 60 26
#8

bl4ckb1rd: definitivno cenim tvoj post, drugače je pa zadeva zaprtega tipa (intranet) za 20 uslužbencev in ni na voljo na netu :) Ampak imaš prav. :)


všeč(0) ni všeč(0) spam(0)
It's unknown, but I could be a cactus with two cats. I could also be an IT specialist. Who knows...
 
bl4ckb1rd 18. dec 2009 17:11:48 Pridružen od:
18. avg 2008
1122 objav
750 91 11
#9

Roky:

bl4ckb1rd, če uporabljaš suPHP, torej da lahko le v svojem delovnem okolju zadeve kličeš le pod userjem accounta, potem je malce manj nevarno.




To je seveda jasno, pa še vseeno. Tudi če imaš suphp, je zelo neodgovorno iz strani ponudnika gostovanja, da dopusti, da nekdo recimo nalovda neko .php skripto, ki se potem sprehaja po celotnem strežniku oz. naloži še kak kernel exploit in poizkuša pridobiti celo root pravice... kaj pa je problem. exec passthru, system itd... to je smrt za webhostinge... tako ali drugače. Če je pa zaprtega tipa pa ni problema SCE, v tem primeru je lažje, če na strežniku ni gostovano nič drugega kot ta aplikacija. Potem je stvar v veliko bolj varna. Če seveda ni pametnjakoviča od "znotraj"... tu pa gradiš na zaupanju do uslužbencev.


všeč(0) ni všeč(0) spam(0)
blackbird.si - Moj plac za odlaganje problemov in rešitev...
 
bl4ckb1rd 18. dec 2009 17:17:23 Pridružen od:
18. avg 2008
1122 objav
750 91 11
#10

No pa še nekaj, suPHP je svinjsko požrešen. Zato se veliko hostingov tudi ne odloči zanj, ker neprimerno manj strani lahko gostujejo na strežniku, ker kuri preveč resursov oz. omejujejo uporabnike potem. Boljši način je recimo kot ima debian nek paket, ko celoten httpd laufa pod določenim userjem in spawna childe pod tisti userjem, kjer problemov s phpjem nimaš, ker isto hitro laufa, je pa res da mora biti potem apache oz. httpd zalaufan kot root, čeprav potem laufa za vsakega userja posebaj child... vsekakor pa je exploitov za httpd neprimerno manj kot je lukenj v php aplikacijah...



...imam večletne izkušnje s temi problemi :) hehe.


všeč(0) ni všeč(0) spam(0)
blackbird.si - Moj plac za odlaganje problemov in rešitev...
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se