Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
CVE-2026-53435 — Un chercheur en sécurité offensive + une IA contre un n-day frais : construire le premier PoC public pour CVE-2026-53435 en une nuit de vendredi. Log brut de 8h20m à l'intérieur. | Kitploit
Outils/GitHubGitHub/amesianx/cve-2026-53435
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationExploitation de Binaires
GitHubamesianx/cve-2026-53435

CVE-2026-53435

Un chercheur en sécurité offensive + une IA contre un n-day frais : construire le premier PoC public pour CVE-2026-53435 en une nuit de vendredi. Log brut de 8h20m à l'intérieur.

Voir le dépôt
1125il y a 2 moisPas 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

CVE-2026-53435 — Désérialisation Jenkins → Lecture Arbitraire de Fichiers (PoC)

Première preuve de concept publique pour CVE-2026-53435, construite alors que seul l'avis existait et qu'aucun PoC n'était publié nulle part. Reconstruite à partir d'un avis vague d'une ligne en ~8,5 heures un vendredi soir — non pas en écrivant l'exploit à la main, mais en dirigeant une IA à travers les impasses, les pivots et la vérification jusqu'à ce qu'une chaîne fonctionnelle émerge.

CVE-2026-53435 PoC lisant /etc/passwd depuis le contrôleur Jenkins

Le PoC atteignant /etc/passwd sur le contrôleur — lecture arbitraire de fichiers confirmée.

CVECVE-2026-53435 (Jenkins SECURITY-3707)
ClasseDésérialisation non sécurisée (contournement de ClassFilter via config.xml)
Impact (ce PoC)Lecture arbitraire de fichiers authentifiée sur le contrôleur
AffectéJenkins weekly ≤ 2.567, LTS ≤ 2.555.2
CorrigéJenkins weekly 2.568, LTS 2.555.3
Avishttps://www.jenkins.io/security/advisory/2026-06-10/ (publié le 2026-06-10)
Statut au moment de la rédactionAucun PoC public n'existait (dépôts GitHub PoC : 0)

Pourquoi ce dépôt existe

C'est une expérience pour montrer le processus, pas seulement l'artefact.

Pendant des années, le résultat d'un chercheur offensif était un seul exploit finalisé — les 8 heures de mauvais tournants qui l'ont produit disparaissaient. Ce dépôt conserve les mauvais tournants. La transcription complète et légèrement éditée d'un humain + IA travaillant sur un n-day frais, de l'avis au PoC fonctionnel, est incluse en annexe.

Le point qu'il soulève est délibérément pas « l'IA l'a fait. » Les 8 heures sont la preuve que ce n'est pas le cas. L'IA n'a jamais réalisé la chaîne en un seul coup. Ce qui a porté le travail, c'est l'expertise du domaine — savoir que l'avis cachait un point de désérialisation, savoir chercher dans les types core de Jenkins plutôt que dans les plugins, savoir qu'un DescribableList avant le correctif n'appliquait pas son type d'élément, et savoir comment vérifier une affirmation au lieu de lui faire confiance. La valeur du chercheur n'a pas disparu ; elle est passée de saisir l'exploit à diriger, élaguer et valider.

Ce changement est ce qui mérite d'être documenté.


La vulnérabilité (cause racine)

Jenkins protège la désérialisation avec un ClassFilter personnalisé qui n'autorise que les types définis dans le cœur de Jenkins ou les plugins. CVE-2026-53435 signifie que cela ne suffit pas : un attaquant capable de POSTer un config.xml peut amener Jenkins à désérialiser un type arbitraire du cœur/plugin dans un contexte qui ne l'attendait jamais, puis accéder à cet objet via HTTP via le routage Stapler.

Ce PoC plante un hudson.Plugin$DummyImpl (un type du cœur de Jenkins, donc il passe la liste blanche d'emplacement) dans la liste <properties> d'une ListView — une DescribableList<ViewProperty> qui, avant le correctif, n'applique pas son type d'élément. L'objet planté porte baseResourceURL=file:/. Router une requête HTTP vers celui-ci sert alors des fichiers directement depuis le système de fichiers du contrôleur.

Une chaîne ysoserial générique ne fonctionne pas ici — le gadget doit être un type résidant dans Jenkins/plugin pour survivre au filtre. Cette contrainte est tout l'enjeu.


Portée et divulgation responsable

  • Ce PoC démontre uniquement l'impact de la lecture arbitraire de fichiers.
  • L'avis décrit également l'usurpation d'utilisateur et l'exécution de code à distance dans la console de scripts via la même primitive. Ces chaînes ont été atteintes lors de la recherche mais sont volontairement omises ici : le CVE a été corrigé seulement quelques jours avant la publication, et un RCE clé en main servirait principalement à l'exploitation massive d'instances non corrigées. La lecture de fichiers est suffisante pour prouver l'impact.
  • La vulnérabilité est déjà corrigée. Tous les tests ont été effectués sur un laboratoire local et isolé (voir ci-dessous) sur la propre machine de l'auteur. Aucun système externe ou tiers n'a été touché.

À utiliser uniquement contre des systèmes que vous possédez ou que vous êtes explicitement autorisé à tester.


Preuve : ça fonctionne sur la version vulnérable, échoue sur la version corrigée

L'exploit a été exécuté contre deux conteneurs de configuration identique — vulnérable 2.555.2 et corrigé 2.555.3 — pour confirmer qu'il exerce ce CVE et non une primitive de lecture de fichiers sans rapport :

2.555.2 (vulnérable)2.555.3 (corrigé)
createViewHTTP 200HTTP 200
<properties> stocké<hudson.Plugin_-DummyImpl/> — survit<properties/> — supprimé
Déclencheur → /etc/passwdroot:x:0:0:... — luvide — bloqué

La version corrigée accepte la requête mais le correctif rejette le type planté au moment de la désérialisation, donc la liste des propriétés revient vide et il n'y a rien à router. L'échec atterrit exactement sur le mécanisme que l'avis décrit — ce qui fait de ceci un véritable PoC pour CVE-2026-53435.


Utilisation

root@kitploit:~
python3 exploit_cve_2026_53435_v2.py <base_url> <user> <pass> <remote_file> [view_name]

# example (against your own lab):
python3 exploit_cve_2026_53435_v2.py http://127.0.0.1:8080 <user> <pass> /etc/passwd
  • base_url — http://host:port de la cible (HTTP simple ; ne pas préfixer https sauf si l'instance termine réellement TLS).
  • nécessite un compte avec la permission de POSTer un config.xml de vue (View/Configure), plus Overall/Read.

Reproduire le laboratoire

root@kitploit:~
docker compose -f lab/docker-compose.yml up -d
#   vulnerable:  http://127.0.0.1:8080   (Jenkins LTS 2.555.2)
#   patched:     http://127.0.0.1:8081   (Jenkins LTS 2.555.3, negative control)

Le laboratoire provisionne une base de données utilisateur locale uniquement via l'initialisation Groovy afin que le chemin à faible privilège authentifié puisse être exercé sans fournisseur d'identité externe.


Chronologie — ~8,5 heures, un vendredi soir

root@kitploit:~
2026-06-12 (Fri)  15:00 → 23:23   ≈ 8h 20m

  15:00–15:12   Lab built (docker: vuln 2.555.2 / patched 2.555.3) + first recon
  15:12–21:00   Deserialization sink & gadget analysis
                  (Commons-Collections bypass attempts failed → pivot
                   from properties to actions and back)
  21:00–22:30   ClassFilter analysis + gadget re-hunt, restricted to core types
  22:30–23:00   Working PoC (v1 → v2) + differential verification (vuln vs patched)

La plupart de ces heures étaient de l'analyse, pas de la frappe. L'exploit lui-même s'est assemblé dans les dernières ~30 minutes — une fois le bon point de désérialisation et le bon gadget connus.


Comment cela a été construit

Construit avec Claude Code (Anthropic), piloté interactivement par l'auteur :

  • Main model: Claude Opus 4.8 (Claude Max)
  • Portions: Claude Fable 5 (Mythos-class tier)

La transcription complète et légèrement éditée du travail est dans transcript/ — conservée brute, y compris les impasses. (Éditée seulement pour adoucir quelques lignes de ton et masquer les détails du réseau local ; rien de technique n'a été supprimé.)


Avertissement

Pour les tests de sécurité autorisés, la recherche et l'éducation uniquement. L'auteur et les contributeurs déclinent toute responsabilité en cas d'utilisation abusive. La vulnérabilité ciblée est corrigée — mettez à jour vers Jenkins LTS 2.555.3 / weekly 2.568 ou ultérieur.

Télécharger l’outil