4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / check.py PY
import re
import urllib3
import requests
import concurrent.futures
from distutils.version import LooseVersion
import warnings

warnings.filterwarnings("ignore", category=DeprecationWarning)
urllib3.disable_warnings()

GREEN = "\033[92m"
RESET = "\033[0m"

exploit_header = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"
}
maybeExploitFile = open("maybe-exploit.txt", "a+", encoding="utf-8")

def checkVersion(url):
    try:
        response = requests.get(url=url + "/Login?Reason=0", headers=exploit_header, verify=False)
        serverString = response.headers["Server"]
        version = re.search(r"ScreenConnect\/([\d\.]+)-\d+", serverString).group(1)
        if LooseVersion(version) <= LooseVersion("23.9.7"):
            maybeExploitFile.write(url + "\n")
            print(f"[+] Version: {version} <= 23.9.7. There may be a vulnerability in {url}")
        else:
            pass
    except:
        pass

def main():
    with open("urls.txt", "r") as file:
        urls = [line.strip() for line in file.readlines()]
    max_workers = 100
    with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:
        executor.map(checkVersion, urls)

if __name__ == "__main__":
    main()
    maybeExploitFile.close()