zoukankan      html  css  js  c++  java
  • xss

    XSS(跨站脚本)概述
    Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
    1.反射性XSS;
    2.存储型XSS;
    3.DOM型XSS;

    XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
    XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
    形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
    因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
    输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
    输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
    

    XSS的危害比较:存储型>反射型>DOM型

    形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

    本次实验是在pikachu平台进行演示!

    一:反射型XSS(get)
    产生原因:传递的参数直接存在页面代码中,而且没有过滤
    流程
    1.先打开xss(get),输入'"<>6666,点击提交,检查是否有过滤。查看页面源码,用ctrl+f查找6666

    2.刷新页面,重新在反射型XSS页面中输入正确的JS代码,因为HTML限制了字符长度,所以在那之前要先修改一下前端代码。打开web开发者,在找到web控制台。在查看器里搜索maxlength,修改长度。
    (ps:)刷新页面之后,之前的源码就没有了。

    3.重新在反射型XSS页面中输入正确的JS代码

    4.当提交后,可以看到弹窗弹出JS代码里的内容,说明代码成功执行。

    反射型XSS(post)
    1.首先在页面中输入正确的账号密码:admin/123456,登录成功后。输入提交即可。

    二:存储型XSS
    存储型XSS漏洞跟反射型形成的原因一样,不同的是存储型XSS下攻击者可以将脚本注入到后台存储起来,构成更加持久的危害,因此存储型XSS也称“永久型”XSS。
    1.输入'"<>6666,点击提交.提交后,不管怎么刷新页面,写的内容都还在,说明了写的内容被后台存了下来

    2.打开页面源代码,能看到输入的内容和反射型XSS一样,都被原封不动的保存下来。

    3.刷新之后,输入正确的代码。如

    提交后,不管是刷新页面还是切换页面,他都会出现弹窗,说明了存储型XSS危害更大,会造成永久型的危害!

    三:DOM型XSS
    与存储型和反射型不同的是,DOM是一个前端的接口,并没有和后端做任何的交互。通过JavaScript,可以重构整个HTML文档。你可以添加,移除、改变或重排页面上的项目。要改变页面的某个东西,JS就需要获得对HTML文档中所有元素进行访问的入口。这个入口,连同对HTML元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的(DOM)。所以,你可以把DOM理解为一个一个访问HTML的标准编程接口。
    1.先随便输入一个字符串,点击click me提交,会弹出what do you see?的提示。

    2.打开页面源代码,可以看出用户输入的字符串内容会存放到str,然后通过DOM方法拼接到a标签里面。

    3.刷新之后将#'onclick="alert(111)"输入,点击提交,再点击what do you see?的提示。会弹出alert里的内容。说明测试漏洞成功


    4. 构造一个闭包函数输入到文本框中去。我们实际上是使前面的a标签进行闭合操作,然后在完整的a标签中加入了一个警告框。其实这种DOM注入没有什么太大的用处,因为既没有发送到后台进行操操作,也没有输入到URL中去。

    四:DOM型XSS-X

    DOM型xss-x和DOM型xss差不多,他们的不同之处在于,DOM型xss-x是从浏览器的URL来获取输入内容的,相同之处在于,都是拼接到a标签里面

    1.同样随便输入一个字符串。点击提交。

    2.打开页面源代码

    3,和DOM型XSS一样,刷新之后填入修改的#'onclick="alert('xss')",点击‘请说出你的伤心往事’再点击‘有些费进心机想要忘得后来真的忘了’然后再点击‘让往事都随风都随风吧’,会弹窗说明成功。

  • 相关阅读:
    获取本机IP,用户代理
    10 种机器学习算法的要点(附 Python)(转载)
    怎么查找执行比较慢的sql语句-DBA给的建议
    .net 调度器怎么实现心跳(socket除了他,没选择吧)
    分布式多计算机调度平台
    续【C# 以管理员方式启动Winform,进而使用管理员控制Windows Service】
    C# 以管理员方式启动Winform,进而使用管理员控制Windows Service
    SqlServer2008根据现有表,获取该表的分区创建脚本
    SqlServer常用命令
    创建分区表过程
  • 原文地址:https://www.cnblogs.com/ruoxi/p/13174449.html
Copyright © 2011-2022 走看看