diff --git a/lib/controller/controller.py b/lib/controller/controller.py index 5f0c0f3c2..bd1a65c11 100644 --- a/lib/controller/controller.py +++ b/lib/controller/controller.py @@ -608,8 +608,14 @@ def start(): finally: showHttpErrorCodes() + if kb.maxConnectionsFlag: + warnMsg = "it appears that the target " + warnMsg += "has a maximum connections " + warnMsg += "constraint" + logger.warn(warnMsg) + if kb.dataOutputFlag and not conf.multipleTargets: - logger.info("Fetched data logged to text files under '%s'" % conf.outputPath) + logger.info("fetched data logged to text files under '%s'" % conf.outputPath) if conf.multipleTargets and conf.resultsFilename: infoMsg = "you can find results of scanning in multiple targets " diff --git a/lib/core/option.py b/lib/core/option.py index 76612dba6..40cfc81d5 100644 --- a/lib/core/option.py +++ b/lib/core/option.py @@ -1465,6 +1465,7 @@ def __setKnowledgeBaseAttributes(flushAll=True): kb.locks[_] = threading.Lock() kb.matchRatio = None + kb.maxConnectionsFlag = False kb.mergeCookies = None kb.multiThreadMode = False kb.negativeLogic = False diff --git a/lib/request/connect.py b/lib/request/connect.py index 7cd46902e..8e7d9dd52 100644 --- a/lib/request/connect.py +++ b/lib/request/connect.py @@ -727,6 +727,7 @@ class Connect: if not response and removeReflection: page = removeReflectiveValues(page, payload) + kb.maxConnectionsFlag = re.search(r"max.+connections", page or "", re.I) is not None kb.permissionFlag = re.search(r"(command|permission|access)\s*(was|is)?\s*denied", page or "", re.I) is not None if content or response: