
Joomla Helix3의 임의 파일 쓰기 취약점인 CVE-2026-49049를 스캔하는 Python 스캐너이자 개념 증명 도구로, PHP 웹 셸 업로드와 원격 코드 실행을 가능하게 합니다.
이 저장소는 Joomla Helix3 컴포넌트의 취약점에 대한 Python 기반 스캐너와 개념 증명(proof-of-concept)을 포함하고 있습니다. 이 버그는 공격자가 웹에서 접근 가능한 위치에 PHP 페이로드를 작성할 수 있을 때 원격 코드 실행(RCE)으로 이어질 수 있는 임의 파일 쓰기(arbitrary file write) 문제입니다.
취약한 동작은 요청 파라미터가 적절한 검증 없이 파일 경로나 파일 내용을 제어하는 데 사용될 때 발생합니다. Helix3 AJAX 인터페이스의 경우, 엔드포인트가 서버 파일 시스템에 파일을 작성하는 데 사용될 수 있는 데이터를 받아들입니다. 애플리케이션이 대상 경로를 제한하지 않고 내용을 검증하지 않으면, 공격자는 웹 서버가 실행하는 위치에 악성 PHP 스크립트를 생성할 수 있습니다.
다시 말해, 이 취약점은 단순히 "파일이 작성될 수 있다"는 것이 아니라 위험한 연쇄 과정입니다:
이것은 전형적인 임의 파일 쓰기에서 웹 셸로 이어지는 시나리오입니다.
공격자가 사이트 루트나 다른 실행 가능한 디렉터리에 PHP 파일을 작성할 수 있게 되면, 다음과 같은 작업을 할 수 있습니다:
단순한 파일 쓰기 결함을 완전한 서버 침해로 전환할 수 있기 때문에 영향이 심각합니다.
근본적인 문제는 일반적으로 다음과 같은 로직과 유사합니다:
$file = $_POST['layoutName'];
$content = $_POST['content'];
file_put_contents($file, $content);
$file의 값이 공격자에 의해 제어되고 경로가 제한되지 않으면, 애플리케이션은 실행 가능한 경로에 PHP 코드를 작성할 수 있습니다. 그런 다음 악성 스크립트가 브라우저에서 사용 가능해지고 웹 서버에 의해 실행될 수 있습니다.
이 프로젝트에는 다음을 시도하는 멀티스레드 Python 도구가 포함되어 있습니다:
취약한 대상을 results.txt에 기록하고 원시 PHP 출력을 raw_result.txt에 저장합니다.
수정은 신뢰할 수 없는 파일 쓰기를 제거하고 엄격한 검증을 시행해야 합니다. 권장되는 해결 단계는 아래와 같습니다.
Joomla와 Helix3 컴포넌트/플러그인을 최신 안정 버전으로 업그레이드하십시오. 보안 업데이트는 임의 쓰기 작업을 허용하는 취약한 엔드포인트를 제거하거나 제한하는 경우가 많습니다.
Helix3 AJAX 기능이 필요하지 않다면 완전히 비활성화하십시오. 안전하지 않은 엔드포인트에 대한 접근을 제거하면 공격 표면이 크게 줄어듭니다.
임의의 파일 시스템 경로를 허용하지 마십시오. 애플리케이션은 공개적으로 접근할 수 없고 PHP로 실행되지 않는 작고 고정된 디렉터리 내에서만 쓰기를 허용해야 합니다.
검증은 다음을 거부해야 합니다:
../와 같은 경로 순회 시퀀스파일을 작성하기 전에:
파일을 작성하는 엔드포인트는 신뢰할 수 있는 관리자만 사용할 수 있어야 합니다. 쓰기 요청을 수락하기 전에 적절한 인증 및 권한 검사를 요구하십시오.
엄격한 검증 없이 공격자가 제어하는 원시 내용을 실행 가능한 파일에 절대 작성하지 마십시오. 또한 서버 강화에는 다음이 포함되어야 합니다:
requests 패키지대상 URL을 포함하는 파일을 생성하십시오. 예를 들어 targets.txt:
http://example.com
https://joomla-site.local
http://127.0.0.1
그런 다음 실행하십시오:
python3 cve-2026-49049.py targets.txt
스크립트는 다음을 생성합니다:
results.txt — 탐지된 취약한 URLraw_result.txt — 테스트 중 관찰된 원시 PHP 페이로드이 프로젝트는 교육 목적, 합법적인 보안 연구, 그리고 승인된 취약점 평가를 위해 만들어졌습니다. 명시적인 허가 없이 시스템에 대해 사용해서는 안 됩니다. 오용은 엄격히 금지됩니다.
이 저장소의 내용은 연구자와 관리자가 실제 보안 문제를 이해하고, 식별하고, 해결하는 데 도움을 주기 위해 제공됩니다. 책임감 있게 사용하고 적절한 권한이 있는 통제된 환경에서만 사용하십시오.