
Veraltete Ghost CMS-Websites, die durch CVE-2026-26980 kompromittiert wurden, können unter Spam-Code-Injection auf Seiten leiden. Verwenden Sie dies, um Code-Injection-Felder massenhaft zu löschen und zu bearbeiten.
Entfernt alle Code-Injektionen pro Beitrag und pro Seite von einer Ghost-CMS-Website über die Admin-API.
Seitenweite Code-Injektion (Ghost Admin → Einstellungen → Code-Injektion) wird niemals berührt.
pip install requests PyJWT
6478abc123def456:8f9e0d1c2b3a4567890abcdef1234567890abcdef1234567890abcdef12345678
Erstellen Sie eine Datei namens ghost_cleaner_config.json im selben Verzeichnis wie das Skript:
{
"ghost_url": "https://yourdomain.com",
"admin_api_key": "YOUR_KEY_ID:YOUR_KEY_SECRET"
}
Wenn Sie diesen Schritt überspringen, erstellt das Skript beim ersten Start eine Beispielkonfigurationsdatei und beendet sich — füllen Sie sie einfach aus und führen Sie es erneut aus.
Führen Sie dies immer zuerst aus, um genau zu sehen, was gelöscht würde, bevor Sie etwas berühren:
python3 ghost_injection_cleaner.py
Beispielausgabe:
Ghost Injection Remover
Mode : DRY-RUN (read-only)
Target: https://yourdomain.com
NOTE: /ghost/api/admin/settings/ (site-wide injection) is
never read or written by this script.
============================================================
POSTS
============================================================
47 posts fetched.
✦ 'My First Post'
HEAD: '<script>(function(){var _x="...obfuscated..."</script>'
🔍 DRY-RUN — would be cleared.
============================================================
PAGES
============================================================
6 pages fetched.
============================================================
SUMMARY
============================================================
Would clear : 1 posts/pages
Already clean: 52 posts/pages
Re-run with --apply to commit these changes.
Wenn Sie mit der Ausgabe des Probelaufs zufrieden sind, führen Sie es mit --apply aus. Sie werden aufgefordert, zu bestätigen:
python3 ghost_injection_cleaner.py --apply
Type YES to confirm changes to posts and pages: YES
...
✅ Cleared.
python3 ghost_injection_cleaner.py --config /path/to/my_config.json
Für jeden Beitrag und jede Seite setzt es beide dieser Felder auf null:
| Feld | Ort im Ghost-Editor |
|---|---|
codeinjection_head | Beitrags-/Seiteneinstellungen → Code-Injektion → Kopfzeile |
codeinjection_foot | Beitrags-/Seiteneinstellungen → Code-Injektion → Fußzeile |
Beiträge und Seiten ohne Injektion werden stillschweigend übersprungen.
Missing dependencies
Führen Sie pip install requests PyJWT aus und versuchen Sie es erneut.
admin_api_key must be in 'id:secret' format
Stellen Sie sicher, dass Ihr Schlüssel einen Doppelpunkt in der Mitte hat. Er sollte wie zwei durch : getrennte Hex-Strings aussehen. Kopieren Sie ihn direkt aus Ghost Admin, ohne Leerzeichen hinzuzufügen.
401 Unauthorized
Ihr Admin-API-Schlüssel könnte falsch sein oder die Integration wurde gelöscht. Gehen Sie zurück zu Ghost Admin → Einstellungen → Integrationen und überprüfen Sie.
ConnectionError oder Zeitüberschreitung
Überprüfen Sie, ob ghost_url in Ihrer Konfiguration korrekt ist und die Site von dem Rechner aus erreichbar ist, auf dem Sie das Skript ausführen.
Das Skript hängt bei einer großen Website Jede Seite mit 50 Beiträgen erzeugt ein neues JWT und wartet auf die API. Das ist normal — geben Sie ihm eine Minute.