diff options
Diffstat (limited to 'scripts/amqp-info.nse')
-rw-r--r-- | scripts/amqp-info.nse | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/scripts/amqp-info.nse b/scripts/amqp-info.nse new file mode 100644 index 0000000..d0d299f --- /dev/null +++ b/scripts/amqp-info.nse @@ -0,0 +1,60 @@ +local amqp = require "amqp" +local nmap = require "nmap" +local shortport = require "shortport" +local stdnse = require "stdnse" + +description = [[ +Gathers information (a list of all server properties) from an AMQP (advanced message queuing protocol) server. + +See http://www.rabbitmq.com/extensions.html for details on the +<code>server-properties</code> field. +]] + +--- +-- @usage +-- nmap --script amqp-info -p5672 <target> +--- +-- @output +-- 5672/tcp open amqp +-- | amqp-info: +-- | capabilities: +-- | publisher_confirms: YES +-- | exchange_exchange_bindings: YES +-- | basic.nack: YES +-- | consumer_cancel_notify: YES +-- | copyright: Copyright (C) 2007-2011 VMware, Inc. +-- | information: Licensed under the MPL. See http://www.rabbitmq.com/ +-- | platform: Erlang/OTP +-- | product: RabbitMQ +-- | version: 2.4.0 +-- | mechanisms: PLAIN AMQPLAIN +-- |_ locales: en_US + +author = "Sebastian Dragomir" + +license = "Same as Nmap--See https://nmap.org/book/man-legal.html" + +categories = {"default", "discovery", "safe", "version"} + + +portrule = shortport.version_port_or_service(5672, "amqp", "tcp", "open") + +action = function(host, port) + local cli = amqp.AMQP:new( host, port ) + + local status, data = cli:connect() + if not status then return "Unable to open connection: " .. data end + + status, data = cli:handshake() + if not status then return data end + + cli:disconnect() + + port.version.name = "amqp" + port.version.product = cli:getServerProduct() + port.version.extrainfo = cli:getProtocolVersion() + port.version.version = cli:getServerVersion() + nmap.set_port_version(host, port) + + return stdnse.format_output(status, cli:getServerProperties()) +end |