1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-22 23:49:03 +00:00

Add the resolveall prerule script which takes a table of hosts and adds the

resolved addresses to Nmap's target queue.
This commit is contained in:
kris
2010-09-28 02:04:20 +00:00
parent 5ead386c07
commit 29e6257541
3 changed files with 82 additions and 1 deletions

View File

@@ -1,5 +1,10 @@
# Nmap Changelog ($Id$); -*-text-*- # Nmap Changelog ($Id$); -*-text-*-
o [NSE] Added the resolveall prerule script which takes a table of
target names as a "hosts" argument and adds all of the resolved
addresses (IPv4 or IPv6, depending on Nmap's -6 option) for all of
the hosts to the scanning queue. [Kris]
o Fixed some inconsistencies in nmap-os-db and a small memory leak o Fixed some inconsistencies in nmap-os-db and a small memory leak
that would happen where there was more than one round of OS that would happen where there was more than one round of OS
detection. These were reported by Xavier Sudre from netVigilance, detection. These were reported by Xavier Sudre from netVigilance,

75
scripts/resolveall.nse Normal file
View File

@@ -0,0 +1,75 @@
description = [[
Resolves hostnames and adds every address (IPv4 or IPv6, depending) to Nmap's
target list. Nmap itself resolves a host but only scans the first address.
]]
---
-- @usage
-- nmap --script=resolveall --script-args=newtargets,resolveall.hosts={<host1>, ...} ...
-- @args resolveall.hosts Table of hosts to resolve
author = "Kris Katterjohn"
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
categories = {"safe", "discovery"}
require 'target'
prerule = function() return target.ALLOW_NEW_TARGETS end
local addtargets = function(list)
local sum = 0
for _, t in ipairs(list) do
local st, err = target.add(t)
if st then
sum = sum + 1
else
stdnse.print_debug("Couldn't add target " .. t .. ": " .. err)
end
end
return sum
end
action = function()
local hosts
for _, k in ipairs({"resolveall.hosts", "hosts"}) do
if nmap.registry.args[k] then
hosts = nmap.registry.args[k]
end
end
if not hosts then
stdnse.print_debug(3,
"Skipping '%s' %s, 'resolveall.hosts' argument is missing.",
SCRIPT_NAME, SCRIPT_TYPE)
return
end
if type(hosts) ~= "table" then
stdnse.print_debug(3,
"Skipping '%s' %s, 'resolveall.hosts' must be a table.",
SCRIPT_NAME, SCRIPT_TYPE)
return
end
local sum = 0
for _, host in ipairs(hosts) do
local status, list = nmap.resolve(host, nmap.address_family())
if status and #list > 0 then
sum = sum + addtargets(list)
end
end
if sum == 0 then
return
end
return "Successfully added " .. tostring(sum) .. " new targets"
end

View File

@@ -101,6 +101,7 @@ Entry { filename = "pop3-capabilities.nse", categories = { "default", "discovery
Entry { filename = "pptp-version.nse", categories = { "version", } } Entry { filename = "pptp-version.nse", categories = { "version", } }
Entry { filename = "qscan.nse", categories = { "discovery", "safe", } } Entry { filename = "qscan.nse", categories = { "discovery", "safe", } }
Entry { filename = "realvnc-auth-bypass.nse", categories = { "default", "safe", "vuln", } } Entry { filename = "realvnc-auth-bypass.nse", categories = { "default", "safe", "vuln", } }
Entry { filename = "resolveall.nse", categories = { "discovery", "safe", } }
Entry { filename = "robots.txt.nse", categories = { "default", "discovery", "safe", } } Entry { filename = "robots.txt.nse", categories = { "default", "discovery", "safe", } }
Entry { filename = "rpcinfo.nse", categories = { "discovery", "safe", } } Entry { filename = "rpcinfo.nse", categories = { "discovery", "safe", } }
Entry { filename = "skypev2-version.nse", categories = { "version", } } Entry { filename = "skypev2-version.nse", categories = { "version", } }
@@ -140,7 +141,7 @@ Entry { filename = "ssl-cert.nse", categories = { "discovery", "safe", } }
Entry { filename = "ssl-enum-ciphers.nse", categories = { "discovery", "intrusive", } } Entry { filename = "ssl-enum-ciphers.nse", categories = { "discovery", "intrusive", } }
Entry { filename = "sslv2.nse", categories = { "default", "safe", } } Entry { filename = "sslv2.nse", categories = { "default", "safe", } }
Entry { filename = "svn-brute.nse", categories = { "auth", "intrusive", } } Entry { filename = "svn-brute.nse", categories = { "auth", "intrusive", } }
Entry { filename = "targets-traceroute.nse", categories = { "safe", "discovery", } } Entry { filename = "targets-traceroute.nse", categories = { "discovery", "safe", } }
Entry { filename = "telnet-brute.nse", categories = { "auth", "intrusive", } } Entry { filename = "telnet-brute.nse", categories = { "auth", "intrusive", } }
Entry { filename = "upnp-info.nse", categories = { "default", "safe", } } Entry { filename = "upnp-info.nse", categories = { "default", "safe", } }
Entry { filename = "vnc-brute.nse", categories = { "auth", "intrusive", } } Entry { filename = "vnc-brute.nse", categories = { "auth", "intrusive", } }