Klitzekleines Webinterface

Bash, Shell, PHP, Python, Perl, CGI
Anonymous

Klitzekleines Webinterface

Post by Anonymous » 2004-07-16 23:38

Ich habe mir mal was zusammen gebastelt
<?php
$shell=shell_exec("cd /home/milli/ventrilo/; screen -d -m -S ven1 /home/milli/ventrilo/ventrilo_srv");
echo(nl2br($output));
?>
zum starten von Ventrilo, klappt alles super, dann eins zum beenden
<?php
$shell=shell_exec("screen -x ven1; quit");
echo(nl2br($output));
?>
screen -x ven1 holt den prozess in den Vordergrund und quit beendet normalerweise Ventrilo, klappt nicht!

Per SSH-Konsole nachher bei "screen -x ven1" der Fehler
There is no screen to be attached matching ven1.

Manche denken nun warum so umstaendlich, mein Problem liegt daran das ich nicht "killall ventrilo_srv" machen kann weil ich nur einen ventrilo_srv killen möchte und das geht meines wissens nur so!

Danke!

Anonymous

Re: Klitzekleines Webinterface

Post by Anonymous » 2004-07-17 00:19

Ich habe herausgefunden das der "Fehler" am 1. Script liegt, die screen session bleibt einfach erhalten ...

frew
Posts: 8
Joined: 2002-09-29 21:39

Re: Klitzekleines Webinterface

Post by frew » 2004-10-04 15:42

Und wie hast du das Problem nun gelöst ???

svenk
Posts: 36
Joined: 2003-03-12 09:19

Re: Klitzekleines Webinterface

Post by svenk » 2004-10-04 15:57

Wie wäre es einfach ohne screen starten und kurz die .pid auslesen die im Verzeichnis vom ventrilo liegt?

dann einfach ein kill 12345 :)

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: Klitzekleines Webinterface

Post by dts » 2004-10-11 22:23

Hallo,

Frage an die Profis unter euch: Ist sowas wie ganz oben gepostet eigentlich sicher oder eher anders zu lösen, wenn es darum geht per PHP Systembefehle auszuführen.

Da ich selbst etwas ähnliches benötigen würde, wäre es mir wichtig!

Die andere Möglichkeit, die ich in Erwägung gezogen habe: Daten über einen MySQL-Datenbank laufen lassen und dann mittels eines Cronskriptes die Ã?nderungen (auch Start, Stop, Restart) des Servers zu veranlassen.... aber eben mit einer gewissen Verzögerung.

Bin gespannt, wie eure Meinung dazu ist... :wink:

Lg DtS

andreask2
RSAC
Posts: 701
Joined: 2004-01-27 14:16
Location: Aachen

Re: Klitzekleines Webinterface

Post by andreask2 » 2004-10-13 21:04

Wenn Du dazu keine Konfiguration lockern musst und keine Variablen, und schon gar keine Parameter wie $_GET an so eine Funktion übergibst, dann sehe ich persönlich da kein Problem. Aber wenn Du sowas machst:

Code: Select all

<?php
exec($_GET['command']);
?>
Dann kannst Du den Script-Kiddies auch gleich Dein root-Passwort zuschicken ;-)

Oder auch sowas:

Code: Select all

<?php
exec('tail -n'.$_GET['num_lines'].' unwichtige_datei.txt');
?>
Ist auch nicht besser.

Aber wenn Du den kompletten Befehlt fest in den Aufruf schreibst:

Code: Select all

<?php
exec('tail -n 100 irgendeine_datei.log');
?>
Dann sehe ich keine Gefahr.

andreask2
RSAC
Posts: 701
Joined: 2004-01-27 14:16
Location: Aachen

Re: Klitzekleines Webinterface

Post by andreask2 » 2004-10-13 21:06

DtS wrote:[...] die Ã?nderungen (auch Start, Stop, Restart) des Servers zu veranlassen....
ups - das hatte ich wohl überlesen ;-)

Bei Sachen für die man root-Rechte braucht ist das natürlich was anders, das darf der Webserver gar nicht! Und auch sonst würde ich es vermeiden sowas im System zu machen.

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: Klitzekleines Webinterface

Post by dts » 2004-10-13 23:29

Hi,

Und wie würdest du das dann wirklich am besten und SICHERSTEN (!) lösen, sodass ich keine Probleme mit diversen A**** (Affen) bekomme? :lol:

Lg
DtS

andreask2
RSAC
Posts: 701
Joined: 2004-01-27 14:16
Location: Aachen

Re: Klitzekleines Webinterface

Post by andreask2 » 2004-10-13 23:53

Log Dich ein per SSH und arbeite mit der shell. Du willst es Dir schön bequem machen, aber Sicherheit ist nunmal oft etwas unbequem. Die Wahrscheinlichkeit ist sehr groß, dass Du in solche PHP-Scripte dicke Sicherheitslücken einbaust, egal wie du es probierst. Siehe Sicherheitslücken in Confixx & Co.

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: Klitzekleines Webinterface

Post by dts » 2004-10-14 00:09

Tja, da magst du ja recht haben...
und was ist, wenn ich ein Webinterface BRAUCHE,
da ich niemand ausser mir einen SSH-Zugang geben möchte?

Hmmm, was würdest du da machen? :roll:

andreask2
RSAC
Posts: 701
Joined: 2004-01-27 14:16
Location: Aachen

Re: Klitzekleines Webinterface

Post by andreask2 » 2004-10-14 00:43

Dazu kenne ich die genauen Anforderungen zu schlecht.

dts
Posts: 290
Joined: 2004-02-05 20:40

Re: Klitzekleines Webinterface

Post by dts » 2004-10-14 00:49

Naja, es geht dabei um die Konfiguration eines
Shoutcast's für ein paar Bekannte (Mini-Webradios)...

Nicht mehr und nicht weniger...
Achja und wegen dem Traffic bin ich mir bewußt ;)

Lg
DtS

andreask2
RSAC
Posts: 701
Joined: 2004-01-27 14:16
Location: Aachen

Re: Klitzekleines Webinterface

Post by andreask2 » 2004-10-14 01:22

Und wozu muss man da den Server neu starten können...?

Was willst Du noch alles machen wofür man root-rechte braucht?

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Klitzekleines Webinterface

Post by Roger Wilco » 2004-10-14 01:23

DtS wrote:Tja, da magst du ja recht haben...
und was ist, wenn ich ein Webinterface BRAUCHE,
da ich niemand ausser mir einen SSH-Zugang geben möchte?

Hmmm, was würdest du da machen? :roll:
Korrekt konfiguriertes sudo benutzen?

frew
Posts: 8
Joined: 2002-09-29 21:39

Re: Klitzekleines Webinterface

Post by frew » 2004-10-14 11:54

Ich würde die Befehle in eine mySQL-Tabelle abspeichern, z.b. für Starten

Code: Select all

INSERT INTO $table (ID,do) VALUES ('','$befehl');
ID als Primärschlüssel und auto_increment

Als Befehl würde Reichen "Start".

Nun solltest du dich bisschen mit Perl vertraut machen, sowie mit Cronjobs.

Das Perl-Script ließt die Daten aus der DB aus, ohne einer Ausgabe, außer ggf. in einer LOG-Datei zum Debuggen. Und führt dan den Befehl aus der mySQL-Tabelle umgesetzt in UNIX aus.

Das Perl-Script sollte alle 15 Minuten durch Cronjobs aufgerufen werden.
Ist kein Inhalt in der Tabelle, der ausgeführt werden soll, dann wird einfach

Code: Select all

return 0;
ausgegeben.

andreask2
RSAC
Posts: 701
Joined: 2004-01-27 14:16
Location: Aachen

Re: Klitzekleines Webinterface

Post by andreask2 » 2004-10-14 12:03

Und dann hat er nur ein Script mit einer unsicheren DB-Abfrage und Hintz und Kuntz können den Server steuern? (SQL-Injection)

Ich würde sowas nicht machen. Aber wenns denn sein muss würde ich bloß keine shell-Befehle in die DB schreiben, sondern alle Befehle über einen Schlüssel im Script verknüpfen. Dann natürlich eine andere Datenbank mit anderem User als die Datenbank(en) die man in Web-Scripten verwendet...

Wenn man sowas macht sollte man wissen was man tut.

frew
Posts: 8
Joined: 2002-09-29 21:39

Re: Klitzekleines Webinterface

Post by frew » 2004-10-14 12:20

Hab ja auch nicht gesagt, dass man die Shell-Befehle in die Datenbank einfügen soll ;)

Und das wäre eine einfach zu lösende Lösung.

andreask2
RSAC
Posts: 701
Joined: 2004-01-27 14:16
Location: Aachen

Re: Klitzekleines Webinterface

Post by andreask2 » 2004-10-14 12:26

Ja, ich weiß, aber der ein oder andere denkt sich "ach das wäre doch viel praktischer und flexibler... super!"
Du würdest das vermutlich auch ordentlich machen, aber nicht jeder der das später liest.

frew
Posts: 8
Joined: 2002-09-29 21:39

Re: Klitzekleines Webinterface

Post by frew » 2004-10-14 12:31

Ja das stimmt schon ... nun "nobody is perfect" ;)