Sicherheit: formmailer, perl cgi Skript, htaccess

4

404

Aktives Mitglied
Thread Starter
Dabei seit
20.02.2015
Beiträge
241
Reaktionspunkte
10
Hallo.

Ich hoffe, ihr wisst Antwort auf Sicherheitsfragen, die ich als Anfänger/Autodidakt so habe:

-1-
Ich wollte vielleicht ein Kontaktformular erstellen und teste das gerade. Es ruft mit onsubmit ein JS-Skript zur Validierung auf, welches, sofern alle Felder (Name, Email, Text) i.O. sind, mir den Inhalt über ein PerlSkript per Email zuschickt.
Bei dem Perlskript, das außerhalb des Document Root im Ordner cgi-Skripte mit den Rechten 755 liegt, handelt es sich um den bekannten Formmailer (1.93): http://www.scriptarchive.com/formmail.html
Im Document Root des Kontaktformulars liegt noch eine htaccess, die u.a. Schutz gegen das Auslesen der htaccess und -Indexes beinhaltet.

Mein Frage: Kann jemand trotzdem noch den genauen Inhalt meines modifizierten Perlskripts auslesen?
Falls ja: wie genau (damit ichs nachvollziehen kann)? Und wie kann ich mich dagegen schützen?

-2-
Allgemein zu htaccess:
Code:
<Files ~ "^.*\.([Hh][Tt][Aa])">
 order allow,deny
 deny from all
 satisfy all
</Files>
Options -Indexes

Wenn eine htaccess den Code oben beinhaltet, ist es dann trotzdem noch (irgendwie) möglich, den Inhalt eines Ordners aufzulisten, also alle Unterordner und Dateien darin anzeigen zu lassen?
Sollten meine Domains gescannt werden von irgendwelchen obskuren IPs, packe ich einige private Sachen lieber in Unterordner mit seltsamen Namen. Könnte jemand diese Unterordner trotz htaccess (s.o.) ganz einfach listen, wäre das sinnlos.

Bin für jeden Hinweis dankbar, der zu mehr Sicherheit beiträgt.
 
Das von dir verwendete pl Skript wäre mir zu alt. Bei selfhtml findest du ein moderneres (aber aufwändigeres) Beispiel in php, mehr noch natürlich bei github etc.
https://wiki.selfhtml.org/wiki/PHP/Tutorials/Formmailer-Advanced
Es gibt mittlerweile auch Hoster, die keine Perl-Skripte mehr ausführen.

Zu htaccess: wenn du kein Directory Listing über http angezeigt bekommst, sieht es auch kein anderer. Du kannst ja aber zusätzlich noch eine leere Index.html in das Verzeichnis legen. Gegen URLs erraten hilft das aber nicht. Ich prüfe zb in meinem Kontaktformular, ob der Aufruf darauf aus der eigenen Webseite kommt und sende nur Mails über das Skript, wenn das auch passt. Kombiniere das mit einem beliebigen „ich bin kein Roboter“ Skript und fertig..

Zum Quelltext einsehen: wenn der Webserver richtig konfiguriert ist, kann man den Quelltext eines ausführbaren Skriptes nicht über http einsehen, immer nur die Ergebnisse des Aufrufs. Die Sicherheitsprobleme entstehen auf vielen anderen Wegen: durch fehlerhaft eingerichtete Upload-Möglichkeiten für User und gesetzte Berechtigungen auf den hochgeladenen Dateien. Denn wenn ich die Möglichkeit habe, irgendwo auf deinem Webspace eine ausführbare Datei abzulegen (php,pl, egal..) hebel ich dir damit locker alle htaccess Einstellungen aus...

Ps: deine htaccess Definition hab ich jetzt nicht auf Korrektheit angeschaut...

Pps: einige Threads zurück hat oglimmer auf eine tolle Informationsquelle zum Thema Sicherheit bei der Webprogrammierung hingewiesen. Wenn du also tiefer einsteigen willst: https://www.owasp.org/index.php/Testing_Guide_Frontispiece
 
  • Gefällt mir
Reaktionen: 404 und oglimmer
Vielen Dank für deine ausführliche Antwort und den Link.

Das von dir verwendete pl Skript wäre mir zu alt. Bei selfhtml findest du ein moderneres (aber aufwändigeres) Beispiel in php, mehr noch natürlich bei github...
Stimmt, ist alt, scheint aber recht "robust". Nachdem ich mir Standard php-Lösungen dafür angesehen hab, glaube ich, dass mir das Perlskript vielleicht schon reicht. Es überprüft z.B. auch den Referer, und soweit ich sehen konnte, auch die Feldeingaben auf unerwünschten Code usw.
Ich kann leider nicht beurteilen, ob es ganz allgemein - vom Inhalt des Skripts mal abgesehen - relevante Unterschiede in Sachen Sicherheit gibt zwischen einem Perlskript, das außerhalb des Document Root mit 755 Berechtigungen läge und von einem Javascript über den Pfad "../cgis/perlskript.pl" aufgerufen würde, und einer php-Lösung innerhalb des Document Root. Uploads/Anhänge sind im Kontaktformular nicht vorgesehen.

Du kannst ja aber zusätzlich noch eine leere Index.html in das Verzeichnis legen.
Warum?
 
> Du kannst ja aber zusätzlich noch eine leere Index.html in das Verzeichnis legen.

Ohne index.html basiert deine Sicherheit darauf, dass der Webserver richtig konfiguriert ist und kein Index listing generiert. Das klappt solange - aus welchem dummen Grund auch immer - sich die Konfiguration nicht ändert, nicht überschrieben wird oder einfach nicht (mehr) greift.

> php vs. perl

Bin da kein Experte und ich glaube es wird Gründe für und wieder beide Seiten geben. Ich entscheide solche Dinge danach wo ich mehr Ahnung habe, bzw. wo ich bereit bin mich ordentlich einzulesen. Dann eins kann ich mit Sicherheit sagen: egal ob php oder perl, wenn man das "falsch" macht, dann hat man eine Menge Security Probleme ;)
 
  • Gefällt mir
Reaktionen: ruerueka
Zurück
Oben Unten