Support » Allgemeine Fragen » upgrade.php

  • Gelöst Anonymous User 17612203

    (@anonymized-17612203)


    mal eine etwas blöde Frage… sicher schon 100 mal gestellt, ich finde aber nur andere Fragen zu der Datei.

    Die Datei ist wenn ich das richtig sehe für das Upgrade der DB zuständig… so wie es beim Update von WordPress 5.5 der Fall war. RICHTIG?

    Die Datei ist unter https://domain.com/wp-admin/upgrade.php aufrufbar, auch wenn ich NICHT eingeloggt bin.
    Beim Aufruf der Datei wird angezeigt das kein WP DB update nötig ist.
    Warum kann die Datei jeder aufrufen? Kann damit jeder ein DB Update anstoßen?

    Wie kann ich sicherstellen das die Datei nicht aufrufbar ist? Ändere ich den Dateinamen kann ich vermutlich kein Update der DB mehr durchführen?

    Am liebsten möchte ich die Datei ganz verstecken, selbst wenn niemand damit Unfug treiben kann… Erkennen kann man durch den Aufruf auf jeden Fall, dass es sich bei der Domain um eine WP Installation handelt (sicher, dafür gibt es noch 1000 andere Möglichkeiten, ich möchte sie dennoch verstecken wenn irgendwie möglich)

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 17)
  • Darüber brauchst du dir keine Sorgen zu machen, doch von Anfang:

    Du könntest upgrade.php und install.php löschen – doch nach einem Update/Upgrade wird die Datei neu erstellt. Du müsstest sie als nach jedem Update/Upgrade neu löschen.

    Du könntest beide Dateien per chmod auf 000 setzen – doch nach einem Update/Upgrade werden die Dateirechte wieder zurückgesetzt. Du müsstest das also immer wieder neu setzen.

    Du könntest versuchen, die Dateien per .htaccess (deny etc.) zu schützen, doch das geht nach hinten los. Dann kann WordPress nämlich kein Upgrade mehr durchführen.

    Aber du kannst es selbst mal testen. Führ ein Downgrade auf eine ältere WordPress-Version durch, vergewissere dich, dass eine neuere WordPress-Version im Backend als Update angeboten wird. Melde dich ab, lösche Caches und Cookies (oder nutze das Inkognito-Fenster des Browsers) und ruf die upgrade.php per URL auf -> es wird nichts passieren :).

    Ich hoffe, ich darf mich hier (etwas OT) einklinken?

    Zuerst Mal überrascht mich das schon, das die so zugänglich und sind und Auskunft geben. Ok, wer die WP Version nicht versteckt gibt sie auch im Quelltext preis.

    @la-geek schreibt, man kann zb. die upgrade.php löschen; WP kann sich dennoch updaten/upgraden. Echt? Aber wenn man sie per .htaccess schützt, geht nichts mehr. Das kapiere ich nicht.

    Hintergrund der Anmerkung ist: Ein Bekannter hat eine Site, welche sich durch nichts zu einem automatischen Update/Upgrade bewegen lässt. Diese meldet sinngemäß übersetzt: es kann nicht festgestellt werden, ob ein Update verfügbar ist.
    Die Frage ist: Könnte es sein, das hier eben eine .htaccess querliegt?

    Man kann den Zugriff zu /wp-admin/ per .htaccess schützen. Man muss den Zugriff für alle auf admin-ajax.php freigeben, auf den Rest darf nur der angemeldete Admin sowie der Host zugreifen, auf dem die WordPress-Installation läuft. Das bekommt man über das Logfile raus. Bei Strato z.B. ist das ein Host der Domain .d0m.de. Also:

    <Files admin-ajax.php>
    	Require all granted
    </Files>
    
    <RequireAny>
      	Require host .d0m.de
      	<RequireAll>
        	AuthUserFile /pfad/zu/.htpasswd
    		AuthName "Gesicherter Bereich"
    		AuthType Basic
    		Require user meinnutzername
      	</RequireAll>
    </RequireAny>
    Anonymous User 17612203

    (@anonymized-17612203)

    Das mit der Ajax freigeben, alles andere in wp-admin sperren klingt gut… ich möchte halt kein try an error das dann irgendwas nicht geht.

    Wie bekomme ich den richtigen Host raus? localhost?

    Was hältst Du von der Lösung Angelika / @la-geek ?

    Die Konfiguration läuft bei mir.
    Kommst Du an die Logdateien? Dort suche nach den Zugriffen von WordPress. Die Logdatei hat ungefähr folgenden Aufbau:
    IP-Adresse-oder-Name - - [Datum und Zeit] "POSToderGET url HTTP/1.1" 200 - "referer" "WordPress/5.5; https://meine-domain.de"

    WordPress/5.5; https://meine-domain.de ist der User-Agent. Man könnte die Regel in der .htaccess auch auf Basis dieses User-Agenten schreiben, aber der kann leicht gefälscht werden. Also muss man die IP-Adresse oder den Hostnamen rausbekommen.

    Anonymous User 17612203

    (@anonymized-17612203)

    Und was davon aus der Log Datei müsste ich in Deinem Script als Host eintragen?

    Statt .d0m.de? Das kommt drauf an. Wenn es immer dieselbe IP-Adresse-oder-Name ist, dann diese(n). Wenn nicht, den letzten Teil des Domainnamens (so wie in meinem Beispiel) oder das Subnetz.

    Was hältst Du von der Lösung Angelika / @la-geek ?

    ¯\_(ツ)_/¯ ich schütze immer nur die /wp-admin/wp-login.php.

    Ich gehe mal davon aus, wenn die wp-admin komplett (bis auf admin-ajax.php) hinter einem Passwortschutz liegt, kann sich kein User registrieren. (das ist bei meiner Variante nicht anders).

    Hier wird eine ähnliche Variante wie die von @hupe13 beschrieben:

    https://www.wpbeginner.com/wp-tutorials/9-most-useful-htaccess-tricks-for-wordpress/

    Zum Pfad. Damit dürfte der absolute Pfad gemeint sein. Hier ist eine Anleitung, inkl. downloadbarer Datei:

    https://software-lupe.de/tipp/wie-lautet-der-absolute-pfad/

    Ja, bei mir kann sich keiner registrieren, ich bin der alleinige Nutzer (Admin). Andere Nutzer trage ich bei Bedarf selber ein.
    Die .htaccess steht im Verzeichnis /wp-admin/.
    Allow und Deny ist die alte Syntax, seit Apache 2.4 ist diese veraltet.

    • Diese Antwort wurde geändert vor 3 Monaten, 2 Wochen von hupe13. Grund: Version korrigiert

    Also ich hab das Snippet von @hupe13 ausprobiert. Es funktioniert soweit alles (upgrade.php liegt hinter Passwort und Updates können über das Backend durchgeführt werden).

    Unschön ist, dass mit Aufruf von wp-login.php und Abbruch der Passwortaufforderung noch eine kaputte Login-Maske erscheint, die allerdings nicht funktioniert (da Weiterleitung auf wp-admin erfolgt).

    Mit einem zusätzlichen Schutz von wp-login.php kann man die Login-Maske auch komplett hinter .htaccess legen (für Perfektionisten 😀 )

    @hupe13 , danke für das Snippet, ich dachte mir schon, dass es irgenwie vermutlich funktionieren würde. Ich lass das mal auf einer Testinstallation probeweise laufen und beobachte, wie sich das über eine gewisse Zeit hinweg verhält.

    Aber da upgrade.php und install.php keine Funktion haben, wenn man nicht angemeldet ist, denke ich, ist es „nur“ ein zusätzlicher Zugriffsschutz generell. Ich werde mal die Tage darüber mehr recherchieren 🙂

    Anonymous User 17612203

    (@anonymized-17612203)

    Werde es auch ma ausprobieren sobald ich wieder am PC bin…

    Ein Punkt gibt mir aber noch zu denken. Ich muss in die .htaccess den usernamen rein schreiben mit deem ich mich sonst anmelde? Ich habe ja bisher ziemlich viel unternommen um ihn zu verstecken… Frage mich ob das ein Problem ist. Im gleichen ordner wie die htaccess liegt ja normalerweise auch ie wp-fonfig… udn die habe ich extra eine Ebene nach oben verschoben wo sie von außen nicht zugänglich ist. Tja, und jetzt schreibe ich sensible Zugangsdaten in die htaccess.

    Was denkt Ihr darüber?

    Es können die gleichen Nutzernamen und Passwörter sein, müssen aber nicht. Es sind zwei unterschiedliche Dinge.
    Achso: https ist natürlich vorhanden?

    Anonymous User 17612203

    (@anonymized-17612203)

    Spielt ja keine Rolle welcher Nutzername… jedenfalls ein funktionierender.

    Gibt es seit der DSGVO noch Seiten ohne https?

    Es können die gleichen Nutzernamen und Passwörter sein, müssen aber nicht.

    Jo.

    Ein Punkt gibt mir aber noch zu denken. Ich muss in die .htaccess den usernamen rein schreiben mit deem ich mich sonst anmelde?

    Du musst ja eine .htpasswd anlegen, dort kannst/solltest du einen komplett anderen, schwer zu erratenden Usernamen nehmen.

    Gibt es seit der DSGVO noch Seiten ohne https?

    ja. etliche.
    Warum auch nicht?
    Wenn keine Userdaten verarbeitet werden, niemand verfolgt wird, …

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 17)