Tux L i n u x * G u i d e

v o n * I n g o * B l e c h s c h m i d t * ( c ) * 2 0 0 1
Tux
|Home|

|Neue Artikel|

|Index|

|Liste|

|Code-Snippets|

|Links|

|Allgemeines|

|Cool Stuff|
Perl-Sicherheitslücken decken
Fre Jun 22 15:20:00 MEST 2001
Perl Sicherheitslücke Angreifer ausfiltern erlaubt system() exec()

Perl kann fast alles. Gerade deshalb hat es auch einige Sicherheitslücken, von denen dieser Artikel zwei decken will.

LinuxGuide Druckbare Version
Man-Page
Sourcecode
Verwandte Artikel:

Operationen mit Dateien in Perl
CSV2HTML
Term::Cap in Perl
Entropie
Perl-Präprozessor
Farbverlauf mit Perl
Sichere Passwörter generieren



      .~.   
      /V\   
     // \\  
    /(   )\ 
     ^`~'^  
     


Hosted at Sorceforge.net
No ePATENTS
Viewable With Any Browser
Burn All GIFs!

  1. Der system()- bzw. exec()-Aufruf. Angenommen, das Perl-Skript fragt den Benutzer nach einem Namen, welcher dann (umständlich) mittels von system("echo $Name") ausgegeben werden soll. Wenn der Benutzer als $Name | rm -rf / eingibt, werden (Superuser-Rechte vorrausgesetzt) alle Dateien abfragslos gelöscht. Besser:
    # system()
     
      system("/bin/echo", $Name);
    
     
     

    Nun werden etwaige Metazeichen nicht mehr ersetzt.
  2. Um den bekannten ../-Trick ( bsp. http://www.sourceforge.net/../../../../etc/passwd - die Anzahl der dotdotslashes hängt vom Server ab) abzuwehren, ist es unratsam, nur die Slashes bzw. Punkte auszufiltern. Es bleit dann nähmlich noch die Möglichkeit, %2E als Punkt zu benutzen. Oder man könnte die Shell-Metazeichen ausnutzen (| rm -rf /*). Besser ist es, nur die erlaubten Zeichen durchzulassen, alle anderen auszufiltern:
    # ../
     
    { print "Nice try"; exit; } unless ($eingabe =~
        /[a-zA-Z0-9,.äüöÄÖÜ]/);
    
     
     

Document Informations: Content-Type: text/html; charset=iso-8859-1
Author: Ingo Blechschmidt
Description: LinuxGuide - Perl kann fast alles. Gerade deshalb hat es auch einige Sicherheitslücken, von denen dieser Artikel zwei decken will.
Keywords: Perl, Sicherheitslücke, Angreifer, ausfiltern, erlaubt, system(), exec(), LinuxGuide
Robots: all
Copyright: Copyright (C) 2002 by Ingo Blechschmidt
Date: 2003-06-22T15:20:00+02:00

Stichwortverzeichnis | Neue Artikel | Übersicht | Codesnippets | Links | Copyright | Cool Stuff | Home | Druckbare Version | Manpage | Sourcecode |
Diesen Artikel kritisieren, kommentieren oder ergänzen
Einen Neuen Artikel schreiben

 
This website is distributed under the GNU Free Documentation License .