Hallo,
laut dieser Seite besteht die Möglichkeit eine SQL Injection über die refer.php (und getfile.php) von astatsPRO auszuführen und z.B. das Passwort des Admins auszuspionieren.
Ich habe mir sofort die betreffende(n) Datei(n) angesehen und eine Möglichkeit gefunden das Problem zu fixen.
Das Problem war, dass die GET-Variable id ungefiltert von astatsPRO verarbeitet wurde. Das Gute ist, wer einen anderen Präfix für seine Tabellen als jos_ verwendet ist besser dran, denn dann müsste der Angreifer diesen erraten um die Injection auszuführen.
Habe hier im Forum dann eine kleine Filterfunktion gefunden, die wunderbar diesen _GET['id'] filtert und bei meinen Tests gut funktioniert hat.
Ich möchte daher alle Nutzer von astatsPRO bitten die folgende Änderung in der refer.php und getfile.php durchzuführen.
Solltet ihr diese Möglichkeit nicht haben. Keine Sorge. In den nächsten Tagen steht ein Update auf der Homepage bereit.
Änderung:
direkt nach diesen Zeilen:
PHP-Code:
error_reporting(E_ALL);
set_magic_quotes_runtime(1);
diese Funktion einfügen
PHP-Code:
function varcheck($varname,$vartyp='string') {
$regexp=array(
'integer'=>'/^[\d\-]+$/',
'string'=>'/^[\d\w\[\]\(\)\-\+\*\%\/\_\:\x22\x27\s\,\.]+$/'
);
if(isset($GLOBALS[$varname])) {$cv=$GLOBALS[$varname];}
if(!isset($cv) && isset($_GET[$varname])) {$cv=$_GET[$varname];}
if(!isset($cv) && isset($_POST[$varname])) {$cv=$_POST[$varname];}
if (preg_match($regexp[$vartyp],$cv)) { return $cv; }
else { return false; }
}
$id = varcheck( 'id', 'integer');
und dann noch das
PHP-Code:
if( !isset( $_GET['id'] ) || empty( $_GET['id'] ) )
{
exit;
}
else
{
$ID = intval( $_GET['id'] );
}
gegen
PHP-Code:
if( !isset( $id ) || empty( $id ) )
{
exit;
}
else
{
$ID = intval( $id );
}
austauschen.
P.S. Es sind alle Versionen von astatsPRO betroffen.
Lesezeichen