• Gelöst Anonymous User 20597857

    (@anonymized-20597857)


    Wie könnte man die berühmte „debug.log“ verstecken?
    Oder lässt sich deren Pfad auch woanders hin umbiegen?

    Die Frage stelle ich für Projekte auf Apache und auf Nginx, wo ja htaccess Tricks nicht so einfach funken. Ja, Hoster fragen, oke, aber ich würde erst gerne mal hier hören, welche Ansichten es dazu gibt.

    Oder ist es völlig egal, wenn alle Welt diese Datei herunterladen kann?
    Viel nützliches steht ja nicht drin, oder?

Ansicht von 11 Antworten – 1 bis 11 (von insgesamt 11)
  • Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Die Log-Dateien geben nicht nur dir einen Hinweis auf mögliche Probleme, sondern können auch für Angreifer eine interessante Information liefern, auf was sie sich beim Angriff konzentrieren sollen.

    Beispiel: im Debug-Log steht, dass im Plugin „VeryBadCode“ einen Syntaxfehler in der Datei options.php aufgetreten ist. Da Fehler in WordPress Plugins meistens schnell gefixt werden, könnte das ein Hinweis auf eine ältere Version sein, die vielleicht auch noch andere Probleme (und vor allem eine Sicherheitslücke) hat. Ein Angriff könnte darauf abzielen, über die Abfrage von Debug-Logs diverser Websites solche Sicherheitslücken auszunutzen.

    Üblicherweise wirst du deshalb über eine Regel in der .htaccess den direkten Zugriff per Browser verweigern.

    <FilesMatch ".(htaccess|htpasswd|ini|psd|log|sh)$">
    Order Allow,Deny
    Deny from all
    </FilesMatch>

    Sinnvoll ist auch z.B., den Zugriff auf readme.txt bzw. readme.md zu blockieren, damit Angreifer nicht so schnell auf die Versionsnummer eines Plugins kommen.
    Bei einem Hackathon haben sich ein paar Programmierer dazu Gedanken gemacht, welche Dateien problematisch sein könnten und wie sich der Zugriff mit dem Kommandozeilen-Tool WP-CLI mit einem einzigen Befehl sperren lässt. Für Programmierer ist die Beschreibung auf der GitHub-Seite interessant: https://github.com/igorhrcek/wp-cli-secure-command

    Viele Webhoster nutzen übrigens nginx als Reverse Proxy für Apache2, weil dann weiterhin die „.htaccess Tricks funktionieren“ und Kunden z.B. Redirects weiterhin nutzen können.

    Ideal wäre, den Debug-Modus nur zur Fehlerbehebung zu aktivieren und nach erfolgreicher Arbeit die Log-Datei zu löschen und den Eintrag in der wp-config.php zu entfernen. Auch Dateien wie phpinfo.php mit Ausgabe aller Informationen zur genutzten (und vielleicht schon veralteten) PHP-Version gehen eigentlich niemanden etwas an.

    Ich hatte schon ein paar Mal angesetzt, um zu antworten, aber dann wieder verworfen.
    Ist die wp-debug.log gemeint oder die serverseitig optional mögliche debug-/debugging.log-Datei?

    Thread-Starter Anonymous User 20597857

    (@anonymized-20597857)

    @la-geek
    also ich meine die „debug.log“, welche sich automatisch innerhalb von wp-content zeigt, wenn in der wp-config aktiviert

    @pixolin
    Danke für die Erklärung!

    ein Hinweis auf eine ältere Version sein, die vielleicht auch noch andere Probleme

    Ok, also doch nicht so harmlos.

    Der htaccess Code ist mir so einigermaßen klar und geläufig, bei Nginx bin ich mir oft unsicher. Da frage ich den Hoster und gut ist’s.

    nginx als Reverse Proxy für Apache2

    Achso ja. Tja, wieder: Hoster fragen, bevor man selber (ev. unnötigerweise umständlich) an der Konfig schraubt.

    Klar, dass man nachher Debug wieder abdreht, aber bekäme ich für jedes Mal darauf vergessen 1 €, hätte ich keine Sorgen mehr …

    Die mir bekannten Hoster haben inzwischen auch ca. dasselbe gemeint. Abschalten, löschen, sperren

    Weitere „Problem“dateien: Das (in dem Github Link) sind ja eine Menge Kandidaten!

    Danke!

    @kurapika
    Ist deine Frage damit beantwortet?

    Wie der direkte Browser-Zugriff auf die log-Datei per .htaccess unterbunden werden kann, hat @pixolin erklärt.

    Man kann auch die Logs in eine Datei in ein separates Verzeichnis schreiben und die Datei (sowie auch das Verzeichnis) nennen wie man will – wichtig ist, dass die Datei-Endung .log unverändert bleibt. Zusätzlich dazu eine eigene .htaccess-Datei in dieses Verzeichnis, die den Zugriff auf das Log blockiert.

    Erklärung zu Verzeichnis/Datei findest du unter meinem obigen Link.
    Direktlink zum Absatz:
    https://wordpress.org/documentation/article/debugging-in-wordpress/#wp_debug_log

    Man könnte also zum Beispiel in die wp-config.php einfügen:

    define( 'WP_DEBUG_LOG', '/qzwvxc/geheime.log' );

    Thread-Starter Anonymous User 20597857

    (@anonymized-20597857)

    Danke, ja v.a. jetzt ist alles klar!

    Thread-Starter Anonymous User 20597857

    (@anonymized-20597857)

    Leider funkt das auch nach 99 Versuchen auf div. Webs nicht.
    Die debug.log wird weiterhin als solche in wp-content geschrieben und die selbst definierte Datei erscheint nirgends …

    Nach einiger Tüftelei, habe ich folgenden funktionierenden Code gebastelt:

    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_DISPLAY', false );
    define( 'WP_DEBUG_LOG', 'blub/blub.log' );

    Wie unter dem Link

    https://wordpress.org/documentation/article/debugging-in-wordpress/#wp_debug_log

    zu lesen war, muss WP_DEBUG auf true gesetzt werden.
    Das WP_DEBUG_DISPLAY auf false ist eine zusätzliche Absicherung.
    Beim Verzeichnis darf am Anfang nicht ein Slash gesetzt werden, das ist im Original-Artikel bzw. im Original-Code dort verkehrt. Also nicht
    define( 'WP_DEBUG_LOG', '/blub/blub.log' );
    sondern
    define( 'WP_DEBUG_LOG', 'blub/blub.log' );

    Den Ordner „blub“ habe ich im Stammverzeichnis angelegt. Ich habe dort also wp-content, wp-admin, wp-includes und blub.

    WP-DEBUG false darf nicht mehr in der wp-config.php stehen. Nachdem ich die geänderte wp-config.php hochgeladen habe, klick ich auf der Website auf einen Seitenlink und öffne dann (im FTP-Client) das Verzeichnis blub (ich lade ggf. das Verzeichnis neu im Filezilla), dort wird automatisch die Datei blub.log angelegt.

    Ich habe überlegt, ob ich meine Lösung schreibe, aber vielleicht ist sie von Interesse. Ich habe mehrere WP-Installationen. Um nur eine Logdatei zu haben, steht in jeder wp-config.php:

    define('WP_DEBUG', true);
    $debug_log=preg_replace('/(.*)htdocs(.*)/i', '${1}htdocs/logs/mydebug.log', ABSPATH);
    define( 'WP_DEBUG_LOG', $debug_log);
    define( 'WP_DEBUG_DISPLAY', false );

    Mein Homeverzeichnis beim Hoster ist /pfad/zu/htdocs. Dort habe ich ein Verzeichnis logs angelegt. mydebug.log kann ich passwortgeschützt abrufen und ein Cronjob rotiert die Datei.

    Ich habe überlegt, ob ich meine Lösung schreibe,

    Wieso solltest du das nicht tun?

    aber vielleicht ist sie von Interesse.

    Ganz sicher ist sie das. Danke 🙂

    Thread-Starter Anonymous User 20597857

    (@anonymized-20597857)

    Danke beiden, werde das morgen auch mal testen!

    Thread-Starter Anonymous User 20597857

    (@anonymized-20597857)

    @la-geek das funkt!
    musste nur den Slash wegmachen

    @hupe13 das testete ich nicht, weil Angelikas Lösung eh reicht

    Danke beiden – also Gelöst²

Ansicht von 11 Antworten – 1 bis 11 (von insgesamt 11)
  • Das Thema „debug.log verstecken“ ist für neue Antworten geschlossen.