summaryrefslogtreecommitdiffstats
path: root/scripts/amqp-info.nse
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/amqp-info.nse')
-rw-r--r--scripts/amqp-info.nse60
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