最近工作要求解决下web的项目的漏洞问题,扫描漏洞是用的AppScan工具,其中有很多是关于跨站点脚本编制问题的。下面就把这块东西分享出来。

原创文章,转载请注明

-----------------------------------------正题-------------------------

测试类型:
应用程序级别测试

威胁分类:
跨站点脚本编制

原因:
未对用户输入正确执行危险字符清理

安全性风险:
可能会窃取或操纵客户会话和cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务

受影响产品:
该问题可能会影响各种类型的产品。

引用:
CERT Advisory CA-2000-02
Microsoft How To: Prevent Cross-Site Scripting Security Issues (Q252985)
Microsoft How To: Prevent Cross-Site Scripting in ASP.NET
Microsoft How To: Protect From Injection Attacks in ASP.NET
Microsoft How To: Use Regular Expressions to Constrain Input in ASP.NET
Microsoft .NET Anti-Cross Site Scripting Library
跨站点脚本编制培训模块

技术描述:

AppScan 检测到应用程序未对用户可控制的输入正确进行无害化处理,就将其放置到充当Web 页面的输出中。这可被跨站点脚本编制攻击利用。
在以下情况下会发生跨站点脚本编制(XSS) 脆弱性:
[1] 不可信数据进入Web 应用程序,通常来自Web 请求。
[2] Web 应用程序动态生成了包含此不可信数据的Web 页面。
[3] 页面生成期间,应用程序不会禁止数据包含可由Web 浏览器执行的内容,例如JavaScript、HTML 标记、HTML 属性、鼠标事件、Flash 和
ActiveX。
[4] 受害者通过Web 浏览器访问生成的Web 页面,该页面包含已使用不可信数据注入的恶意脚本。
[5] 由于脚本来自Web 服务器发送的Web 页面,因此受害者的Web 浏览器在Web 服务器的域的上下文中执行恶意脚本。
[6] 这实际违反了Web 浏览器的同源策略的意图,该策略声明一个域中的脚本不应该能够访问其他域中的资源或运行其他域中的代码。
一旦注入恶意脚本后,攻击者就能够执行各种恶意活动。攻击者可能将私有信息(例如可能包含会话信息的cookie)从受害者的机器传输给攻击者。攻
击者可能以受害者的身份将恶意请求发送到Web 站点,如果受害者具有管理该站点的管理员特权,这可能对站点尤其危险。
网络钓鱼攻击可用于模仿可信站点,并诱导受害者输入密码,从而使攻击者能够危及受害者在该Web 站点上的帐户。最后,脚本可利用Web 浏览器本
身中的脆弱性,可能是接管受害者的机器(有时称为“路过式入侵”)。
主要有三种类型的XSS:
类型1:反射的XSS(也称为“非持久性”)
服务器直接从HTTP 请求中读取数据,并将其反射回HTTP 响应。在发生反射的XSS 利用情况时,攻击者会导致受害者向易受攻击的Web 应用程序提
供危险内容,然后该内容会反射回受害者并由Web 浏览器执行。传递恶意内容的最常用机制是将其作为参数包含在公共发布或通过电子邮件直接发送给
受害者的URL 中。以此方式构造的URL 构成了许多网络钓鱼方案的核心,攻击者借此骗取受害者的信任,使其访问指向易受攻击的站点的URL。在站
点将攻击者的内容反射回受害者之后,受害者的浏览器将执行该内容。
类型2:存储的XSS(也称为“持久性”)
应用程序在数据库、消息论坛、访问者日志或其他可信数据存储器中存储危险数据。在以后某个时间,危险数据会读回到应用程序并包含在动态内容
中。从攻击者的角度来看,注入恶意内容的最佳位置是向许多用户或特别感兴趣的用户显示的区域。感兴趣的用户通常在应用程序中具有较高的特权,
或者他们会与对攻击者有价值的敏感数据进行交互。如果其中某个用户执行恶意内容,那么攻击者就有可能能够以该用户的身份执行特权操作,或者获
取对属于该用户的敏感数据的访问权。例如,攻击者可能在日志消息中注入XSS,而管理员查看日志时可能不会正确处理该消息。
类型0:基于DOM 的XSS
在基于DOM 的XSS 中,客户机执行将XSS 注入页面的操作;在其他类型中,注入操作由服务器执行。基于DOM 的XSS 中通常涉及发送到客户机的
由服务器控制的可信脚本,例如,在用户提交表单之前对表单执行健全性检查的Javascript。如果服务器提供的脚本处理用户提供的数据,然后将数据
注入回Web 页面(例如通过动态HTML),那么基于DOM 的XSS 就有可能发生。以下示例显示了在响应中返回参数值的脚本。
参数值通过使用GET 请求发送到脚本,然后在HTML 中嵌入的响应中返回。

[REQUEST]
GET /index.aspx?name=JSmith HTTP/1.1
[RESPONSE]
HTTP/1.1 200 OK
Server: SomeServer
Date: Sun, 01 Jan 2002 00:31:19 GMT
Content-Type: text/html
Accept-Ranges: bytes
Content-Length: 27
<HTML>
Hello JSmith
</HTML>

攻击者可能会利用类似以下情况的攻击:

[ATTACK REQUEST]
GET /index.aspx?name=>"'><script>alert('PWND')</script> HTTP/1.1
[ATTACK RESPONSE]
HTTP/1.1 200 OK
Server: SomeServer
Date: Sun, 01 Jan 2002 00:31:19 GMT
Content-Type: text/html
Accept-Ranges: bytes
Content-Length: 83
<HTML>
Hello >"'><script>alert('PWND')</script>
</HTML>

在这种情况下,JavaScript 代码将由浏览器执行(>"'> 部分在此处并不相关)。

跨站点脚本编制实例(AppScan扫描结果)的更多相关文章

  1. 使用过滤器解决SQL注入和跨站点脚本编制

    1 SQL注入.盲注 1.1 SQL注入.盲注概述 Web 应用程序通常在后端使用数据库,以与企业数据仓库交互.查询数据库事实上的标准语言是 SQL(各大数据库供应商都有自己的不同版本).Web 应用 ...

  2. 跨站点脚本编制-XSS 描述及解决方法

    跨站点脚本编制可能是一个危险的安全性问题,在设计安全的基于 Web 的应用程序时应该考虑这一点.本文中,描述了这种问题的本质.它是如何起作用的,并概述了一些推荐的修正策略. 当今的大多数网站都对 We ...

  3. 跨站点脚本编制 - SpringBoot配置XSS过滤器(基于mica-xss)

    1. 简介   XSS,即跨站脚本编制,英文为Cross Site Scripting.为了和CSS区分,命名为XSS.   XSS是最普遍的Web应用安全漏洞.这类漏洞能够使得攻击者嵌入恶意脚本代码 ...

  4. 跨站点脚本编制 - SpringBoot配置XSS过滤器(基于Jsoup)

    1. 跨站点脚本编制   风险:可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务.   原因:未对用户输入正确执行危险字符清 ...

  5. js解决跨站点脚本编制问题

    1.前台处理(容易绕过): <script type="text/javascript"> $(document).ready(function(){ var url= ...

  6. IBM Rational AppScan:跨站点脚本攻击深入解析

    IBM Rational AppScan:跨站点脚本攻击深入解析    了解黑客如何启动跨站点脚本攻击(cross-site scripting,XSS),该攻击危害(及不危害)什么,如何检测它们,以 ...

  7. 网站跨站点脚本,Sql注入等攻击的处理

    从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可: http://bbs.webscan.360.cn/forum.p ...

  8. [原]网站跨站点脚本,Sql注入等攻击的处理

    从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可: http://bbs.webscan.360.cn/forum.p ...

  9. ASP.NET Core中的OWASP Top 10 十大风险-跨站点脚本攻击 (XSS)

    不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: https://dotnetcoretutorials.com/201 ...

随机推荐

  1. Java基础之读文件——使用通道读取混合数据1(ReadPrimesMixedData)

    控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法一:可以在第一个读操作中读取字符串的长度,然后再将字符串和二进制素数值读入到文本中.这种方式 ...

  2. (Builder)创建者模式

    定义: 建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示. 适用性: 当流程算法可以固定几个步骤,步骤的算法步骤执行顺序固定,且制造的产品可以唯一确定,这时使用创建 ...

  3. win7无线网连接了,但是图标显示未连接

    第一步: 打开控制面板,找到“管理工具”->“计算机管理” 第二步: 在控制台左边栏,选择“设备管理器”,然后在右侧展开“网络适配器” 第三步: 在每一个网络设备上点鼠标右键,然后选择“卸载”. ...

  4. 史上最全的css hack(ie6-9,firefox,chrome,opera,safari) (zz)

    在这个浏览器百花争鸣的时代,作为前端开发的我们为了我们漂亮的设计能适应各个浏览器可为煞费苦心,主要体现在javascript和css上面.javascript我这次就不谈了,先说说css.       ...

  5. 实验十五_安装新的int 9中断例程

    安装一个新的int 9中断例程,功能:在DOS下,按下“A”键后,除非不在松开,    如果松开,就显示满屏幕的“A”:其他的键照常处理. 提示:按下一个键时产生的扫描码称为通码,松开一个键产生的扫描 ...

  6. Opencv读取各种格式图片,在TBitmap上面重绘

    //opencv读取图片 cv::Mat image; //const char *fileName = "HeadImage-UI/Photo-001.bmp"; const c ...

  7. java系统时间的调用和格式转换

    java在java.text   java.util   java.lang包中查找 import java.util.*; import java.text.*; public class Text ...

  8. 使用streaming window函数统计用户不同时间段平均消费金额等指标

    场景 现在餐厅老板已经不满足仅仅统计历史用户消费金额总数了,他想知道每个用户半年,每个月,每天,或者一小时消费的总额,来店消费的次数以及平均金额. 给出的例子计算的是每5秒,每30秒,每1分钟的用户消 ...

  9. Windows 2003/2008更改远程桌面端口脚本

    保存为bat文件,点击运行按提示输入新端口自动完成,直接下载更改远程桌面端口脚本   @echo off color 0a title @@ 修改Windows XP/2003/2008远程桌面服务端 ...

  10. 类名.class, class.forName(), getClass()区别

    1:Class cl=A.class; JVM将使用类A的类装载器, 将类A装入内存(前提是:类A还没有装入内存),不对类A做类的初始化工作.返回类A的Class的对象. 2:Class cl=对象引 ...