CGI-Crontab WICHTIG

Rund um die Sicherheit des Systems und die Applikationen
mr. i-net
Posts: 29
Joined: 2003-02-02 13:59
Location: Winnen
 

CGI-Crontab WICHTIG

Post by mr. i-net »

Hi,

ich habe ein Problem. und zwar habe ich auf meinem Webserver confixx laufen und ein confixxuser kann sich als root.ftponly einen cronjob per browser (über ein selbst gebasteltes script) anlegen.

wie kann ich das verhindern. da der owner des scripts ja root ist könnte man damit ja auch den server rebooten. ist ein riesen sicherheitsloch.

kann mir jemand helfen?

hier das script:


Code: Select all

#!/usr/bin/perl -w
 
use strict;
use CGI;
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);
 
my @Feldnamen = $cgi->param();
my $CTIME = localtime(time);
 
open(COMMAND, $cgi->param('Command') . "|");
 
# Html-Ausgabe schreiben
 
print $cgi->header(),
      $cgi->start_html('Vielen Dank für Ihre Bewertung');
 
print $cgi->h1('Ergebnis der Kommandoausführung :');
      foreach my $Feld (@Feldnamen) {
        print $Feld,
              $cgi->b(' = '),
              $cgi->param($Feld), "<br>";
      }
      while(<COMMAND> )
      {
        chomp $_;
        print $_ . "<br>";
      }
print $cgi->end_html();
der browser befehl:

Code: Select all

exec.pl?Command=crontab < cron.tab
[/code]
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: CGI-Crontab WICHTIG

Post by dodolin »

a) Gib den Usern Shellzugang, dann können sie ihre Cronjobs selbst anlegen (unter ihrem eigenen User). Das ist nicht unsicherer, denn wenn die User Cronjobs ausführen dürfen, kannst du ihnen auch gleich Shellzugang geben, ist das gleiche.

b) Lege den Cronjob halt nicht als root, sondern unter dem jeweiligen User an.

c) Oder habe ich jetzt da was falsch verstanden?
mr. i-net
Posts: 29
Joined: 2003-02-02 13:59
Location: Winnen
 

Re: CGI-Crontab WICHTIG

Post by mr. i-net »

ja glaube schon

der user hat ohne mein wissen per script den cronjob angelegt. ich weiß aber nicht warum der irgendwas als root speichern kann.
memphis
Posts: 29
Joined: 2003-03-15 14:03
 

Re: CGI-Crontab WICHTIG

Post by memphis »

wenn dein webserver (apache) als root läuft, dann laufen seine scripte auch als root und dann kann er ja master of server spielen ;-) ... wenn es daran liegt.

wenn nicht, dann weiß ich auch nicht woran es liegt ...

Code: Select all

/etc/local/apache/conf oder /etc/local/apache2/conf

in der httpd.conf:

User www
Group www
Vorher halt noch im Shell

Code: Select all

groupadd www
useradd www -g www
eingeben ...

Ach so ... und dann den Apache neu starten (apachectl -k restart (in 2.0) oder apachectl restart (in 1.3))
mr. i-net
Posts: 29
Joined: 2003-02-02 13:59
Location: Winnen
 

Re: CGI-Crontab WICHTIG

Post by mr. i-net »

nene

der server läuft als http://www.wwwrun

und durch das script (s.o.) wird in /var/spool/cron/ eine datei mit dem namen des linuxusers des kunden (bei webmin also web123). diese datei enthält dann einen cronjob (standard cronjob format * * * /home....usw.).

diese hat dann den besitzer root und die gruppe ftponly. aber wie das zustande kommt, dass der als eine datei erstellt mit owner root ist mir ein rätsel.
memphis
Posts: 29
Joined: 2003-03-15 14:03
 

Re: CGI-Crontab WICHTIG

Post by memphis »

Laut dem Script wird einfach nur der Shell Command

Code: Select all

crontab < cron.tab
ausgeführt ...

du solltest also mal einen CGIWrapper installieren, vielleicht hilft das ja ...

ich hab mal im Internet nachgeschaut und folgende Seite gefunden http://tech.irt.org/articles/js184/ ... ich hoff mal das hilft,

mehr weiß ich nicht mehr
mr. i-net
Posts: 29
Joined: 2003-02-02 13:59
Location: Winnen
 

Re: CGI-Crontab WICHTIG

Post by mr. i-net »

richtig,

es wird nur dieser auszug ausgeführt. nur genau das ist es.
es wird ein eintrag in die crontab erstellt. aber wenn ich einen cronjob mit beliebigem inhalt erstellen kann, dann ist mein webserver doch ziemlich weltoffen.

wrapper: ich habe suEXEC laufen und es klappt auch. wenn ich einfache cgi-scripte ausführen werden diese als web*.ftponly ausgeführt.

ich möchte also im prinzip nur verhindern, dass ein user einen cronjob erstellt und jeden beliebigen shell befehl ausführen kann.

ich könnte auch exe.pl?Command=cat httpd.conf eingeben. dann kann er die datei lese, aber warum?????
flibbi
Posts: 94
Joined: 2002-09-28 18:42
 

Re: CGI-Crontab WICHTIG

Post by flibbi »

Hallihallo,

hat denn niemand einen Tipp, ein HowTo oder ähnliches wie man verhindert das ein User per CGI Unix System Kommandos ausführen kann?

:cry:
floschi
Userprojekt
Userprojekt
Posts: 3247
Joined: 2002-07-18 08:13
Location: München
Contact:
 

Re: CGI-Crontab WICHTIG

Post by floschi »

Hi !

Ich verschiebe mal ins Securityforum...

...aber ich glaub immernoch, dass es an Dateirechten oder so liegt.

Grüßle

Olfi ;)
flibbi
Posts: 94
Joined: 2002-09-28 18:42
 

Re: CGI-Crontab WICHTIG

Post by flibbi »

Nein, das ist es ja. Die sind korrekt gesetzt.

Teste doch mal bei dir das Script und lass

exec.pl?Command=cat /woauchimmer/httpd.conf ausführen ob es bei dir geht... wenn nicht, dann brauch ich mal deine Hilfe :roll: wenn ja, sind wir schon zwei die nach nem Fix suchen ...

PS: SuExec klappt wie gesagt einwandfrei, ein whois.cgi gibt die richtigen Benutzer an ...

Server: Redhat 7.3 + Confixx 2.06
Apache 1.3.26, PHP 4.3
rootmaster
Posts: 483
Joined: 2002-04-28 13:30
Location: Hannover
 

Re: CGI-Crontab WICHTIG

Post by rootmaster »

das kommt daher, dass crond standardmäßig setuid root installiert ist ;)
es bedeutet keinesfalls, dass ein user alles ausführen könnte, es sei denn, er fände eine schwäche im cron 8)

"back to the roots"
Cahn's Axiom:

When all else fails, read the instructions
flibbi
Posts: 94
Joined: 2002-09-28 18:42
 

Re: CGI-Crontab WICHTIG

Post by flibbi »

Und wie kann ich es verhindern das ein User per CGI ein Cron eintragen kann?
Das muss doch irgendwie gehen..

ich mein der Cron wird zwar als User webXXX angelegt, nur ist es so, das Cronjobs ja extra berechnet werden und ich halt nicht will das ein User in meiner Crontab rum fummelt.
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: CGI-Crontab WICHTIG

Post by captaincrunch »

Guckst du hier :
http://www.redhat.com/docs/manuals/linu ... tasks.html

Besonders der Abschnitt "Controlling Access to Cron" dürfte für dich interessant sein ...
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
memphis
Posts: 29
Joined: 2003-03-15 14:03
 

Re: CGI-Crontab WICHTIG

Post by memphis »

mmh interessant, nur ... ich glaub I-Net Superman hat das dumme problem, dass sie als Root angelegt werden *G*
floschi
Userprojekt
Userprojekt
Posts: 3247
Joined: 2002-07-18 08:13
Location: München
Contact:
 

Re: CGI-Crontab WICHTIG

Post by floschi »

memphis wrote:hat das dumme problem, dass sie als Root angelegt werden *G*
Ja, wegen dem setuid root des crond - aber mittels cron.allow bzw. cron.deny (heissen die so?) müsste es gehen ;)
flibbi
Posts: 94
Joined: 2002-09-28 18:42
 

Re: CGI-Crontab WICHTIG

Post by flibbi »

Cron ist ein Problem, aber mit dem Script was oben steht kann ich auch mehr machen wie Cron, also in alle Dateien rein gucken .. und das hat ja nix mit der root uid zu tun ...
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: CGI-Crontab WICHTIG

Post by captaincrunch »

Natürlich kannst du ... dazu gibt's das "r"eadable-Flag für die Gruppe "others" ja schließlich ... :wink:
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
floschi
Userprojekt
Userprojekt
Posts: 3247
Joined: 2002-07-18 08:13
Location: München
Contact:
 

Re: CGI-Crontab WICHTIG

Post by floschi »

reden wir gerade vom lesen oder vom ausführen einiger Dateien? Lesen können Shelluser ja vieles (d.h. Passwortdateien schützen!), aber ausführen eben nicht ;)
flibbi
Posts: 94
Joined: 2002-09-28 18:42
 

Re: CGI-Crontab WICHTIG

Post by flibbi »

Hey, Danke :)

ein touch /etc/cron.allow hat zumindest das Cron Problem beseitigt. Sehr gut.

Nun sind wir halt beim lesenden Zugriff auf einigen Sachen ...

ich hab nur etwas Angst wenn ich z.B. eine Datei in den REchten änder, das dann irgendwas nicht mehr so wirklich klappt ...
memphis
Posts: 29
Joined: 2003-03-15 14:03
 

Re: CGI-Crontab WICHTIG

Post by memphis »

meinst du? also so wie ich den text verstanden hab ist es so, dass man auswählen kann welcher Benutzer anlegen und löschen also Admin spielen kann. Also müsste er ja den Root in die Deny oder niemanden in die Allow Liste tun ...
mr. i-net
Posts: 29
Joined: 2003-02-02 13:59
Location: Winnen
 

Re: CGI-Crontab WICHTIG

Post by mr. i-net »

olfi wrote:reden wir gerade vom lesen oder vom ausführen einiger Dateien? Lesen können Shelluser ja vieles (d.h. Passwortdateien schützen!), aber ausführen eben nicht ;)

hi. dann ist es ja völlig normal das jeder, alle daten auf dem server lesen kann, die ein read for others erlaubt haben. (eigentlich logisch)..... aber kann ich das irgendwie verhindern, ohne allen dateien dieses read for others zu entziehen.

ist ja auch gar nicht möglich, da ich webhosting betreibe und die kunden ihre daten ja oft mit 755 angeben oder mindestens 644.

wie ist das rechtlich gesehen? ich biete so gesehen ja keinen 100%igen datenschutz für die kunden. jeder kann im prinzip per cgi-script die dateien der anderen kunden auslesen.
floschi
Userprojekt
Userprojekt
Posts: 3247
Joined: 2002-07-18 08:13
Location: München
Contact:
 

Re: CGI-Crontab WICHTIG

Post by floschi »

Mr. I-Net wrote: jeder kann im prinzip per cgi-script die dateien der anderen kunden auslesen.
Nein, du kannst alles per suExec machen und dann den others das r entziehen - dann kann auch kein Skript was anderes lesen, wie z.B. Passwörter etc.
flibbi
Posts: 94
Joined: 2002-09-28 18:42
 

Re: CGI-Crontab WICHTIG

Post by flibbi »

Hast du auch einen Tipp wie?

SuEXEC an sich klappt ja, CGIs werden als der entsprechende User ausgeführt... mehr bringt das doch eigentlich nicht, oder?
floschi
Userprojekt
Userprojekt
Posts: 3247
Joined: 2002-07-18 08:13
Location: München
Contact:
 

Re: CGI-Crontab WICHTIG

Post by floschi »

flibbi wrote:Hast du auch einen Tipp wie?

SuEXEC an sich klappt ja, CGIs werden als der entsprechende User ausgeführt... mehr bringt das doch eigentlich nicht, oder?
Na dann probier mal mit deinem Skript auf ein File eines anderen Users lesend zuzugreifen, bei dem weder die Gruppe noch die others ein r haben...
mr. i-net
Posts: 29
Joined: 2003-02-02 13:59
Location: Winnen
 

Re: CGI-Crontab WICHTIG

Post by mr. i-net »

ja das ist klar. auf dateien die kein r für others haben kann ich nicht zugreifen. das ist klar.
aber die user in den anderen accounts haben ja oft 755 oder 777 und damit ist das hin.

kann ich das mit suexec irgendwie einstellen, dass das lesen fremder daten verhindert wird.
Post Reply