From b8d11b2ca4402ada2fdfecbac0a07034c013b2f2 Mon Sep 17 00:00:00 2001 From: abhishek singh Date: Mon, 28 Mar 2016 16:11:53 +0530 Subject: [PATCH 1/3] remove crash causing bug from http-form-brute --- scripts/http-form-brute.nse | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/http-form-brute.nse b/scripts/http-form-brute.nse index 3837cecab..8a01423e9 100644 --- a/scripts/http-form-brute.nse +++ b/scripts/http-form-brute.nse @@ -422,8 +422,13 @@ Driver = { opts.cookies = nil return response, true end - -- set cookies - update_cookies(opts.cookies, response.cookies) + if response.cookies then + -- set cookies + update_cookies(opts.cookies, response.cookies) + else + stdnse.debug1("Failed to get new session cookies, reason: %s", response['status-line'] or "Unknown") + return nil, false + end if self.options.is_failure and self.options.is_failure(response) then return response, false end From 4cd0b65a8dbfe63b16d93fde263f1f33ef858291 Mon Sep 17 00:00:00 2001 From: abhishek singh Date: Thu, 19 May 2016 14:25:14 +0530 Subject: [PATCH 2/3] Commits all problem --- scripts/http-form-brute.nse | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/scripts/http-form-brute.nse b/scripts/http-form-brute.nse index 8a01423e9..b09b21813 100644 --- a/scripts/http-form-brute.nse +++ b/scripts/http-form-brute.nse @@ -315,6 +315,9 @@ end -- TODO: expire cookies local function update_cookies (old, new) + if not old then + old = {} + end for i, c in ipairs(new) do local add = true for j, oc in ipairs(old) do @@ -416,19 +419,14 @@ Driver = { response = http.get(self.host, self.port, uri, opts) end local rcount = 0 - while response do + while response and response.status do if self.options.is_success and self.options.is_success(response) then -- "log out" opts.cookies = nil return response, true end - if response.cookies then - -- set cookies - update_cookies(opts.cookies, response.cookies) - else - stdnse.debug1("Failed to get new session cookies, reason: %s", response['status-line'] or "Unknown") - return nil, false - end + -- set cookies + update_cookies(opts.cookies, response.cookies) if self.options.is_failure and self.options.is_failure(response) then return response, false end @@ -460,7 +458,11 @@ Driver = { login = function (self, username, password) local response, success = self:submit_form(username, password) - if not response then + if response and not response.status then + local err = brute.Error:new(response['status-line'] or "Unknown") + err:setRetry(true) + return false, err + elseif not response then local err = brute.Error:new("Form submission failed") err:setRetry(true) return false, err From adfd05f03c00547c0efa12af0f5b74d0ec73f581 Mon Sep 17 00:00:00 2001 From: abhishek singh Date: Sun, 17 Jul 2016 21:48:48 +0530 Subject: [PATCH 3/3] return from update_cookies if table is nil --- scripts/http-form-brute.nse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/http-form-brute.nse b/scripts/http-form-brute.nse index b09b21813..cd2148702 100644 --- a/scripts/http-form-brute.nse +++ b/scripts/http-form-brute.nse @@ -316,7 +316,7 @@ end -- TODO: expire cookies local function update_cookies (old, new) if not old then - old = {} + return end for i, c in ipairs(new) do local add = true