# Exploit Title: Contact Form by WD [CSRF → LFI] # Date: 2019-03-17 # Exploit Author: Panagiotis Vagenas # Vendor Homepage: http://web-dorado.com/ # Software Link: https://wordpress.org/plugins/contact-form-maker # Version: 1.13.1 # Tested on: WordPress 5.1.1 Description ----------- Plugin implements the following AJAX actions: - `manage_fm` - `get_stats` - `generete_csv` - `generete_xml` - `formmakerwdcaptcha` - `nopriv_formmakerwdcaptcha` - `formmakerwdmathcaptcha` - `nopriv_formmakerwdmathcaptcha` - `product_option` - `FormMakerEditCountryinPopup` - `FormMakerMapEditinPopup` - `FormMakerIpinfoinPopup` - `show_matrix` - `FormMakerSubmits` - `FormMakerSQLMapping` - `select_data_from_db` - `manage` All of them call the function `form_maker_ajax_fmc`. This function dynamicaly loads a file defined in `$_GET['action']` or `$_POST['action']` if the former is not defined. Because of the way WordPress defines the AJAX action a user could define the plugin action in the `$_GET['action']` and AJAX action in `$_POST['action']`. Leveraging that and the fact that no sanitization is performed on the `$_GET['action']`, a malicious actor can perform a CSRF attack to load a file using directory traversal thus leading to Local File Inclusion vulnerability. The following AJAX actions are available only for the paid version of the plugin: - `paypal_info` - `checkpaypal` - `nopriv_checkpaypal` - `get_frontend_stats` - `nopriv_get_frontend_stats` - `frontend_show_map` - `nopriv_frontend_show_map` - `frontend_show_matrix` - `nopriv_frontend_show_matrix` - `frontend_paypal_info` - `nopriv_frontend_paypal_info` - `frontend_generate_csv` - `nopriv_frontend_generate_csv` - `frontend_generate_xml` - `nopriv_frontend_generate_xml` - `FMShortocde` - `wd_bp_dismiss` In both free and paid versions, there are no-privilege actions that can be exploited by unauthenticated users in order to include local files. PoC --- ```html