Philipp Hasenfratz: CGI / Perl auf Sicherheit testen

Beitrag lesen

Halihallo alligator

ich würd gerne mal mein Perl-Script, die Usereingaben empfangen auf
Sicherheit testen. Deshalb wollt ich mal schauen, was man alles machen kann, wenn der Tainted-Modus nicht aktivert ist.

Der Tainted-Modus erhöht die Sicherheit nicht, das kannst _alleine_ du. Er stellt nur
sicher, dass du die externen Daten (eg. über Kommandozeile) über eine RegExp prüfst,
ob der Inhalt "sinnvoll" ist (bezgl. der Sicherheit z.B. keine Pipes enthält, womit
man sonst was tun könnte).

Leider hab ich bis jetzt nicht hinbekommen (trotz dieses offenen Scriptes) z.B. nen Systembefehl oder sowas abzusetzen. Ich teste auf Windows...

Ich halte das Script für sehr geschlossen. Wo siehst du hier eine Sicherheitslücke?
Das Script ist IMHO so gut wie gar nicht angreifbar. Wenn es jemand angreifen wollte,
müsste er den Quelltext haben und sehr, sehr viel über die internas von Perl verstehen,
sodass er unfug treiben könnte (Bufferoverflows z.B.).

perl tt.pl foo=exec('dir');
oder
perl tt.pl foo=sleep+10;
hat alles nix gebracht, außer die Ausgaben: exec('dir') und sleep 10.

Was hättest du erwartet? - Das das ausgeführt wird? - Ja, dann wäre es in der Tat eine
Sicherheitslücke, aber dem ist nicht so. Solange du nicht im Programm selber mit
Backticks, exec, system, open oder eval arbeitest und die Eingaben nicht überprüfst, dürfte es keine "wirklich grundlegenden" Sicherheitsprobleme geben.

Hat jemand ne Idee, was ich da falsch mache ?

_Wie_ erwartest du es denn richtig?

Viele Grüsse

Philipp

--
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.