diff options
Diffstat (limited to 'scripts/docker-version.nse')
-rw-r--r-- | scripts/docker-version.nse | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/scripts/docker-version.nse b/scripts/docker-version.nse new file mode 100644 index 0000000..452434c --- /dev/null +++ b/scripts/docker-version.nse @@ -0,0 +1,46 @@ +local shortport = require "shortport" +local json = require "json" +local http = require "http" +local nmap = require "nmap" + +description = [[Detects the Docker service version.]] + +--- +-- @output +-- PORT STATE SERVICE VERSION +-- 2375/tcp open docker Docker 1.11.2 +-- | Version: 1.11.2 +-- | BuildTime: 2016-06-01T21:47:50.269346868+00:00 +-- | Arch: amd64 +-- | KernelVersion: 3.13.0-91-generic +-- | Os: linux +-- | ApiVersion: 1.23 +-- | GitCommit: b9f10c9 +-- |_ GoVersion: go1.5.4 + + +author = "Claudio Criscione" +license = "Same as Nmap--See https://nmap.org/book/man-legal.html" +categories = {"version"} + +portrule = shortport.version_port_or_service({2375, 2376}, {"docker", "docker-s"}, "tcp") + +action = function(host, port) + + local http_response = http.get(host, port, "/version") + if not http_response or not http_response.status or + http_response.status ~= 200 or not http_response.body then + return + end + + local ok_json, response = json.parse(http_response.body) + if ok_json and response["Version"] and response["GitCommit"] then + ---Detected + port.version.name = 'docker' + port.version.version = response["Version"] + port.version.product = "Docker" + nmap.set_port_version(host, port) + return response + end + return +end |