
MapPress Maps Pro < 2.53.9 - AJAXアクションにおける不適切なアクセス制御によるリモートコード実行(RCE)
MapPress Maps Pro < 2.53.9 - AJAXアクションの不適切なアクセス制御によるリモートコード実行(RCE)
このプラグインのプロバージョンは、いくつかのAJAXアクションを登録しており、それらのアクションはmappress_template.php内の関数(具体的には‘ajax_get’、‘ajax_save’、‘ajax_delete’)を呼び出しますが、これらの関数には権限チェックとnonceチェックが欠けています。そのため、購読者などの最小限の権限しか持たないログイン済みの攻撃者が、以下の操作を実行できる可能性があります。
PHPファイル(バックドアを含む可能性あり)をアップロードし、$_POSTリクエストをwp-admin/admin-ajax.phpに送信することでリモートコード実行を実現します。その際、‘action’パラメータを‘mapp_tpl_save’に、‘name’パラメータを作成したいファイルのベース名に、‘content’パラメータを実行可能なPHPコードに設定します。このファイルは現在アクティブなテーマのディレクトリに作成され、そこから実行される可能性があります。
サイト上の既存のPHPファイル(wp-config.phpなど)を削除するには、$_POSTリクエストをwp-admin/admin-ajax.phpに送信し、‘action’パラメータ’を‘mapp_tpl_delete’に、‘name’パラメータを削除するファイルのベース名に設定します。例えば、wp-config.phpを削除するにはディレクトリトラバーサル攻撃を使用し、‘name’パラメータを‘../../../wp-config’に設定できます。これによりサイトがリセットされ、攻撃者はサイトの完全な制御を獲得できる可能性があります。
サイト上の既存のPHPファイル(wp-config.phpなど)の内容を表示するには、$_GETリクエストをwp-admin/admin-ajax.phpに送信し、‘action’パラメータを‘mapp_tpl_get’に、‘name’パラメータを表示するファイルのベース名に設定します。例えば、wp-config.phpの内容を表示するには、ディレクトリトラバーサル攻撃を使用し、‘name’パラメータを‘../../../../wp-config’に設定できます。
python3 exploit.py --url http://wordpress.lan --username user --password useruser1 --code "<?php phpinfo(); ?>"