`
cyantide
  • 浏览: 31725 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

跨站脚本攻击与防御 (转贴)

 
阅读更多

跨站脚本攻击与防御 

网络上曾经有过关于跨站脚本攻击与防御的文章,但是随着攻击技术的进步,以前的关于跨站脚本攻击的看法与理论已经不能满足现在的攻击与防御的需要了,而且由于这种对于跨站脚本认识上的混乱,导致现在很多的程序包括现在的动网都存在着跨站脚本过滤不严的问题,希望本文能给写程序的与研究程序的带来一点思路。 
    还是首先看看跨站脚本漏洞的成因,所谓跨站脚本漏洞其实就是Html的注入问题,恶意用户的输入没有经过严格的控制进入了数据库最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行HTml代码,数据流程如下: 

恶意用户的Html输入————>web程序————>进入数据库————>web程序————>用户浏览器 
这样我们就可以清楚的看到Html代码是如何进入受害者浏览器的了,我们也就可以根据这个流程来讨论跨站脚本的攻击与防御了! 
    1 什么是HTml输入? 
    
    这里给出一个HTml代码的示例 
<img src="http://www.loveshell.jpg/" width=100 onerror=alert("载入图片错误!")> 
    很多的程序最终都是将用户的输入转换成这种形式的。可以看到<>是告诉浏览器这是一个Html标记,img是这个Html标记的名称,src是这个标记的第一个属性,=后面是这个属性的值,后面的width是第二个属性,onerror是标记的事件属性。大家可以看到,一个Html标记是包括很多元素的,并不是传统意义上的只有输入<>才会注入Html,事实上只要你的输入处在Html标签内,产生了新的元素或者属性,就实现了跨站脚本攻击!实际上大多数隐秘的跨站脚本攻击是不需要<>的,因为现在的Ubb标签已经让你处在了Html标记之内,很有意思,不是么? 
    2 哪里才是罪恶的来源? 
    既然我们的目标是引入代码在目标用户的浏览器内执行,那么我们来看看哪些地方可以引入HTml代码吧!如果用户可以不受限制的引入<>,那么很显然他可以完全操纵一个Html标记,譬如<script>alert('xss')</script>这样的形式,这对于追求安全的程序来说是绝对不允许的,所以首先要做转换的就是<>,通过如下代码: 
过滤代码: 
replace(str,"<","<") 
replace(str,">",">") 
    好了,用户可能不能构造自己的HTml标记了,那么利用已经存在的属性如何呢?下面的代码依然可以工作得很好: 
<img src="javascript:alert(/xss/)" width=100> 
因为很多的Html标记里属性都支持javascript:的形式,很好,很多的程序意识到了这一点,可能做了如下的转换: 
过滤代码 
Dim re 
    Set re=new RegExp 
    re.IgnoreCase =True 
    re.Global=True 
re.Pattern="javascript:" 
    Str = re.replace(Str,"javascript:") 
    re.Pattern="jscript:" 
   Str = re.replace(Str,"jscript:") 
    re.Pattern="vbscript:" 
   Str = re.replace(Str,"vbscript:") 
set re=nothing 
    
    你看,只要发现以javascript等脚本属性的形式都会被过滤掉,失去了:的脚本代码是起不了作用的!这样完美了么?事实上Html属性的值,注意是值而不是属性本身是支持&#ASCii这种形式表示的,譬如上面的代码可以换成这样: 
<img src="javascript:alert(/xss/)" width=100> 
    代码又执行了,呵呵!看来你漏掉了点什么哦,加上这个代码吧! 
replace(str,"&","&") 
    行了,&失去它原来的意义了,用户不能以其他方式表示Html属性值了哦!等等,这样的过滤真可以相信么?只要发现这种过滤的关键字机制,饶过就是简单的问题了: 
<img src="javas    cript:alert(/xss/)" width=100> 
    没有javascript关键字了哦!注意中间那个是tab键弄出来的!关键字被拆分了哦!这是个很麻烦的问题,很多人忘记了这些特殊的字符,呵呵!有人想到要过滤空格了,在过滤之前我们再看看其他的一些东西吧!也许我们现在所处的src属性已经无法利用了,但是我们依然可以产生自己的属性或者事件机制哦!依然是可以执行Html代码的,首先说说事件机制吧: 
<img src="#" onerror=alert(/xss/)> 
    这样依然可以执行代码的哦!明白问题出在哪了,不是么?有的程序员仿佛明白了,注意我说的是仿佛,动网就是一个典型的例子,事件属性不是要onerror么?很多人开始用正则表达式了,发现关键的词如onerror就会做转换或者提示用户不执行,是不是没有机会了呢? 
    当然不是的,事件只是让代码运行的一种方法而不是所有的,可以定义事件了那么也就可以实现自己弄出自己的属性了,试试下面的: 
<img src="#" style="Xss:expression(alert(/xss/));"> 
    呵呵,还是执行了哦!在做关键字过滤之后有人发现是不是属性之间分隔要用到空格,好,他们把空格堵死了(这样认为的人很多,呵呵)!将空格转成&nbsp;是个很普遍的方法?是么?甚至还可以让别人无法关键字拆分,不要太自信了,试试下面的代码看看如何: 
<img src="#"/**/onerror=alert(/xss/) width=100> 
嘿嘿,Good Work!这好象是利用了脚本里注释会被当作一个空白来表示造成的!那怎么办呢?上面提到的好象一直都是在进行被动的攻击防御,为什么不抓住他的本源出来呢?哪里出了问题哪里堵上! 
    上面的问题好象本质上就是一个东西,那就是用户超越了他所处的标签,也就是数据和代码的混淆,对付这种混淆的办法就是限制监牢,让用户在一个安全的空间内活动,这通过上面的分析大家也可能已经知道,只要在过滤了<>这两个人人都会去杀的字符之后就可以把用户的输入在输出的时候放到""之间,现在的一般的程序都是这样做的,譬如将会转化成<img src="http://www.loveshell.net/">这是个好的安全习惯,然后呢?就要让用户的输入处在安全的领域里了,这可以通过过滤用户输入里""实现,但是不要忘记了,这个标签本身也是不安全的,过滤掉空格和tab键就不用担心关键字被拆分饶过了,然后就是用文章中提到的办法过滤掉script关键字,最后就是防止用户通过&#这样的形式饶过检查,转换掉&吧! 
    在文章中开始提到的图里可以看到,数据的转换和过滤是可以在3个地方进行转换的,在接受数据的时候可以转换下,在进入数据库的时候可以转换下,在输出数据的时候也可以转换下,但是困惑在哪里呢?不得不面对一个问题就是许多时候程序员舍不得为安全做出那么大的应用上的牺牲,安全是要有代价的,譬如现在邮箱的就不愿意舍弃html标签,所以他们侧重于XSS的IDS检测的性质,只要发现不安全的东西就会转化,但是攻击是无法预知的,漂亮的东西总是脆弱的,有限制,肯定就有人会饶过,呵呵。本文没什么技术含量,只是希望搞安全的脚本人员能更加的了解Xss,跨站,不是那么简单滴!

分享到:
评论

相关推荐

    XSS跨站脚本攻击剖析与防御.pdf

    XSS跨站脚本攻击剖析与防御》是一本专门剖析XSS安全的专业书,总共8章,主要包括的内容如下。第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做...

    XSS跨站脚本攻击剖析与防御

    XSS跨站脚本攻击剖析与防御是一本专门剖析XSS安全的专业书,总共8章,主要包括的内容如下。第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了...

    跨站脚本攻击与防御技术研究

    详细介绍了跨站脚本攻击的相关技术及起源,并针对案例具体进行分析,对于xss初学者来说是非常好的入门

    XSS跨站脚本攻击在Java开发中防范的方法

    ### XSS跨站脚本攻击在Java开发中的防范方法 #### XSS攻击原理与分类 XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的安全威胁,它利用Web应用程序的安全漏洞,将恶意脚本注入到合法的网页中,进而攻击最终...

    XSS跨站脚本攻击剖析与防御 文字版 epub格式

    XSS跨站脚本攻击剖析与防御 文字版 epub格式

    跨站脚本攻击实例解析

    此文档是本人亲自整理过的相对通俗易懂的一个跨站脚本攻击实例解析

    跨站脚本攻击字符过滤

    ### 跨站脚本攻击与字符过滤技术解析 #### 一、引言 随着互联网的飞速发展,网站已经成为人们日常生活中不可或缺的一部分。然而,在享受便捷的同时,我们也面临着各种网络安全威胁,其中“跨站脚本攻击”(Cross-...

    XSS跨站脚本gj剖析与防御.pdf

    《XSS跨站脚本攻击剖析与防御》,完整版本。作者:邱永华,出版社:人民邮电出版社,ISBN:9787115311047,PDF 格式,扫描版,大小 67MB。本资源带有PDF书签,方便读者朋友阅读。 内容简介: 《XSS跨站脚本攻击剖析...

    搜索引擎之安全与隐私:Access Control:跨站脚本攻击与防御.docx

    搜索引擎之安全与隐私:Access Control:跨站脚本攻击与防御

    如何进行跨站脚本攻击--原理、检测与防御

    这种攻击利用了Web应用程序对输入数据的处理不当,导致用户浏览器无法区分正常脚本与恶意脚本。XSS攻击通常被归类为HTML注入的一种形式,类似于SQL注入攻击对数据库的影响。 ##### 2.2 XSS攻击的危害 XSS攻击的...

    跨站脚本攻击

    跨站脚本攻击(Cross-Site Scripting,简称XSS)是网络安全领域中一种常见的攻击方式,主要针对的是网络应用程序中的安全漏洞。XSS攻击利用了网页应用未能正确过滤用户输入或输出的数据,使得攻击者可以注入恶意脚本...

    web安全技术-实验七、跨站脚本攻击(xss)(反射型).doc

    【跨站脚本攻击(XSS)概述】 XSS,全称Cross Site Scripting,是一种常见的Web应用程序安全漏洞,攻击者利用此漏洞向网页中注入恶意脚本,当其他用户浏览该页面时,这些脚本会被执行,从而可能窃取用户的敏感信息...

    XSS跨站脚本攻击漏洞修复方法

    **XSS跨站脚本攻击漏洞修复方法** XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的网络安全威胁,它允许攻击者在用户的浏览器上执行恶意代码,从而窃取用户敏感信息、操纵用户行为或者对网站进行破坏。本文将...

    XSS跨站脚本攻击剖析与防御(目录)

    ### XSS跨站脚本攻击剖析与防御 #### 一、XSS攻击概述 **XSS**(Cross Site Scripting)即跨站脚本攻击,是一种常见的Web应用程序安全漏洞。这种攻击方式利用网页开发时的疏忽,允许攻击者往网页里插入恶意html代码...

    XSS跨站脚本攻击

    ### XSS跨站脚本攻击详解 #### 一、XSS跨站脚本攻击概述 XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的Web应用安全威胁,其核心在于利用网站对用户输入数据的处理不当,允许攻击者注入恶意脚本到网页中,...

    xss跨站脚本攻击汇总

    xss 跨站脚本攻击汇总 xss 跨站脚本攻击是一种常见的 web 应用程序漏洞,攻击者可以inject 恶意脚本到网页中,从而获取用户的敏感信息或控制...因此,防御 xss 跨站脚本攻击需要使用多种安全机制和技术来防御攻击。

    修补跨站脚本攻击漏洞 php版 v1.0

    可以修补动网论坛等php建的网站的跨站脚本攻击漏洞,修护XSS漏洞,此为php版的,还有asp版、aspx版,可以在本站下载 详情请参看:http://www.lbhao.com/detaile_ok-5-833.html

    xss跨站脚本攻击

    ### XSS跨站脚本攻击详解 #### 一、XSS跨站脚本攻击概述 XSS(Cross-Site Scripting),即跨站脚本攻击,是一种常见的网络安全威胁,主要通过在受害者的浏览器环境中注入恶意脚本,从而实现对用户的攻击。这种攻击...

    web安全之XSS攻击及防御pdf

    跨站脚本攻击(Cross-Site Scripting,简称XSS)是一种常见的Web应用程序安全漏洞,其形成原因主要是由于Web应用程序对用户输入的数据过滤不充分或者处理不当,导致恶意脚本被注入到网页中。当其他用户访问这些包含恶意...

    xss跨站脚本.docx

    XSS 跨站脚本攻击防御指南 XSS 跨站脚本攻击是一种常见的 web 应用程序攻击手法,它通常发生在 web 应用程序没有正确地对用户输入进行验证和过滤的情况下。下面我们将详细介绍 XSS 跨站脚本攻击的原理、类型、攻击...

Global site tag (gtag.js) - Google Analytics