Nessus bugfixes (#68)

* Handle cases where no scans are present

* Prevent infinite login loop with incorrect creds

* Print actual config file path

* Don't overwrite Nessus Synopsis with Description
This commit is contained in:
pemontto
2018-06-13 16:56:06 +10:00
committed by Austin Taylor
parent 9049b1ff0f
commit 9b10711d34
2 changed files with 7 additions and 9 deletions

View File

@ -69,6 +69,8 @@ class NessusAPI(object):
while (timeout <= 10) and (not success): while (timeout <= 10) and (not success):
data = methods[method](url, data=data, headers=self.headers, verify=False) data = methods[method](url, data=data, headers=self.headers, verify=False)
if data.status_code == 401: if data.status_code == 401:
if url == self.base + self.SESSION:
break
try: try:
self.login() self.login()
timeout += 1 timeout += 1
@ -102,7 +104,7 @@ class NessusAPI(object):
def get_scan_ids(self): def get_scan_ids(self):
scans = self.get_scans() scans = self.get_scans()
scan_ids = [scan_id['id'] for scan_id in scans['scans']] scan_ids = [scan_id['id'] for scan_id in scans['scans']] if scans['scans'] else []
return scan_ids return scan_ids
def count_scan(self, scans, folder_id): def count_scan(self, scans, folder_id):

View File

@ -217,7 +217,7 @@ class vulnWhispererNessus(vulnWhispererBase):
self.vprint(e) self.vprint(e)
raise Exception( raise Exception(
'{fail} Could not connect to nessus -- Please verify your settings in {config} are correct and try again.\nReason: {e}'.format( '{fail} Could not connect to nessus -- Please verify your settings in {config} are correct and try again.\nReason: {e}'.format(
config=self.config, config=self.config.config_in,
fail=bcolors.FAIL, e=e)) fail=bcolors.FAIL, e=e))
except Exception as e: except Exception as e:
@ -275,7 +275,7 @@ class vulnWhispererNessus(vulnWhispererBase):
if self.nessus_connect: if self.nessus_connect:
scan_data = self.nessus.get_scans() scan_data = self.nessus.get_scans()
folders = scan_data['folders'] folders = scan_data['folders']
scans = scan_data['scans'] scans = scan_data['scans'] if scan_data['scans'] else []
all_scans = self.scan_count(scans) all_scans = self.scan_count(scans)
if self.uuids: if self.uuids:
scan_list = [scan for scan in all_scans if scan['uuid'] scan_list = [scan for scan in all_scans if scan['uuid']
@ -375,11 +375,7 @@ class vulnWhispererNessus(vulnWhispererBase):
for col in columns_to_cleanse: for col in columns_to_cleanse:
clean_csv[col] = clean_csv[col].astype(str).apply(self.cleanser) clean_csv[col] = clean_csv[col].astype(str).apply(self.cleanser)
clean_csv['Synopsis'] = \ clean_csv.to_csv(relative_path_name, index=False)
clean_csv['Description'
].astype(str).apply(self.cleanser)
clean_csv.to_csv(relative_path_name,
index=False)
record_meta = ( record_meta = (
scan_name, scan_name,
scan_id, scan_id,