1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-19 22:19:02 +00:00

NSE: http-cakephp-version - fix false positive caused by following HTTP redirects. Update call to identify_404 to improve results.

This commit is contained in:
tomsellers
2015-12-04 01:28:11 +00:00
parent 25a27252ec
commit 1bba7d4b80

View File

@@ -65,15 +65,15 @@ action = function(host, port)
local installation_version local installation_version
-- Identify servers that answer 200 to invalid HTTP requests and exit as these would invalidate the tests -- Identify servers that answer 200 to invalid HTTP requests and exit as these would invalidate the tests
local _, http_status, _ = http.identify_404(host,port) local status_404, result_404, _ = http.identify_404(host,port)
if ( http_status == 200 ) then if ( status_404 and result_404 == 200 ) then
stdnse.debug1("Exiting due to ambiguous response from web server on %s:%s. All URIs return status 200.", host.ip, port.number) stdnse.debug1("Exiting due to ambiguous response from web server on %s:%s. All URIs return status 200.", host.ip, port.number)
return false return nil
end end
-- Are the default icons there? -- Are the default icons there?
png_icon_response = http.get(host, port, PNG_ICON_QUERY) png_icon_response = http.get(host, port, PNG_ICON_QUERY,{redirect_ok=false})
gif_icon_response = http.get(host, port, GIF_ICON_QUERY) gif_icon_response = http.get(host, port, GIF_ICON_QUERY,{redirect_ok=false})
if png_icon_response.body and png_icon_response.status == 200 then if png_icon_response.body and png_icon_response.status == 200 then
icon_versions = {"1.3.x"} icon_versions = {"1.3.x"}
elseif gif_icon_response.body and gif_icon_response.status == 200 then elseif gif_icon_response.body and gif_icon_response.status == 200 then
@@ -81,13 +81,13 @@ action = function(host, port)
end end
-- Download cake.generic.css and fingerprint -- Download cake.generic.css and fingerprint
response = http.get(host, port, STYLESHEET_QUERY) response = http.get(host, port, STYLESHEET_QUERY,{redirect_ok=false})
if response.body and response.status == 200 then if response.body and response.status == 200 then
stylesheet_hash = stdnse.tohex(openssl.md5(response.body)) stylesheet_hash = stdnse.tohex(openssl.md5(response.body))
stylesheet_versions = CAKEPHP_STYLESHEET_HASHES[stylesheet_hash] stylesheet_versions = CAKEPHP_STYLESHEET_HASHES[stylesheet_hash]
end end
-- Is /js/vendors.php there? -- Is /js/vendors.php there?
response = http.get(host, port, VENDORS_QUERY) response = http.get(host, port, VENDORS_QUERY,{redirect_ok=false})
if response.body and response.status == 200 then if response.body and response.status == 200 then
installation_version = {"1.1.x","1.2.x"} installation_version = {"1.1.x","1.2.x"}
elseif response.status ~= 200 and (icon_versions or stylesheet_versions) then elseif response.status ~= 200 and (icon_versions or stylesheet_versions) then