MapPress Maps Pro < 2.53.9 - 由于AJAX操作中访问控制不当导致的远程代码执行(RCE)
该插件的专业版注册了多个AJAX操作,这些操作调用的函数缺少权限检查和非ce检查,具体为mappress_template.php中的ajax_get、ajax_save和ajax_delete函数。因此,拥有最低权限(如订阅者)的已登录攻击者可以执行以下操作:
通过向wp-admin/admin-ajax.php发送$_POST请求,其中action参数设置为mapp_tpl_save,name参数设置为要创建文件的基本名称,content参数设置为可执行的PHP代码,上传一个可执行的PHP文件(包括潜在的后门)并实现远程代码执行。该文件随后会被创建在当前活动主题的目录中,并可从此目录执行。
通过向wp-admin/admin-ajax.php发送$_POST请求,其中action参数设置为mapp_tpl_delete,name参数设置为要删除文件的基本名称,删除站点上任何现有的PHP文件(例如wp-config.php)。例如,要删除wp-config.php,可以使用目录遍历攻击,将name参数设置为'../../../wp-config'。这将导致站点被重置,此时攻击者可以完全控制站点。
通过向wp-admin/admin-ajax.php发送$_GET请求,其中action参数设置为mapp_tpl_get,name参数设置为要泄露的文件名称,查看站点上任何现有PHP文件(例如wp-config.php)的内容。例如,要查看wp-config.php的内容,可以使用目录遍历攻击,将name参数设置为'../../../../wp-config'。
python3 exploit.py --url http://wordpress.lan --username user --password useruser1 --code "<?php phpinfo(); ?>"