Il mambot è molto semplice, ma può risultare molto utile.
Certo non risolve tutti i problemi legati alla sicurezza, ma ci mette una piccola pezza. Riporto parte del codice per chi fosse interessato:
<?php
[...]
function botFilterRequests() {
foreach($_REQUEST as $k=>$v) {
switch(strtolower($k)) {
// standart intger params
case 'id':
case 'itemid':
case 'limit':
case 'limitstart':
$_REQUEST[$k] = intval($v);
break;
// standart string params
case 'task':
case 'option':
case 'no_html':
case 'message':
// attempt to redeclare configuration variables
case 'mosconfig_absolute_path':
case 'mosconfig_cachepath':
if (preg_match('#(http|https|ftp):\/\/#is', $v)) {
include_once( 'language/english.php' );
header( 'HTTP/1.0 403 Forbidden' );
echo _NOT_AUTH;
exit;
}
break;
}
}
}
?>
Come riportato da Bettinz, il bot intercetta tutti i parametri di $_REQUEST, vale a dire GET, POST e COOKIE.
Dopodichè analizza uno per uno quelli di sistema, alla ricerca di possibili errori o incrongruenze.
Ad esempio i parametri 'id', 'itemid', 'limit', 'limitstart' devono essere numeri interi e pertanto vengono convertiti. Questo impedisce che una stringa o qualche comando strano arrivi all'elaborazione.
Per quanto riguarda gli altri possibili parametri, viene verificato che non contengano indirizzi web, che possono aprire delle falle.
Occorre però sottolineare che il controllo viene effettuato esclusivamente sui parametri predefiniti di Joomla e basta.
Un attaccante potrebbe sfruttare lo stesso la falla di un componente aggiuntivo, attraverso uno dei suoi parametri.