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 : |
description = [[ Queries VMware server (vCenter, ESX, ESXi) SOAP API to extract the version information. The same script as VMware Fingerprinter from VASTO created by Claudio Criscione, Paolo Canaletti ]] --- -- @usage -- nmap --script vmware-version -p443 <host> -- -- @output -- | vmware-version: -- | Server version: VMware ESX 4.1.0 -- | Build: 348481 -- | Locale version: INTL 000 -- | OS type: vmnix-x86 -- |_ Product Line ID: esx ---------------------------------------------------------- author = "Alexey Tyurin" license = "Same as Nmap--See https://nmap.org/book/man-legal.html" categories = {"discovery", "safe", "version"} local http = require "http" local nmap = require "nmap" local shortport = require "shortport" local stdnse = require "stdnse" local table = require "table" portrule = function (host, port) if nmap.version_intensity() < 7 or nmap.port_is_excluded(port.number, port.protocol) then return false end return shortport.http(host, port) end local function get_file(host, port, path) local req req='<soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><operationID>00000001-00000001</operationID></soap:Header><soap:Body><RetrieveServiceContent xmlns="urn:internalvim25"><_this xsi:type="ManagedObjectReference" type="ServiceInstance">ServiceInstance</_this></RetrieveServiceContent></soap:Body></soap:Envelope>' local result = http.post( host, port, path, nil, nil, req) if(result['status'] ~= 200 or result['content-length'] == 0) then return false, "Couldn't download file: " .. path end return true, result.body end action = function(host, port) local result, body = get_file(host, port, "/sdk") if(not(result)) then stdnse.debug1("%s", body) return nil end local vwname = body:match("<name>([^<]*)</name>") if not vwname then stdnse.debug1("Problem with XML parsing.") return nil end local vwversion = body:match("<version>([^<]*)</version>") local vwbuild = body:match("<build>([^<]*)</build>") local vwlversion = body:match("<localeVersion>([^<]*)</localeVersion>") local vwlbuild = body:match("<localeBuild>([^<]*)</localeBuild>") local vmostype = body:match("<osType>([^<]*)</osType>") local vmprod= body:match("<productLineId>([^<]*)</productLineId>") if not port.version.product then port.version.product = ("%s SOAP API"):format(vwname) port.version.version = vwversion end table.insert(port.version.cpe, ("cpe:/o:vmware:%s:%s"):format(vwname:gsub("^[Vv][Mm][Ww]are ", ""), vwversion)) nmap.set_port_version(host, port, "hardmatched") local response = stdnse.output_table() response["Server version"] = ("%s %s"):format(vwname, vwversion) response["Build"] = vwbuild response["Locale version"] = ("%s %s"):format(vwlversion, vwlbuild) response["OS type"] = vmostype response["Product Line ID"] = vmprod return response end