Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
joomla-media-override — Joomla 6.1.3 - 높음 - 원격 - 덮어쓰기 - 미디어 관리자 덮어쓰기 잔여물 | Kitploit
도구/GitHubGitHub/abraxas/joomla-media-override
Privilege EscalationVulnerability AnalysisExploitationWeb Application ExploitationSecurity VirtualizationWeb SecurityPenetration TestingLabs & Practice
GitHubabraxas/joomla-media-override

joomla-media-override

Joomla 6.1.3 - 높음 - 원격 - 덮어쓰기 - 미디어 관리자 덮어쓰기 잔여물

저장소 보기
4일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - joomla-media-override

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  joomla-media-override

joomla-media-override

분류: 권한 잔여 도달 범위: 원격

Joomla CMS 6.1.3 (0f2d4de) - Open Source Matters

CVE-2026-48947은 웹서비스 미디어 API가 override가 설정된 경우 core.edit을 요구하도록 만들었다. 사이트 JSON API는 여전히 그렇지 않다. 기본 Author는 com_media에 대한 core.create를 가지고 있고 core.edit은 없다. 사이트 디스패처는 core.create를 충분한 것으로 간주하고 관리자 ApiController를 로드한다. 그런 다음 postFiles()가 override를 createFile()로 그대로 전달한다.

기본 Author가 이미 디스크에 있는 파일을 교체할 수 있다. 방문자는 계속 같은 공개 URL에 접속하지만 새로운 바이트를 받게 된다.

ID아직 CVE 없음
분류권한 잔여 / 무결성
도달 범위원격 (기본 Author, API 토큰 없음)
CWECWE-863, CWE-639
CVSSMedium: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
제품Joomla CMS
영향 받는 버전6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2), 사이트 com_media JSON API
인증기본 Author (그룹 3). API 토큰 없음.
라이선스GNU Affero GPL v3.0
랩127.0.0.1 전용

공격자가 할 수 있는 일

기본 Author로 로그인하여 사이트에 이미 있는 파일을 교체한다. 이는 사이트 탈취가 아니라 저장된 미디어의 변조 / 바이트 스위치이다. 확장자 거부 목록은 변경되지 않았으므로 .php 업로드가 아니다.

권한메서드 / 경로종류랩 입증 또는 추론
기존 미디어 파일(로고, 기사 이미지) 덮어쓰기사이트 POST /index.php?option=com_media&task=api.files&format=json&path=local-images:/에 JSON override: true무결성랩 입증. HTTP 200, 디스크 SHA 변경됨, 공개 GET /images/joomla_black.png가 JOOMLA-MEDIA-OVERRIDE-WITNESS를 포함한 새 PNG를 제공함
해당 URL을 여전히 가리키는 모든 것 변조동일한 공개 경로, 캐시 무효화 없음무결성공개 바이트가 바뀌는 것은 랩 입증. images/ 아래 다른 어댑터에 대해서는 추론
허용된 새 파일 생성override 없이 동일한 POST의도된 동작Author는 com_media에 대한 core.create를 가짐
PUT을 통한 편집동일한 task에 PUT, 경로에 파일 이름 포함해당 없음랩 입증 차단됨. HTTP 403. putFiles()는 이미 core.edit을 요구함
이름이 존재할 때 override 없이 생성POST override: false (기본값)해당 없음랩 입증 차단됨. HTTP 409, override POST 전까지 원본 SHA 변경 없음
.php 또는 기타 거부된 유형 업로드createFile / isMediaFile 거부 목록해당 없음추론상 차단됨. 이 랩은 PNG만 전송함
override로 웹서비스 미디어 API 호출/api/index.php/v1/media/files해당 없음추론상 차단됨. MediaController::allowAdd는 override가 설정된 경우 core.edit을 확인함 (CVE-2026-48947)
Super User / RCE해당 없음해당 없음차단됨. Author는 Author로 남음

발견 방법

2026-07/08 JSST 웨이브 이후 6.1.3을 고정했다. Groups API는 이미 core.admin을 요구한다. 웹서비스 미디어는 override 시 이미 core.edit을 요구한다. 내부 컨트롤러는 여전히 그렇지 않다.

기본 Author는 com_media에 대한 core.create를 가지고 있고 core.edit에는 아무것도 없다:

{"core.admin":{"7":1},"core.manage":{"6":1},"core.create":{"3":1},"core.delete":{"5":1}}

사이트 Dispatcher는 core.create를 통과시키고 관리자 ApiController를 로드한다. 그런 다음 postFiles():

if (!$this->app->getIdentity()->authorise('core.create', 'com_media')) {
    throw new \Exception(Text::_('JLIB_APPLICATION_ERROR_CREATE_RECORD_NOT_PERMITTED'), 403);
}
$override     = $content->get('override', false);
if ($mediaContent) {
    $name = $this->getModel()->createFile($adapter, $name, $path, $mediaContent, $override);

수정된 웹서비스 (api/.../MediaController.php):

if ($this->input->json->get('override', false)) {
    return $user->authorise('core.edit', 'com_media');
}

이미 기록된 잘못된 방향: PUT을 잔여로 취급하는 것 (PUT은 이미 403); 웹서비스 경로가 여전히 열려 있다고 취급하는 것 (CVE-2026-48947이 닫았음); override 없는 409를 실패로 읽는 것 (그것은 의도된 create-if-absent 경로임). 연극: 리버스 셸. 오라클은 POST override 200 더하기 PUT 403 더하기 witness PNG의 공개 GET이다.

동일한 고정 버전의 잔여: levels API, menu items API, articles catid.

랩

python3 joomla-media-override-Abraxas-Labs.py

또는

cd lab
./run.sh

오직 http://127.0.0.1:19540만 대상으로 한다. 이미지 joomla:6.1.3-php8.3-apache 더하기 mariadb:11.4.

SUCCESS joomla-media-override post-http=200 override=yes bytes-changed=yes put-http=403 no-edit=yes conflict-http=409 JOOMLA-MEDIA-OVERRIDE-WITNESS

수정 방법

createFile() 전에 ApiController::postFiles() 내부에 MediaController::allowAdd와 동일한 override -> core.edit 검사를 추가한다. PUT은 core.edit으로 유지한다.

참고 자료

  • github.com/joomla/joomla-cms 태그 6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2)
  • ApiController.php postFiles
  • 인접 패치됨 (이 컨트롤러 아님): CVE-2026-48947
  • 동일 태그: joomla-levels-api · joomla-menu-items-api · joomla-articles-catid
  • CWE-863 · CWE-639

라이선스

GNU Affero GPL v3.0. LICENSE 참조. 루프백 랩 전용. 보증 없음.

도구 다운로드