Hallo zusammen, ich bin gerade dabei ein CGI-Skript zu schreiben, mit dem es möglich sein soll webseitig adminstrative Aufgaben auf dem Host durchzuführen. Z.B soll es möglich sein für OpenX-change einen User hinzuzufügen und Ähnliches. Also das Problem, ich komme als User www-data und möchte Skripte ausführen ( z.B. Shell oder eben andere Perl-Skripte) die die UID von /root oder einem anderen User haben. Wie mache ich das am besten auf debianisch?
Gruss Christian
Perl/CGI-Skript, das /root-Rechte hat
Perl/CGI-Skript, das /root-Rechte hat
Die größten Kritiker der Elche,
waren früher selber welche.
F.W. Bernstein
waren früher selber welche.
F.W. Bernstein
- godsmacker
- Beiträge: 902
- Registriert: 16.03.2003 21:50:26
- Lizenz eigener Beiträge: Artistic Lizenz
- Wohnort: Chemnitz
-
Kontaktdaten:
Ein CGI Skript als root klingt gefaehrlich. Ich wuerde einen kleinen Daemon schreiben, der als root laeuft und die Tatsaechliche Arbeit, die root Rechte erfordert erledigt sowie ein CGI Skript, welches ein Webfrontend dazu darstellt und mit dem daemon auf irgend eine Weise, zum Beispiel XML-RPC, kommuniziert.
-Flo
-Flo
Klingt interessant, sollte man annehmen daß es sowas schon gibt, oder zumindest ein Template für sowas? Zumindest klingt mir das als die logischste Lösung bislang, was ich sonst so gehört habe. Ich dachte aber schon für so eine Problematik gäbe es irgend eine Musterlösung oder ein Modul? Aber wahrscheinlich bauen solche Tools wie confixx genau auf so einer Lösung auf?
Gruss Christian
Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.
F.W. Bernstein
waren früher selber welche.
F.W. Bernstein
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
Re: Perl/CGI-Skript, das /root-Rechte hat
mit ssh auf die maschine zu gehen ist keine Alternative?Columbus hat geschrieben:webseitig adminstrative Aufgaben auf dem Host durchzuführen
Ich schließe mich Godsmacker an - ein perlscript mit gesetztem SUID Bit - und zwar dem für root - ist ein Alptraum. Ich meine das script mit neuen perl commands zu füllen ist ja wenn man irgendwie code auf die maschine bringt nicht sehr schwer - den Rest überlasse ich deiner Phantasie.
Wenn du das unbedingt durchziehen willst dann mach wenigstes ein
Code: Alles auswählen
chattr +i <file>
Um Gottes Willen, nein. Ich will es weder mit der Brechstange noch mit der heisen Nadel machen, deswegen frage ich ja hier! Nein, ich werde wohl so einen Demon erzeugen wie Godsmaker vorschlägt, den werde ich wahrscheinlich immer mal wieder gebrauchen und erweitern.
chattr ist doch nur für ext-FS oder?
Gruss Christian
chattr ist doch nur für ext-FS oder?
Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.
F.W. Bernstein
waren früher selber welche.
F.W. Bernstein
Du könntest auch suso so einrichten, das das Webfrontend-Script über sudo ein root-script aufrufen kann, welches die Befehle umsetzt.
Aber beachte dabei folgende Dinge:
- Niemals generische Befehle erlauben! Allso das Rootscript mit sowas ausführbar machen:
- Alle übergenen Parametter auf Plausibilität prüfen. Dabei lieber etwas zu vorsichtig sein und z.B. nicht alle möglichen Zeichen zulassen.
- Wenn es "gefährliche" allso potentiell zerstörerische Befehle gibt, die das Rootscript ausführen soll, so sichere sie zusätzlich über ein Passwort ab, das im Script überprüft wird. Speichere das Passwort nicht im Klartext sondern z.B. md5 verschlüsselt.
- Nummeriere die Befehle im Rootscript durch. Das ist zwar kein echter Schutz, erhöt aber die Sicherheit ein wenig.
- Das rootscript sollte nur für root selber ausführbar und lesbar sein.
Ähnliches gilt auch für ein Deamonscript mit rootrechten.
Aber beachte dabei folgende Dinge:
- Niemals generische Befehle erlauben! Allso das Rootscript mit sowas ausführbar machen:
Code: Alles auswählen
/root/rootsript exec="ls -la /*"
- Wenn es "gefährliche" allso potentiell zerstörerische Befehle gibt, die das Rootscript ausführen soll, so sichere sie zusätzlich über ein Passwort ab, das im Script überprüft wird. Speichere das Passwort nicht im Klartext sondern z.B. md5 verschlüsselt.
- Nummeriere die Befehle im Rootscript durch. Das ist zwar kein echter Schutz, erhöt aber die Sicherheit ein wenig.
- Das rootscript sollte nur für root selber ausführbar und lesbar sein.
Ähnliches gilt auch für ein Deamonscript mit rootrechten.
- godsmacker
- Beiträge: 902
- Registriert: 16.03.2003 21:50:26
- Lizenz eigener Beiträge: Artistic Lizenz
- Wohnort: Chemnitz
-
Kontaktdaten:
Nun, genau genommen nicht. Aber wie will man das auch machen? Was Du willst ist ein Daemon, der ueber irgend einen RPC Mechanismus zu erreichen ist. Sowas gibt es zur Genuege. RPC::XML::Server zum Beispiel. Ein passender Client waere RPC::XML::Client.Columbus hat geschrieben:Klingt interessant, sollte man annehmen daß es sowas schon gibt, oder zumindest ein Template für sowas? Zumindest klingt mir das als die logischste Lösung bislang, was ich sonst so gehört habe. Ich dachte aber schon für so eine Problematik gäbe es irgend eine Musterlösung oder ein Modul?
Dich um die Implementierung der einzelnen Methoden kuemmern bleibt Dein Job. Etwas ausreichend generisches um alles abzudecken ist einfach nicht sicher.
Btw, Du solltest uebrigens auch den tainted mode fuer sowas verwenden. Das kann Dich oftmals davor retten nicht ueberpruefte Eingaben an irgend etwas Kritisches weiterzugeben.
Keine Ahnung, aber ich hoffe es.Aber wahrscheinlich bauen solche Tools wie confixx genau auf so einer Lösung auf?
-Flo