PHP in Verbindgung mit Shellcode

T

tw-elektric

Eroberer
Hallo zusammen,

ich mal wieder am Nerven ;)
Ich versuche mich ja im Moment etwas einzuarbeiten und möchte nun mit meinem m23server auf allen LinuxPC's einen Ordner unter / erstellen.
Soweit funkioniert auch alles. hier der Code:
Code:
<?PHP
include ("/m23/data+scripts/packages/m23CommonInstallRoutines.php");
include ("/m23/inc/distr/debian/clientConfigCommon.php");


function run($id)
{
echo("username=`who | awk \'{if ($0 ~ /tty7/) print $1}\'`
mkdir /tw-elektric
chgrp cam /tw-elektric
chown $username /tw-elektric");
};

sendClientStatus($id,"done");
executeNextWork();
?>

Nun habe ich das Problem, dass der erstellte Ordner nicht /tw-elektric heißt, sondern /tw-elektric?

ich kann mir nicht erklären, wo das ? herkommt.

Irgendwelche Ideen?

Gruß
tw
 
Da kommt wohl noch ein \n mit. Das kannst Du mit

Code:
who | awk \'{if ($0 ~ /tty7/) print $1}\' | tr -d \"\n\"

fixen.

Gruß Aqualung
 
Muss was Anderes sein.
Habe es eben probiert, ohne Erfolg.
Schreibe ich alle Befehle in eine normale Bashdatei und führe diese aus, so wird der Ordner ohne ? erstellt...
 
Das ist kein Problem der Shell, sondern von deinem PHP.
Deshalb verschoben.

Habe mit PHP nix am Hut, aber eventuell solltest du die Namen in Hochkomma setzen.

Wolfgang
 
ich habe es nun so versucht:
Code:
echo("username=`who | awk \'{if ($0 ~ /tty7/) print $1}\'`
mkdir /\'tw-elektric\'
chgrp cam /\'tw-elektric\'
chown $username /\'tw-elektric\'");

nun macht er mir einen Ordner /'tw-elektric'
So ist es ja auch nicht gewollt.
Oder muss noch hinter den einzelnen Befehlen irgendwie ein Return oder so einbringen?

So sieht das Beispiel des m23servers aus:
Code:
<?PHP
/*
Description: Enter your description here
Priority: Enter the priority number here (scripts with lower numbers get executed earlier)
*/

include ("m23CommonInstallRoutines.php");
include ("/m23/inc/distr/debian/clientConfigCommon.php");

function run($id)
{
	$serverIP=getServerIP();
	echo("wget https://$serverIP/configs/allconfig.tb2 -O /tmp/allconfig.tb2
	cd /
	tar xfj /tmp/allconfig.tb2");
};
?>
 
Danke für die Info ;)

Ich habe es nun so aufgebaut:
Code:
<?PHP
include ("/m23/data+scripts/packages/m23CommonInstallRoutines.php");
include ("/m23/inc/distr/debian/clientConfigCommon.php");


function run($id)
{
[B]mkdir ( '/tw-elektric', 0777 );[/B]
echo("username=`who | awk \'{if ($0 ~ /tty7/) print $1}\'`
chgrp cam /tw-elektric
chown $username /tw-elektric");
};

sendClientStatus($id,"done");
executeNextWork();
?>

Müsste nun eig. alles stimmen. Aber leider bin ich immer noch erfolglos...
Lang würde es echt schneller gehen, wenn ich zu jedem Rechner hingehe, und es von Hand einrichte... Aber ich will ja auch was lernen.

Jmd noch eine Idee?

habe es nun hinbekommen:
Code:
<?PHP
include ("/m23/data+scripts/packages/m23CommonInstallRoutines.php");
include ("/m23/inc/distr/debian/clientConfigCommon.php");


function run($id)
{
echo("username=`who | awk \'{if ($0 ~ /tty7/) print $1}\'`; mkdir /tw-elektric; chmod 777 /tw-elektric; chgrp cam /tw-elektric; chown `echo $username` /tw-elektric"); 
};

sendClientStatus($id,"done");
executeNextWork();
?>
 
Zuletzt bearbeitet:
Wie wärs denn mit Funktionen wie system() oder exec()?
 
kann ich nicht viel dazu sagen. Ich kenne mich damit nicht wirklich gut aus.
Das sind Funktionen von PHP zum Code auf Linux auszuführen, oder?
 
Wenn der Safe-Mode on ist muss auch die Variable in der php.ini richtig gesetzt sein und manche exec-Funktionen funktionieren nicht siehe php.net/exec.

Code:
safe_mode_exec_dir = "/bin":"/usr/bin"

Ich wuerde zur Sicherheit nur ein Verzeichnis angeben, bzw. ein selbst erstelltes und die Programme hineinlinken.

(zu beachten ist immer, dass (evtl. nur manche) Shell-Ausgaben mit einem newline enden)
 

Ähnliche Themen

Benutzer ermitteln

FC2 Remote desktop einrichten

Zurück
Oben