Пример #1
0
 def _initOptions(self):
     '''Init options.'''
     self.like_initial = True
     self.pref = ConfigOptions(self.w3af, self, 'proxy_options')
     # Proxy options
     proxyOptions = optionList()
     proxyOptions.add(Option('ipport', "localhost:8080", "IP:port","ipport"))
     proxyOptions.add(Option('trap', ".*", _("URLs to trap"), "regex"))
     proxyOptions.add(Option('methodtrap', "GET,POST", _("Methods to trap"), "list"))
     proxyOptions.add(Option("notrap",
         ".*\.(gif|jpg|png|css|js|ico|swf|axd|tif)$", _("URLs not to trap"), "regex"))
     proxyOptions.add(Option("fixlength", True, _("Fix content length"), "boolean"))
     proxyOptions.add(comboOption("trap_view", ['Splitted', 'Tabbed'], _("View of Intercept tab"), "combo"))
     proxyOptions.add(comboOption("home_tab", ['Intercept', 'History', 'Options'], _("Home tab"), "combo"))
     self.pref.addSection('proxy', _('Proxy Options'), proxyOptions)
     # HTTP editor options
     editorOptions = optionList()
     editorOptions.add(Option("wrap", True, _("Wrap long lines"), "boolean"))
     editorOptions.add(Option("highlight_current_line", True, _("Highlight current line"), "boolean"))
     editorOptions.add(Option("highlight_syntax", True, _("Highlight syntax"), "boolean"))
     editorOptions.add(Option("display_line_num", True, _("Display line numbers"), "boolean"))
     self.pref.addSection('editor', _('HTTP Editor Options'), editorOptions)
     # Load values from configfile
     self.pref.loadValues()
     self.pref.show()
Пример #2
0
 def getOptions( self ):
     '''
     @return: A list of option objects for this plugin.
     '''    
     ol = optionList()
     d1 = 'When greping, only search mails for domain of target'
     o1 = option('onlyTargetDomain', self._only_target_domain, d1, 'boolean')
     
     ol = optionList()
     ol.add(o1)
     return ol
Пример #3
0
 def _initFilterBox(self, mainvbox):
     """Init advanced search options."""
     self._advSearchBox = gtk.HBox()
     self._advSearchBox.set_spacing(self._padding)
     self.pref = FilterOptions(self)
     # Filter options
     self._filterMethods = [
             ('GET', 'GET', False),
             ('POST', 'POST', False),
             ]
     filterMethods = optionList()
     for method in self._filterMethods:
         filterMethods.add(Option(method[0], method[2], method[1], "boolean"))
     self.pref.addSection('methods', _('Request Method'), filterMethods)
     filterId = optionList()
     filterId.add(Option("min", "0", "Min ID", "string"))
     filterId.add(Option("max", "0", "Max ID", "string"))
     self.pref.addSection('trans_id', _('Transaction ID'), filterId)
     filterCodes = optionList()
     codes = [
             ("1xx", "1xx", False),
             ("2xx", "2xx", False),
             ("3xx", "3xx", False),
             ("4xx", "4xx", False),
             ("5xx", "5xx", False),
             ]
     for code in codes:
         filterCodes.add(Option(code[0], code[2], code[1], "boolean"))
     self.pref.addSection('codes', _('Response Code'), filterCodes)
     filterTags = optionList()
     filterTags.add(Option("tag", False, "Tag", "boolean"))
     self.pref.addSection('commented', _('Commented'), filterTags)
     filterTypes = optionList()
     self._filterTypes = [
             ('html', 'HTML', False),
             ('javascript', 'JavaScript', False),
             ('image', 'Images', False),
             ('flash', 'Flash', False),
             ('css', 'CSS', False),
             ('text', 'Text', False),
             ]
     for filterType in self._filterTypes:
         filterTypes.add(Option(filterType[0], filterType[2], filterType[1], "boolean"))
     self.pref.addSection('types', _('Response Content Type'), filterTypes)
     self.pref.show()
     self._advSearchBox.pack_start(self.pref, False, False)
     self._advSearchBox.hide_all()
     mainvbox.pack_start(self._advSearchBox, False, False)
Пример #4
0
    def getOptions( self ):
        '''
        @return: A list of option objects for this plugin.
        '''        
        d1 = 'A comma separated list of URLs'
        o1 = option('target', ','.join(str(tar) for tar in 
                                       cf.cf.getData('targets')), d1, 'list')
        
        d2 = 'Target operating system ('+ '/'.join(self._operatingSystems) +')'
        h2 = 'This setting is here to enhance w3af performance.'
        # This list "hack" has to be done becase the default value is the one
        # in the first position on the list
        tmpList = self._operatingSystems[:]
        tmpList.remove( cf.cf.getData('targetOS') )
        tmpList.insert(0, cf.cf.getData('targetOS') )
        o2 = comboOption('targetOS', tmpList, d2, 'combo', help=h2)

        d3 = 'Target programming framework ('+ '/'.join(self._programmingFrameworks) +')'
        h3 = 'This setting is here to enhance w3af performance.'
        # This list "hack" has to be done becase the default value is the one
        # in the first position on the list
        tmpList = self._programmingFrameworks[:]
        tmpList.remove( cf.cf.getData('targetFramework') )
        tmpList.insert(0, cf.cf.getData('targetFramework') )
        o3 = comboOption('targetFramework', tmpList, d3, 'combo', help=h3)
        
        ol = optionList()
        ol.add(o1)
        ol.add(o2)
        ol.add(o3)
        return ol
Пример #5
0
    def getOptions( self ):
        '''
        @return: A list of option objects for this plugin.
        '''    

        ol = optionList()
        return ol
    def getOptions( self ):
        '''
        @return: A list of option objects for this plugin.
        '''
        d1 = 'IP address that the webserver will use to receive requests'
        h1 = 'w3af runs a webserver to serve the files to the target web app'
        h1 += ' when doing remote file inclusions. This setting configures on what IP address the'
        h1 += ' webserver is going to listen.'
        o1 = option('listenAddress', self._listen_address, d1, 'string', help=h1)

        d2 = 'Port that the webserver will use to receive requests'
        h2 = 'w3af runs a webserver to serve the files to the target web app'
        h2 += ' when doing remote file inclusions. This setting configures on what IP address'
        h2 += ' the webserver is going to listen.'
        o2 = option('listenPort', self._listen_port, d2, 'integer', help=h2)
        
        d3 = 'Instead of including a file in a local webserver; include the result of'
        d3 += ' exploiting a XSS bug.'
        o3 = option('useXssBug', self._use_XSS_vuln, d3, 'boolean')
        
        d4 = 'If true, this plugin will try to generate only one shell object.'
        o4 = option('generateOnlyOne', self._generateOnlyOne, d4, 'boolean')
        
        ol = optionList()
        ol.add(o1)
        ol.add(o2)
        ol.add(o3)
        ol.add(o4)
        return ol
Пример #7
0
    def getOptions( self ):
        '''
        @return: A list of option objects for this plugin.
        '''
        d1 = 'URL to exploit with fastExploit()'
        o1 = option('url', self._url, d1, 'string')
        
        d2 = 'Method to use with fastExploit()'
        o2 = option('method', self._method, d2, 'string')

        d3 = 'Data to send with fastExploit()'
        o3 = option('data', self._data, d3, 'string')

        d4 = 'The variable in data that holds the file content. Only used in fastExploit()'
        o4 = option('fileVars', self._fileVars, d4, 'string')

        d5 = 'The URI of the uploaded file. Only used with fastExploit()'
        o5 = option('fileDest', self._fileDest, d5, 'string')
        
        ol = optionList()
        ol.add(o1)
        ol.add(o2)
        ol.add(o3)
        ol.add(o4)
        ol.add(o5)
        return ol
Пример #8
0
    def getOptions( self ):
        '''
        @return: A list of option objects for this plugin.
        '''
        d0 = 'If the vulnerability was found in a GET request, try to change the method to POST'
        d0 += ' during exploitation.'
        h0 = 'If the vulnerability was found in a GET request, try to change the method to POST'
        h0 += ' during exploitation; this is usefull for not being logged in the webserver logs.'
        o0 = option('changeToPost', self._changeToPost, d0, 'boolean', help=h0)
        
        d1 = 'URL to exploit with fastExploit()'
        o1 = option('url', self._url, d1, 'string')
        
        d2 = 'Method to use with fastExploit()'
        o2 = option('method', self._method, d2, 'string')

        d3 = 'Data to send with fastExploit()'
        o3 = option('data', self._data, d3, 'string')

        d4 = 'Variable where to inject with fastExploit()'
        o4 = option('injvar', self._inj_var, d4, 'string')

        d5 = 'Exploit only one vulnerability.'
        o5 = option('generateOnlyOne', self._generateOnlyOne, d5, 'boolean')
        
        ol = optionList()
        ol.add(o0)
        ol.add(o1)
        ol.add(o2)
        ol.add(o3)
        ol.add(o4)
        ol.add(o5)
        return ol
Пример #9
0
    def getOptions(self):
        """
        @return: A list of option objects for this plugin.
        """
        d1 = "A comma separated list of URLs"
        o1 = option("target", ",".join(cf.cf.getData("targets")), d1, "list")

        d2 = "Target operating system (" + "/".join(self._operatingSystems) + ")"
        h2 = "This setting is here to enhance w3af performance."
        # This list "hack" has to be done becase the default value is the one
        # in the first position on the list
        tmpList = self._operatingSystems[:]
        tmpList.remove(cf.cf.getData("targetOS"))
        tmpList.insert(0, cf.cf.getData("targetOS"))
        o2 = comboOption("targetOS", tmpList, d2, "combo", help=h2)

        d3 = "Target programming framework (" + "/".join(self._programmingFrameworks) + ")"
        h3 = "This setting is here to enhance w3af performance."
        # This list "hack" has to be done becase the default value is the one
        # in the first position on the list
        tmpList = self._programmingFrameworks[:]
        tmpList.remove(cf.cf.getData("targetFramework"))
        tmpList.insert(0, cf.cf.getData("targetFramework"))
        o3 = comboOption("targetFramework", tmpList, d3, "combo", help=h3)

        ol = optionList()
        ol.add(o1)
        ol.add(o2)
        ol.add(o3)
        return ol
Пример #10
0
    def getOptions(self):
        """
        @return: A list of option objects for this plugin.
        """
        d1 = "URL to exploit with fastExploit()"
        o1 = option("url", self._url, d1, "string")

        d2 = "Method to use with fastExploit()"
        o2 = option("method", self._method, d2, "string")

        d3 = "Data to send with fastExploit()"
        o3 = option("data", self._data, d3, "string")

        d4 = "The variable in data that holds the file content. Only used in fastExploit()"
        o4 = option("fileVars", self._fileVars, d4, "string")

        d5 = "The URI of the uploaded file. Only used with fastExploit()"
        o5 = option("fileDest", self._fileDest, d5, "string")

        ol = optionList()
        ol.add(o1)
        ol.add(o2)
        ol.add(o3)
        ol.add(o4)
        ol.add(o5)
        return ol
Пример #11
0
    def getOptions( self ):
        '''
        @return: A list of option objects for this plugin.
        '''
        d1 = 'Stream edition expressions'
        h1 = 'Stream edition expressions are strings that tell the sed plugin what to change.'
        h1 += ' Sed plugin uses regular expressions, some examples: \n - qh/User/NotLuser/ ;'
        h1 += ' This will make sed search in the the re[q]uest [h]eader for the string User'
        h1 += ' and replace it with NotLuser.\n - sb/[fF]orm/form ; This will make sed search'
        h1 += ' in the re[s]ponse [b]ody for the strings form or Form and replace it with form.'
        h1 += ' Multiple expressions can be specified separated by commas.'
        o1 = option('expressions', self._expressions, d1, 'list', help=h1)
        
        d2 = 'Fix the content length header after mangling'
        o2 = option('fixContentLen', self._user_option_fix_content_len, d2, 'boolean')

        d3 = 'Plugin execution priority'
        h3 = 'Mangle plugins are ordered using the priority parameter'
        o3 = option('priority', self._priority, d3, 'integer', help=h3)
        
        ol = optionList()
        ol.add(o1)
        ol.add(o2)
        ol.add(o3)
        return ol
Пример #12
0
    def getOptions( self ):
        '''
        @return: A list of option objects for this plugin.
        '''
        d1 = 'CGI-BIN dirs where to search for vulnerable scripts.'
        h1 = 'Pykto will search for vulnerable scripts in many places, one of them is inside'
        h1 += ' cgi-bin directory. The cgi-bin directory can be anything and change from install'
        h1 += ' to install, so its a good idea to make this a user setting. The directories should'
        h1 += ' be supplied comma separated and with a / at the beggining and one at the end.'
        h1 += ' Example: "/cgi/,/cgibin/,/bin/"'
        o1 = option('cgiDirs', self._cgi_dirs , d1, 'list', help=h1)
        
        d2 = 'Admin directories where to search for vulnerable scripts.'
        h2 = 'Pykto will search for vulnerable scripts in many places, one of them is inside'
        h2 += ' administration directories. The admin directory can be anything and change'
        h2 += ' from install to install, so its a good idea to make this a user setting. The'
        h2 += ' directories should be supplied comma separated and with a / at the beggining and'
        h2 += ' one at the end. Example: "/admin/,/adm/"'
        o2 = option('adminDirs', self._admin_dirs, d2, 'list', help=h2)
        
        d3 = 'PostNuke directories where to search for vulnerable scripts.'
        h3 = 'The directories should be supplied comma separated and with a / at the'
        h3 += ' beggining and one at the end. Example: "/forum/,/nuke/"'
        o3 = option('nukeDirs', self._nuke, d3, 'list', help=h3)

        d4 = 'The path to the nikto scan_databse.db file.'
        h4 = 'The default scan database file is ok in most cases.'
        o4 = option('dbFile', self._db_file, d4, 'string', help=h4)

        d5 = 'Test all files with all root directories'
        h5 = 'Define if we will test all files with all root directories.'
        o5 = option('mutateTests', self._mutate_tests, d5, 'boolean', help=h5)        

        d6 = 'Verify that pykto is using the latest scan_database from cirt.net.'
        o6 = option('updateScandb', self._update_scandb, d6, 'boolean')

        d7 = 'If generic scan is enabled all tests are sent to the remote server without'
        d7 += ' checking the server type.'
        h7 = 'Pykto will send all tests to the server if generic Scan is enabled. For example,'
        h7 += ' if a test in the database is marked as "apache" and the remote server reported'
        h7 += ' "iis" then the test is sent anyway.'
        o7 = option('genericScan', self._generic_scan, d7, 'boolean', help=h7)        

        d8 = 'The path to the w3af_scan_databse.db file.'
        h8 = 'This is a file which has some extra checks for files that are not present in the'
        h8 += ' nikto database.'
        o8 = option('extra_db_file', self._extra_db_file, d8, 'string', help=h8)

        ol = optionList()
        ol.add(o1)
        ol.add(o2)
        ol.add(o3)
        ol.add(o4)
        ol.add(o8)  # Intentionally out of order
        ol.add(o5)
        ol.add(o6)
        ol.add(o7)
        return ol
Пример #13
0
 def getOptions( self ):
     '''
     @return: A list of option objects for this plugin.
     '''
     d2 = 'Fetch the first "resultLimit" results from the Google search'
     o2 = option('resultLimit', self._resultLimit, d2, 'integer')
     ol = optionList()
     ol.add(o2)
     return ol
Пример #14
0
    def _getOptionObjects(self):
        """
        We get here when the user wants to complete this step of the
        wizard, and he didn't pressed Previous.

        @return: The option objects
        """
        ol = optionList()
        return ol
Пример #15
0
 def getOptions( self ):
     '''
     @return: A list of option objects for this plugin.
     '''
     d1 = 'Fetch the first "resultLimit" results from the Bing search'
     o1 = option('resultLimit', self._resultLimit, d1, 'integer')
     ol = optionList()
     ol.add(o1)
     return ol
Пример #16
0
 def getOptions( self ):
     '''
     @return: A list of option objects for this plugin.
     '''
     d1 = 'Only use the first wnResults (wordnet results) from each category.'
     o1 = option('wnResults', self._wordnet_results, d1, 'integer')
     
     ol = optionList()
     ol.add(o1)
     return ol
Пример #17
0
    def getOptions(self):
        """
        @return: A list of option objects for this plugin.
        """
        d1 = "File name where this plugin will write to"
        o1 = option("fileName", self._file_name, d1, "string")

        ol = optionList()
        ol.add(o1)
        return ol
Пример #18
0
 def getOptions( self ):
     '''
     @return: A list of option objects for this plugin.
     '''
     d1 = 'The name of the output file where the HTTP requests will be saved'
     o1 = option('output_file', self.output_file, d1, 'string')
     
     ol = optionList()
     ol.add(o1)
     return ol
Пример #19
0
    def getOptions(self):
        """
        @return: A list of option objects for this plugin.
        """
        d1 = "Enable if verbose output is needed"
        o1 = option("verbose", self.verbose, d1, "boolean")

        ol = optionList()
        ol.add(o1)
        return ol
Пример #20
0
 def getOptions( self ):
     '''
     @return: A list of option objects for this plugin.
     '''
     d1 = 'List the pages that don\'t have a MOTW'
     o1 = option('withoutMOTW', self._withoutMOTW, d1, 'boolean')
     
     ol = optionList()
     ol.add(o1)
     return ol
Пример #21
0
 def getOptions( self ):
     '''
     @return: A list of option objects for this plugin.
     '''
     d1 = 'Enable if verbose output is needed'
     o1 = option('verbose', self.verbose, d1, 'boolean')
     
     ol = optionList()
     ol.add(o1)
     return ol
Пример #22
0
    def getOptions(self):
        """
        @return: A list of option objects for this plugin.
        """
        d1 = "Search for meta tags in 404 pages."
        o1 = option("search404", self._search404, d1, "boolean")

        ol = optionList()
        ol.add(o1)
        return ol
Пример #23
0
 def getOptions( self ):
     '''
     @return: A list of option objects for this plugin.
     '''
     d1 = 'Skip symfony detection and search for the csrf (mis)protection.'
     o1 = option('override', self._override, d1, 'boolean')
     
     ol = optionList()
     ol.add(o1)
     return ol
Пример #24
0
 def getOptions( self ):
     '''
     @return: A list of option objects for this plugin.
     '''
     d1 = 'Search for HTML comments in 404 pages.'
     o1 = option('search404', self._search404, d1, 'boolean')
     
     ol = optionList()
     ol.add(o1)
     return ol
Пример #25
0
 def getOptions( self ):
     '''
     @return: A list of option objects for this plugin.
     '''
     d1 = 'Wordlist to use in the file name bruteforcing process.'
     o1 = option('wordlist', self._wordlist , d1, 'string')
     
     ol = optionList()
     ol.add(o1)
     return ol
Пример #26
0
    def getOptions( self ):
        '''
        @return: A list of option objects for this plugin.
        '''
        d1 = 'File name where this plugin will write to'
        o1 = option('fileName', self._file_name, d1, 'string')

        ol = optionList()
        ol.add(o1)

        return ol
Пример #27
0
 def getOptions( self ):
     '''
     @return: A list of option objects for this plugin.
     '''
     d1 = 'If two strings have a diff ratio less than diffRatio, then they are '
     d1 += '*really* different'
     o1 = option('diffRatio', self._diff_ratio, d1, 'float')
     
     ol = optionList()
     ol.add(o1)
     return ol
Пример #28
0
    def getOptions( self ):
        '''
        @return: A list of option objects for this plugin.
        '''
        d1 = 'Users file to use in bruteforcing'
        o1 = option('usersFile', self._usersFile, d1, 'string')
        
        d2 = 'Passwords file to use in bruteforcing'
        o2 = option('passwdFile', self._passwdFile, d2, 'string')
        
        d3 = 'This indicates if we will use usernames from emails collected by w3af plugins in bruteforce.'
        o3 = option('useMailUsers', self._useMailUsers, d3, 'boolean')
        
        d4 = 'This indicates if we will use usernames from SVN headers collected by w3af plugins in bruteforce.'
        o4 = option('useSvnUsers', self._useSvnUsers, d4, 'boolean')
        
        d5 = 'This indicates if the bruteforce should stop after finding the first correct user and password.'
        o5 = option('stopOnFirst', self._stopOnFirst, d5, 'boolean')
        
        d6 = 'This indicates if the bruteforce should try password equal user in logins.'
        o6 = option('passEqUser', self._passEqUser, d6, 'boolean')
        
        d7 = 'This indicates if the bruteforce should try l337 passwords'
        o7 = option('useLeetPasswd', self._l337_p4sswd, d7, 'boolean')
        
        d8 = 'This indicates if the bruteforcer should use emails collected by w3af plugins as users.'
        o8 = option('useMails', self._useMails, d8, 'boolean')
        
        d9 = 'This indicates if the bruteforce should use password profiling to collect new passwords.'
        o9 = option('useProfiling', self._useProfiling, d9, 'boolean')
        
        d10 = 'This indicates how many passwords from profiling will be used.'
        o10 = option('profilingNumber', self._profilingNumber, d10, 'integer')

        d11 = 'Combo of username and passord, file to use in bruteforcing'
        o11 = option('comboFile', self._comboFile, d11, 'string')

        d12 = 'Separator string used in Combo file to split username and password'
        o12 = option('comboSeparator', self._comboSeparator, d12, 'string')
        
        ol = optionList()
        ol.add(o1)
        ol.add(o2)
        ol.add(o11)
        ol.add(o12)
        ol.add(o3)
        ol.add(o4)
        ol.add(o5)
        ol.add(o6)
        ol.add(o7)
        ol.add(o8)
        ol.add(o9)
        ol.add(o10)
        return ol
Пример #29
0
 def getOptions(self):
     '''
     @return: A list of option objects for this plugin.
     '''
     d1 = 'Apply URL fuzzing to all URLs, including images, videos, zip, etc.'
     h1 = 'Don\'t change this unless you read the plugin code.'
     o1 = option('fuzzImages', self._fuzzImages, d1, 'boolean', help=h1)
     
     ol = optionList()
     ol.add(o1)
     return ol
    def _getOptionObjects(self):
        """
        @return: A list of options for this question.
        """
        self._d1 = "Find other virtual hosts using MSN search"
        o1 = option(self._d1, False, self._d1, "boolean")

        ol = optionList()
        ol.add(o1)

        return ol
Пример #31
0
 def getOptions(self):
     '''
     @return: A list of option objects for this plugin.
     '''
     d1 = 'The algorithm to use in the comparison of true and false response for blind sql.'
     h1 = 'The options are: "stringEq" and "setIntersection". '
     h1 += 'Read the long description for details.'
     o1 = option('Hierarchical clustering level', self._level, d1, 'integer', help=h1)
     
     ol = optionList()
     ol.add(o1)
     return ol