diff options
Diffstat (limited to '')
-rw-r--r-- | scripts/rsync-list-modules.nse | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/scripts/rsync-list-modules.nse b/scripts/rsync-list-modules.nse new file mode 100644 index 0000000..0fb1e2a --- /dev/null +++ b/scripts/rsync-list-modules.nse @@ -0,0 +1,48 @@ +local rsync = require "rsync" +local shortport = require "shortport" +local stdnse = require "stdnse" + +description = [[ +Lists modules available for rsync (remote file sync) synchronization. +]] + +--- +-- @usage +-- nmap -p 873 --script rsync-list-modules <ip> +-- +-- @output +-- PORT STATE SERVICE +-- 873/tcp open rsync +-- | rsync-list-modules: +-- | www www directory +-- | log log directory +-- |_ etc etc directory +-- + + +author = "Patrik Karlsson" +license = "Same as Nmap--See https://nmap.org/book/man-legal.html" +categories = {"discovery", "safe"} + +portrule = shortport.port_or_service(873, "rsync", "tcp") + +local function fail (err) return stdnse.format_output(false, err) end + +action = function(host, port) + local helper = rsync.Helper:new(host, port, { module = "" }) + if ( not(helper) ) then + return fail("Failed to create rsync.Helper") + end + + local status, err = helper:connect() + if ( not(status) ) then + return fail("Failed to connect to rsync server") + end + + local modules = {} + status, modules = helper:listModules() + if ( not(status) ) then + return fail("Failed to retrieve a list of modules") + end + return stdnse.format_output(true, modules) +end |