Alain: was ist daran falsch ?

Hallo,
ich versuche ein perlscript #!/usr/bin/perl -T
laufen zu lassen aber der server meldet bei -T einen fehler für
open(MAIL,"|$mailprog -t") || die "Cannot open $mailprog!\n";

ist anscheinend zu unsicher und oder falsch?
In selfhtml stehts aber genau so!?

Gruss vom Alain

--
...wenn das gehirn so einfach wäre,es zu vestehen,
wären wir zu dumm um es zu begreifen...
  1. Hi,

    ich versuche ein perlscript #!/usr/bin/perl -T
    laufen zu lassen aber der server meldet bei -T einen fehler für
    open(MAIL,"|$mailprog -t") || die "Cannot open $mailprog!\n";

    Wie lautet denn die Fehlermeldung?

    Viele Grüße
    Torsten

    --
    Wäre Stoizismus eine Programmiersprache, würde ich ein Experte sein.
    1. Hallo,

      Wie lautet denn die Fehlermeldung?

      -------------
      Software error:

      syntax error at ok.cgi line 50, near "sub sendmail
      open "
      Execution of ok.cgi aborted due to compilation errors.

      For help, please send mail to the webmaster (webmaster@irgendwas.com), giving this error message and the time and date of
      the error.
      --------
      hatte natürlich noch use CGI::Carp qw(fatalsToBrowser);   aktiviert,aber
      viel mehr stand da ja nicht.
      Gruss vom Alain

      --
      ...wenn das gehirn so einfach wäre,es zu vestehen,
      wären wir zu dumm um es zu begreifen...
      1. Hi,

        syntax error at ok.cgi line 50, near "sub sendmail

        Poste doch mal die Sub "sendmail" und wie du das Mailprogramm definiert hast.

        Viele Grüße
        Torsten

        --
        Wäre Stoizismus eine Programmiersprache, würde ich ein Experte sein.
        1. Hallo,

          Poste doch mal die Sub "sendmail" und wie du das Mailprogramm definiert hast.

          $mailto = 'alain_ch@gmx.de';

          $mailprog = '/usr/sbin/sendmail';

          $ips = "$ip_now, $file, $agent, $ref";

          $ok = "deny from $ip_now";

          &sendmail();

          sub sendmail
          open (MAIL,"|$mailprog -t") || print "konnte nicht gestartet werden\n";
           {
              print MAIL "To: $mailto\n";
              print MAIL "From: $mailto\n";
              print MAIL "Subject: hacker zugriff auf server\n";
              print MAIL "Sicherheitsmeldung\n";
              print MAIL "$ips\n";
              print MAIL "Der Zugriff wurde eingetragen in die htaccess \n";

          close (MAIL);
            &redir();

          }

          Gruss vom Alain

          --
          ...wenn das gehirn so einfach wäre,es zu vestehen,
          wären wir zu dumm um es zu begreifen...
          1. Hallo nochmal,

            Hallo,

            Poste doch mal die Sub "sendmail" und wie du das Mailprogramm definiert hast.

            so
            sub sendmail
            {
            open (MAIL,"|$mailprog -t") || print "konnte nicht gestartet werden\n";

            print MAIL "To: $mailto\n";
                print MAIL "From: $mailto\n";
                print MAIL "Subject: hacker zugriff auf server\n";
                print MAIL "Sicherheitsmeldung\n";
                print MAIL "$ips\n";
                print MAIL "Der Zugriff wurde eingetragen in die htaccess \n";

            close (MAIL);
              &redir();

            }

            funktionierts auch nicht .
            Fehlermeldung vom server:
            Content-type: text/html

            Software error:

            Insecure $ENV{PATH} while running with -T switch at ok.cgi line 50.

            For help, please send mail to the webmaster (webmaster@irgendwas.com), giving this error message and the time and date of
            the error.
            ------

            Gruss vom Alain

            --
            ...wenn das gehirn so einfach wäre,es zu vestehen,
            wären wir zu dumm um es zu begreifen...
            1. Hi,

              sub sendmail
              Insecure $ENV{PATH} while running with -T switch at ok.cgi line 50.

              Soweit ich das verstanden habe, betrachtet das Script im Taint-Modus erstmal jede von außen kommende Eingabe als "böse". Du müsstest also erstmal alles, was von außen kommt, wie z.B. dein $ENV{'PATH'}, durch eine Prüfung laufen lassen, z.B. mit RegExp. Vielleicht hilft dir da diese Lektüre weiter:

              http://www.perldoc.com/perl5.8.0/pod/perlsec.html
              http://www.gunther.web66.com/FAQS/taintmode.html

              Viele Grüße
              Torsten

              --
              Wäre Stoizismus eine Programmiersprache, würde ich ein Experte sein.
              1. Hallo,

                Soweit ich das verstanden habe, betrachtet das Script im Taint-Modus erstmal jede von außen kommende Eingabe als "böse". Du müsstest also erstmal alles, was von außen kommt, wie z.B. dein $ENV{'PATH'}, durch eine Prüfung laufen lassen, z.B. mit RegExp. Vielleicht hilft dir da diese Lektüre weiter:

                http://www.perldoc.com/perl5.8.0/pod/perlsec.html
                http://www.gunther.web66.com/FAQS/taintmode.html

                Danke für den tipp.
                So wie ich das sehe könnte das problem beim
                open (MAIL,"|$mailprog -t"..... liegen,
                ^^          ^^
                weil im taint modus der server nur sowas wie
                open(DATEN,"<$htpasswd")
                            ^^
                akzeptiert ohne < oder >> gehts wohl nicht.

                Gruss vom Alain

                --
                ...wenn das gehirn so einfach wäre,es zu vestehen,
                wären wir zu dumm um es zu begreifen...
                1. Hallo nochmal,

                  Soweit ich das verstanden habe, betrachtet das Script im Taint-Modus erstmal jede von außen kommende Eingabe als "böse".

                  aber das problem liegt offensichtlich beim oeffnen vom mailprog
                  (ich glaube dass dem server das "|" nicht gefällt),das
                  eigentlich gar nicht von aussen her geöffnet wird (und mit eingaben beeinflussbar ist),
                  das cgi führt diese mail immer aus an mich,sobald es aufgerufen wird.

                  Gruss vom Alain

                  --
                  ...wenn das gehirn so einfach wäre,es zu vestehen,
                  wären wir zu dumm um es zu begreifen...
          2. Hi Alain,

            $ips = "$ip_now, $file, $agent, $ref";

            Woher kommen diese Variablen? Der Taint Modus verhindert ja, dass gefährliche Befehle, wie etwa system-befehle die Variablen beinhalten, die nicht überprüft werden, ausgeführt werden. Daher muss du eventuell die Variablen noch überprüfen.

            Grüße Andres Freund

  2. Hallo Alain,

    hast Du die Variable "$mailprog" überhaupt definiert? zum Beispiel nach /usr/bin/mail ?

    In den Beispielen von selfhtml stehen ja nicht fertige Programme, sondern Problemlösungen, da darf man schon selbst auch noch mal nachdenken und das Programm verstehen...

    Gruß!

    Pöt

    1. Hallo,

      hast Du die Variable "$mailprog" überhaupt definiert? zum Beispiel nach /usr/bin/mail ?

      ja hab ich
      $mailprog = '/usr/sbin/sendmail';

      das script funktioniert ja ,aber nicht im #!/usr/bin/perl -T modus
      im #!/usr/bin/perl -w funktionierts auch.Ich möchte es aber zur sicherheit im -T modus laufen lassen.
      Gruss vom Alain

      --
      ...wenn das gehirn so einfach wäre,es zu vestehen,
      wären wir zu dumm um es zu begreifen...