-
Insecure dependency bei mit chown & mkdir
Hi Leute!
Ich hab mir eine perl-script geschrieben, das aus übergeben parametern, nämlich uid und homedir, ein verzeichnis anlegen (welches dann wwwrun gehört) soll und mit dem chown befehl den benuzter auf uid setzt.
das Problem ist, bei der Ausführung erhalte ich einen Software-Error und sowas wie insecure dependency. Ich hab da mal was gelesen, dass solche dateinamen, die ich bei mkdir bzw. chown angebe nicht mit führendem "/" angegeben sein dürfen. Ich mache das aber so. Im Moment hab ich nämlich auch die homedir variable einfach nur mit einem "test" beschrieben, aber es geht trotzdem nicht. Weiß jemand, woran das noch liegen kann?
edit: Das Script läuft übrigens mit suid-bit - auch das suidperl ist mit suid ausgestattet.
nochmal edit: Der Fehler bei mkdir tritt nicht auf, wenn ich im Skript stehen hab:
$homedir = "/mein/verz/neu";
mkdir($homedir,0755);
aber wenn ich schreibe:
$homedir = cgi->param('homedir');
mkdir($homedir,0755);
und das skript mit "skript.pl?homedir=/mein/verz/neu" aufrufe, kommt der fehler
Danke schon jetz!
P.S. Ich bin auch für Links zum Thema dankbar, da ich mich in Perl/CGI wohl noch etwas mehr einrarbeiten muss
Geändert von Kernel Fallback (20-04-2002 um 21:30 Uhr)
-
hi!
ich kenne cgi-modul nicht, aber wandelt das die sonderzeichen automatisch um?
wenn ich den wert "manuell" aus dem QUERY_STRING raushole wuerde da bei dir naemlich stehen:
homedir=%2Fmein%2Fverz%2Fneu
das hiesse, du muesstest erst die codes in ascii-zeichen umwandeln...
Links zu perl/cgi:
http://www.pronix.de
http://www.teamone.de/selfhtml
MfG ponzellus
Geändert von ponzellus (21-04-2002 um 11:10 Uhr)
-
Hallo,
ich glaub nicht, dass er daran liegt, denn wenn ich einfach nur
print $cgi->param('homedir');
dann schreibt er "/mein/verz/neu".
Trotzdem Danke - auch für die links
-
Registrierter Benutzer
Das hat sicherheitsrelavante Gründe. Wenn jemand in dein Formular z.B. /etc eingibt, könnte ja möglicherweise das Verzeichnis gelöscht werden. Die Rechte hat das Perl-Skript ja dann auch (SETUID). Ich hatte dazu mal irgendwo Informationen, wie man es dennoch hinbekommt, weiss aber im Moment nicht mehr wo.
Ich melde mich, wenn ich weitere Infos rausbekommen.
oliver
Hast du schon mal eine Lösung mit sudo versucht? Es ist extrem unkompliziert!!
-
Hi,
ich dachte mir schon, das es daran liegt, aber es ist so, dass das skript verzeichnisse erzeugen soll, die schon in einer sql-datenbank festgelegt sind. Genauer: mein proftpd macht seine benutzer-authen... über diese sql-datenbank, und in der steht dann auch das homedir, und zwar nach dem muster /irgendein/verz/usera - dasselbe/verz/userb, also ist es dem script nicht möglich, verz. wie /etc zu erstellen/überberschreiben. ich hab auch schon versucht, mit
chdir(das/verz)
in das verz zu wechseln und dann mkdir ohne die pfadangabe auszuführen, aber das geht auch nicht.
Kannst du mir bitte etwas genauer beschreiben, wie das mit sudo aussehen soll? wir dann sudo von dem perl-script aus aufgerufen? Ich muss es halt vom webserver aus machen lassen können
Danke
-
Registrierter Benutzer
Hallo Kernel-Fallback,
wie sieht denn deine Interpreterzeile aus? Ich habe es einmal lokal bei mir versucht und konnte mit dem Skript
#!/usr/bin/suidperl -U
print "Content-type: text/plain\n\n";
print "Hallo\n";
mkdir("/test/$ENV{'QUERY_STRING}",0755) || print "Fehler: $!";
ein entsprechendes Verzeichnis anlegen. Schau dir doch mal die Hilfeseiten ( /usr/bin/suidperl --help) an. Es geht aber nur mit der Option -U für "erlaube unsichere Operationen"...
Also immer schon vorsichtig und alle übergebenen Parameter 1 mal, besser 2malsudo mehr prüfen!!
oliver
-
Hi,
Danke!
Bei mir war wohl das Problem, dass ich als Befehlsinterpreter
#! /usr/bin/perl -w
benutzt hab. Ich versuchs mal mit deinem Vorschlag!
Das ich suidperl benutzen muss, wusste ich nicht...
Merci
-
Funktioniert
Hallo
Also es funktioneirt jetzt - danke sehr!
Grüße - Markus
-
Registrierter Benutzer
Hi,
du kannst auch weiterhin !#/usr/bin/perl nehmen. Nur wenn eben das Skript SETUID ist, wird eh' suidperl aufgerufen...
oliver
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen