Hacker kompromittieren NGINX-Server, um den Benutzerverkehr umzuleiten!

Hacker kompromittieren NGINX-Server, um den Benutzerverkehr umzuleiten!

Ein Angreifer kompromittiert NGINX-Server in einer Kampagne, die den Benutzerdatenverkehr abfängt und über die Backend-Infrastruktur des Angreifers umleitet.

NGINX ist eine Open-Source-Software für das Web-Traffic-Management. Sie vermittelt Verbindungen zwischen Benutzern und Servern und wird für Webservering, Lastverteilung, Caching und Reverse-Proxying eingesetzt.
Die von Forschern der DataDog Security Labs entdeckte Schadsoftware-Kampagne zielt auf NGINX-Installationen und Baota-Hosting-Management-Panels ab, die von Websites mit asiatischen Top-Level-Domains (.in, .id, .pe, .bd und .th) sowie von Regierungs- und Bildungswebsites (.edu und .gov) verwendet werden.

Angreifer verändern bestehende NGINX-Konfigurationsdateien, indem sie bösartige „Location“ -Blöcke einfügen, die eingehende Anfragen auf vom Angreifer ausgewählten URL-Pfaden abfangen.
Anschließend werden sie so umgeschrieben, dass sie die vollständige ursprüngliche URL enthalten, und der Datenverkehr wird über die Direktive ‚proxy_pass‘ an vom Angreifer kontrollierte Domains weitergeleitet.
Die missbräuchliche Direktive wird normalerweise für den Lastausgleich verwendet und ermöglicht es NGINX, Anfragen über alternative Backend-Servergruppen umzuleiten, um die Leistung oder Zuverlässigkeit zu verbessern; daher löst ihr Missbrauch keine Sicherheitswarnungen aus.
Anfrage-Header wie ‚Host‘, ‚X-Real-IP‘, ‚User-Agent‘ und ‚Referer‘ werden beibehalten, um den Datenverkehr als legitim erscheinen zu lassen.

Der Angriff nutzt ein skriptbasiertes, mehrstufiges Toolkit, um die NGINX-Konfigurationsmanipulationen durchzuführen. Das Toolkit arbeitet in fünf Phasen:

  • Phase 1 – zx.sh: Fungiert als initiales Steuerungsskript und ist für das Herunterladen und Ausführen der übrigen Phasen zuständig. Es enthält einen Ausweichmechanismus, der HTTP-Anfragen über TCP sendet, falls curl oder wget nicht verfügbar sind.
  • Phase 2 – bt.sh: Greift auf die vom Baota-Panel verwalteten NGINX-Konfigurationsdateien zu. Es wählt dynamisch Injektionsvorlagen anhand des Werts von server_name aus, überschreibt die Konfiguration sicher und lädt NGINX neu, um Ausfallzeiten zu vermeiden.
  • Phase 3 – 4zdh.sh : Listet gängige NGINX-Konfigurationsverzeichnisse wie sites-enabled, conf.d und sites-available auf. Es verwendet Parsing-Tools wie csplit und awk, um Konfigurationsbeschädigungen zu verhindern, erkennt vorherige Einschleusungen durch Hashing und eine globale Mapping-Datei und validiert Änderungen mit nginx -t vor dem Neuladen.
  • Phase 4 – zdh.sh: Verwendet einen gezielteren Ansatz, der sich hauptsächlich auf /etc/nginx/sites-enabled konzentriert, insbesondere auf .in- und .id-Domains. Es folgt dem gleichen Konfigurationstest- und Neuladeprozess, wobei ein erzwungener Neustart (pkill) als Ausweichlösung dient.
  • Phase 5 – ok.sh: Durchsucht kompromittierte NGINX-Konfigurationen, um eine Karte der gekaperten Domains, Injection-Templates und Proxy-Ziele zu erstellen. Die gesammelten Daten werden anschließend an einen Command-and-Control-Server (C2) unter 158.94.210[.]227 exfiltriert.

Diese Angriffe sind schwer zu erkennen, da sie keine NGINX-Schwachstelle ausnutzen; stattdessen verstecken sie bösartige Anweisungen in den Konfigurationsdateien, die selten überprüft werden.
Außerdem erreicht der Benutzerverkehr weiterhin sein Ziel, oft direkt, sodass die durchlaufende Angreiferinfrastruktur wahrscheinlich nicht bemerkt wird, es sei denn, es wird eine gezielte Überwachung durchgeführt.

Weitere Infos, siehe → https://securitylabs.datadoghq.com/articles/web-traffic-hijacking-nginx-configuration-malicious/

1 „Gefällt mir“

Wichtige Aspekte der NGINX-Konfiguration:

  • Struktur: Hauptkonfiguration (nginx.conf) und standortspezifische Konfigurationen, oft in sites-available/ organisiert.

  • Manipulationstechniken:
    a) Reverse Proxy: proxy_pass Direktive zur Weiterleitung von Anfragen an interne Dienste.
    b) Sicherheit: deny all; in location-Blöcken zur Blockierung von Angriffen (z.B. SQL-Injection, Zugriff auf Logfiles).
    c) Traffic-Manipulation: Nutzung von rewrite oder return für Umleitungen.

  • Wichtige Befehle:
    a) nginx -t: Prüft die Konfiguration auf Syntaxfehler, bevor sie aktiviert wird.
    b) nginx -s reload: Lädt die Konfiguration neu, ohne laufende Verbindungen zu trennen.

  • Härtung der Konfiguration:

    a) Verhindern von SQL-Injection: Durch location ~* „(eval()“ oder location ~* „('|")(.*)(drop|insert|select|union)“.
    b) Einschränken von Zugriffen: Zugriff auf .git, .env oder sensible Dateien via location blockieren.
    c) Überwachung: Regelmäßige Kontrolle der proxy_pass Direktiven auf ungewöhnliche Ziele.

https://radar.offseq.com/threat/malicious-nginx-configurations-enable-large-scale–da34b7ce

======================================================

Nginx Troubleshooting!

https://www.oreilly.com/library/view/nginx-troubleshooting/9781785288654/ch01s02.html

1 „Gefällt mir“

Wer sich „nur“ mir NGINX beschäftigt, kämpft an der falschen Front! Die wirklich wichtige Frage ist: Wie kommt der Hacker rein, und wie kann ich das verhindern? Die Antwort laut der verlinkten Quelle: „we assess with moderate confidence that threat actors gained initial access through exploitation of the React2Shell vulnerability (CVE-2025-55182).“
Also, wo setzt man an, um sich vorbeugend zu schützen? OK, rhetorische Frage.
Das Gefummel an NGINX ist nur notwendig, wenn das Kind schon im Brunnen liegt.