linuxfreak: Ernsthaftes Sicherheitsproblem mit Perlscript und ASP auf IIS5 !

Ich habe einen IIS5 am laufen und habe ActivePerl 5.6 drauf.
Hauptsächlich soll damit Perlscript in ASP eingebunden werden, um mit Perlscript Dynamische sites erstellt werden können.

Mein Problem ist folgendes:

Wenn ich z.B. das Perl Kommando zum ausführen von OS Befehlen benutze:

z.B. eine asp datei mit perlscript:
<%
$ausgabe = dir;
print $ausgabe;
%>
<%= $testen %>

wird es tatsächlich ausgeführt.

Das Problem an dem ganzen ist das man damit auch böses anstellen kann z.B. del *.* oder ähnliches.

Ich will sozuagen verhindern das OS-Kommandos nicht erlaubt sind.

Ich habe im IIS bereits die Ausführungsberechtigungen nur für Scripts erlaubt und für ausführbare Dateien verboten, hat aber leider nix gebracht.

Wie kann ich dieses Problem lösen ?
Am liebsten wäre mir, wenn ich steuern könne auf welchen site oder verzeichnissen os kommandos erlaubt sind oder nicht.

Da auf dem webserver viele kunden zugang per ftp haben, könnten sie damit (wenn sie sich mit perl auskennen) viele böse Dinge anstellen.

Ich bitte um Hilfe.

  1. hi,

    Ich will sozuagen verhindern das OS-Kommandos nicht erlaubt sind.

    also willst du, dass man sie doch ausführen kann.

    wunderbar, nach deinen vorherigen ausführungen ist das ja bereits der aktuelle stand, du musst also nichts weiter tun.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. sorry, sollte natürlich heissen das ich OS-Kommandos verhindern will !!

      hi,

      Ich will sozuagen verhindern das OS-Kommandos nicht erlaubt sind.

  2. Hi,

    den IIS (auch den recht "unsicheren" 5er) schert das recht wenig,
    was in einer ASP-Seite passiert, das ist Sache des Interpreters,
    in deinem Fall ActivePerl (in anderen üblichen Fällen asp.dll/wsh).

    Im übrigen wird "ASP" durch das Benutzerkonto des IIS für den
    anonymen Zugriff gebremst, bzw. sollte gebremst werden. Wenn
    dem IUSR_deinPCName natürlich alle Rechte gewährt sind, fruchten
    solche sachen wie "del *.*" logischerweise.

    So, jetzt bitte noch mal nachdenken, wer wo und ob überhaupt ein
    Sicherheitsloch hat!

    Wem willst du eigentlich die Benutzung von OS Kommandos verbieten,
    dir selber? Wann werden denn solche Kommandos ausgeführt? Genau,
    wenn jemand sie in die dynamische Webseite reinschreibt, und das
    bist doch eigentlich du selbst, oder?

    Wo liegt jetzt eigentlich dein Problem?

    Ciao, Frank

    1. Jeder Kunde der per ftp auf eine Virtuelle website zugriff hat (das sind bei uns ca. 50 user) hat die möglichkeit solch einen code in asp einzubinden. Weiterhin hat , unter anderem, der user IUSR standartmässig auf alle verzeichnisse Rechte auf denen webs laufen.

      auch wenn ich ihm schreibrehcte wegnehmen würde (was evtl. mit problemen behaftet seien können da der user IUSR ja auch schreiboberatinen machen muss z.B. in Datenbanken) hätte er immernoch einige grundlegende rechte wie z.b. lesen und dann könnte er immernoch zumindest mithilfe von eingescleusten tools unkontrollierte sachen anstellen, sei es auch "nur" angriffspunkte lesend zu ermitteln.

      Es muss doch eine möglichkeit geben systemkommandos bei ASP Perlscript zu unterbinden. Ich kann das einfach net verstehen.

      dir selber? Wann werden denn solche Kommandos ausgeführt? Genau,
      wenn jemand sie in die dynamische Webseite reinschreibt, und das
      bist doch eigentlich du selbst, oder?

      Wo liegt jetzt eigentlich dein Problem?

      Ciao, Frank

      1. Hi,

        dann solltest du die Auswirkungen von Systemkommandos wie 'del'
        oder was auch immer durch entsprechende Rechtevergabe beschränken.
        Ich kann bei meinem Provider auch kein ASP Script hochspielen,
        welches die Daten meines Hosting-Nachbarn oder C:\WinNT löscht.
        Warum nicht, weil die Rechte des aufrufenden Benutzers meines
        Accounts dies nicht zulassen.

        Was meinst du denn, wie es die Provider von Windows-Hosting-Angeboten
        machen?

        Übrigens kannst du jedem Virtuellen Ordner einen eigenen Account anstelle von IUSR_... zuweisen.

        Wenn du wirklich (immernoch) die Ausführung von Kommandos verbieten
        willst, kannst du das nur durch den Eingriff in ActivePerl machen.
        IIS (hatte ich schon mal geschrieben) schert sich nicht darum
        wie irgendwer irgendwas interpretiert. ASP ist ein _Framework_
        welches für einen Scriptsprachen-Interpreter Kontextobjekte
        bereitstellt. Der Interpreter führt dann die Kommandos aus!

        ... IUSR ja auch schreiboberatinen machen muss z.B. in Datenbanken

        Datenbanken sind wieder ganz andere Ressourcen, die nicht selten mit
        einem anderen Zugriffsmechanismus abgedeckt sind.

        Bitte, so schwer ist es nun wirklich nicht zu verstehen.

        Gruß, Frank

        1. willst, kannst du das nur durch den Eingriff in ActivePerl machen.

          Ja genau das ist doch mein Problem , wie kann ich diesen eingriff machen bzw. wo kann ich diesen Eingriff machen ? ;-)

          Wäre dankbar wenn mir einer dies sagen könnte.

          Grüsse

          1. Hallöle:

            eine Ressource wäre: http://aspn.activestate.com/ASPN/

            ... die wirst evt. schon durchsucht haben (ich hab auf Anhieb auch
            nichts gefunden)

            hier: http://www.activestate.com/Support_Resources/?_x=1
            findest du die eMail-Adresse vom ActiveState Support, die werden
            Fragen eines Lizenznehmers sicherlich beantworten.

            Mal anders gefragt, könntest du es denn unter Linux/Unix einstellen?

            Ciao, Frank