
Énumération du classpath Java à distance via désérialisation
EnumJavaLibs : énumération à distance du classpath Java via la désérialisation.
Aperçu
EnumJavaLibs peut être utilisé pour découvrir quelles bibliothèques sont chargées (c'est-à-dire disponibles sur le classpath) par une application Java distante lorsqu'elle prend en charge la désérialisation.
-----------------
Serially - v1.1
by Stefan Broeder
-----------------
Usage:
EnumJavaLibs {MODE} [OPTIONS]
MODES:
base64 Write base64 encoded serialized objects to CSV file in current directory
rmi {host} {port} RMI mode. Connect to RMI endpoint and try deserialization.
OPTIONS:
-f {string} Only serialize classes from packages which contain the given string (e.g. org.apache.commons)
-d Debug mode on
Pour plus d'informations sur la façon d'utiliser l'outil, veuillez consulter cet article de blog.
Obtention des fichiers jar
Un référentiel local de fichiers jar est requis dans ~/.serially/jars. Vous devez exécuter le script python3 JavaClassDB pour indexer les fichiers jar, avant d'exécuter EnumJavaLibs. Une façon de constituer un référentiel local est de télécharger les bibliothèques Java les plus populaires depuis Maven Central. Je fournis un script getPopularJars.py qui peut être utilisé comme suit :
./getPopularJars.py 20 | while read x; do wget --quiet -P ~/.serially/jars $x; sleep 5; done
Cette commande récupérera les 20 fichiers jar les plus populaires sur mavenrepository.com.
Une autre façon d'initialiser votre dépôt de jars local si vous utilisez Maven est de copier les fichiers jar que vous avez déjà dans le cache Maven (~/.m2/repository)
RMI
Pour tester RMI, j'ai créé une image Docker que vous pouvez récupérer depuis [https://cloud.docker.com/repository/docker/summ1t/jmxrmi_vulnerable/general], qui démarre un hôte écoutant sur RMI au port 1617. Elle exécute Java 8u40, qui est vulnérable. La bibliothèque nanohttpd-2.2.0.jar est chargée sur le classpath pour démontrer qu'EnumJavaLibs peut découvrir cette bibliothèque à distance (à condition que vous ayez préparé votre dépôt local avec ce jar).