XSS跨站脚本攻击技术原理及防护措施
- 格式:docx
- 大小:20.54 KB
- 文档页数:6
XSS漏洞攻击原理与解决办法对于的⽤户输⼊中出现XSS漏洞的问题,主要是由于开发⼈员对XSS了解不⾜,安全的意识不够造成的。
现在让我们来普及⼀下XSS的⼀些常识,以后在开发的时候,每当有⽤户输⼊的内容时,都要加倍⼩⼼。
请记住两条原则:过滤输⼊和转义输出。
⼀、什么是XSSXSS⼜叫CSS (Cross Site Script) ,跨站脚本攻击。
它指的是恶意攻击者往Web页⾯⾥插⼊恶意html代码,当⽤户浏览该页之时,嵌⼊其中Web⾥⾯的html代码会被执⾏,从⽽达到恶意的特殊⽬的。
XSS属于被动式的攻击,因为其被动且不好利⽤,所以许多⼈常呼略其危害性。
在WEB2.0时代,强调的是互动,使得⽤户输⼊信息的机会⼤增,在这个情况下,我们作为开发者,在开发的时候,要提⾼警惕。
⼆、XSS攻击的主要途径XSS攻击⽅法只是利⽤HTML的属性,作各种的尝试,找出注⼊的⽅法。
现在对三种主要⽅式进⾏分析。
第⼀种:对普通的⽤户输⼊,页⾯原样内容输出。
打开/goproducttest/test.jsp(限公司IP),输⼊:第⼆种:在代码区⾥有⽤户输⼊的内容原则就是,代码区中,绝对不应含有⽤户输⼊的东西。
第三种:允许⽤户输⼊HTML标签的页⾯。
三、XSS攻击解决办法请记住两条原则:过滤输⼊和转义输出。
具体执⾏的⽅式有以下⼏点:第⼀、在输⼊⽅⾯对所有⽤户提交内容进⾏可靠的输⼊验证,提交内容包括URL、查询关键字、http头、post数据等第⼆、在输出⽅⾯,在⽤户输内容中使⽤标签。
标签内的内容不会解释,直接显⽰。
第三、严格执⾏字符输⼊字数控制。
四、在脚本执⾏区中,应绝⽆⽤户输⼊。
跨站脚本攻击的危害和防护方法跨站脚本攻击(Cross-Site Scripting,XSS)是一种常见的 Web 应用程序安全漏洞,攻击者通过在合法网页中插入恶意脚本代码,使用户在浏览网页时受到攻击。
这种攻击可以导致诸如 cookie 盗取、恶意操作用户账户等危害。
为了保护用户数据和确保网站安全,开发人员需要采取一些防护措施来防范这种攻击。
1.会话劫持:攻击者可以通过窃取用户的会话ID,获得对用户账户的控制权,从而越过身份验证阶段访问受限资源和敏感信息。
2.数据窃取:攻击者可以通过注入恶意代码,将用户的敏感信息(如用户名、密码、信用卡号等)发送到恶意服务器上,从而导致用户信息泄露。
3.恶意操作:攻击者可以通过注入脚本代码,欺骗用户进行一些非法操作,如转账、删除数据等,导致用户财产损失或系统数据丢失。
为了防范跨站脚本攻击,开发人员可以采取以下几种防护方法:1.输入验证和过滤:开发人员需要对用户输入的数据进行有效的验证和过滤,避免恶意脚本的注入。
对于用户输入的特殊字符(如`<`,`>`,`"`,`'`,`/`等),需要进行转义处理或替换为安全字符。
2.输出编码:在将用户输入的数据输出到网页或其他输出端之前,需要进行适当的编码处理,确保输出内容被当作纯文本而不是可执行脚本来处理。
常见的输出编码方式包括HTML编码、URL编码等。
4. 使用 HttpOnly Cookie:在设置 Cookie 时,开发人员可以将它们标记为 HttpOnly,这样客户端脚本就无法通过 document.cookie API 来访问该 Cookie。
这可以减少 XSS 攻击者对用户 Cookie 的窃取。
5.安全的开发实践:开发人员需要遵循安全的开发实践,如避免在网页中直接嵌入脚本代码、使用安全套接字层(SSL/TLS)传输敏感数据、定期更新和升级服务器软件等。
6.持续安全审计:定期进行网站和应用程序的安全审计,检查是否存在潜在的跨站脚本攻击漏洞。
网络安全常见漏洞原理解析在当今互联网时代,网络安全问题日益凸显。
攻击者利用网络安全漏洞来入侵系统、窃取个人信息或者传播恶意软件。
本文将对网络安全常见漏洞的原理进行解析,并探讨如何防范这些漏洞。
一、跨站脚本攻击(Cross-Site Scripting,XSS)跨站脚本攻击是一种常见的网络安全漏洞,其原理是攻击者通过在网页中注入恶意代码,使得用户的浏览器在解析网页时执行这些恶意代码。
攻击者通过XSS漏洞可以获取用户的敏感信息、改变页面内容或者进行其他恶意操作。
防范措施:1. 输入过滤:应对用户输入进行过滤,排除潜在的恶意代码。
2. 输出编码:对从数据库等数据源获取的内容进行编码,防止用户浏览器解析恶意代码。
3. 使用CSP(Content Security Policy)设置:通过设置CSP,限制网页中可加载的资源,减少XSS攻击的风险。
二、SQL注入攻击(SQL Injection)SQL注入攻击是指攻击者通过构造恶意的SQL查询语句,从而绕过身份验证、访问未授权信息或者破坏数据库的完整性。
这种漏洞常出现在没有对用户输入进行充分过滤的Web应用程序中。
防范措施:1. 使用参数化查询或预编译语句:使用参数化查询可以防止恶意输入修改查询语句的结构。
2. 最小权限原则:数据库账户应该拥有足够的权限执行所需操作,避免攻击者利用注入漏洞获取敏感信息。
3. 输入验证和过滤:对用户输入进行有效验证和过滤,确保输入的数据符合预期的格式和范围。
三、跨站请求伪造(Cross-Site Request Forgery,CSRF)跨站请求伪造是一种利用用户已登录的信任身份来执行非法操作的攻击方式。
攻击者通过诱使受害者点击包含恶意请求的链接或者访问恶意网站,从而在用户不知情的情况下执行攻击。
防范措施:1. 使用CSRF令牌:为每个用户生成一个唯一的CSRF令牌,并将其包含在表单或者链接中,以防止CSRF攻击。
2. 定义安全头部:显示地设置Referer头部以限制外部引用,防止攻击者伪造请求。
防止XSS漏洞攻击常用解决方案XSS(跨站脚本)漏洞攻击是一种常见的Web应用程序安全漏洞,攻击者利用该漏洞将恶意脚本注入到受害者的浏览器中,从而获取敏感信息或执行恶意操作。
为了防止XSS漏洞攻击,以下是一些常用的解决方案:2. 输出转义:在将用户输入的数据输出到Web页面上时,应该对其中可能包含的特殊字符进行转义,将其转换为其对应的HTML实体,从而防止浏览器将其解析为可执行的脚本。
可以使用相关的转义函数或工具来实现输出转义。
3. 安全的编码实践:在编写Web应用程序代码时,应该遵循安全的编码实践,尽量避免使用eval(、innerHTML等具有潜在安全风险的函数。
应该使用安全的API和方法来操作用户输入,如使用textContent代替innerHTML,使用setAttribute代替直接设置HTML属性等。
4. HttpOnly Cookie:将敏感的会话Cookie标记为HttpOnly可以防止攻击者通过JavaScript脚本获取其中的值。
HttpOnly Cookie只能在服务器端使用,无法通过客户端的JavaScript代码访问或修改。
6. Web应用防火墙(WAF):WAF是一种位于Web应用程序和Web服务器之间的安全设备,可以检测和阻止恶意请求。
WAF可以检测XSS攻击的特征,并阻止恶意脚本的注入,保护Web应用程序的安全。
7.输入和输出过滤参数化查询:在处理用户输入的数据时,可以使用参数化查询来构建数据库查询语句,确保用戶数据不会被解释为SQL代码,從而防止更高级别的SQL注入攻击。
8. 更新和补丁:及时更新和应用系统和框架的补丁,以修复已知的安全漏洞。
同时,定期对Web应用程序进行安全性扫描和漏洞检测,及时发现和修复潜在的XSS漏洞。
9. 用户教育和安全意识培训:向Web应用程序的用户提供有关XSS 漏洞和安全意识的培训和教育,教导他们如何识别和避免潜在的攻击。
用户可以通过使用最新版本的浏览器、不点击可疑链接、不输入敏感信息等安全行为来降低XSS攻击的风险。
跨站脚本攻击的危害和防护方法跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。
用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。
攻击者通过在链接中插入恶意代码,就能够盗取用户信息。
攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。
网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。
许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子。
假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的session信息。
人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。
因此有人将跨站脚本攻击缩写为XSS。
如果你听到有人说“我发现了一个XSS 漏洞”,显然他是在说跨站脚本攻击。
危害为了搜集用户信息,攻击者通常会在有漏洞的程序中插入JavaScript、VBScript、ActiveX或Flash 以欺骗用户(详见下文)。
一旦得手,他们可以盗取用户帐户,修改用户设置,盗取/污染cookie,做虚假广告等。
每天都有大量的XSS攻击的恶意代码出现。
Brett Moore的下面这篇文章详细地阐述了“拒绝服务攻击”以及用户仅仅阅读一篇文章就会受到的“自动攻击”。
攻击三部曲1.HTML注入。
所有HTML注入范例只是注入一个JavaScript弹出式的警告框:alert(1)。
2.做坏事。
如果您觉得警告框还不够刺激,当受害者点击了一个被注入了HTML代码的页面链接时攻击者能作的各种的恶意事情。
3.诱捕受害者。
从网站开发者角度,如何防护XSS攻击?来自应用安全国际组织OWASP的建议,对XSS最佳的防护应该结合以下两种方法:验证所有输入数据,有效检测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。
xss 防御措施XSS(Cross-Site Scripting)跨站脚本攻击,是一种常见的网络安全漏洞,攻击者通过向目标网页中注入恶意脚本代码,从而使得用户的浏览器执行该恶意脚本,从而达到攻击目的。
为了保护网站和用户的安全,采取一系列XSS防御措施是至关重要的。
以下是一些常见的XSS防御措施:1.输入验证和过滤:对所有用户输入进行验证和过滤,包括表单提交的数据、URL参数、Cookie等。
可以采用白名单过滤器,只允许特定的字符和格式,过滤掉潜在的恶意代码。
2.输出编码:在将用户输入显示到网页中时,必须进行适当的输出编码。
不同的编码方法适用于不同的输出场景,包括HTML编码、URL编码、JavaScript编码等。
编码能够将恶意脚本代码转义或转换为非执行的字符,从而阻止脚本的执行。
3. CSP(Content Security Policy):CSP是一种新的浏览器安全政策,通过在HTTP头部添加相应的策略指令,可以有效地防御和减轻XSS攻击。
CSP可以限制网页中允许加载资源的域名,禁止使用内联脚本和eval函数等危险的操作。
4. HTTPOnly Cookie:将敏感信息存储在HTTPOnly Cookie中,这样可以防止XSS攻击者获取到用户的Cookie。
HTTPOnly属性可以阻止脚本读取和修改Cookie,增加了攻击者获取用户会话信息的难度。
5.点击劫持防御:点击劫持是一种特殊类型的XSS攻击,攻击者通过将目标网站透明覆盖在一个恶意网页之上,欺骗用户在不知情的情况下点击恶意按钮或链接。
为了防御此类攻击,可以采用X-Frame-Options响应头或者Content-Security-Policy指令,禁止网页在iframe中加载。
6.清除HTML标签和属性:对用户输入的内容进行过滤和清理,删除、禁止或转义所有危险的HTML标签和属性。
可以使用第三方的HTML 清理库,如OWASP Java Encoder、HTML Purifier等。
前端开发中的防御网络欺诈攻击技术随着互联网技术的快速发展,网络欺诈攻击日益猖獗。
作为前端开发人员,我们需要采取措施来提高网站和应用程序的安全性,防止网络欺诈攻击对用户造成的损害。
本文将介绍一些前端开发中常用的防御网络欺诈攻击技术。
一、跨站脚本攻击(XSS)防御技术跨站脚本攻击是指攻击者利用网站的漏洞,在用户浏览器中注入恶意脚本,从而获取用户的敏感信息。
为了防止XSS攻击,前端开发人员可以采取以下技术措施:1. 输入验证:对于用户输入的数据,进行严格的验证和过滤,确保用户输入的内容符合预期,并且不包含任何恶意脚本。
2. 输出编码:在将用户输入的数据输出到页面时,使用合适的编码方式,如HTML编码或URL编码,以确保任何恶意脚本都不会被执行。
3. Cookie安全标记:设置HttpOnly标记,可以防止恶意脚本通过document.cookie获取用户的Cookie信息。
二、跨站请求伪造(CSRF)防御技术跨站请求伪造是指攻击者利用用户登录状态,在用户不知情的情况下发送恶意请求,执行非法操作。
为了防止CSRF攻击,前端开发人员可以采取以下技术措施:1. 验证来源:在服务器端验证每个请求的来源,确保只接受来自合法网站的请求。
2. 请求令牌(Token):为每个用户生成一个唯一的令牌,并在用户的请求中包含该令牌,服务器端验证请求的令牌是否有效。
3. 同源策略:通过设置浏览器的同源策略,限制不同域之间的数据访问,防止恶意网站利用用户浏览器发送CSRF攻击。
三、点击劫持防御技术点击劫持是指攻击者将一个透明的iframe覆盖在一个看似无害的按钮或链接上,当用户点击按钮或链接时,实际上触发了iframe上的恶意操作。
为了防止点击劫持,前端开发人员可以采取以下技术措施:1. X-Frame-Options响应头:通过设置X-Frame-Options响应头为“DENY”或“SAMEORIGIN”,可以限制页面在iframe中的显示,防止点击劫持攻击。
xss防护措施XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的网络攻击方式,攻击者通过在网页中注入恶意脚本,从而能够窃取用户的敏感信息、劫持用户会话、篡改网页内容等。
为了保护网站和用户的安全,以下是一些常见的XSS防护措施:1.输入过滤和验证:对用户输入的数据进行过滤和验证是一种最基本的防护措施。
开发人员应该限制用户输入的类型和长度,并过滤特殊字符,防止恶意脚本被注入。
2.输出编码:开发人员在将用户输入的数据输出到网页时,应采用适当的编码方式,例如HTML实体编码、URL编码等,以防止恶意脚本在网页中执行。
4. HttpOnly标志:开发人员在设置Cookie时,可以使用HttpOnly标志,使得Cookie只能通过HTTP协议传输,而不能被恶意脚本获取,从而减少XSS的风险。
5. 防范点击劫持:点击劫持是一种通过透明化的方式诱使用户点击恶意链接的攻击方式。
开发人员可以使用X-Frame-Options响应头来防范点击劫持,限制网页在框架中的显示。
6.验证码:在敏感操作和用户登录等环节引入验证码机制,可以有效防范XSS攻击。
验证码可以防止自动化脚本恶意提交数据。
8.定期更新和修补:随着XSS攻击技术的不断演进,新的漏洞和攻击方式也会不断出现。
开发人员应该定期更新和修补网站的安全漏洞,保持防护措施的有效性。
总结起来,XSS防护涉及到开发人员在设计和编写代码时的多个层面,包括输入过滤、输出编码、安全策略的制定和实施等。
综合运用各种防护措施,可以有效减少XSS攻击的风险,提升网站和用户的安全性。
防范跨站脚本攻击跨站脚本攻击(Cross-Site Scripting,简称XSS)是一种常见的网络安全漏洞,攻击者通过向目标网站注入恶意脚本,使用户在浏览网页时执行该脚本,从而实施恶意操作。
为了保护网站的安全,我们必须采取一系列的防范措施来预防跨站脚本攻击的发生。
本文将介绍一些常用的方法和技术,帮助您更好地防范跨站脚本攻击。
1. 输入过滤和验证第一步,我们需要对用户输入的数据进行过滤和验证。
用户输入的数据可能包含恶意脚本,因此我们需要对用户的输入进行检查,确保其不包含特殊字符或恶意代码。
可以使用过滤器或正则表达式对用户输入进行限制,以防止恶意脚本的插入。
2. 输出编码第二步,我们需要对输出的数据进行编码。
无论是从数据库中读取的数据还是用户输入的数据,都需要经过编码处理,以确保所有特殊字符都被正确地转义。
常用的编码方法包括HTML实体编码、URL编码等,通过编码可以避免浏览器将数据解析为脚本。
3. 安全头设置第三步,我们可以通过设置安全头来增加网站的安全性。
安全头是一些HTTP头部的设置,可以用于告知浏览器执行某些安全策略。
例如,设置HTTP响应头中的Content-Security-Policy可以限制页面中执行的脚本来源,从而减少XSS攻击的可能性。
4. Cookie安全第四步,我们应该注意Cookie的安全问题。
恶意脚本可以通过Cookie来进行信息窃取或会话劫持等攻击。
为了增强Cookie的安全性,我们可以设置Cookie的HttpOnly属性,使其只能通过HTTP协议传输,阻止恶意脚本获取Cookie信息。
5. 更新和安全补丁第五步,我们需要及时更新和安装安全补丁。
对于使用的各种软件、框架和库,我们应该定期关注其安全公告,并及时更新和安装最新的安全补丁。
及时更新可以修复已经发现的漏洞,从而有效地预防跨站脚本攻击。
6. 安全教育和培训最后,我们不要忽视安全教育和培训的重要性。
无论是开发人员还是用户,都需要接受相关的安全培训,了解常见的网络安全威胁和防范措施。
跨站脚本攻击解决方案1. 引言跨站脚本攻击(Cross-Site Scripting,简称 XSS)是一种常见的网络安全漏洞,攻击者利用网站的漏洞插入恶意的脚本代码,从而在用户浏览网页时获取用户敏感信息或实施其他攻击行为。
为了有效地保护网站和用户的安全,必须采取一系列措施来解决跨站脚本攻击问题。
本文将介绍跨站脚本攻击的基本原理和常见类型,并探讨一些常用的解决方案,帮助开发人员构建更安全的网络应用程序。
2. 跨站脚本攻击的原理和类型跨站脚本攻击的本质是攻击者在目标网站上插入恶意脚本代码,然后将这些代码传递给其他用户执行。
攻击者可以利用许多不同的方式来实施跨站脚本攻击,下面是一些常见的攻击类型:2.1 反射型跨站脚本攻击反射型跨站脚本攻击是将恶意脚本代码作为参数或路径的一部分发送给目标网站,然后网站将这些恶意代码反射回用户的浏览器执行。
攻击者通常通过欺骗用户点击恶意链接或访问包含恶意脚本代码的页面来实施这种类型的攻击。
2.2 存储型跨站脚本攻击存储型跨站脚本攻击是攻击者将恶意脚本代码存储在目标网站的数据库或其他存储设备中,然后其他用户访问包含这些恶意代码的页面时,网站从存储设备中提取并执行该代码。
攻击者通常通过在留言板、论坛或输入框等可存储用户输入内容的地方插入恶意脚本代码来实施这种类型的攻击。
2.3 DOM 型跨站脚本攻击DOM 型跨站脚本攻击是攻击者通过修改网页的 DOM 结构,插入恶意脚本代码并被浏览器执行。
这种类型的攻击不需要向服务器发送恶意代码,攻击者通常通过构造恶意链接或在受害者的浏览器上执行恶意 JavaScript 代码来实施。
3. 跨站脚本攻击解决方案要防止跨站脚本攻击,开发人员应采取多层次的防御措施,包括输入验证、输出编码和使用内容安全策略等。
3.1 输入验证仔细验证用户提交的数据是防止跨站脚本攻击的第一道防线。
开发人员应该对用户输入的数据进行过滤和验证,确保输入数据符合预期的格式和内容。
XSS跨站脚本攻击技术原理及防护措施2010年07月12日星期一 1:08 P.M.发表:红科网安作者:Amxking发布时间:2010-06-23摘要:本文作者Amxking通过对xss跨站脚本攻击漏洞的历史、攻击特点、攻击原理描述及案例代码实战举例详细解析XSS漏洞攻击技术,并提出防御XSS跨站漏洞的思路方法。
及WEB开发者开发网站过程中防范编码中产生xss跨站脚本攻击漏洞需要注意的事项。
XSS漏洞概述:XSS(Cross Site Script)跨站点脚本攻击是一种注射的问题,在这种恶意脚本注入否则良性和信任的网站类型。
跨站点脚本(XSS)攻击,攻击者使用时,会出现一个网络应用程序发送恶意代码,一般是在浏览器端脚本的形式,向不同的最终用户。
这些缺陷,使攻击成功是相当普遍,发生在任何地方从一个Web应用程序使用在输出它没有验证或编码了用户输入。
攻击者可以使用XSS的恶意脚本发送到一个毫无戒心的用户。
最终用户的浏览有没有办法知道该脚本不应该信任,将执行该脚本。
因为它认为该脚本来从一个受信任的源,恶意脚本可以访问任何Cookie,会话令牌,或其他敏感信息的浏览器保留,并与该网站使用。
甚至可以重写这些脚本的HTML网页的内容。
XSS漏洞历史:XSS(Cross-site scripting)漏洞最早可以追溯到1996年,那时电子商务才刚刚起步,估计那时候国内很少人会想象到今天出现的几个国内电子商务巨头淘宝、当当、亚马逊(卓越)。
XSS的出现“得益”于JavaScript的出现,JavaScript的出现给网页的设计带来了无限惊喜,包括今天风行的AJAX(Asynschronous JavaScript and XML)。
同时,这些元素又无限的扩充了今天的网络安全领域。
XSS 漏洞攻击特点:(1)XSS跨站漏洞种类多样人:XSS攻击语句可插入到、URL地址参数后面、输入框内、img标签及DIV标签等HTML函数的属人里、Flash的getURL()动作等地方都会触发XSS漏洞。
(2)XSS跨站漏洞代码多样人:为了躲避转义HTML特殊字符函数及过滤函数的过滤,XSS跨站的代码使用“/”来代替安字符“””、使用Tab键代替空格、部分语句转找成16进制、添加特殊字符、改变大小写及使用空格等来绕过过滤函数。
如果在您的新闻系统发现安全漏洞,如果该漏洞是一个SQL 注入漏洞,那么该漏洞就会得到您的网站管理员密码、可以在主机系统上执行shell命令、对数据库添加、删除数据。
如果在您的新闻或邮件系统中发现安全漏洞,如果该漏洞是一个XSS跨站漏洞,那么可以构造一些特殊代码,只要你访问的页面包含了构造的特殊代码,您的主机可能就会执行木马程序、执行^***Cookies 代码、突然转到一个银行及其它金融类的网站、泄露您的网银及其它账号与密码等。
XSS攻击原理:XSS 属于被动式的攻击。
攻击者先构造一个跨站页面,利用script、<IMG>、<IFRAME>等各种方式使得用户浏览这个页面时,触发对被攻击站点的http 请求。
此时,如果被攻击者如果已经在被攻击站点登录,就会持有该站点cookie。
这样该站点会认为被攻击者发起了一个http 请求。
而实际上这个请求是在被攻击者不知情的情况下发起的,由此攻击者在一定程度上达到了冒充被攻击者的目的。
精心的构造这个攻击请求,可以达到冒充发文,夺取权限等等多个攻击目的。
在常见的攻击实例中,这个请求是通过script 来发起的,因此被称为Cross Site Script。
攻击Yahoo Mail 的Yamanner 蠕虫是一个著名的XSS 攻击实例。
Yahoo Mail 系统有一个漏洞,当用户在web 上察看信件时,有可能执行到信件内的javascript 代码。
病毒可以利用这个漏洞使被攻击用户运行病毒的script。
同时Yahoo Mail 系统使用了Ajax技术,这样病毒的script 可以很容易的向Yahoo Mail 系统发起ajax 请求,从而得到用户的地址簿,并发送病毒给他人。
XSS 攻击主要分为两类:一类是来自内部的攻击,主要指的是利用WEB 程序自身的漏洞,提交特殊的字符串,从而使得跨站页面直接存在于被攻击站点上,这个字符串被称为跨站语句。
这一类攻击所利用的漏洞非常类似于SQL Injection 漏洞,都是WEB程序没有对用户输入作充分的检查和过滤。
上文的Yamanner 就是一例。
另一类则是来来自外部的攻击,主要指的自己构造XSS 跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。
如当我们要渗透一个站点,我们自己构造一个跨站网页放在自己的服务器上,然后通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。
这一类攻击的威胁相对较低,至少ajax 要发起跨站调用是非常困难的。
案例实战:我们来看一个简单的攻击实例,下表给出了一个简单的网站:8080/testxss,该网站的密码和用户名相同,普通用户可以修改user value,当以admin 身份登陆时可以通过向doadmin.jsp 发起请求来修改admin value。
index.jsp<html><body><textarea rows="3" cols="100" readonly="on">Current User: ${username}Admin Value: ${adminvalue}User Value: ${uservalue}</textarea><br><a href="login.jsp"/>logout</a><br>Login:<br><form action="login.jsp" method="post">username: <input type="text" name="u"></input> <br>password: <input type="text" name="p"></input> <br><input type="submit" /> password == username :-)</form><form action="doadmin.jsp" method="post">adminvalue: <input type="text" name="v"></input> <br><input type="submit" /></form><form action="doadmin.jsp" method="post">uservalue: <input type="text" name="v2"></input> <br><input type="submit" /></form></body>login.jsp<%String u = request.getParameter("u");String p = request.getParameter("p");if (u != null && p != null && u.equals(p)) {session.setAttribute("username", u);} else {session.removeAttribute("username");}response.sendRedirect("index.jsp");%>doadmin.jsp<%String u = (String)session.getAttribute("username");String v = request.getParameter("v");String v2 = request.getParameter("v2");if (u != null && u.equals("admin")) {if (v != null)application.setAttribute("adminvalue", v);}if (u != null && v2 != null)application.setAttribute("uservalue", v2);response.sendRedirect("index.jsp");%>容易想到,只要诱骗admin 用户发起一个到:8080/testxss/doadmin.jsp的http 请求,就能成功攻击。
因此我们设计跨站语句如下:hello </textarea> <img src="/2xwfed" style="display:none"></img>hello </textarea> <form id="shit"action=":8080/testxss/doadmin.jsp" methond="post" target="myframe"/> <input type="hidden" name="v" value="hacked3"/> </form> <iframestyle="display:none" name="myframe"></iframe><script>document.forms[0].submit()</script>hello </textarea> <script language="jscript">v = newActiveXObject("MSXML2.XMLHTTP.3.0"); v.open("GET",":8080/testxss/doadmin.jsp?v=hacked4");v.send();alert(v.statusText);</script>以普通用户身份修改user value 为以上任何一个,当admin 浏览index.jsp 时,即可悄无声息的修改admin value这里演示了3 种跨站手法:1 是利用img、iframe 等tag 直接发起请求,这适用于无法直接出script 的情况,其中/2xwfed是一个redirect,指向:8080/testxss/doadmin.jsp?v=hacked2;2 是用script 提交post 表单;3 是ajax 技术。