zoukankan      html  css  js  c++  java
  • 反射型xss

    xss的目的就是在被攻击用户的浏览器上运行攻击者编辑脚本代码。

    根据攻击方式,xss可以分为三类:反射型xss、存储型xss和DOM型xss.

    反射型xss

    三个对象:攻击者、受害者和有价值的网站。

    三个条件:用户访问网站并提交数据,响应数据或页面中包含提交的数据,网站对输入输出数据没有充分检查。

    注:xss攻击的价值在于用户和网站之间的关系,比如用户的个人数据、敏感操作、网购或银行操作等。通过使受害者执行攻击者的脚本,使攻击者获取受害者的cookie等敏感数据,进而可以窃取受害者的临时身份,进行一系列操作。当然,也可以将动作写入脚本中,使受害者之间进行错误操作,比如转账、删除文章、关注某某等,而网站会以为这一切都是用户的自主行为。

    场景:

    1、攻击者挖掘到有价值网站的反射型xss漏洞,通过业务分析,构建出有危害性的、执行特定目的的payload语句。

    2、攻击者通过社交诱使受害者点击构造的包含payload的url。比如通过qq、邮件等发送,或者嵌入在某些网页中,包含诱使用户点击的内容,如美女或紧急消息,或者结合点击劫持技术。

    3、网站接收受害者的请求及携带的payload数据,没有经过充分检查,将其作为返回数据直接返回或包含在返回的页面中。

    4、受害者的浏览器接收响应,payload作为脚本被成功执行。

    漏洞手动挖掘

    1、分析可能的注入点

    从数据提交着手,按照数据构成方式,可以将数据来源分为两类:一是网页希望用户进行输入的,二是js自动构建的。

    三种数据提交方式:地址栏提交url,表单form提交,以及js提交。对于一般用户,地址栏提交url不在业务场景内。

    对于表单form提交,一般都是基于用户输入的内容进行提交,但是不排除js对hidden属性的输入元素进行了动态赋值。

    对于js提交,可以是完全是基于用户输入数据提交,也可以包含一些js自动构建的数据,甚至可以完全是基于js自动构建的数据。

    我们可以根据参数名,获取参数来源的元素id以及文档页面等分析参数的意义,进而构建业务场景,分析后台处理机制和可能的返回页面。

    2、寻找注入点

    针对每一个参数,进行不同类型的赋值,研究响应页面。

    基于响应页面,我们可以进一步分析参数作用和后台机制。

    查看响应页面是否包含提交的参数值,或有关联的值,找到反射型xss注入点——即数据的提交对象和参数名,以及响应页面或响应数据。

    3、分析响应

    我们需要查看提交的参数被包含在响应页面的对应点,构造payload使其能够作为js代码被执行,并根据服务器可能的、不同的参数过滤器修改payload进行测试。

    自动挖掘漏洞

    1、基于爬虫代码,能够模拟用户使用浏览器进行工作,获取html、css、js、jsp、php等代码。

    2、审计代码,通过发现参数提交点判断可能的注入点,比如form和submit类型的input标签,js的ajax函数。(到这一步,可以将可能的注入点提取出来,整理成表交给攻击者分析和手动注入)。

    3、基于每一个参数进行不同类型的数据构造,分析响应页面寻找注入点。

    4、针对明确的注入点,结合参数在响应页面的位置,构造不同payload去试图突破过滤器。

    自动挖掘工具

    burpsuite

    存储型XSS

    存储型与反射型原理基本一致,只不过是把提交的内容保存到服务器,允许其它用户进行查看。当一般用户请求包含提交的payload文本内容时,该payload将在用户的浏览器上加载并作为脚本执行。

    其关键也在于服务器是否对用户提交的数据进行充分过滤。

    存储型xss可能存在于评论、博客、站内消息等等。

  • 相关阅读:
    数组
    灰度转换
    类的定义和头文件
    读文件
    操纵元
    传递引用
    TensorFlow常用函数
    四、Item Pipeline
    三、Scrapy Shell
    二、Scrapy案例入门
  • 原文地址:https://www.cnblogs.com/blunFan/p/11507805.html
Copyright © 2011-2022 走看看