Roma – Gent.le redazione di Punto-Informatico,
vi scrivo per segnalarvi una grave falla che colpisce AdMentor ,
un diffusissimo script per la gestione di banners online. Realizzato sia con le Asp, sia con Php, soffre di un buco per colpa del quale, chiunque può accedere al Pannello di
controllo come amministratore, con le problematiche che si possono immaginare.
Caricando infatti la pagina di Login (qualcosa
tipo nomesito.it/admentor/admin/login.asp o nomesito.it/phpadmentor/admin/index.php a seconda delle
versioni) e inserendo la stringa
‘ or ”=’
Come username e password, si riesce ad accedere come amministratore. È
una stringa famosa per chi progetta applicazioni protette, ma evidentemente chi ha realizzato AdMentor non
vi ha fatto attenzione.
Consiglio caldamente a chiunque utilizzasse questo
script, di risolvere il problema quanto prima, modificando la stringa di connessione al database, oppure intercettando tale stringa nel
seguente modo:
If sUser = “‘ or ”='”
Then
Response.redirect ” pagina di login ”
End
If
Da inserire nel file admentorsecurity.asp (prima
dell connessione al database), presente nella directory include .
Anche con Php, risolvere il problema non è
difficile, modificando la stringa di connessione al database oppure aggiungendo queste righe:
if ($username == “‘ or ”='”)
{
header(“location: pagina di login “);
}
Il
codice va inserito inclogin.php , presente nella cartella admin .
Un caro saluto!
Roberto Abbate
Web developer di Risorse.net – Comunità virtuale per webmaster
Update : Alcuni lettori ci hanno scritto facendo notare che la soluzione qui proposta funziona solo se la stringa inserita come userid è
esattamente uguale a “‘ or ”='”: se però si inserisce la stessa stringa nello userid con qualche spazio alla fine, il problema si ripresenta.
A tal proposito Roberto Abbate ci ha inviato questa integrazione alla sua lettera.
“Per evitare che aggiungendo o togliendo spazi si riesca comunque ad accedere al sistema di amministrazione, modificate la sintassi proposta in precedenza con la seguente:
Codice ASP
———-
If InStr(sUser,”=”) Then
Response.Redirect ” pagina di login ”
End If
Codice PHP
———-
if (stristr($username,”=”)) {
header(“location: pagina di login”);
}
In questo modo, verificando la presenza dell’uguale nella user, si potranno
bloccare molti tentativi di ingresso non autorizzato”.
L’autore ricorda che questa non è una patch ufficiale né definitiva e, pertanto, potrebbe lasciare aperte altre possibilità d’incursione.