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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cpanel-cve-2026-41940-ioc — CVE-2026-41940 cPanel/WHM 인증 우회 IOC 스캐너 — 업스트림 탐지 스크립트의 오탐(false positive)을 수정하고 로그 교차 상관 분석을 추가합니다. | Kitploit
도구/GitHubGitHub/andrei-dr/cpanel-cve-2026-41940-ioc
Defensive ToolsVulnerability ScannersWeb SecurityAuthenticationIncident ResponseLog Analysis
GitHubandrei-dr/cpanel-cve-2026-41940-ioc

cpanel-cve-2026-41940-ioc

CVE-2026-41940 cPanel/WHM 인증 우회 IOC 스캐너 — 업스트림 탐지 스크립트의 오탐(false positive)을 수정하고 로그 교차 상관 분석을 추가합니다.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
43개월 전아직 검토되지 않음

CVE-2026-41940 IOC 스캐너

cPanel/WHM 인증 우회(CVE-2026-41940)를 탐지하는 스크립트로, 11.40 이후의 모든 cPanel 버전에 영향을 미칩니다.

이것은 업스트림 cPanel 탐지 스크립트를 오탐지 수정 및 로그 상관 분석 추가와 함께 재작성한 버전입니다.

기능

/var/cpanel/sessions/raw/ 디렉터리에서 개행 삽입(newline-injection) 악용 징후가 있는 세션 파일을 스캔한 후, 의심 IP와 세션 토큰을 cPanel 접근/로그인/오류 로그와 교차 참조합니다. 또한 세션 파일이 만료되었거나 삭제된 경우의 과거 악용 흔적을 access_log에서 스캔합니다.

업스트림 스크립트 대비 수정 사항

  1. 오작동하는 다중 라인 pass 정규식을 제거 — 프로덕션 환경에서 모든 인증된 세션에 오탐지를 발생시키는 정규식(pass= 필드 뒤에 다른 라인이 오는 모든 세션 파일과 일치)을 제거했습니다.
  2. 삽입 탐지를 일반화 — 좁은 token_denied + cp_security_token 조합 대신 method=badpass origin + 모든 사후 인증 속성을 요구하도록 변경했습니다. token_denied를 생략하는 PoC 변형도 탐지합니다.
  3. 이진 플래그 대신 관찰된 결과에 기반한 3단계 심각도:
    • CRITICAL — 삽입된 토큰이 access_log에서 2xx/3xx와 함께 관찰됨(악용 성공), 또는 세션 만료 후 access_log에서 과거 악용 발견
    • HIGH — 삽입 쓰기는 성공했지만 토큰이 access_log에 나타나지 않음(스테이징됨, 여전히 사용될 수 있음)
    • MEDIUM — 토큰이 시도되었지만 모든 요청이 4xx/5xx를 받음(서버가 차단함)
  4. 단계적 대응 지침 — CRITICAL/HIGH는 전체 침해 대응을 트리거하고, MEDIUM만 있는 경우 서버가 방어에 성공한 것이므로 가벼운 정리 절차를 수행합니다.
  5. cpsessid와 IP 모두로 교차 참조 — 삽입된 토큰에 대한 access_log 히트에서 수집한 IP를 사용하여, 삽입 후 공격자의 IP 변경(pivot)을 탐지합니다.
  6. access_log 전용 탐지 — 세션 파일이 만료되었거나 삭제된 악용을 탐지하며, 실패한 로그인 시도(POST /login/?login_only=1 -> 401)와 동일 IP의 이후 성공적인 cpsess 토큰 사용을 상관 분석합니다.
  7. --extended 모드 — 추가 소스에 대한 더 깊은 로그 스캔을 지원합니다.

빠른 실행 (클론 불필요)

root@kitploit:~
# Bash — 어디서나 작동, 의존성 없음
bash <(curl -fsSL https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.sh)

# Python — 대용량 세션 디렉터리에서 더 빠름, --json 지원
curl -fsSLo /tmp/ioc.py https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.py
python3 /tmp/ioc.py

# 확장 스캔 (두 변형 모두)
bash <(curl -fsSL https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.sh) --extended
python3 /tmp/ioc.py --extended

# 실행 후 종료 코드 확인 ($? = 0 정상, 1 IOC 발견, 2 환경 오류)
echo $?

curl 플래그: -f HTTP 오류 시 실패 처리(오류 페이지를 bash로 파이프하지 않음), -s 무음(진행 표시줄 없음), -S -s에도 불구하고 오류 표시, -L 리디렉션 따르기.

JSON 출력 (Python 전용)

Python 변형은 jq로 파이프하거나, SIEM에 전달하거나, 프로그래밍 방식으로 처리할 수 있는 구조화된 출력을 위한 --json을 지원합니다.

root@kitploit:~
# 전체 JSON 출력
python3 ioc.py --json

# 요약 개수만
python3 ioc.py --json | jq '.counts'

# 모든 CRITICAL 발견 항목 나열
python3 ioc.py --json | jq '[.findings[] | select(.severity == "CRITICAL")]'

# 고유 공격자 IP 추출
python3 ioc.py --json | jq '.suspect_ips[]'

# 소스 IP와 함께 발견 항목 표시 (방화벽 차단 목록용)
python3 ioc.py --json | jq '[.findings[] | {severity, source_ip, token: .cp_security_token}]'

# 성공적인 토큰 사용이 있었던 모든 IP 가져오기 (즉시 차단용)
python3 ioc.py --json | jq '[.findings[] | select(.severity == "CRITICAL") | .source_ip] | unique'

# 특정 IP에 대한 교차 참조 데이터 확인
python3 ioc.py --json | jq '.cross_ref[.suspect_ips[0]]'

JSON 구조 예시:

root@kitploit:~
{
  "findings": [
    {
      "severity": "CRITICAL",
      "file": "/var/cpanel/sessions/raw/:Q3f8Ag2epeBuTaIZ",
      "verdict": "Injected token used successfully (2xx/3xx in access_log)",
      "origin": "address=203.0.113.50,app=whostmgrd,method=badpass",
      "source_ip": "203.0.113.50",
      "user": "root",
      "hasroot": "1",
      "tfa_verified": "0",
      "cp_security_token": "/cpsess04396539398",
      "token_denied": "1",
      "successful_internal_auth_with_timestamp": "9999999999",
      "token_hits": [
        "203.0.113.50 - root [04/30/2026:12:12:01 -0000] \"GET /cpsess04396539398/json-api/version HTTP/1.1\" 200 0 ..."
      ]
    },
    {
      "severity": "MEDIUM",
      "file": "/var/cpanel/sessions/raw/:2TDiaHwh_r8qOH5y",
      "verdict": "Injection landed; token was tried but BLOCKED (all 4xx/5xx)",
      "source_ip": "198.51.100.23",
      "cp_security_token": "/cpsess5637704041",
      "token_hits": [
        "198.51.100.23 - root [04/30/2026:04:08:09 -0000] \"GET /cpsess5637704041/json-api/version HTTP/1.1\" 403 0 ..."
      ]
    },
    {
      "severity": "CRITICAL",
      "file": null,
      "verdict": "Injected cpsess token used with 2xx/3xx after failed login; session expired or purged",
      "source_ip": "203.0.113.99",
      "cp_security_token": "/cpsess8705792557",
      "token_hits": ["..."]
    }
  ],
  "counts": {"critical": 2, "high": 15, "medium": 71, "warning": 0},
  "suspect_ips": ["203.0.113.50", "198.51.100.23", "203.0.113.99"],
  "suspect_ips_omitted": 0,
  "cross_ref": {
    "203.0.113.50": {
      "cpanel_access_log": ["...last 5 lines..."],
      "cpanel_login_log": ["..."]
    }
  },
  "advisory": "https://support.cpanel.net/hc/en-us/articles/40073787579671"
}

사용법 (로컬 복사본)

root@kitploit:~
git clone https://github.com/AndreiG6/cpanel-cve-2026-41940-ioc.git
cd cpanel-cve-2026-41940-ioc

# Bash 변형
bash ioc.sh                # 기본 (CRITICAL/HIGH 확장, MEDIUM/WARNING 개수만)
bash ioc.sh -v             # 상세 (모든 발견 항목 확장)
bash ioc.sh --extended     # 상세 + 더 깊은 로그 + 교차 참조의 모든 IP

# Python 변형 (동일한 탐지 로직, 더 빠름, 구조화된 출력)
python3 ioc.py             # 기본 (bash와 동일한 축소 동작)
python3 ioc.py -v          # 상세
python3 ioc.py --extended  # 상세 + 더 깊은 로그
python3 ioc.py --json      # 구조화된 JSON (항상 모든 발견 항목 포함)

대상 cPanel 서버에서 root로 실행해야 합니다. Python 변형은 Python 3.6+가 필요합니다(CentOS 7 / CloudLinux 7+에 포함).

종료 코드

코드의미
0탐지된 지표 없음
1IOC 탐지됨
2환경 오류 (cPanel 서버가 아님)

참고 자료

  • cPanel 권고
  • CVE-2026-41940: cPanel 세션 처리의 개행 삽입을 통한 인증 우회

라이선스

MIT

도구 다운로드