
Joomla 3.7.0 の com_fields SQL インジェクションの脆弱性(CVE-2017-8917)に対する概念実証(PoC)エクスプロイトであり、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 オブジェクトに変換します。このスクリプトはポート 80 の HTTP を前提とし、--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 [ _mLLLLLLLLLLLLLLLLLs
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
ここに、以下の条件に従う限り、本ソフトウェアおよび関連文書ファイル(以下「本ソフトウェア」)の複製を取得するすべての人に対し、本ソフトウェアを無償で扱うことを許可します。これには、使用、複製、修正、結合、公開、頒布、サブライセンス、および/または本ソフトウェアの複製の販売が含まれますが、これに限定されません。また、本ソフトウェアを提供されたすべての人が上記の行為を行うことを許可します。ただし、以下の条件を遵守することを条件とします。
上記の著作権表示および本許可表示は、本ソフトウェアのすべての複製または重要な部分に含めなければなりません。
本ソフトウェアは「現状のまま」で提供され、明示的か黙示的かを問わず、商品性、特定目的への適合性、および非侵害に関する保証を含め、いかなる種類の保証も行われません。いかなる場合も、著作者または著作権保持者は、契約、不法行為、その他の行為によるかどうかを問わず、本ソフトウェアまたは本ソフトウェアの使用もしくはその他の取引に起因または関連して生じたいかなる請求、損害、その他の責任も負いません。