Sicherheitsprüfungen

Der vollständige Katalog der automatisierten Sicherheitsprüfungen, die hav.sh gegen jeden Odoo-Dienst ausführt.

hav.sh führt die folgenden Prüfungen gegen jeden laufenden Odoo-Dienst aus. Jede Prüfung ist eine Black-Box-HTTP-Sonde gegen den öffentlichen Hostnamen des Dienstes — innerhalb deiner Odoo-Instanz wird nichts installiert.

#Critical

#Standard-Admin-Passwort

Versucht, sich mit admin / admin über /web/session/authenticate anzumelden. Ein erfolgreicher Login bedeutet, dass jeder im Internet die Datenbank übernehmen kann.

Lösung: In Odoo anmelden und das Passwort des Admin-Benutzers auf einen starken, einzigartigen Wert ändern.

#Datenbankmanager exponiert

Ruft /web/database/manager auf. Der Endpunkt muss 403 Forbidden zurückgeben — die Odoo-Datenbankverwaltungs-Oberfläche darf niemals aus dem öffentlichen Internet erreichbar sein, da sie die Master-Passwort-Abfrage zeigt und zum Erstellen, Löschen oder Sichern von Datenbanken verwendet werden kann.

Lösung: list_db = False (und ein starkes admin_passwd) in der Odoo-Konfiguration setzen und den Dienst neu deployen.

#Datenbank-Selektor exponiert

Ruft /web/database/selector auf. Der Endpunkt muss 403 Forbidden zurückgeben — ein erreichbarer Selektor bestätigt, dass list_db noch aktiviert ist, und liefert einem Angreifer die Liste der Datenbanken auf dem Host.

Lösung: Wie oben — list_db = False setzen.

#Datenbankliste über JSON-RPC

Ruft den JSON-RPC /web/database/list auf. Auch wenn die Selektor-UI deaktiviert ist, kann ein falsch konfigurierter Server immer noch auf den RPC-Endpunkt antworten und Datenbanknamen leaken.

Lösung: list_db = False setzen und bestätigen, dass der RPC-Endpunkt eine leere Liste zurückgibt.

#HTTPS erzwungen

Sendet eine einfache HTTP-Anfrage und folgt der Weiterleitung. Antwortet der Dienst auf HTTP-Verkehr ohne Weiterleitung auf HTTPS, können Zugangsdaten und Session-Cookies abgefangen werden.

Lösung: Sicherstellen, dass der Traefik-Reverse-Proxy in Ordnung ist und der Dienst ein gültiges Let's-Encrypt-Zertifikat hat.

#Warning

#Website-Info-Disclosure

Ruft /website/info auf. Der Endpunkt muss 403 Forbidden zurückgeben — einige Odoo-Versionen geben die exakte Odoo-Version auf dieser Seite preis, was Angreifern das gezielte Ausnutzen bekannter CVEs erleichtert.

Lösung: Die Route /website/info am Reverse-Proxy blockieren oder auf eine Version aktualisieren, die sie nicht freigibt.

#Server-Header-Leak

Bestätigt, dass der Server-Antwortheader weder Werkzeug, Odoo noch Python preisgibt. Das Entfernen des Banners ist Defense-in-Depth — es stoppt keinen Angriff, verlangsamt aber automatisierte Scanner.

Lösung: Den Server-Header am Reverse-Proxy entfernen oder umschreiben.

#HSTS-Header

Prüft /web/login auf einen Strict-Transport-Security-Antwortheader. HSTS weist Browser an, deine Domain immer über HTTPS zu nutzen, und verhindert Downgrade-Angriffe.

Lösung: Den HSTS-Header in der Traefik-Middleware für den Dienst hinzufügen.

#Clickjacking-Schutz

Prüft /web/login entweder auf einen X-Frame-Options-Header oder eine frame-ancestors-Direktive in Content-Security-Policy. Ohne sie kann deine Login-Seite in einem bösartigen Iframe eingebettet werden.

Lösung: X-Frame-Options: SAMEORIGIN (oder eine CSP-frame-ancestors-Direktive) am Reverse-Proxy hinzufügen.

#Info

#Login erreichbar

Eine positive Kontrolle, die bestätigt, dass /web/login 200 zurückgibt. Schlägt diese Prüfung fehl, ist der Dienst offline oder der Proxy leitet falsch weiter — keine andere Sicherheitsprüfung ist sinnvoll, solange diese nicht erfolgreich ist.