PDF Datei hochladen geht nicht


  • immer noch etwas, was einer verständlichen Gliederung entspricht. Einen anderen Grund zum Widersprechen finde ich jetzt nicht. Da aber mit /datei-name.jpg.exe bereits Schindluder betrieben wurde, weil im Anhang einer Mail nur datei-name.jpg zu sehen ist, falls in den Ordneroptionen "Erweiterungen bei bekannten Dateitypen ausblenden" eingestellt ist und die eigentliche Endung .exe somit nicht angezeigt wird, würde ich es verständlich finden, wenn Punkte aus einem Dateinamen von einem Upload-Script entfernt werden.

    Ich meine, zumindest hatte ich gelesen, dass auf diese Weise in der Vergangenheit bereits erfolgreich Malware an den Mann gebracht worden sein soll. Bezog sich nicht auf WP oder so, sondern auf die Infizierung von Rechnern.

    ja - so etwas habe ich auch in der Erinnerung. Allerdings bei Bildern

    datei.jpg.php

    Ein "Upload" prüf- Script erkennt die Datei als *.jpg und der WebServer führt das PHP-Script aus.

    Aus Sicherheitsgründen verwendet man nur einen Punkt im Dateinamen.

    Des weiteren hat der TE nichts über seine PDF Version verraten und Versionen bis 1.3 (oder 1.4? bitte selber suchen) sind DOS komplatible. D.h. die Datei darf nur -(sollte nur) 8 Zeichen PUNKT pdf haben.

    Es gibt wirklich viele weitere Gründe

    Abhilfe schafft beim Apache WebServer der Eintrag
    [h=2]Datei beginnt nicht mit %PDF-[/h]

    Code
    application/x-pdf pdf


    in die "mime.types".
    Adobe stellt auch Informationen zur Verfügung
    http://www.adobe.com/de/support/toptech/acrobat/319294/

    Mit offenen Augen träumen

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • ...
    datei.jpg.php

    Ein "Upload" prüf- Script erkennt die Datei als *.jpg und der WebServer führt das PHP-Script aus.

    Aus Sicherheitsgründen verwendet man nur einen Punkt im Dateinamen.
    ...

    Also mal ehrlich, ein Prüfskript, das sich durch so einen simplen "Trick" überrumpeln läßt, verdient den Namen nicht. :-)

    Nicht umsonst heißen die Dateierweiterung auch Dateiendung oder Dateisuffix, eben weil sie am Ende stehen. Es ist ja nun keine große Kunst, diese Erweiterung nach dem letzten Punkt im Dateinamen zu bestimmen.

    Ist aber eigentlich egal, denn Wordpress entfernt keine Punkte aus Dateinamen. Es werden bestenfalls Teile mit einem angehängten _ "entwertet", wenn die aus 2 bis 5 Buchstaben bestehen und keinem in Wordpress erlaubten Dateityp entsprechen. Das ist aber bei der Datei des TE nicht der Fall.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Hallo an meine Helfer,

    die Fehlermeldung für einen in die Irre. Es liegt an dem upload Limit. Habe einige meiner Backups gelöscht und siehe da ich kann wieder ganz normal Medien hoch laden. Danke an Euch und einen schönen Tag.

  • Also mal ehrlich, ein Prüfskript, das sich durch so einen simplen "Trick" überrumpeln läßt, verdient den Namen nicht. :-)


    Eigentlich enthält $_FILES schon ein Array mit Mime-Type.

    hochgeladen: test.dokument.was.pdf

    Code
    Array
    (
        [name] => test.dokument.was.pdf
        [type] => application/pdf
        [tmp_name] => C:\xampp\tmp\php1622.tmp
        [error] => 0
        [size] => 165712
    )

    hochgeladen: test.dokument.pdf.php

    Code
    Array
    (
        [name] => test.dokument.pdf.php
        [type] => application/octet-stream
        [tmp_name] => C:\xampp\tmp\php2ED1.tmp
        [error] => 0
        [size] => 165712
    )


    In einem zweiten Schritt könnte bei Bildern getimagesize folgen, für eine nochmalige Überprüfung von Mime-Type. Wie sich Videos und anderes Mime-Type überprüfen lassen, dafür hatte ich zwischendurch mal eine Lösung gefunden, doch leider wieder vergessen.

    Nur wie wird mit application/octet-stream umgegangen? Eben damit stelle ich Zip-Archive zum Download bereit. Probleme sind mir bisher nicht bekannt, obwohl es sich bei octet-stream theoretisch auch um ausführbare Dateien handeln könnte.

    Bei WP habe ich es bisher nicht mit einem Punkt getestet, was auch mit daran lag, dass ich bei einem eigenen Upload-Script nicht auf die Idee kam, einen Punkt durchzulassen. Wobei das neben der Überprüfung von $_FILES und mit getimagesize als zusätzliche Sicherheit diente:

    PHP
    $pruefe = preg_replace("/[a-z0-9_-]+?\.(jpg|png)/i", "", $imagen);


    Es wird ja nicht der eigentliche Name verwendet, denn eine Upload-File wird immer zuerst unter irgendwas123.tmp auf dem Server gespeichert, bevor es dann von PHP einen Namen erhält und in ein Zielverzeichnis verschoben wird. Für mich war es bisher normal, von PHP dabei den ursprünglichen Namen aufgeräumt zu verwenden.

    Hatte einmal mit einer ganz kleinen Galerie begonnen, war nur ein erster Entwurf und wurde bisher nicht fertig gestellt, nur das Upload-Script wurde halbwegs fertig:

    http://www.coder-welten.de/php/csv/bg-erw…load-script.htm

  • In Plugins scheint es aber nach wie vor eine Schwachstelle zu sein (oder etwas in dieser Richtung) und diese Meldung ist ja erst vom Februar:

    Zitat


    you can upload files with php extension. Example: c99.php, shell.gif.php, etc...


    http://www.exploit-db.com/exploits/31570/

    Hier ist noch etwas mehr beschrieben:

    http://osvdb.org/show/osvdb/103454

    Nun habe ich es mir gerade erst heruntergeladen, will mal einen Blick aufs Innenleben werfen, um eventuell eigene Fehler zu verringern.

  • Das hat aber nichts mit dem Problem der mehrfachen Punkte zu tun. Mit dem Plugin kann man wohl auch datei.php hochladen, also etwas mit einer ganz normalen, einfachen Dateiendung.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Das Plugin ist zu umfangreich, um das in Kürze wirklich nachvollziehen zu können. Soll heißen, verstehe nicht einmal einen Bruchteil bisher. Als Hooks werden unter anderem "upload_mimes" und "fu_allowed_mime_types" verwendet, um $mime_types zu filtern, dann die Schleife und irgendwas läuft wohl nicht wie vorgesehen, kann mich aber irren:

    PHP
    foreach ( $mime_types as $ext_key => $mime ) {
        // Check for php just in case
        if ( false !== strpos( $mime, 'php' ) )
            unset( $mime_types[$ext_key] );
    }

    Werfe alles raus, was nicht einem RegEx-Muster entspricht, gefällt mir da dann doch besser.

  • Das hat aber nichts mit dem Problem der mehrfachen Punkte zu tun.


    Ich meine auch nur, nichts bietet so viele Angriffspunkte zum Einschleusen von Schadcode wie Formulare und insbesondere Formulare plus Upload-Script. Und das mit der shell.gif.php sah gerade so gut aus mit den zwei Punkten, obwohl es mehr um *.php ging.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!