Agence web et solutions IT, Experts Symfony contact@avanim-prod.com

Patcher Joomla/Virtuemart pour la faille product recommendation

18 février 2011 jravouna Joomla 1.5 Étiquettes : , , , 0 Comments

Après avoir parcourut le net en vain à la recherche d’une explication, j’ai pris la décision de poster la manipulation afin de patcher la faille de sécurité sur le composant com-virtuemart.

En effet vous avez peut être comme certain de nos clients, fait l’objet de piratage par la faille product recommendation de Virtuemart. Pour cette faille de sécurité il faut plutôt parlé de spaming car la faille permet au hacker (ou au script kiddy…) d’envoi en masse des emails.

Le composant com_virtuemart n’est pas en faute par lui même mais il s’agit plutôt de la page shop.recommend.php (qui se trouve par default dans /administrator/components/com_virtuemart/html/).

Afin de patcher, deux solutions :

  • La première : ouvrir le fichier shop.recommend.php et commenter le code vulnérable. Ce qui donne
    mm_showMyFileName( __FILE__ );
    global $ok;
    $product_id = vmGet( $_REQUEST, 'product_id', null);
    
    include_once(CLASSPATH.'ps_communication.php');
    
    $vm_mainframe->addStyleSheet( 'templates/'. $mainframe->getTemplate() );
    
    if( empty( $_POST['submit'] ) || !$ok ) {
    	$mainframe->setPageTitle( $VM_LANG->_('VM_RECOMMEND_FORM_LBL') );
    	echo '
    

    '.$VM_LANG->_('VM_RECOMMEND_FORM_LBL').'

    '; ps_communication::showRecommendForm($product_id); } else { $mainframe->setPageTitle( $VM_LANG->_('VM_RECOMMEND_FORM_LBL') ); echo ''. $VM_LANG->_('VM_RECOMMEND_DONE').' '. vmGet($_POST,'recipient_mail').' '. $VM_LANG->_('PROMPT_CLOSE') .' '; }

    remplacé par

    /*
    mm_showMyFileName( __FILE__ );
    global $ok;
    $product_id = vmGet( $_REQUEST, 'product_id', null);
    
    include_once(CLASSPATH.'ps_communication.php');
    
    $vm_mainframe->addStyleSheet( 'templates/'. $mainframe->getTemplate() );
    
    if( empty( $_POST['submit'] ) || !$ok ) {
    	$mainframe->setPageTitle( $VM_LANG->_('VM_RECOMMEND_FORM_LBL') );
    	echo '
    

    '.$VM_LANG->_('VM_RECOMMEND_FORM_LBL').'

    '; ps_communication::showRecommendForm($product_id); } else { $mainframe->setPageTitle( $VM_LANG->_('VM_RECOMMEND_FORM_LBL') ); echo ''. $VM_LANG->_('VM_RECOMMEND_DONE').' '. vmGet($_POST,'recipient_mail').' '. $VM_LANG->_('PROMPT_CLOSE') .' '; } */ echo 'This function is disabled to prevent security issues. AVANIM Team.'
  • La deuxième consiste à supprimer ce code, et à la remplacer par l’appel à un composant d’envoi d’email. Par exemple smartformer. Afin de récupérer l’id du produit que l’on veut recommandé il est également possible de coder un petit script d’envoi d’email.

A titre informatif voici ce que l’utilisateur recoi de la part de 1and1 lors ce qu’il rencontre ce problème de sécurité :

 Vous recevez par la présente un avis urgent concernant la sécurité de
 votre
 compte 1&1.

 Votre espace web 1&1 a de nouveau subi une attaque à travers le
 logiciel que
 vous avez installé.

 Par e-mail du XX.XX.XXXX, nous vous avions communiqué que le script
 ./index2.php
 contient des failles de sécurité et permet ainsi des attaques à votre
 espace web
 1&1. Ces mêmes failles ont permis l'attaque actuelle.

 Vu que les attaques de ce genre peuvent porter atteinte aux droits et
 la
 propriété de tiers, nous vous recommandons vivement de sécuriser
 votre espace web :

 NOTEZ : La sécurité du logiciel que vous installez tient de votre
 unique
 responsabilité. Au cas où une nouvelle attaque viendrait à ce
 reproduire, nous
 serions contraints de bloquer votre compte définitivement et résilier
 notre
 contrat sans préavis ni remboursement.

 1.  Fermez toutes les failles de sécurité dans vos scripts. Nous
 avons trouvé
 des intrusions possibles à travers les scripts suivants :
 ./index2.php (the product recommendation-function)

 2  Vérifiez si d'autres fichiers pirates ont été téléchargés sur
 votre espace
 web. Supprimez-les également tout de suite.

Voilà, en espérant aider les personnes en détresse 😉

Submit a comment