渗透技术基础之XSS原理分析

XSS介绍

Cross-Site Scripting(跨站脚本攻击)简称XSS,是一种代码注入攻击。为了和CSS区分,这里将其缩写的第一个字母改成了X,于是叫做XSS。恶意攻击者在web页面里插入恶意JavaScript代码,当浏览者浏览网页时就会触发恶意代码,从而导致用户数据的泄露如Cookie、SessionID等,及造成其他类型的攻击。

XSS的本质是:恶意代码未经过滤,与网站正常代码混在一起,浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。从源头上讲,就是代码和数据被攻击混淆,导致浏览器将攻击者输入的数据解释为代码。

案例介绍

对于下面的代码

">

您搜索的关键词是:<%= getParameter("keyword") %>

当构造链接:

http://xxx/search?keyword=">

浏览器请求该链接时,服务端会解析出参数keyword,得到">,拼接后,得到:

">

您搜索的关键词是:">

因为参数中的数据和页面代码产生了混淆,浏览将用户参数中的,解析为代码执行。
修复这个问题可以对用户输入参数进行转义。

使用函数escapeHTML()

">

您搜索的关键词是:<%= escapeHTML(getParameter("keyword")) %>

escapeHTML()的转义规则为:

字符 转义后的字符
& &
< <
> >
" "
' '
/ /

经过转义,浏览器就可以很好的区分用户提交的数据和页面中的代码。



您搜索的关键词是:"><script>alert('XSS');</script>
  1. 用户输入的为数据,目的是以文本显示出来
  2. 攻击者利用输入精心构造的片段,导致代码和数据混淆,使得浏览器将用户输入解析为代码
  3. 通过HTML转移可以防止XSS攻击

有时仅仅做HTML转义也是不够的。如:如果将JSON内联在HTML中


这时就不能使用escapeHTML(),因为会破坏JSON格式。

但此时并不安全

  • 当 JSON 中包含 U+2028U+2029 这两个字符时,不能作为 JavaScript 的字面量使用,否则会抛出语法错误。
  • 当 JSON 中包含字符串 时,当前的 script 标签将会被闭合,后面的字符串内容浏览器会按照 HTML 进行解析;通过增加下一个

    如果没有任何防御措施,最终会解析为:

    "评论“

    HTML属性/参数

    如上面说到的

    ">跳转...
    

    当用户输入的地址为:

    http://xxx/?redirect_to=javascript:alert('XSS')
    

    就会构成XSS。

    JavaScript代码

    如果用户输入为JavaScript中的变量,则可以被精心构造,导致字符串提前关闭,实现注入。

    >ript>,过滤一次关键词时,返回值正好时指定的恶意代码。

  • 利用除script之外的标签

    不仅script标签可以实现XSS,其他标签也是可以的。如,

  • 将关键词编码绕过

    如果防御规则是将关键词过滤,可以将关键词进行编码,来绕过规则,然后利用eval()来执行。

    如alert(1)编码后是\u0061\u006c\u0065\u0072\u0074(1)

  • 组合方式

XSS危害

  • 窃取用户信息

    最常见的就是窃取用户的cookie。窃取cookie后,攻击者就可能能够直接利用令牌而不用密码就登录用户账户。

  • 劫持流量实现恶意跳转

  • 控制受害者机器向其它网站发起攻击

  • 强制发送电子邮件

  • 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

XSS攻击防御

XSS攻击的两个前提:

  1. 攻击者提交恶意代码
  2. 浏览器执行恶意代码

过滤

对诸如\x3csVg/\x3e

它能够检测到存在于 HTML 属性、HTML 文字内容、HTML 注释、跳转链接、内联 JavaScript 字符串、内联 CSS 样式表等多种上下文中的 XSS 漏洞,也能检测 eval()setTimeout()setInterval()Function()innerHTMLdocument.write() 等 DOM 型 XSS 漏洞,并且能绕过一些 XSS 过滤器。

只要在网站的各输入框中提交这个字符串,或者把它拼接到 URL 参数上,就可以进行检测。

检测工具

  • Arachni

  • Mozilla HTTP Observatory

  • w3af

引用

  1. 前端安全系列(一):如何防止XSS攻击?
  1. 浅谈XSS攻击的那些事(附常用绕过姿势)
  1. XSS攻击原理分析与防御技术

原文地址:渗透技术基础之XSS原理分析

你可能感兴趣的:(渗透技术基础之XSS原理分析)