浅谈xss原理

近日,论坛上面XSS满天飞,各处都可以见到XSS的痕迹,前段时间论坛上面也出现了XSS的迹象。而后我等小菜不是太懂啊,怎么办?没办法仅仅有求助度娘跟谷歌这对情侣了。
可以说小菜也算懂了一些。不敢藏私,故发文出来你们一块学习,讨论。



如下是正文:

0x00:xss的来由


记得以前看过一篇文章,这样来形容XSS “ 假设把浏览器看做WEB2.0后时代的操做系统。那么client脚本就至关于传统的应用程序,而XSS的攻击方式事实上就至关于在被攻击者的系统上运行了一个木马程序。但这样的“木马”有个很是大的缺点。就是没法像传统木马那样在操做系统中安家。之后还能本身主动运行。 ”
这多是对XSS的最好诠释了吧,但是XSS究竟是什么?如下就跟小菜来一窥其神奇面容吧。


XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码。当用户浏览该页之时,嵌入当中Web里面的html代码会被运行,从而达到恶意攻击用户的特殊目的。javascript


为何会出现XSS呢,这个没什么好说的,确定是过滤不严,或者就是程序员以为XSS并无什么实际的用途,从而忽略了XSS攻击的产生。比方在一个搜索框里面,对于输入数据没有一点过滤的话。那么咱们提交如下这条语句

    <script>alert(’test’)</script>


结果是什么,你们应该都知道,就是页面弹出了一个对话框。php


我记得当我刚開始对黑客技术产生兴趣的时候,那是的XSS还只在于娱乐的地步。

html

0x01:xss的类型


XSS的类型一般是三种:
第一种:反射型XSS
       这种xss,跨站代码通常存在于某一个连接中。当呗攻击者訪问这种链接时,跨站代码就被运行,这类跨站代码通常不会存储在server上面
另一种:存储型XSS
        这样的xss用起来比較方便,跨站代码会存储在server上面数据库中。换句话就是可以持久的进行攻击。亦称持久型XSS
第三种:就是基于DOM的XSS
       这是由于client脚本自身的解析不对致使的安全问题

0x02:反射型XSS的攻击原理


反射型XSS,是最常用,使用最广的一种方式。

它经过给别人发送带有恶意脚本代码參数的URL,当URL地址被打开时,特有的恶意代码參数被HTML解析、运行。它的特色是非持久化,必须用户点击带有特定參数的连接才干引发。
既然是需要用户点击才干触发的跨站。那么这就要考验你的忽悠水平了,就像前段时间论坛出现的XSS攻击。就是经过转帐,而后被攻击者查看消息从而触发的一种反射型XSS攻击
再如:

    http://searchb.dangdang.com/?key=f',true,1);alert(1);//


这个经常逛乌云的应该都不陌生,这就是一个典型的反射型XSS。需要诱使用户去点击该连接。xss代码并不存储在服务端。因此攻击并不能持续。java


常用測试方法:
对整个输入(特别强调的是。整个HTTP请求都是输入,数据库取来的数据事实上也是输入。程序员

HTTP请求包含GET、POST參数。COOKIE,URL,头部的REFERER等等)中每个地方都可以例如如下操做,
1.        本身构造一个惟一的串,好比:myxsstestxxxx
2.        将某个输入项(比方某个參数)替换为上面的串
3.        查看HTTP对应中是否有这个串。并记录下来
4.        依据HTML上下文决定,用哪一种类型串来尝试,尝试攻击串,而后又一次提交请求
5.        假设能够找到对应的攻击串说明漏洞是存在的 这里的关键在于第四步。因为server端可能会作一些限制,比方encode或者长度限制。測试的时候需要想办法看看可否绕过限制。数据库




0x03:存储型XSS的攻击原理


存储型就是攻击脚本被存储到了数据库或者文件里,server端(多是别的应用或者别的页面)在读取了存储的内容后回显了,就是存储型。

这样的状况用户可能直接打开正常的页面就会看到被注入了
原理事实上也很是easy
XSS代码被提交给站点-->站点把XSS代码存储进数据库—>当该页面再次被请求时。server发送已经被植入XSS代码的数据给client—>client运行XSS代码
比較常见的样例是在留言板上插入XSS代码,前提固然是留言内容过滤不善
想内容中加入[/code]<script>alert(‘test’)</script>[/code]
这样就会弹出对话框。固然仅仅要是可以加入内容的地方,你都可以试试XSS,比方说QQ空间的装扮里面。有一个本身定义模块。你可以选择图片,而后加入例如如下代码

    javascript:alert('XSS')"


固然,其可以运行的前提是服务端代码是这样写的

    A=get[a]
    <img src=$a>


利用方法还有很是多。比方现在兴起的XSS平台,新建一个项目,你就可以作很是多事情

编程

0x04:XSS BASED DOM


DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞。

DOM是一个与平台、编程语言无关的接口,它赞成程序或脚本动态地訪问和更新文档内容、结构和样式,处理后的结果可以成为显示页面的一部分。DOM中有很是多对象。当中一些是用户可以操纵的,如uRI 。location,refelTer等。client的脚本程序可以经过DOM动态地检查和改动页面内容。它不依赖于提交数据到server端。而从client得到DOM中的数据在本地运行,假设DOM中的数据没有通过严格确认,就会产生DOM—based XSS漏洞。
DOM—based XSS攻击源于DOM相关的属性和方法。被插入用于XSS攻击的脚本。一个典型的样例例如如下:
HTTP请求http://www.Xss.com/hello.html?name=test使用下面的脚本打印出登陆用户test的名字,即

    <SCRIPT>
    var pos=docmnent.URL.indexOf(”name=”)+5;
    document.write (document.URL.substring(pos,document.URL.1ength))。
    < /SCRIPT>


假设这个脚本用于请求http://www.Xss.com/hello.html?浏览器

name=<script>alert(‘test’)</script>时,就
致使XSS攻击的发生。
当用户点击这个连接,server返回包括上面脚本的HTML静态文本,用户浏览器把HTML文本解析成DOM,DOM中的document对象URL属性的值就是当前页而的URL。安全

在脚本被解析时,这个URL属性值的一部分被写入HTML文本,而这部分HTML文本倒是JavaScript脚本,这使得<script>alert(‘test’)</script>成为页面终于显示的HTML文本。从而致使DOM—base XSS攻击发生。

xss

0x05: XSS的防范办法


上面简单说了一下各类XSS的原理。以及最简单的利用方法,固然一些高级的XSS利用技巧,这里不会涉及,授人以鱼不如授人以渔嘛。还靠各位去琢磨了。如下咱们来简单说一下XSS的防范。
现在的XSS如此流行。缘由何在。我想你们应该都知道。就是在输入的时候没有作严格的过滤,而在输出的时候。也没有进行检查,转义,替换等
因此防范的方法就是。不信任不论什么用户的输入,对每个用户的输入都作严格检查,过滤。在输出的时候,对某些特殊字符进行转义,替换等

0x06:浅谈CSRF攻击


事实上以前我一直不知道csrf是什么东西。直到那次phpmywind被搞掂官网,我才注意到这个攻击方法。以后呢,经过度娘。谷歌这一对好情侣,慢慢了了解了一下
CSRF是伪造client请求的一种攻击。CSRF的英文全称是Cross Site Request Forgery,字面上的意思是跨网站伪造请求。这样的攻击方式是国外的安全人员于2000年提出,国内直到06年初才被关注。
CSRF的定义是强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操做行为。
CSRF漏洞的攻击通常分为站内和站外两种类型:
CSRF站内类型的漏洞在必定程度上是由于程序猿滥用$_REQUEST类变量形成的,一些敏感的操做原本是要求用户从表单提交发起POST请求传參给程 序。但是由于使用了$_REQUEST等变量,程序也接收GET请求传參,这样就给攻击者使用CSRF攻击创造了条件。通常攻击者仅仅要把预測好的请求參数 放在站内一个贴子或者留言的图片连接里。受害者浏览了这种页面就会被强迫发起请求。

CSRF站外类型的漏洞事实上就是传统意义上的外部提交数据问题,通常程序猿会考虑给一些留言评论等的表单加上水印以防止SPAM问题,但是为了用户的体验 性。一些操做可能没有作不论什么限制,因此攻击者可以先预測好请求的參数,在站外的Web页面里编写javascript脚本伪造文件请求或和本身主动提交的表单 来实现GET、POST请求。用户在会话状态下点击连接訪问站外的Web页面,client就被强迫发起请求。 假设,各位看官想具体了解CSRF google it! 这里不过说了一些简单的XSS原理。算一个抛砖引玉吧。各位可以跟帖讨论,怎样发挥XSS的最大能力

相关文章
相关标签/搜索