Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for MQTT v3.1.1 and v5.0 #467

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions integration_tests/mqtt/cleanup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env bash

set +e

echo "mqtt/cleanup: Tests cleanup for mqtt"

CONTAINER_NAME=zgrab_mqtt

docker stop $CONTAINER_NAME
6 changes: 6 additions & 0 deletions integration_tests/mqtt/mosquitto.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
listener 1883 0.0.0.0

listener 8883 0.0.0.0
protocol mqtt
certfile /mosquitto/server.pem
keyfile /mosquitto/server.key
23 changes: 23 additions & 0 deletions integration_tests/mqtt/multiple.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[mqtt]
name="mqtt-tls"
trigger="mqtt-tls"
port=8883
tls=true

[mqtt]
name="mqtt-tls-v5"
trigger="mqtt-tls-v5"
port=8883
tls=true
v5=true

[mqtt]
name="mqtt"
trigger="mqtt"
port=1883

[mqtt]
name="mqtt-v5"
trigger="mqtt-v5"
port=1883
v5=true
20 changes: 20 additions & 0 deletions integration_tests/mqtt/server.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDOzCCAiOgAwIBAgIUS+JTI5jiO1C0AgqSuFgB1P9wS8swDQYJKoZIhvcNAQEL
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAgFw0yNDA5MjUwMzIwNTNaGA8yMDUy
MDIxMDAzMjA1M1owRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAKO/vB4nZjhbXcSMuIpl65aCK6zI6EtX2m5CrnJh
fRChp9MJV3OesPV93rcM2Vd+grf8qTw77TLcglYcSuHvBHfVbHaCnBx0z5ogYozR
EiuNV/hxTgfJdhQVN5WwGvRJe0pb7RaLtz4PF8rHJlTitQw37uGmOsW4bBZU1F6B
Nz/Os9BPLBBBnQvHUQmmp/aGJBga0mRRW3VFFOt7XgLJR2PR9jCTQZstleudSddj
SRemVvfm0zcsIO4IPsCKdkUMh4+eW3H0cc2oFggIDz72+uUYnyxtOx1vv7RzVETJ
BwMG/VDnfNZ5lozTKhlKZhVyVijy3ObMax8pLXixJcKrqc0CAwEAAaMhMB8wHQYD
VR0OBBYEFP6DHoFBdNVmHwc6LZnLwcDcKnvzMA0GCSqGSIb3DQEBCwUAA4IBAQA9
VRDbEAFWmqKq+LPRqGmjiqGE0rTOsoKSDWn0Zsre31H2vsXy8BUW69rjhwMXEONl
5ybZCHnU8GLawFzrVQJnuV77XhIDuJhIz81guy0K872YcrNuhlIS7ahxXJszwgPe
Tp313rJKUA44DIuF18WjWjwQL8bU80xiJJcyuR2mViOFgcfIABmSzvvMx8nHxp7W
C9woea6TMamq7GQmIky9ZVy7OcfOSCygK0TU6Y2qNcIuKl4xtvY07msGFLifXp6s
A9A4aS610tqPNInh5zokI2m/y7nvCq7BA9n+5HvMKJcxW2G+AU7R7IFJctsPL07g
1MDuvzVplpxKk3tkj8Ou
-----END CERTIFICATE-----
16 changes: 16 additions & 0 deletions integration_tests/mqtt/server.csr
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICijCCAXICAQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAKO/vB4nZjhbXcSMuIpl65aCK6zI6EtX2m5CrnJh
fRChp9MJV3OesPV93rcM2Vd+grf8qTw77TLcglYcSuHvBHfVbHaCnBx0z5ogYozR
EiuNV/hxTgfJdhQVN5WwGvRJe0pb7RaLtz4PF8rHJlTitQw37uGmOsW4bBZU1F6B
Nz/Os9BPLBBBnQvHUQmmp/aGJBga0mRRW3VFFOt7XgLJR2PR9jCTQZstleudSddj
SRemVvfm0zcsIO4IPsCKdkUMh4+eW3H0cc2oFggIDz72+uUYnyxtOx1vv7RzVETJ
BwMG/VDnfNZ5lozTKhlKZhVyVijy3ObMax8pLXixJcKrqc0CAwEAAaAAMA0GCSqG
SIb3DQEBCwUAA4IBAQCPropLZOaRaCD+iSGS304DRO6ysO8D2UW9T8CKqcbI6mOp
b8Wx2ENXXxuhSIpF3xe+yqpPOQmxph+lYnlewqVFWKRY91xIX07iMQ4bQHXKiWTs
IUQYRDbiLPq4sLgKdUdD41SoLhRBLGySX0/27hBlMQ0dZz92jTLOAYL06oqdtcJE
q/v3HVKlGiPkPiuFljbxBwI142ceFAWCctTb7N+6a0W/HioZPhKXLfGMcEHyNCQ7
XwMQW5DSp4S7J4FseDkxLIxcbYYCxpi3jHFx+eYPerZ5TobE6QZHQeWLj8mcrNwu
mrL6CFlKde7F+xmb3e/tPfUTE+NxNdWzPGTjov2h
-----END CERTIFICATE REQUEST-----
28 changes: 28 additions & 0 deletions integration_tests/mqtt/server.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCjv7weJ2Y4W13E
jLiKZeuWgiusyOhLV9puQq5yYX0QoafTCVdznrD1fd63DNlXfoK3/Kk8O+0y3IJW
HErh7wR31Wx2gpwcdM+aIGKM0RIrjVf4cU4HyXYUFTeVsBr0SXtKW+0Wi7c+DxfK
xyZU4rUMN+7hpjrFuGwWVNRegTc/zrPQTywQQZ0Lx1EJpqf2hiQYGtJkUVt1RRTr
e14CyUdj0fYwk0GbLZXrnUnXY0kXplb35tM3LCDuCD7AinZFDIePnltx9HHNqBYI
CA8+9vrlGJ8sbTsdb7+0c1REyQcDBv1Q53zWeZaM0yoZSmYVclYo8tzmzGsfKS14
sSXCq6nNAgMBAAECggEABtiZUNls2KZZQUJw5LhmJSDEGrE7pQrDQyDekkGpLOzV
S2l0kozr8ReWHCkZXSMY7ABQQwhuXlYBzP/Z0aBgm3H82ueTB02K8HKyLBkBnXiH
WQfDr2eo3CYW8NcwCU6ZLP6y5uJogtu2ru+slpfz4dLk1eJRSrrvKe/aASl92dkF
Y8UHh2Fw1Vctf/yND/hNiUefKhfwqVhbwOHZnDZ96ww878bHFumxrhBS6+DNFyIN
NrGsHWZ+NUS5/jpRu9kw/TRTtvXQzt18jIfHt9t1awyoxUX0fqtKlWKn2JvjZcP/
5udjY5LT1Jyx80e1LFotCFNYo3SKLNS4ci7047S8gQKBgQDRJ6WSr9DrEjTkRvK4
yUZj+0JEQbNCiZm7cOxNUMLw8OB2lMd5/qNYGKsa1kq0vCpkkLrLN8MVZOIanXIW
ENnZdtvb7/Io4MkS0yIkIIPfhP4YyQRGmkKVn/vBY9meqDj9KVtUiSHl0VebnR3N
4QKjvFK+sOIkOXwG/baKp7SCaQKBgQDIbKQPD6AjU6NZx16gpXXMq9+dTC830cmE
tvO8ye73wNmU6M8/ys7zedAVMtO5XK98/ASHJmhVjhtfSHA0RpxdhcOIizWBquGu
7jvZ9iocos5NZuR9++in9hRsFIiiII9u4PrwVznZJZIdP9mV9Pba7SaRbd0LWOLY
2TZ89XD3xQKBgHukKlb6pFAyZR4Favsd0QTNxbC//g55dW2/JZHXCkaQvsCa1wkh
JMKxYoTs5SDOk2j7vdDgV+zPxHHjXUv6Di5l+zabM9ZCe9srAOXGau65mdRhEKwE
CRSWjKcYNc96tqXBywHAR0+qX1XYnYPVXlAYxfmAa07qxI0FcuGonibxAoGBAILv
rtKEE8tgdcROYnyy+92Fn6YEwohGDtAcMenxRqQnIj6NRfBYD5Gy0AU5WmarrZ4K
iu68Ycca+rjp+xu70aWroM2QnJkkySHeU82Wa3afygV5JedEbn9kXX0qgQTiHrKC
Wo4vfgRl7iobr4uvKKJn8h1qV9F09WZTqaxDMNU9AoGACTw9ZiKtrW+5jS1ucLdl
49gE6QPH3+JnQPqazguLF9OoCOyw69lHdzu/S77Yag4W5M+N8dBCRNF/lOfCbtJc
eIeSFMdJOq97GlsK6QompySHlKlq13u17Jot0x82VPJt1vUuGTrS8qrM5QDKWxZw
skYVITHcfYVzVgxC9JIIKGg=
-----END PRIVATE KEY-----
48 changes: 48 additions & 0 deletions integration_tests/mqtt/server.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCjv7weJ2Y4W13E
jLiKZeuWgiusyOhLV9puQq5yYX0QoafTCVdznrD1fd63DNlXfoK3/Kk8O+0y3IJW
HErh7wR31Wx2gpwcdM+aIGKM0RIrjVf4cU4HyXYUFTeVsBr0SXtKW+0Wi7c+DxfK
xyZU4rUMN+7hpjrFuGwWVNRegTc/zrPQTywQQZ0Lx1EJpqf2hiQYGtJkUVt1RRTr
e14CyUdj0fYwk0GbLZXrnUnXY0kXplb35tM3LCDuCD7AinZFDIePnltx9HHNqBYI
CA8+9vrlGJ8sbTsdb7+0c1REyQcDBv1Q53zWeZaM0yoZSmYVclYo8tzmzGsfKS14
sSXCq6nNAgMBAAECggEABtiZUNls2KZZQUJw5LhmJSDEGrE7pQrDQyDekkGpLOzV
S2l0kozr8ReWHCkZXSMY7ABQQwhuXlYBzP/Z0aBgm3H82ueTB02K8HKyLBkBnXiH
WQfDr2eo3CYW8NcwCU6ZLP6y5uJogtu2ru+slpfz4dLk1eJRSrrvKe/aASl92dkF
Y8UHh2Fw1Vctf/yND/hNiUefKhfwqVhbwOHZnDZ96ww878bHFumxrhBS6+DNFyIN
NrGsHWZ+NUS5/jpRu9kw/TRTtvXQzt18jIfHt9t1awyoxUX0fqtKlWKn2JvjZcP/
5udjY5LT1Jyx80e1LFotCFNYo3SKLNS4ci7047S8gQKBgQDRJ6WSr9DrEjTkRvK4
yUZj+0JEQbNCiZm7cOxNUMLw8OB2lMd5/qNYGKsa1kq0vCpkkLrLN8MVZOIanXIW
ENnZdtvb7/Io4MkS0yIkIIPfhP4YyQRGmkKVn/vBY9meqDj9KVtUiSHl0VebnR3N
4QKjvFK+sOIkOXwG/baKp7SCaQKBgQDIbKQPD6AjU6NZx16gpXXMq9+dTC830cmE
tvO8ye73wNmU6M8/ys7zedAVMtO5XK98/ASHJmhVjhtfSHA0RpxdhcOIizWBquGu
7jvZ9iocos5NZuR9++in9hRsFIiiII9u4PrwVznZJZIdP9mV9Pba7SaRbd0LWOLY
2TZ89XD3xQKBgHukKlb6pFAyZR4Favsd0QTNxbC//g55dW2/JZHXCkaQvsCa1wkh
JMKxYoTs5SDOk2j7vdDgV+zPxHHjXUv6Di5l+zabM9ZCe9srAOXGau65mdRhEKwE
CRSWjKcYNc96tqXBywHAR0+qX1XYnYPVXlAYxfmAa07qxI0FcuGonibxAoGBAILv
rtKEE8tgdcROYnyy+92Fn6YEwohGDtAcMenxRqQnIj6NRfBYD5Gy0AU5WmarrZ4K
iu68Ycca+rjp+xu70aWroM2QnJkkySHeU82Wa3afygV5JedEbn9kXX0qgQTiHrKC
Wo4vfgRl7iobr4uvKKJn8h1qV9F09WZTqaxDMNU9AoGACTw9ZiKtrW+5jS1ucLdl
49gE6QPH3+JnQPqazguLF9OoCOyw69lHdzu/S77Yag4W5M+N8dBCRNF/lOfCbtJc
eIeSFMdJOq97GlsK6QompySHlKlq13u17Jot0x82VPJt1vUuGTrS8qrM5QDKWxZw
skYVITHcfYVzVgxC9JIIKGg=
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDOzCCAiOgAwIBAgIUS+JTI5jiO1C0AgqSuFgB1P9wS8swDQYJKoZIhvcNAQEL
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAgFw0yNDA5MjUwMzIwNTNaGA8yMDUy
MDIxMDAzMjA1M1owRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAKO/vB4nZjhbXcSMuIpl65aCK6zI6EtX2m5CrnJh
fRChp9MJV3OesPV93rcM2Vd+grf8qTw77TLcglYcSuHvBHfVbHaCnBx0z5ogYozR
EiuNV/hxTgfJdhQVN5WwGvRJe0pb7RaLtz4PF8rHJlTitQw37uGmOsW4bBZU1F6B
Nz/Os9BPLBBBnQvHUQmmp/aGJBga0mRRW3VFFOt7XgLJR2PR9jCTQZstleudSddj
SRemVvfm0zcsIO4IPsCKdkUMh4+eW3H0cc2oFggIDz72+uUYnyxtOx1vv7RzVETJ
BwMG/VDnfNZ5lozTKhlKZhVyVijy3ObMax8pLXixJcKrqc0CAwEAAaMhMB8wHQYD
VR0OBBYEFP6DHoFBdNVmHwc6LZnLwcDcKnvzMA0GCSqGSIb3DQEBCwUAA4IBAQA9
VRDbEAFWmqKq+LPRqGmjiqGE0rTOsoKSDWn0Zsre31H2vsXy8BUW69rjhwMXEONl
5ybZCHnU8GLawFzrVQJnuV77XhIDuJhIz81guy0K872YcrNuhlIS7ahxXJszwgPe
Tp313rJKUA44DIuF18WjWjwQL8bU80xiJJcyuR2mViOFgcfIABmSzvvMx8nHxp7W
C9woea6TMamq7GQmIky9ZVy7OcfOSCygK0TU6Y2qNcIuKl4xtvY07msGFLifXp6s
A9A4aS610tqPNInh5zokI2m/y7nvCq7BA9n+5HvMKJcxW2G+AU7R7IFJctsPL07g
1MDuvzVplpxKk3tkj8Ou
-----END CERTIFICATE-----
27 changes: 27 additions & 0 deletions integration_tests/mqtt/setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env bash

echo "mqtt/setup: Tests setup for mqtt"

CONTAINER_TAG="eclipse-mosquitto"
CONTAINER_NAME="zgrab_mqtt"

# If the container is already running, use it.
if docker ps --filter "name=$CONTAINER_NAME" | grep -q $CONTAINER_NAME; then
echo "mqtt/setup: Container $CONTAINER_NAME already running -- nothing to setup"
exit 0
fi

DOCKER_RUN_FLAGS="--rm --name $CONTAINER_NAME -td -v ./mosquitto.conf:/mosquitto/config/mosquitto.conf -v ./server.pem:/mosquitto/server.pem -v ./server.key:/mosquitto/server.key"

# If it is not running, try launching it -- on success, use that.
echo "mqtt/setup: Trying to launch $CONTAINER_NAME..."
if ! docker run $DOCKER_RUN_FLAGS $CONTAINER_TAG; then
echo "eclipse-mosquitto launch fail"

#echo "mqtt/setup: Building docker image $CONTAINER_TAG..."
# If it fails, build it from ./container/Dockerfile
#docker build -t $CONTAINER_TAG ./container
# Try again
#echo "mqtt/setup: Launching $CONTAINER_NAME..."
#docker run $DOCKER_RUN_FLAGS $CONTAINER_TAG
fi
27 changes: 27 additions & 0 deletions integration_tests/mqtt/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env bash

set -e
MODULE_DIR=$(dirname $0)
ZGRAB_ROOT=$(git rev-parse --show-toplevel)
ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output

mkdir -p $ZGRAB_OUTPUT/mqtt

CONTAINER_NAME=zgrab_mqtt

OUTPUT_FILE=$ZGRAB_OUTPUT/mqtt/mqtt.json

echo "mqtt/test: Tests runner for mqtt"
# TODO FIXME: Add any necessary flags or additional tests
echo -e ",target,mqtt
,target,mqtt-tls
,target,mqtt-v5
,target,mqtt-tls-v5" | docker run --rm -i -v ./multiple.ini:/multiple.ini --link $CONTAINER_NAME:target zgrab2_runner multiple -c /multiple.ini> $OUTPUT_FILE
#CONTAINER_NAME=$CONTAINER_NAME $ZGRAB_ROOT/docker-runner/docker-run.sh mqtt --v5 >> $OUTPUT_FILE

# Dump the docker logs
echo "mqtt/test: BEGIN docker logs from $CONTAINER_NAME [{("
docker logs --tail all $CONTAINER_NAME
echo ")}] END docker logs from $CONTAINER_NAME"

# TODO: If there are any other relevant log files, dump those to stdout here.
7 changes: 7 additions & 0 deletions modules/mqtt.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package modules

import "github.com/zmap/zgrab2/modules/mqtt"

func init() {
mqtt.RegisterModule()
}
Loading