Exemplo n.º 1
0
    def splunkweb_auth(self):

        if self.web_authed == 1:
            return True

        login_page = Requestobj("{0}/en-GB/account/login".format(self.splunkweb_url)).makerequest() # Get session cookie
        
        cval=""
        cval = login_page.extract_data_body('name="cval" value="(\d+?)"')
        if cval:
            cval = cval[0]
        r = Requestobj(login_page.url)
        poststr = "cval={0}&return_to=%2Fen-GB%2F&username={1}&password={2}".format(cval,self.username.rstrip(),self.password.rstrip())
        r.rawpostdata("POST", poststr)
        result = r.makerequest()
        
        if result.find_data("This resource can be found at"):
            return True
            self.web_authed = 1
        else:
            print "[i] Login Failed"
            exit()
Exemplo n.º 2
0
    def splunkweb_auth(self):

        if self.web_authed == 1:
            return True

        login_page = Requestobj("{0}/en-GB/account/login".format(self.splunkweb_url)).makerequest() # Get session cookie
        
        cval=""
        cval = login_page.extract_data_body('name="cval" value="(\d+?)"')
        if cval:
            cval = cval[0]
        r = Requestobj(login_page.url)
        poststr = "cval={0}&return_to=%2Fen-GB%2F&username={1}&password={2}".format(cval,self.username.rstrip(),self.password.rstrip())
        r.rawpostdata("POST", poststr)
        result = r.makerequest()
        
        if result.find_data("This resource can be found at"):
            return True
            self.web_authed = 1
        else:
            print "[i] Login Failed"
            exit()
Exemplo n.º 3
0
    def __init__(self, hostaddr, splunkd_port=8089, splunkweb_port=8000):

        self.splunkd_port = splunkd_port
        self.splunkweb_port = splunkweb_port
        self.max_threads = 20
        self.username = ""
        self.password = ""
        self.session_key = ""
        self.splunk_home = ""
        self.got_admin = 0
        self.web_authed = 0  # are we authed to the web interface
        self.freelic = 0
        # Check splunkd server
        info = Requestobj(
            "https://{0}:{1}/services/server/info/server-info".format(
                hostaddr, splunkd_port)).makerequest()
        if info.body:
            self.splunkd_url = "{0}://{1}".format(
                urlparse.urlparse(info.url).scheme,
                urlparse.urlparse(info.url).netloc)
        else:
            info = Requestobj(
                "http://{0}:{1}/services/server/info/server-info".format(
                    hostaddr, splunkd_port)).makerequest()
            self.splunkd_url = "{0}://{1}".format(
                urlparse.urlparse(info.url).scheme,
                urlparse.urlparse(info.url).netloc)

        if "server-info" in info.body:

            self.splunkd = 1
            try:
                self.os_build = re.findall("os_build\">(.+?)<", info.body)[0]
                self.os_name = re.findall("os_name\">(.+?)<", info.body)[0]
                self.os_version = re.findall("os_version\">(.+?)<",
                                             info.body)[0]
                self.server_name = re.findall("serverName\">(.+?)<",
                                              info.body)[0]
                self.splunk_version = re.findall("\"version\">(.+?)<",
                                                 info.body)[0]
                self.cpu_arch = re.findall("cpu_arch\">(.+?)<", info.body)[0]
                print "[i] Splunkd server found. Version:{0}".format(
                    self.splunk_version)
                print "[i] OS:{0} {1} {2}".format(self.os_name,
                                                  self.os_version,
                                                  self.os_build)
            except Exception as err:
                print "Error getting splunk server info", err
        else:
            self.splunkd = 0

        # Check splunk web
        splunkweb_info = Requestobj(
            "http://{0}:{1}/en-GB/account/login".format(
                hostaddr, splunkweb_port)).makerequest()
        if splunkweb_info.body:
            self.splunkweb_url = "{0}://{1}".format(
                urlparse.urlparse(splunkweb_info.url).scheme,
                urlparse.urlparse(splunkweb_info.url).netloc)
        else:
            splunkweb_info = Requestobj(
                "https://{0}:{1}/en-GB/account/login".format(
                    hostaddr, splunkweb_port)).makerequest()
            self.splunkweb_url = "{0}://{1}".format(
                urlparse.urlparse(splunkweb_info.url).scheme,
                urlparse.urlparse(splunkweb_info.url).netloc)

        if "Splunk" in splunkweb_info.body:
            print "[i] Splunk web interface discovered"
            self.splunkweb = 1
            self.cval = ""
            try:
                self.cval = splunkweb_info.extract_data_body(
                    'name="cval" value="(\d+?)"')[0]
                print "[i] CVAL:{0}".format(self.cval)
            except:
                print "[i] Error getting cval"
                self.splunkweb = 0

        else:
            self.splunkweb = 0

        if self.splunkweb == 1:
            try:
                url = "{0}/en-GB/manager/system/licensing".format(
                    self.splunkweb_url)
                lic = Requestobj(url).makerequest()
                if "<h1>Free license group</h1>" in lic.body:
                    print "[i] Configured with free licence. No auth required"
                    #if not self.splunkd:
                    #    print "[i] Cannot connect to splunkd using free licence"
                    #    sys.exit()
                    self.got_admin = 1
                    self.username = "******"
                    self.password = "******"
                    self.web_authed = 1
                    self.splunkd = 0
                    self.freelic = 1
                    self.pop_shell()

            except Exception as err:
                print "error", err
                exit()
Exemplo n.º 4
0
    def __init__(self,hostaddr,splunkd_port=8089,splunkweb_port=8000):
        
        self.splunkd_port = splunkd_port
        self.splunkweb_port = splunkweb_port
        self.max_threads = 20
        self.username=""
        self.password = ""
        self.session_key =""
        self.splunk_home = ""
        self.got_admin = 0
        self.web_authed = 0 # are we authed to the web interface
        self.freelic =0
        # Check splunkd server
        info = Requestobj("https://{0}:{1}/services/server/info/server-info".format(hostaddr,splunkd_port)).makerequest()
        if info.body:
            self.splunkd_url = "{0}://{1}".format(urlparse.urlparse(info.url).scheme,urlparse.urlparse(info.url).netloc)
        else:
            info = Requestobj("http://{0}:{1}/services/server/info/server-info".format(hostaddr,splunkd_port)).makerequest()
            self.splunkd_url = "{0}://{1}".format(urlparse.urlparse(info.url).scheme,urlparse.urlparse(info.url).netloc)

        if "server-info" in info.body:
 
            self.splunkd =1
            try:
                self.os_build = re.findall("os_build\">(.+?)<",info.body)[0]
                self.os_name = re.findall("os_name\">(.+?)<",info.body)[0]
                self.os_version = re.findall("os_version\">(.+?)<",info.body)[0]
                self.server_name = re.findall("serverName\">(.+?)<",info.body)[0]
                self.splunk_version = re.findall("\"version\">(.+?)<",info.body)[0]
                self.cpu_arch = re.findall("cpu_arch\">(.+?)<",info.body)[0]
                print "[i] Splunkd server found. Version:{0}".format(self.splunk_version)
                print "[i] OS:{0} {1} {2}".format(self.os_name,self.os_version,self.os_build)
            except Exception as err:
                print "Error getting splunk server info",err
        else:
            self.splunkd =0


        # Check splunk web
        splunkweb_info = Requestobj("http://{0}:{1}/en-GB/account/login".format(hostaddr,splunkweb_port)).makerequest()
        if splunkweb_info.body:
            self.splunkweb_url = "{0}://{1}".format(urlparse.urlparse(splunkweb_info.url).scheme,urlparse.urlparse(splunkweb_info.url).netloc)
        else:
            splunkweb_info = Requestobj("https://{0}:{1}/en-GB/account/login".format(hostaddr,splunkweb_port)).makerequest()
            self.splunkweb_url = "{0}://{1}".format(urlparse.urlparse(splunkweb_info.url).scheme,urlparse.urlparse(splunkweb_info.url).netloc)


        if "Splunk" in splunkweb_info.body:
            print "[i] Splunk web interface discovered"
            self.splunkweb =1
            self.cval=""
            try:
                self.cval = splunkweb_info.extract_data_body('name="cval" value="(\d+?)"')[0]
                print "[i] CVAL:{0}".format(self.cval)
            except:
                print "[i] Error getting cval"
                self.splunkweb =0

        else:
            self.splunkweb =0

        if self.splunkweb ==1:
            try:
                url ="{0}/en-GB/manager/system/licensing".format(self.splunkweb_url)
                lic = Requestobj(url).makerequest()
                if "<h1>Free license group</h1>" in lic.body:
                    print "[i] Configured with free licence. No auth required"
                    #if not self.splunkd:
                    #    print "[i] Cannot connect to splunkd using free licence"
                    #    sys.exit()
                    self.got_admin=1
                    self.username="******"
                    self.password="******"
                    self.web_authed=1
                    self.splunkd=0
                    self.freelic=1
                    self.pop_shell()

            except Exception as err:
                print "error",err
                exit()