SourceCodester Online Eyewear Shop 1.0 POST Request oews/classes/Users.php registration firstname/middlename/lastname/email/contact cross site scripting

CVSS Punteggio meta temporaneoPrezzo attuale dell'exploit (≈)Punteggio di interesse CTI
5.3$0-$5k0.00

Riassuntoinformazioni

In SourceCodester Online Eyewear Shop 1.0 stata rilevata una vulnerabilità di livello problematico. Da questa vulnerabilità è interessato la funzione registration del file oews/classes/Users.php del componente POST Request Handler. Mediante la manipolazione del parametro firstname/middlename/lastname/email/contact di un input sconosciuto conseguenza di una vulerabilità di classe cross site scripting. Questa vulnerabilità è conosciuta come CVE-2023-0732. L'attacco può essere lanciato da remoto. Inoltre, è presente un exploit disponibile.

Dettagliinformazioni

Un punto critico di livello problematico è stato rilevato in SourceCodester Online Eyewear Shop 1.0. Interessato da questa vulnerabilità è la funzione registration del file oews/classes/Users.php del componente POST Request Handler. Attraverso l'influenza del parametro firstname/middlename/lastname/email/contact di un input sconosciuto per mezzo di una vulerabilità di classe cross site scripting. Non sono ancora conosciuti gli effetti esatti di un attacco con sussesso.

La vulnerabilità è stata pubblicata in data 07/02/2023 da Pierfrancesco Conti da Cyber Partners (non definito). Questo punto di criticità è identificato come CVE-2023-0732. I dettagli tecnici e un metodo di utilizzo sono conosciuti. La ragione di questa vulnerabilità è questa parte di codice:

function registration(){
		if(!empty($_POST['password']))
			$_POST['password'] = md5($_POST['password']);
		else
		unset($_POST['password']);
		extract($_POST);
		$main_field = ['firstname', 'middlename', 'lastname', 'gender', 'contact', 'email', 'status', 'password'];
		$data = "";
		$check = $this->conn->query("SELECT * FROM `customer_list` where email = '{$email}' ".($id > 0 ? " and id!='{$id}'" : "")." ")->num_rows;
		if($check > 0){
			$resp['status'] = 'failed';
			$resp['msg'] = 'Email already exists.';
			return json_encode($resp);
		}
		foreach($_POST as $k => $v){
			$v = $this->conn->real_escape_string($v);
			if(in_array($k, $main_field)){
				if(!empty($data)) $data .= ", ";
				$data .= " `{$k}` = '{$v}' ";
			}
		}
		if(empty($id)){
			$sql = "INSERT INTO `customer_list` set {$data} ";
		}else{
			$sql = "UPDATE `customer_list` set {$data} where id = '{$id}' ";
		}
		$save = $this->conn->query($sql);
		if($save){
			$uid = !empty($id) ? $id : $this->conn->insert_id;
			$resp['status'] = 'success';
			$resp['uid'] = $uid;
			if(!empty($id))
				$resp['msg'] = 'User Details has been updated successfully';
			else
				$resp['msg'] = 'Your Account has been created successfully';

			if(!empty($_FILES['img']['tmp_name'])){
				if(!is_dir(base_app."uploads/customers"))
					mkdir(base_app."uploads/customers");
				$ext = pathinfo($_FILES['img']['name'], PATHINFO_EXTENSION);
				$fname = "uploads/customers/$uid.png";
				$accept = array('image/jpeg','image/png');
				if(!in_array($_FILES['img']['type'],$accept)){
					$resp['msg'] = "Image file type is invalid";
				}
				if($_FILES['img']['type'] == 'image/jpeg')
					$uploadfile = imagecreatefromjpeg($_FILES['img']['tmp_name']);
				elseif($_FILES['img']['type'] == 'image/png')
					$uploadfile = imagecreatefrompng($_FILES['img']['tmp_name']);
				if(!$uploadfile){
					$resp['msg'] = "Image is invalid";
				}
				$temp = imagescale($uploadfile,200,200);
				if(is_file(base_app.$fname))
				unlink(base_app.$fname);
				$upload =imagepng($temp,base_app.$fname);
				if($upload){
					$this->conn->query("UPDATE `customer_list` set `avatar` = CONCAT('{$fname}', '?v=',unix_timestamp(CURRENT_TIMESTAMP)) where id = '{$uid}'");
				}
				imagedestroy($temp);
			}
			if(!empty($uid) && $this->settings->userdata('login_type') != 1){
				$user = $this->conn->query("SELECT * FROM `customer_list` where id = '{$uid}' ");
				if($user->num_rows > 0){
					$res = $user->fetch_array();
					foreach($res as $k => $v){
						if(!is_numeric($k) && $k != 'password'){
							$this->settings->set_userdata($k, $v);
						}
					}
					$this->settings->set_userdata('login_type', '2');
				}
			}
		}else{
			$resp['status'] = 'failed';
			$resp['msg'] = $this->conn->error;
			$resp['sql'] = $sql;
		}
		if($resp['status'] == 'success' && isset($resp['msg']))
		$this->settings->set_flashdata('success', $resp['msg']);
		return json_encode($resp);
	}

È stato dichiarato come prova di concetto. Cercando inurl:oews/classes/Users.php è possibile trovare obiettivi vulnerabili con Google Hacking.

Informazioni riguardo una possibile contromisura non sono al momento disponibili. Si suggerisce di sostituire il prodotto con uno equivalente.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Prodottoinformazioni

Fornitore

Nome

Versione

Licenza

Sito web

CPE 2.3informazioni

CPE 2.2informazioni

CVSSv4informazioni

VulDB Vettore: 🔍
VulDB Affidabilità: 🔍

CVSSv3informazioni

VulDB Punteggio meta-base: 5.5
VulDB Punteggio meta temporaneo: 5.3

VulDB Punteggio di base: 3.5
VulDB Punteggio temporaneo: 3.2
VulDB Vettore: 🔍
VulDB Affidabilità: 🔍

Ricercatore Punteggio di base: 9.0
Ricercatore Vettore: 🔍

NVD Punteggio di base: 6.1
NVD Vettore: 🔍

CNA Punteggio di base: 3.5
CNA Vettore (VulDB): 🔍

CVSSv2informazioni

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VettoreComplessitàAutenticazioneRiservatezzaIntegritàDisponibilità
SbloccareSbloccareSbloccareSbloccareSbloccareSbloccare
SbloccareSbloccareSbloccareSbloccareSbloccareSbloccare
SbloccareSbloccareSbloccareSbloccareSbloccareSbloccare

VulDB Punteggio di base: 🔍
VulDB Punteggio temporaneo: 🔍
VulDB Affidabilità: 🔍

Ricercatore Punteggio di base: 🔍
NVD Punteggio di base: 🔍

Sfruttamentoinformazioni

Classe: Cross site scripting
CWE: CWE-79 / CWE-94 / CWE-74
CAPEC: 🔍
ATT&CK: 🔍

Fisico: No
Locale: No
Remoto: Si

Disponibilità: 🔍
Stato: Prova di concetto
Google Hack: 🔍

EPSS Score: 🔍
EPSS Percentile: 🔍

Previsione dei prezzi: 🔍
Preventivo attuale: 🔍

0-DaySbloccareSbloccareSbloccareSbloccare
OggiSbloccareSbloccareSbloccareSbloccare

Intelligence sulle minacceinformazioni

Interesse: 🔍
Attori attivi: 🔍
Gruppi APT attivi: 🔍

Contromisureinformazioni

Raccomandazione: nessuna contromisura conosciuta
Stato: 🔍

Tempo 0 giorni: 🔍

Sequenza temporaleinformazioni

07/02/2023 🔍
07/02/2023 +0 giorni 🔍
07/02/2023 +0 giorni 🔍
27/04/2025 +810 giorni 🔍

Fontiinformazioni

Fornitore: sourcecodester.com

Ricercatore: Pierfrancesco Conti
Organizzazione: Cyber Partners
Stato: Non definito

CVE: CVE-2023-0732 (🔍)
GCVE (CVE): GCVE-0-2023-0732
GCVE (VulDB): GCVE-100-220369
scip Labs: https://www.scip.ch/en/?labs.20161013

Voceinformazioni

Data di creazione: 07/02/2023 21:04
Aggiornato: 27/04/2025 23:54
Cambiamenti: 07/02/2023 21:04 (39), 08/02/2023 14:11 (8), 08/02/2023 14:12 (15), 08/02/2023 14:15 (4), 06/03/2023 11:01 (2), 06/03/2023 11:07 (28), 07/09/2024 16:10 (22), 27/04/2025 23:54 (3)
Completa: 🔍
Inviato: CP_offensive_team
Committer: CP_offensive_team
Cache ID: 216::103

Inviainformazioni

Accettato

  • Invia #85725: SourceCodester Online Eyewear Shop 1.0 Cross-Site Scripting (di CP_offensive_team)

Duplicato

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Discussione

Ancora nessun commento. Lingue: it + ro + en.

Effettua il login per commentare.

Do you need the next level of professionalism?

Upgrade your account now!