
Joomla 3.7.0 com_fields SQL 인젝션 취약점(CVE-2017-8917)에 대한 개념 증명 익스플로잇으로, CTF 친화적인 워크플로우에서 탐지, 열거 및 데이터 추출을 시연합니다.
이 저장소는 Joomla com_fields SQL 인젝션 취약점(CVE-2017-8917)에 대한 간단하고 CTF 친화적인 개념 증명(PoC)을 포함합니다. 목표는 탐지, 열거 및 데이터 추출의 전체 익스플로잇 흐름을 보여주면서도 워크플로우를 가볍게 유지하는 것입니다.
취약점: Joomla의 com_fields 컴포넌트의 SQL 인젝션.
근본 원인: list[fullordering] 매개변수가 적절히 검증되지 않아 SQL이 생성된 쿼리에 주입될 수 있습니다. 오류 기반 페이로드(예: UpdateXML)를 사용하여 제작된 경우 SQL 결과가 응답에 나타나 데이터 추출이 가능합니다.
익스플로잇 방법(높은 수준):
list[fullordering] 매개변수를 악의적인 페이로드로 설정하여 index.php?option=com_fields&view=fields&layout=modal에 제작된 요청을 보냅니다.UpdateXML)를 사용하여 데이터베이스가 결과를 반향하도록 강제합니다.<title> 태그)을 파싱하여 주입된 출력을 추출합니다.다음은 가장 중요한 구성 요소입니다.
parse_args()CLI 인수를 host와 debug를 가진 간단한 args 객체로 파싱합니다. 스크립트는 HTTP 포트 80을 가정하고 --host로부터 기본 URL을 구성합니다.
run_exploit()run_exploit()은 주요 조정 함수입니다:
requests.Session()을 사용하여 쿠키와 헤더가 유지되도록 합니다.request_title(): 요청을 보내고 <title> 값을 추출합니다. PoC는 오류 기반 SQLi를 사용하여 데이터를 해당 태그로 유출하므로 이것이 데이터 추출 핵심입니다.build_params(): 주입된 SQL로 취약한 요청 매개변수를 생성합니다.sql_list()와 dump_table()이 열거 및 청크 추출을 자동화합니다._fetch_token()CSRF 토큰은 Joomla 로그인 페이지에서 추출됩니다. 일부 시나리오에서는 필요하지 않을 수 있지만, 많은 Joomla 경로에서 여전히 CSRF 검사를 시행합니다. 포함하면:
wrap_payload() 및 encode_sql_string()이 헬퍼들은 실제 인젝션 페이로드를 생성합니다:
wrap_payload()는 원시 쿼리를 UpdateXML(...)로 래핑하여 오류 기반 출력을 강제합니다.encode_sql_string()은 문자열을 CHAR(...) 표현식으로 변환하여 인용 문제를 방지합니다._dump_table())행은 구분자로 연결되고 잘림을 방지하기 위해 부분 문자열로 가져옵니다. 이렇게 하면 행 값이 긴 경우에도 출력이 일관되게 유지됩니다.
python main.py --host <TARGET_IP>
선택적 디버그 출력:
python main.py --host <TARGET_IP> --debug
└─$ python exploit.py --host <TARGET>
]LLLLLLmmmmmLLLLLL[
]LLLLLLLLLLLLLLLLL[
]LLLLLLLLLLLLLLLLL[
]LLLLLLLLLLLLLLLLL[
]LLLLLLLLLLLLLLLLL[
ms. ]LLLLLLLLLLLLLLLLL[ ,m
]LLLLs. ]LLLLLLLL~+LLLLLLL[ _gLLLL
LLLLLLLL_. LLLLLLLL ~~\LLLL[ ,gLLLLLLLi
dLLLLLLLLLLm_ -LLLLLLLo LLL[ _mLLLLLLLLLL.
iLLLLLLLLLLLLLLs. ]LLf` , 'c LLL[ ,gLLLLLLLLLLLLLL
iLLLLLLLLLLLLLLLLLLsgL` 'c- \. LLLLLLLLLLLLLLLLLLLLLL
,LLLLLLLLLLLLLLLLLLLLL! =__/Li iLLLLLLLLLLLLLLLLLLLLLLL
gLLLLLLLLLLLLLLLLLLLLLL imm_.Y~'` LLLLLLLLLLLLLLLLLLLLLLLLL.
dLLLLLLLLLLLLLLLLLLLLLLL 'LL_ dLLLLLLLLLLLLLLLLLLLLLLLLLLi
,LLLLLLLLLLLLLLLLLLLLLLLLLi ~--__LLLLLLLLLLLLLLLLLLLLLLLLLLLLs
'LLLLLLLLLLLLLLLLLLLLLLLLLLs. LLLLLLLLLLLLLLLLLLLLLLLLLLLLL~
'LLLLLLLLLLLLLLLLLLLLLLLLLL_. LLLLLLLLLLLLLLLLLLLLLLLLf
'LLLLLLLLLLLLLLLLLLLLLLLLLLm_ 'LLLLLLLLLLLLLLLLLLLf`
'LLLLLLLLLLLLLLLLLLLLLLLL'Lm_ LLLLLLLLLLLLLLLL`
LLLLLLLLLLLLLLLLLLLLLL 'LL LLLLLLLLLLLLLf
'LLLLLLLLLLLLLLLLLLL L LLLLLLLLLLL~
_LLLLLLLLLLLLLLL !i ] ,LLLLLLLLLLLs.
gLLLLLLLLLLLLLLLLL! 's [ _mLLLLLLLLLLLLLLLs
gmLLLLLLLLLLLLLLLLLLL ~eLLLLLLLLLLLLLLLLLLLLLms
_gLLLLLLLLLLLLLLLLLLLLLL. 'LLLLLLLLLLLLLLLLLLLLLLLs_
_gLLLLLLLLLLLLLLLLLLLLLLLLLL_ !LLLLLLLLLLLLLLLLLLLLLLLLs.
,gLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLm_ YLLLLLLLLLLLLLLLLLLLLLLLLLms
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLs ]LLLLLLLLLLLLLLLLLLLLLLLLLL`
'LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL 'YL ]LLLLLLLLLLLLLLLLLLLLLLLLf
'LLLLLLLLLLLLLLLLLLLLLLLLLLLf`! f ,LLLLLLLLLLLLLLLLLLLLLLLL!
'LLLLLLLLLLLLLLLLLLLLLLLLL[ LmmLLLLLLLLLLLLLLLLLLLLLLLL`
LLLLLLLLLLLLLLLLLf LLLLi t LLLLLLL LLLLLLLLLLLLLLLLL!
'LLLLLLLLLLLLLf LLLL[ '*LLLLLLL 'LLLLLLLLLLLLL[
!LLLLLLLLLf` LLLLLs 'YLLLLL ~LLLLLLLLLL
LLLLLLf~ LLLLLLLs LLLLL ~LLLLLL`
'LLL~ LLLLLLLLLm iLLLLL ~LLL~
~` LLLLLLLL[LLmLLLLLL '`
LLLLLL`d[ LLLLLLLL
LLLLLLdL[ LLLLLLLL
LLLLLLLLLLLLLLLLLL Juergen Jakubowski
LLLLLLLLLLLLLLLLLL
LLLLLLLLLLLLLLLLLL [email protected]
EXPLOIT BY ztrxwzy.
INSPIRED BY THE POC FROM Baptiste Contreras.
[888] Target : http://10.66.187.202:80/index.php
[888] CSRF token : 3ec54b1b32b5dc2dd8186537821b8dc1
[888] http://10.66.187.202:80/index.php is vulnerable to SQLi
[888] Database version detected : 5.5.64-MariaDB
[888] Current database : joomla
[888] Tables in database joomla
MIT 라이선스 Copyright (c) 2025 Jesús Caldera
이에 따라 본 소프트웨어 및 관련 문서 파일(이하 '소프트웨어')의 사본을 받는 모든 사람에게 소프트웨어를 제한 없이 다룰 수 있는 권한이 무료로 부여됩니다. 여기에는 소프트웨어를 사용, 복사, 수정, 병합, 게시, 배포, 서브라이선스 및/또는 판매할 수 있는 권리와 소프트웨어를 제공받은 사람에게 이를 허용할 수 있는 권리가 포함되며, 다음 조건에 따라야 합니다:
위 저작권 표시와 이 허가 고지는 모든 사본 또는 소프트웨어의 상당 부분에 포함되어야 합니다.
본 소프트웨어는 '있는 그대로' 제공되며, 상품성, 특정 목적에의 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않는 어떠한 종류의 명시적 또는 묵시적 보증도 없이 제공됩니다. 어떠한 경우에도 저작자 또는 저작권 보유자는 계약, 불법행위 또는 기타 행위로 인해 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않으며, 이는 소프트웨어 또는 그 사용 또는 기타 거래로 인해 발생하거나 이와 관련된 경우에도 마찬가지입니다.