🎯 Ziel der Untersuchung
Untersuchung der Frage: Kann die zeitbasierte Testlizenz von Plesk durch Manipulation der Systemzeit umgangen werden?
🖥️ Testumgebung
| Komponente | Details |
|---|---|
| VM | Debian 12 auf ESXi 7.0 |
| Plesk-Version | 18.0.76 |
| Lizenztyp | 14-Tage-Testlizenz (installiert am 24.03.2026) |
| Zugriff | SSH (primär) + ESXi-Konsole (bei Ausfällen) |
📋 Testprotokoll mit Befehlen
1️⃣ Ausgangszustand – Lizenz gültig
bash
# Lizenzstatus prüfen /usr/local/psa/bin/license --check-installed-license echo $?
Ergebnis: Exit-Code 0 (Lizenz gültig)
2️⃣ Internet trennen (Gateway löschen)
bash
# Standard-Gateway löschen (Internet weg, LAN bleibt) sudo ip route del default # Prüfen ping -c 2 8.8.8.8
Ergebnis: ping: connect: Das Netzwerk ist nicht erreichbar
3️⃣ Zeitsynchronisationsdienste stoppen
bash
# systemd-timesyncd stoppen und deaktivieren sudo systemctl stop systemd-timesyncd sudo systemctl disable systemd-timesyncd # VMware-Tools stoppen (falls vorhanden) sudo systemctl stop open-vm-tools 2>/dev/null # VMware-Zeitsynchronisation deaktivieren sudo vmware-toolbox-cmd timesync disable 2>/dev/null
4️⃣ Systemzeit manipulieren (auf 01.01.2026)
bash
# Systemzeit setzen sudo date -s "2026-01-01 01:00:00" # Hardware-Uhr setzen (persistente Uhr) sudo /usr/sbin/hwclock --set --date="2026-01-01 01:00:00" # Prüfen date sudo /usr/sbin/hwclock --show
Ergebnis: Systemzeit und Hardware-Uhr zeigen 01.01.2026 01:00
5️⃣ Plesk-Lizenz nach Zeitmanipulation prüfen
bash
/usr/local/psa/bin/license --check-installed-license echo $?
Ergebnis: Exit-Code 0 (Lizenz weiterhin gültig)
6️⃣ Daily Task manuell ausführen
bash
# Daily Task ausführen sudo /etc/cron.daily/50plesk-daily # Lizenz erneut prüfen /usr/local/psa/bin/license --check-installed-license echo $?
Ergebnis: Exit-Code bleibt 0 – Daily Task erkennt die Manipulation nicht
7️⃣ Logs analysieren
bash
# Plesk-Log auf Lizenz-Einträge prüfen tail -50 /var/log/plesk/panel.log | grep -i "license\|expir\|daily"
Ergebnis: Es gibt Einträge zum Daily Task, aber keine Warnung zur Zeitmanipulation
8️⃣ Nach dem Test: System zurücksetzen
bash
# Datum zurücksetzen sudo date -s "2026-03-25 12:00:00" sudo /usr/sbin/hwclock --set --date="2026-03-25 12:00:00" # Zeitsynchronisation wieder aktivieren sudo systemctl enable systemd-timesyncd sudo systemctl start systemd-timesyncd # VMware-Zeitsynchronisation wieder aktivieren sudo vmware-toolbox-cmd timesync enable 2>/dev/null # Internet wiederherstellen sudo dhclient # Plesk-Dienste neustarten sudo systemctl restart psa sw-engine sw-cp-server nginx # Prüfen /usr/local/psa/bin/license --check-installed-license echo $?
Ergebnis: Exit-Code 0 – System funktioniert wieder normal
🧪 Zusätzlicher Test: Datum nach Ablauf setzen
bash
# Datum auf 15.04.2026 setzen (nach Ablauf) sudo date -s "2026-04-15 12:00:00" sudo /usr/sbin/hwclock --set --date="2026-04-15 12:00:00" /usr/local/psa/bin/license --check-installed-license echo $?
Ergebnis: Exit-Code 1 (Lizenz ungültig)
📊 Zusammenfassung der Ergebnisse
| Test | Exit-Code | Erkenntnis |
|---|---|---|
| Normalbetrieb | 0 | Lizenz gültig |
| Internet getrennt | 0 | Kein sofortiger Online-Check |
| Datum auf 01.01.2026 | 0 | Lizenz vor Ablauf gültig |
| Datum auf 15.04.2026 | 1 | Lizenz nach Ablauf ungültig |
| Daily Task ausgeführt | 0 | Keine Erkennung der Manipulation |
🔐 Sicherheitsanalyse – Die Schwachstelle
Problembeschreibung
Plesk verwendet für die Lizenzvalidierung ein zweistufiges Modell:
- Lokale Prüfung: Vergleich der Systemzeit mit dem Ablaufdatum
- Online-Prüfung: Täglicher Abgleich mit dem Lizenzserver
ka.plesk.com
Schwachstelle: Beide Mechanismen können unabhängig voneinander umgangen werden.
Angriffsszenario (mit root-Zugriff)
| Schritt | Aktion | Ergebnis |
|---|---|---|
| 1 | Zeitsynchronisation stoppen | Systemzeit bleibt manipuliert |
| 2 | Internet blockieren (ip route del default) | Online-Prüfung scheitert |
| 3 | Systemzeit + Hardware-Uhr manipulieren | Plesk „glaubt“, die Lizenz sei noch gültig |
| 4 | Daily Task deaktivieren (chmod -x) | Keine wiederholte Online-Prüfung |
Folge: Plesk kann über das offizielle Ablaufdatum hinaus genutzt werden.
🛡️ Empfohlene Gegenmaßnahmen
| Maßnahme | Beschreibung |
|---|---|
| Offline-Fallback | Auch ohne Internet muss die lokale Ablaufprüfung strikt durchgesetzt werden |
| Zeitstempel-Datei | Speicherung des letzten gültigen Zeitstempels – bei Rücksetzung der Zeit Warnung oder Sperre |
| Hardware-Uhr-Abgleich | Erkennung, wenn Systemzeit und Hardware-Uhr stark voneinander abweichen |
| Persistente Sperrung | Nach Ablauf auch ohne Internet keine Nutzung mehr erlauben |
| Zertifikatsprüfung | Bei Zeitmanipulation Zertifikate neu generieren (statt Dienste zu stoppen) |
📝 Fazit
Die Lizenzvalidierung von Plesk ist nicht manipulationssicher. Ein Angreifer mit root-Zugriff auf die VM kann die Testlizenz durch Kombination von Zeitmanipulation und Internetblockade über das offizielle Ablaufdatum hinaus nutzen. Die vorhandenen Schutzmechanismen (Daily Task, VMware-Zeitsynchronisation) können deaktiviert werden. Ein robusterer Schutz würde eine lokale, nicht manipulierbare Ablaufprüfung sowie eine Erkennung von Zeitmanipulationen erfordern.
📂 Wichtige Dateipfade
| Datei/Verzeichnis | Zweck |
|---|---|
/usr/local/psa/bin/license | Lizenzverwaltung |
/etc/cron.daily/50plesk-daily | Plesk Daily Task |
/var/log/plesk/panel.log | Plesk-Hauptlog |
/etc/systemd/timesyncd.conf | Zeitsynchronisation |
/usr/sbin/hwclock | Hardware-Uhr |