CVE-2014-125041 (PHP, published 2023-01-05T15:15Z)
Description: value: A vulnerability classified as critical was found in Miccighel PR-CWT. This vulnerability affects unknown code. The manipulation leads to sql injection. The patch is identified as e412127d07004668e5a213932c94807d87067a1f. It is recommended to apply a patch to fix this issue. VDB-217486 is the identifier assigned to this vulnerability.
Severity: nan (CVSS v3 base score: 9.8)
Weakness: CWE-89 \u2014 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
The product constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component. Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data.
Repository: https://github.com/Miccighel/PR-CWT
Files changed:
html/moduloEliminazioneImmagineIntermedio.php
html/moduloInserimentoImmagineIntermedio.php
html/moduloModificaCategoriaIntermedio.php
html/moduloModificaConsoleIntermedio.php
html/moduloModificaProdottoIntermedio.php
html/moduloModificaUtente.php
html/moduloVisualizzazioneCarrello.php
html/moduloVisualizzazioneCatalogo.php
html/moduloVisualizzazioneFattura.php
html/testa.php
script/funzioni.php
script/scriptAmministrazione.php
script/scriptConfermaAcquisto.php
script/scriptControlloLoginAdmin.php
script/scriptEliminazioneCarrello.php
script/scriptEliminazioneCategoria.php
script/scriptEliminazioneConsole.php
script/scriptEliminazioneProdotto.php
script/scriptInserimentoCarrello.php
script/scriptInserimentoCategoria.php
script/scriptInserimentoConsole.php
script/scriptInserimentoImmagine.php
script/scriptInserimentoProdotto.php
script/scriptInserimentoUtente.php
script/scriptModificaCategoria.php
script/scriptModificaConsole.php
script/scriptModificaProdotto.php
script/scriptModificaUtente.php
settings/configurazione.inc
Commit message: aggiunta funzione rendi sicuro per evitare sql injection, corretto bug in HOME_WEB


Vulnerable code:
    $query = sprintf("SELECT galleria FROM tblprodotti WHERE codiceprodotto='%s'", $_POST['codiceprodotto']);
    $query = sprintf("SELECT codiceprodotto, nomeprodotto FROM tblprodotti WHERE codiceprodotto='" . $_POST['codiceprodotto'] . "'");
    $query = sprintf("SELECT * FROM tblcategorie WHERE nome='" . $_POST['nome'] . "'");
    $query = sprintf("SELECT * FROM tblconsole WHERE nome='" . $_POST['nome'] . "'");
    $query = sprintf("SELECT * FROM tblprodotti WHERE codiceprodotto='" . $_POST['codiceprodotto'] . "'");
    $query = sprintf("SELECT * FROM tblutenti WHERE user='" . $_SESSION['username']. "'");
    JOIN tblprodotticonsole AS pc ON p.codiceprodotto = pc.codiceprodotto WHERE u.user='%s'", $_SESSION['username']);
        src="' . HOME_WEB . '/' . $cartellaImmaginePrincipale . '/thumb/' . $dati[$i]['immagine'] . '">' .
    $query = sprintf("SELECT p.codiceprodotto, p.nomeprodotto, c.quantita, p.prezzo FROM tblcarrelli AS c JOIN tblprodotti AS p ON c.codiceprodotto = p.codiceprodotto WHERE c.codiceutente='%s'",$_POST['codicefiscale']);
    <style type="text/css">
        @import url(<?php print HOME_WEB;?>css/stile.css);
        @import url(<?php print HOME_WEB;?>css/jquery-ui.min.css);
        @import url(<?php print HOME_WEB;?>css/style.css);
        @import url(<?php print HOME_WEB;?>css/elastislide.css);
    </style>
    $query = "SELECT * FROM tblprodotti AS p LEFT JOIN tblprodotticonsole AS pc ON p.codiceprodotto = pc.codiceprodotto WHERE nomeprodotto LIKE '%".$nomeCercato."%' ORDER BY nomeprodotto ASC";
    $query = "SELECT * FROM tblcategorie WHERE nome LIKE '%".$nomeCercato."%'"."ORDER BY nome ASC";
    $query = "SELECT * FROM tblconsole WHERE nome LIKE '%".$nomeCercato."%'"."ORDER BY nome ASC";
    $query = "SELECT user, dirittoAmministratore FROM tblutenti WHERE user != '".$_SESSION['username']."' AND user LIKE '%".$utenteCercato."%'"." ORDER BY user ASC";
        $query = sprintf("UPDATE tblutenti SET dirittoAmministratore='%s' WHERE user='%s'", $_POST['dirittoAmministratore'][$i], $_POST['user'][$i]);
    $query = sprintf("SELECT codicefiscale FROM tblutenti WHERE user='".$_SESSION['username']."'");
    $query = sprintf("SELECT p.codiceprodotto, p.nomeprodotto, c.quantita, p.prezzo FROM tblcarrelli AS c JOIN tblprodotti AS p ON c.codiceprodotto = p.codiceprodotto WHERE c.codiceutente='%s'",$codiceFiscale);
        $query = sprintf("SELECT numeropezzi FROM tblprodotti WHERE codiceprodotto='%s'",$prodotto['codiceprodotto']);
        $query = sprintf("UPDATE tblprodotti SET numeropezzi='%d' WHERE codiceprodotto='%s'",$quantitàAggiornata,$prodotto['codiceprodotto']);
    $query = sprintf("DELETE FROM tblcarrelli WHERE codiceutente='%s'",$codiceFiscale);
    $query = sprintf("SELECT user, psw, dirittoamministratore FROM tblutenti WHERE user=" . "'" . $_POST['username'] . "'" . " AND " . "psw=" . "'" . sha1($_POST['password']) . "'");
             WHERE u.user='%s' AND c.codiceprodotto='%s'", $utente, $codiceEliminazione);
        $query = sprintf("SELECT codicefiscale FROM tblutenti WHERE user='%s'", $utente);
        $query = sprintf("UPDATE tblCarrelli SET quantita='%d' WHERE codiceprodotto='%s' AND codiceutente='%s'", $quantitaAggiornata, $codiceEliminazione, $codiceFiscale);
        $query = sprintf("SELECT quantita FROM tblcarrelli WHERE codiceprodotto='%s' AND codiceutente='%s'", $codiceEliminazione, $codiceFiscale);
            $query = sprintf("DELETE FROM tblcarrelli WHERE codiceutente='%s' AND codiceprodotto='%s'", $codiceFiscale, $codiceEliminazione);
    $query = sprintf("SELECT COUNT(codiceprodotto) FROM tblprodotti WHERE categoria='%s'", $_POST['nome']);
        $query = sprintf("DELETE FROM tblcategorie WHERE nome='%s'", $_POST['nome']);
    $query = sprintf("SELECT COUNT(console) FROM tblprodotticonsole WHERE console='%s'", $_POST['nome']);
        $query = sprintf("DELETE FROM tblconsole WHERE nome='%s'", $_POST['nome']);
    $query = sprintf("DELETE FROM tblcarrelli WHERE codiceprodotto='%s'", $_POST['codiceprodotto']);
    $query = sprintf("DELETE FROM tblprodotticonsole WHERE codiceprodotto='%s'", $_POST['codiceprodotto']);
    $query = sprintf("SELECT galleria, immagine FROM tblprodotti WHERE codiceprodotto='%s'", $_POST['codiceprodotto']);
    $query = sprintf("SELECT COUNT(galleria) FROM tblprodotti WHERE galleria ='%s'", $dati[0]['galleria']);
    $query = sprintf("DELETE FROM tblprodotti WHERE codiceprodotto='%s'", $_POST['codiceprodotto']);
    $query = sprintf("SELECT numeropezzi FROM tblprodotti WHERE codiceprodotto='%s'", $codiceInserimento);
             WHERE u.user='%s' AND c.codiceprodotto='%s'", $utente, $codiceInserimento);
            $query = sprintf("INSERT INTO tblcarrelli(codiceprodotto, codiceutente, quantita) VALUE ('%s','%s','%d')", $codiceInserimento, $codiceFiscale, $quantitaInserimento);
                $query = sprintf("UPDATE tblcarrelli SET quantita='%d' WHERE codiceprodotto='%s' AND codiceutente ='%s'", $quantitaTotale, $codiceInserimento, $codiceFiscale);
    $query = sprintf("INSERT INTO tblcategorie(nome) VALUE ('%s')", $_POST['nome']);
        $query = sprintf("INSERT INTO tblconsole(nome) VALUE ('%s')", $_POST['nome']);
        $query = sprintf("INSERT INTO tblconsole(nome,produttore) VALUE ('%s','%s')", $_POST['nome'], $_POST['produttore']);
    $query = sprintf("SELECT galleria FROM tblprodotti WHERE codiceprodotto='" . $_POST['codiceprodotto'] . "'");
    $query = sprintf("INSERT INTO tblprodotti(codiceprodotto, nomeprodotto, descrizione, prezzo, numeropezzi, immagine, galleria, categoria) VALUE ('%s','%s','%s','%d','%d','%s','%s','%s')", strtoupper(trim($_POST['codiceprodotto'])), $_POST['nomeprodotto'], $_POST['descrizione'], $_POST['prezzo'], $_POST['numeropezzi'], $_FILES['immagine']['name'], trim($_POST['galleria']), $_POST['categoria']);
    $query = sprintf("INSERT INTO tblprodotticonsole(codiceprodotto, console) VALUE ('%s','%s')", $_POST['codiceprodotto'], $_POST['console']);
    $query = sprintf("INSERT INTO tblUtenti(codicefiscale, nome, cognome, datanascita, citta, indirizzo, email, telefono, user, psw, dirittoamministratore) VALUE ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", strtoupper($_POST['codicefiscale']), $_POST['nome'], $_POST['cognome'], $_POST['datanascita'],$_POST['citta'], $_POST['indirizzo'], $_POST['email'], $_POST['telefono'], $_POST['username'], sha1($_POST['password']), "no");
    $query = sprintf("UPDATE tblcategorie SET nome='%s' WHERE nome='%s'", $_POST['nome'], $_POST['nomeOld']);
        $query = sprintf("UPDATE tblconsole SET nome='%s', produttore=NULL WHERE nome='%s'", $_POST['nome'], $_POST['nomeOld']);
        $query = sprintf("UPDATE tblconsole SET nome='%s', produttore='%s' WHERE nome='%s'", $_POST['nome'], $_POST['produttore'], $_POST['nomeOld']);
    $query = sprintf("SELECT galleria, immagine FROM tblprodotti WHERE codiceprodotto='%s'", $_POST['codiceprodotto']);
    $query = sprintf("UPDATE tblprodotti SET nomeprodotto='%s', descrizione='%s', prezzo='%d', numeropezzi='%d', immagine='%s',galleria='%s',categoria='%s' WHERE codiceprodotto='%s'", $_POST['nomeprodotto'], $_POST['descrizione'], $_POST['prezzo'], $_POST['numeropezzi'], $_FILES['immagine']['name'], $_POST['galleria'], $_POST['categoria'], $_POST['codiceprodotto']);
    $query = sprintf("UPDATE tblprodotti SET galleria='%s' WHERE galleria='%s'", $_POST['galleria'], $galleriaOld);
    $query = sprintf("UPDATE tblutenti SET codicefiscale='%s', nome='%s', cognome='%s', datanascita='%s',citta='%s', indirizzo='%s', email='%s', telefono='%s', user='%s', psw='%s' WHERE codicefiscale='%s'", strtoupper($_POST['codicefiscale']), $_POST['nome'], $_POST['cognome'], $_POST['datanascita'],$_POST['citta'], $_POST['indirizzo'], $_POST['email'], $_POST['telefono'], $_POST['username'], sha1($_POST['password']),$_POST['oldcodicefiscale']);
define('HOME_WEB','/Complementi/Progetto/');
define('PASSWORD','');

Fixed code:
    $query = sprintf("SELECT galleria FROM tblprodotti WHERE codiceprodotto='%s'", rendiSicuro($_POST['codiceprodotto']));
    $query = sprintf("SELECT codiceprodotto, nomeprodotto FROM tblprodotti WHERE codiceprodotto='" . rendiSicuro($_POST['codiceprodotto']) . "'");
    $query = sprintf("SELECT * FROM tblcategorie WHERE nome='" . rendiSicuro($_POST['nome']) . "'");
    $query = sprintf("SELECT * FROM tblconsole WHERE nome='" . rendiSicuro($_POST['nome']) . "'");
    $query = sprintf("SELECT * FROM tblprodotti WHERE codiceprodotto='" . rendiSicuro($_POST['codiceprodotto']) . "'");
    $query = sprintf("SELECT * FROM tblutenti WHERE user='" . rendiSicuro($_SESSION['username']). "'");
    JOIN tblprodotticonsole AS pc ON p.codiceprodotto = pc.codiceprodotto WHERE u.user='%s'", rendiSicuro($_SESSION['username']));
        src="' . HOME_WEB . $cartellaImmaginePrincipale . '/thumb/' . $dati[$i]['immagine'] . '">' .
    $query = sprintf("SELECT p.codiceprodotto, p.nomeprodotto, c.quantita, p.prezzo FROM tblcarrelli AS c JOIN tblprodotti AS p ON c.codiceprodotto = p.codiceprodotto WHERE c.codiceutente='%s'",rendiSicuro($_POST['codicefiscale']));
    <link rel="stylesheet" href="<?php print HOME_WEB;?>css/stile.css" type="text/css">
    <link rel="stylesheet" href="<?php print HOME_WEB;?>css/jquery-ui.min.css" type="text/css">
    <link rel="stylesheet" href="<?php print HOME_WEB;?>css/style.css" type="text/css">
    <link rel="stylesheet" href="<?php print HOME_WEB;?>css/elastislide.css" type="text/css">
function rendiSicuro($parametro){
    // La funzione viene impiegata per evitare eventuali tentativi di sql injection nel database
    if(get_magic_quotes_gpc()){
        return $parametro;
    }else{
        return mysql_real_escape_string($parametro);
    }
}

    $query = "SELECT * FROM tblprodotti AS p LEFT JOIN tblprodotticonsole AS pc ON p.codiceprodotto = pc.codiceprodotto WHERE nomeprodotto LIKE '%".rendiSicuro($nomeCercato)."%' ORDER BY nomeprodotto ASC";
    $query = "SELECT * FROM tblcategorie WHERE nome LIKE '%".rendiSicuro($nomeCercato)."%'"."ORDER BY nome ASC";
    $query = "SELECT * FROM tblconsole WHERE nome LIKE '%".rendiSicuro($nomeCercato)."%'"."ORDER BY nome ASC";
    $query = "SELECT user, dirittoAmministratore FROM tblutenti WHERE user != '".rendiSicuro($_SESSION['username'])."' AND user LIKE '%".rendiSicuro($utenteCercato)."%'"." ORDER BY user ASC";
        $query = sprintf("UPDATE tblutenti SET dirittoAmministratore='%s' WHERE user='%s'", rendiSicuro($_POST['dirittoAmministratore'][$i]), rendiSicuro($_POST['user'][$i]));
    $query = sprintf("SELECT codicefiscale FROM tblutenti WHERE user='".rendiSicuro($_SESSION['username'])."'");
    $query = sprintf("SELECT p.codiceprodotto, p.nomeprodotto, c.quantita, p.prezzo FROM tblcarrelli AS c JOIN tblprodotti AS p ON c.codiceprodotto = p.codiceprodotto WHERE c.codiceutente='%s'",rendiSicuro($codiceFiscale));
        $query = sprintf("SELECT numeropezzi FROM tblprodotti WHERE codiceprodotto='%s'",rendiSicuro($prodotto['codiceprodotto']));
        $query = sprintf("UPDATE tblprodotti SET numeropezzi='%d' WHERE codiceprodotto='%s'",rendiSicuro($quantitàAggiornata),rendiSicuro($prodotto['codiceprodotto']));
    $query = sprintf("DELETE FROM tblcarrelli WHERE codiceutente='%s'",rendiSicuro($codiceFiscale));
    $query = sprintf("SELECT user, psw, dirittoamministratore FROM tblutenti WHERE user=" . "'" . rendiSicuro($_POST['username']) . "'" . " AND " . "psw=" . "'" . rendiSicuro(sha1($_POST['password'])) . "'");
             WHERE u.user='%s' AND c.codiceprodotto='%s'", rendiSicuro($utente), rendiSicuro($codiceEliminazione));
        $query = sprintf("SELECT codicefiscale FROM tblutenti WHERE user='%s'", rendiSicuro($utente));
        $query = sprintf("UPDATE tblCarrelli SET quantita='%d' WHERE codiceprodotto='%s' AND codiceutente='%s'", rendiSicuro($quantitaAggiornata), rendiSicuro($codiceEliminazione), rendiSicuro($codiceFiscale));
        $query = sprintf("SELECT quantita FROM tblcarrelli WHERE codiceprodotto='%s' AND codiceutente='%s'", rendiSicuro($codiceEliminazione), rendiSicuro($codiceFiscale));
            $query = sprintf("DELETE FROM tblcarrelli WHERE codiceutente='%s' AND codiceprodotto='%s'", rendiSicuro($codiceFiscale), rendiSicuro($codiceEliminazione));
    $query = sprintf("SELECT COUNT(codiceprodotto) FROM tblprodotti WHERE categoria='%s'", rendiSicuro($_POST['nome']));
        $query = sprintf("DELETE FROM tblcategorie WHERE nome='%s'", rendiSicuro($_POST['nome']));
    $query = sprintf("SELECT COUNT(console) FROM tblprodotticonsole WHERE console='%s'", rendiSicuro($_POST['nome']));
        $query = sprintf("DELETE FROM tblconsole WHERE nome='%s'", rendiSicuro($_POST['nome']));
    $query = sprintf("DELETE FROM tblcarrelli WHERE codiceprodotto='%s'", rendiSicuro($_POST['codiceprodotto']));
    $query = sprintf("DELETE FROM tblprodotticonsole WHERE codiceprodotto='%s'", rendiSicuro($_POST['codiceprodotto']));
    $query = sprintf("SELECT galleria, immagine FROM tblprodotti WHERE codiceprodotto='%s'", rendiSicuro($_POST['codiceprodotto']));
    $query = sprintf("SELECT COUNT(galleria) FROM tblprodotti WHERE galleria ='%s'", rendiSicuro($dati[0]['galleria']));
    $query = sprintf("DELETE FROM tblprodotti WHERE codiceprodotto='%s'", rendiSicuro($_POST['codiceprodotto']));
    $query = sprintf("SELECT numeropezzi FROM tblprodotti WHERE codiceprodotto='%s'", rendiSicuro($codiceInserimento));
             WHERE u.user='%s' AND c.codiceprodotto='%s'", rendiSicuro($utente), rendiSicuro($codiceInserimento));
            $query = sprintf("INSERT INTO tblcarrelli(codiceprodotto, codiceutente, quantita) VALUE ('%s','%s','%d')", rendiSicuro($codiceInserimento), rendiSicuro($codiceFiscale), rendiSicuro($quantitaInserimento));
                $query = sprintf("UPDATE tblcarrelli SET quantita='%d' WHERE codiceprodotto='%s' AND codiceutente ='%s'", rendiSicuro($quantitaTotale), rendiSicuro($codiceInserimento), rendiSicuro($codiceFiscale));
    $query = sprintf("INSERT INTO tblcategorie(nome) VALUE ('%s')", rendiSicuro($_POST['nome']));
        $query = sprintf("INSERT INTO tblconsole(nome) VALUE ('%s')", rendiSicuro($_POST['nome']));
        $query = sprintf("INSERT INTO tblconsole(nome,produttore) VALUE ('%s','%s')", rendiSicuro($_POST['nome']), rendiSicuro($_POST['produttore']));
    $query = sprintf("SELECT galleria FROM tblprodotti WHERE codiceprodotto='" . rendiSicuro($_POST['codiceprodotto']) . "'");
    $query = sprintf("INSERT INTO tblprodotti(codiceprodotto, nomeprodotto, descrizione, prezzo, numeropezzi, immagine, galleria, categoria) VALUE ('%s','%s','%s','%d','%d','%s','%s','%s')", rendiSicuro(strtoupper(trim($_POST['codiceprodotto']))), rendiSicuro($_POST['nomeprodotto']), rendiSicuro($_POST['descrizione']), rendiSicuro($_POST['prezzo']), rendiSicuro($_POST['numeropezzi']), rendiSicuro($_FILES['immagine']['name']), rendiSicuro(trim($_POST['galleria'])), rendiSicuro($_POST['categoria']));
    $query = sprintf("INSERT INTO tblprodotticonsole(codiceprodotto, console) VALUE ('%s','%s')", rendiSicuro($_POST['codiceprodotto']), rendiSicuro($_POST['console']));
    $query = sprintf("INSERT INTO tblUtenti(codicefiscale, nome, cognome, datanascita, citta, indirizzo, email, telefono, user, psw, dirittoamministratore) VALUE ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", rendiSicuro(strtoupper($_POST['codicefiscale'])), rendiSicuro($_POST['nome']), rendiSicuro($_POST['cognome']), rendiSicuro($_POST['datanascita']),rendiSicuro($_POST['citta']), rendiSicuro($_POST['indirizzo']), rendiSicuro($_POST['email']), rendiSicuro($_POST['telefono']), rendiSicuro($_POST['username']), rendiSicuro(sha1($_POST['password'])), rendiSicuro("no"));
    $query = sprintf("UPDATE tblcategorie SET nome='%s' WHERE nome='%s'", rendiSicuro($_POST['nome']), rendiSicuro($_POST['nomeOld']));
        $query = sprintf("UPDATE tblconsole SET nome='%s', produttore=NULL WHERE nome='%s'", rendiSicuro($_POST['nome']), rendiSicuro($_POST['nomeOld']));
        $query = sprintf("UPDATE tblconsole SET nome='%s', produttore='%s' WHERE nome='%s'", rendiSicuro($_POST['nome']), rendiSicuro($_POST['produttore']), rendiSicuro($_POST['nomeOld']));
    $query = sprintf("SELECT galleria, immagine FROM tblprodotti WHERE codiceprodotto='%s'", rendiSicuro($_POST['codiceprodotto']));
    $query = sprintf("UPDATE tblprodotti SET nomeprodotto='%s', descrizione='%s', prezzo='%d', numeropezzi='%d', immagine='%s',galleria='%s',categoria='%s' WHERE codiceprodotto='%s'", rendiSicuro($_POST['nomeprodotto']), rendiSicuro($_POST['descrizione']), rendiSicuro($_POST['prezzo']), rendiSicuro($_POST['numeropezzi']), rendiSicuro($_FILES['immagine']['name']), rendiSicuro($_POST['galleria']), rendiSicuro($_POST['categoria']), rendiSicuro($_POST['codiceprodotto']));
    $query = sprintf("UPDATE tblprodotti SET galleria='%s' WHERE galleria='%s'", rendiSicuro($_POST['galleria']), rendiSicuro($galleriaOld));
    $query = sprintf("UPDATE tblutenti SET codicefiscale='%s', nome='%s', cognome='%s', datanascita='%s',citta='%s', indirizzo='%s', email='%s', telefono='%s', user='%s', psw='%s' WHERE codicefiscale='%s'", rendiSicuro(strtoupper($_POST['codicefiscale'])), rendiSicuro($_POST['nome']), rendiSicuro($_POST['cognome']), rendiSicuro($_POST['datanascita']),rendiSicuro($_POST['citta']), rendiSicuro($_POST['indirizzo']), rendiSicuro($_POST['email']), rendiSicuro($_POST['telefono']), rendiSicuro($_POST['username']), rendiSicuro(sha1($_POST['password'])),rendiSicuro($_POST['oldcodicefiscale']));
define('HOME_WEB','/');
define('PASSWORD','root');