Add OpenVAS mock endpoints
This commit is contained in:
@ -59,7 +59,7 @@ db_path = /opt/VulnWhisperer/data/database
|
|||||||
verbose = true
|
verbose = true
|
||||||
|
|
||||||
[openvas]
|
[openvas]
|
||||||
enabled = false
|
enabled = true
|
||||||
hostname = openvas
|
hostname = openvas
|
||||||
port = 4000
|
port = 4000
|
||||||
username = exampleuser
|
username = exampleuser
|
||||||
|
@ -19,6 +19,13 @@ class mockAPI(object):
|
|||||||
self.logger.info('mockAPI initialised, API requests will be mocked')
|
self.logger.info('mockAPI initialised, API requests will be mocked')
|
||||||
self.logger.info('Test path resolved as {}'.format(self.mock_dir))
|
self.logger.info('Test path resolved as {}'.format(self.mock_dir))
|
||||||
|
|
||||||
|
self.openvas_requests = {
|
||||||
|
'request_1': ('POST', 200, 'omp'),
|
||||||
|
'request_2': ('GET', 200, 'omp?cmd=get_reports&token=efbe7076-4ae9-4e57-89cc-bcd6bd93f1f3&max_results=1&ignore_pagination=1&filter=apply_overrides%3D1+min_qod%3D70+autofp%3D0+first%3D1+rows%3D0+levels%3Dhml+sort-reverse%3Dseverity'),
|
||||||
|
'request_3': ('GET', 200, 'omp?cmd=get_report_formats&token=efbe7076-4ae9-4e57-89cc-bcd6bd93f1f3'),
|
||||||
|
'request_4': ('GET', 200, 'omp?token=efbe7076-4ae9-4e57-89cc-bcd6bd93f1f3&cmd=get_report&report_id=4c6c900c-71f5-42f7-91e2-1b19b7976606&filter=apply_overrides%3D0+min_qod%3D70+autofp%3D0+levels%3Dhml+first%3D1+rows%3D0+sort-reverse%3Dseverity&ignore_pagination=1&report_format_id=c1645568-627a-11e3-a660-406186ea4fc5&submit=Download')
|
||||||
|
}
|
||||||
|
|
||||||
def get_directories(self, path):
|
def get_directories(self, path):
|
||||||
dir, subdirs, files = next(os.walk(path))
|
dir, subdirs, files = next(os.walk(path))
|
||||||
return subdirs
|
return subdirs
|
||||||
@ -67,6 +74,20 @@ class mockAPI(object):
|
|||||||
httpretty.POST, 'https://{}:443/{}'.format(framework, 'api/2.0/fo/scan/'),
|
httpretty.POST, 'https://{}:443/{}'.format(framework, 'api/2.0/fo/scan/'),
|
||||||
body=self.qualys_vuln_callback)
|
body=self.qualys_vuln_callback)
|
||||||
|
|
||||||
|
def create_openvas_resource(self, framework):
|
||||||
|
for filename in self.get_files('{}/{}'.format(self.mock_dir, framework)):
|
||||||
|
try:
|
||||||
|
method, status, resource = self.openvas_requests[filename]
|
||||||
|
self.logger.debug('Adding mocked {} endpoint {} {}'.format(framework, method, resource))
|
||||||
|
except:
|
||||||
|
self.logger.error('Cound not find mocked {} endpoint for file {}/{}/{}'.format(framework, self.mock_dir, framework, filename))
|
||||||
|
continue
|
||||||
|
httpretty.register_uri(
|
||||||
|
getattr(httpretty, method), 'https://{}:4000/{}'.format(framework, resource),
|
||||||
|
body=open('{}/{}/{}'.format(self.mock_dir, framework, filename)).read(),
|
||||||
|
status=status
|
||||||
|
)
|
||||||
|
|
||||||
def mock_endpoints(self):
|
def mock_endpoints(self):
|
||||||
for framework in self.get_directories(self.mock_dir):
|
for framework in self.get_directories(self.mock_dir):
|
||||||
if framework in ['nessus', 'tenable']:
|
if framework in ['nessus', 'tenable']:
|
||||||
@ -74,4 +95,6 @@ class mockAPI(object):
|
|||||||
elif framework == 'qualys_vuln':
|
elif framework == 'qualys_vuln':
|
||||||
self.qualys_vuln_path = self.mock_dir + '/' + framework
|
self.qualys_vuln_path = self.mock_dir + '/' + framework
|
||||||
self.create_qualys_vuln_resource(framework)
|
self.create_qualys_vuln_resource(framework)
|
||||||
|
elif framework == 'openvas':
|
||||||
|
self.create_openvas_resource(framework)
|
||||||
httpretty.enable()
|
httpretty.enable()
|
Reference in New Issue
Block a user