From 1245883b906bb4c2c76e6e147bf0322aee653ae7 Mon Sep 17 00:00:00 2001 From: Oleksii Shevchuk Date: Wed, 10 Apr 2019 14:48:52 +0300 Subject: [PATCH] Update wesng --- pupy/external/wesng | 2 +- pupy/modules/exploit_suggester.py | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/pupy/external/wesng b/pupy/external/wesng index 4b6d9211..802dc10f 160000 --- a/pupy/external/wesng +++ b/pupy/external/wesng @@ -1 +1 @@ -Subproject commit 4b6d92112115a706e9c8af44e68bd7bbc900fbe6 +Subproject commit 802dc10fd6ec7ada1aab44f31906fedc96b8fb22 diff --git a/pupy/modules/exploit_suggester.py b/pupy/modules/exploit_suggester.py index 7c241cba..50102d42 100644 --- a/pupy/modules/exploit_suggester.py +++ b/pupy/modules/exploit_suggester.py @@ -40,6 +40,9 @@ class Exploit_Suggester(PupyModule): @classmethod def init_argparse(cls): cls.arg_parser = PupyArgumentParser(prog='Exploit_Suggester', description=cls.__doc__) + cls.arg_parser.add_argument( + '-no-recent-kb', default=False, action='store_true', + help='Do not filter findings by most recent KB date') cls.arg_parser.add_argument( '--hide', nargs='+', default='', help='(WES only) Hide vulnerabilities of for example Adobe Flash Player and Microsoft Edge') @@ -123,7 +126,7 @@ class Exploit_Suggester(PupyModule): wes = imp.load_source('wes', WES_PATH) try: - cves, date = wes.load_defintions(definitions) + cves, date = wes.load_definitions(definitions) except BadZipfile: self.error( 'Defintions were downloaded incorrectly ({})'.format( @@ -154,7 +157,17 @@ class Exploit_Suggester(PupyModule): self.error(e.msg) return - filtered = wes.apply_display_filters(filtered, found, args.hide, True) + if not args.no_recent_kb: + recentkb = wes.get_most_recent_kb(found) + if recentkb: + recentdate = int(recentkb['DatePosted']) + found = list(filter(lambda kb: int(kb['DatePosted']) >= recentdate, found)) + + if 'Windows Server' in productfilter: + self.info('Filtering duplicate vulnerabilities') + found = wes.filter_duplicates(found) + + filtered = wes.apply_display_filters(found, args.hide, True, []) if not filtered: self.info('No vulnerabilities found') return