涉及知识

XSS跨站脚本攻击的产生

XSS简介

跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。

xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。

原理

HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。
总结后为三点。

①攻击者对含有漏洞的服务器发起XSS攻击(注入JS代码)。

②诱使受害者打开受到攻击的服务器URL。

③受害者在Web浏览器中打开URL,恶意脚本执行。

产生层面

产生层面一般都是在前端,JavaScript代码能干什么,执行之后就会达到相应的效果

3. 函数类

比如说php中的脚本的输出函数

常见的输出函数有:print、print_r、echo、printf、sprintf、die、var_dump、var_export

4. 漏洞操作对应层

无

5. 危害影响

  • 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

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

  • 盗窃企业重要的具有商业价值的资料

  • 非法转账

  • 强制发送电子邮件

  • 网站挂马

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

6. 浏览器内核版本

利用这个漏洞受到浏览器版本和浏览器脚本过滤机制影响

需要浏览器版本和内核没有过滤XSS攻击

7. 常出现场景

文章发表、评论、留言、注册资料的地方、修改资料的地方等

XSS跨站脚本攻击漏洞的分类

反射型XSS

攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

提交 x=xiaodi => x.php => 回包

反射型 XSS漏洞常见于通过 URL 传递参数的功能,如网站搜索、跳转等。

反射型XSS只是简单的把用户输入的数据“反射”给浏览器,也就是说需要诱使用户“点击”一个恶意链接,才能攻击成功。漏洞产生的原因是攻击者注入的数据反映在响应中。非持久型XSS攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。

反射型 XSS 的攻击步骤

已知存在XSS漏洞

1. 攻击者构造出包含恶意代码的 URL,通过各种办法发送给终端用户(钓鱼)。

如:构造url为:http://192.168.1.101/submit.php?input_value=“><img src=1 onerror=alert(/xss/)/>

2. 用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。

用户访问上述URL触发XSS漏洞,GET方式提交了上述代码,后端处理之后返回前端

3. 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。

存储型XSS

代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。

提交 x=xiaodi => x.php => 写到数据库某个表 => x.php =>回显

存储型 XSS攻击常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等。

储存型XSS会把用户输入的数据“储存”在服务器端。这种XSS具有很强的稳定性。持久的XSS危害性大,容易造成蠕虫,因为每当用户打开页面,查看内容时脚本将自动执行。持久型XSS最大的危害在于可能在一个系统中的用户间互相感染,以致整个系统的用户沦陷。能够造成这种危害的脚本我们称之为XSS蠕虫。

存储型 XSS 的攻击步骤

已知存在XSS漏洞

1. 攻击者将恶意代码提交到目标网站的数据库中。

如:留言板提交XSS攻击脚本,并存储到数据库中

2. 用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器。
3. 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。

DOM型XSS

基于文档对象模型(Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如URI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。

提交 x=xiaodi => 本地浏览器静态前端代码 =>x.php

DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。

DOM通常代表在html、xhtml和xml中的对象,使用DOM可以允许程序和脚本动态的访问和更新文档的内容、结构和样式。它不需要服务器解析响应的直接参与,触发XSS靠的是浏览器端的DOM解析,所以防范DOM型XSS完全就是前端的责任,必须注意!!!。

DOM 型 XSS 的攻击步骤

已知存在XSS漏洞

1. 攻击者构造出特殊的 URL,其中包含恶意代码。
2. 用户打开带有恶意代码的 URL。
3. 用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。

XSS跨站脚本攻击常规手法

平台

在线XSS平台:https://xss8.cc/xss.php?do=login

在线XSS平台:https://xsshs.cn/xss.php?do=login

工具

见下节

攻击成功的条件——必须全部满足

  1. 对方有XSS漏洞

  2. 浏览器存有Cookie

  3. 浏览器不进行拦截

  4. 不存在带代码过滤和HTTPonly

  5. 对方要触发这个漏洞地址

Cookie和Session

共同点

二者都是用户凭据:通过凭据可以判断对方身份信息

不同点

  • cookie 存储本地 存活时间较长 小中型网站

  • session 会话 存储服务器 存活时间较短 大型网站

  • session会占用服务器的资源,但是比较安全。比如说javaweb中的session序列化和反序列化。

演示案例

XSS平台的使用

在线XSS平台地址:https://xsshs.cn/xss.php?do=login

注册平台账户

img

新创建一个我的项目

img

选择自己需要的功能,打钩

img

查看可用的脚本代码

img

把这些跨站代码提交到到目标攻击的网站

img

等管理员查看后台留言板的时候触发我们提交的脚本代码

img

发现请求了这个地址。在XSS平台上就有信息了,比如获取到Cookie

img

涉及资源

在线XSS平台:https://xss8.cc/xss.php?do=login

在线XSS平台:https://xsshs.cn/xss.php?do=login

XSS实验:https://github.com/do0dl3/xss-labs

随意多功能留言板 SyGuestBook v1.2:http://down.chinaz.com/soft/37581.htm

站内搜索

没有找到内容!