Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/nmap/scripts/ |
Upload File : |
local afp = require "afp" local nmap = require "nmap" local shortport = require "shortport" local stdnse = require "stdnse" local ls = require "ls" description = [[ Attempts to get useful information about files from AFP volumes. The output is intended to resemble the output of <code>ls</code>. ]] --- -- -- @usage -- nmap -sS -sV -p 548 --script=afp-ls target -- -- @output -- PORT STATE SERVICE -- 548/tcp open afp syn-ack -- | afp-ls: -- | Information retrieved as patrik -- | Volume Macintosh HD -- | maxfiles limit reached (10) -- | PERMISSION UID GID SIZE TIME FILENAME -- | -rw-r--r-- 501 80 15364 2010-06-13 17:52 .DS_Store -- | ---------- 0 80 0 2009-10-05 07:42 .file -- | drwx------ 501 20 0 2009-11-04 17:28 .fseventsd -- | -rw------- 0 0 393216 2010-06-14 01:49 .hotfiles.btree -- | drwx------ 0 80 0 2009-11-04 18:19 .Spotlight-V100 -- | d-wx-wx-wx 0 80 0 2009-11-04 18:25 .Trashes -- | drwxr-xr-x 0 0 0 2009-05-18 21:29 .vol -- | drwxrwxr-x 0 80 0 2009-04-28 00:06 Applications -- | drwxr-xr-x 0 0 0 2009-05-18 21:43 bin -- | drwxr-xr-x 501 80 0 2010-08-10 22:55 bundles -- | -- | Volume Patrik Karlsson's Public Folder -- | PERMISSION UID GID SIZE TIME FILENAME -- | -rw------- 501 20 6148 2010-12-27 23:45 .DS_Store -- | -rw-r--r-- 501 20 0 2007-07-24 21:17 .localized -- | drwx-wx-wx 501 20 0 2009-06-19 04:01 Drop Box -- | -- | Volume patrik -- | maxfiles limit reached (10) -- | PERMISSION UID GID SIZE TIME FILENAME -- | -rw------- 501 20 11281 2010-06-14 22:51 .bash_history -- | -rw-r--r-- 501 20 33 2011-01-19 20:11 .bashrc -- | -rw------- 501 20 3 2007-07-24 21:17 .CFUserTextEncoding -- | drwx------ 501 20 0 2010-09-12 14:52 .config -- | drwx------ 501 20 0 2010-09-12 12:29 .cups -- | -rw-r--r-- 501 20 15364 2010-06-13 18:34 .DS_Store -- | drwxr-xr-x 501 20 0 2010-09-12 14:13 .fontconfig -- | -rw------- 501 20 102 2010-06-14 01:46 .lesshst -- | -rw-r--r-- 501 20 241 2010-06-14 01:45 .profile -- | -rw------- 501 20 218 2010-09-12 16:35 .recently-used.xbel -- |_ -- -- @xmloutput -- <table key="volumes"> -- <table> -- <elem key="volume">Storage01</elem> -- <table key="files"> -- <table> -- <elem key="permission">drwx------</elem> -- <elem key="uid">0</elem> -- <elem key="gid">100</elem> -- <elem key="size">0</elem> -- <elem key="time">2015-06-26 17:17</elem> -- <elem key="filename">Backups</elem> -- </table> -- <table> -- <elem key="permission">drwxr-xr-x</elem> -- <elem key="uid">0</elem> -- <elem key="gid">37</elem> -- <elem key="size">0</elem> -- <elem key="time">2015-06-19 06:36</elem> -- <elem key="filename">Network Trash Folder</elem> -- </table> -- <table> -- <elem key="permission">drwxr-xr-x</elem> -- <elem key="uid">0</elem> -- <elem key="gid">37</elem> -- <elem key="size">0</elem> -- <elem key="time">2015-06-19 06:36</elem> -- <elem key="filename">Temporary Items</elem> -- </table> -- </table> -- </table> -- </table> -- <table key="info"> -- <elem>information retrieved as nil</elem> -- </table> -- <table key="total"> -- <elem key="files">3</elem> -- <elem key="bytes">0</elem> -- </table> -- Version 0.2 -- Created 04/03/2011 - v0.1 - created by Patrik Karlsson -- Modified 08/02/2020 - v0.2 - replaced individual date/size/ownership calls -- with direct sourcing from the output of -- afp.Helper.Dir author = "Patrik Karlsson" license = "Same as Nmap--See https://nmap.org/book/man-legal.html" categories = {"discovery", "safe"} dependencies = {"afp-brute"} portrule = shortport.port_or_service(548, {"afp"}) action = function(host, port) local afpHelper = afp.Helper:new() local args = nmap.registry.args local users = nmap.registry.afp or { ['nil'] = 'nil' } local maxfiles = ls.config("maxfiles") local output = ls.new_listing() if ( args['afp.username'] ) then users = {} users[args['afp.username']] = args['afp.password'] end for username, password in pairs(users) do local status, response = afpHelper:OpenSession(host, port) if ( not status ) then stdnse.debug1("%s", response) return end -- if we have a username attempt to authenticate as the user -- Attempt to use No User Authentication? if ( username ~= 'nil' ) then status, response = afpHelper:Login(username, password) else status, response = afpHelper:Login() end if ( not status ) then stdnse.debug1("Login failed") stdnse.debug3("Login error: %s", response) return end local vols status, vols = afpHelper:ListShares() if status then for _, vol in ipairs( vols ) do local status, tbl = afpHelper:Dir( vol ) if ( not(status) ) then ls.report_error(output, ("ERROR: Failed to list the contents of %s"):format(vol)) else ls.new_vol(output, vol, true) for _, item in ipairs(tbl[1]) do if item and item.name then if not (item.privs and item.create) then ls.report_error(output, ("ERROR: Failed to retrieve file details for %/%s"):format(vol, item.name)) else local continue = ls.add_file(output, { item.privs, item.uid, item.gid, item.fsize, item.create, item.name }) if not continue then ls.report_info(output, ("maxfiles limit reached (%d)"):format(maxfiles)) break end end end end ls.end_vol(output) end end end status, response = afpHelper:Logout() status, response = afpHelper:CloseSession() -- stop after first successful attempt if #output["volumes"] > 0 then ls.report_info(output, ("information retrieved as %s"):format(username)) return ls.end_listing(output) end end return end