XSS跨站攻击介绍

XSS跨站攻击介绍

1.XSS跨站攻击的原理

Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。

当页面被注入了恶意 JavaScript 脚本时,浏览器无法区分这些脚本是被恶意注入的还是正常的页面内容,所以恶意注入 JavaScript 脚本也拥有所有的脚本权限。下面我们就来看看,如果页面被注入了恶意 JavaScript 脚本,恶意脚本都能做哪些事情。

(1)可以窃取 Cookie 信息。恶意 JavaScript 可以通过“document.cookie”获取 Cookie 信息,然后通过 XMLHttpRequest 或者 Fetch 加上 CORS 功能将数据发送给恶意服务器;恶意服务器拿到用户的 Cookie 信息之后,就可以在其他电脑上模拟用户的登录,然后进行转账等操 作。

(2)可以监听用户行为。恶意 JavaScript 可以使用“addEventListener”接口来监听键盘事件,比如可以获取用户输入的信用卡等信息,将其发送 到恶意服务器。黑客掌握了这些信息之后,又可以做很多违法的事情。

(3)可以通过修改 DOM伪造假的登录窗口,用来欺骗用户输入用户名和密码等信息。

(4)还可以在页面内生成浮窗广告,这些广告会严重地影响用户体验。

2.XSS跨站攻击分类

2.1反射型

也被称为非存储型,使用的比较广泛。主要就是把代码块藏在url里面,然后给用户去点击运行。

2.2存储型

已经把代码块藏在了服务器的某个地方,比如说藏在贴吧评论区,别人加载这个帖子看到评论的时候就已经把这个代码块运行了。

2.3DOM型

dom也算是反射类型范围内,因为dom不涉及存储到服务器。
百度百科:DOM是分割文档中的信息的能力,包括添加、编辑,它还包含使用这些对象所必需的方法和属性。
就是可以根据dom的能力去操控这些东西,比如使用某些方法做某些事情,或是直接获取某些数据。

3.演示

3.1反射型

在这里插入图片描述

攻击过程必须让用户访问指定url 才能生效,并且访问过程产生的数据不会被服务端造成影响

反射型XSS的总体流程总结就是这张图。黑客诱导你到点击了某个链接,这个链接提供的服务,可能就是上述的搜索功能。

网页在解析到链接 的参数后,执行正常的搜索 逻辑,但是因为漏洞,网页中被填入了黑客定义的脚本。使得用户的浏览器,最终执行的是黑客的脚本。

在这里插入图片描述

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

由于需要用户主动打开恶意的URL才能生效,攻击者往往会结合多种手段诱导用户点击。

POST 的内容也可以触发反射型 XSS,只不过其触发条件比较苛刻(需要构造表单提交页面,并引导用户点击),所以非常少见。

3.2存储型

交互的数据会被存储在数据库里面,永久性存储,具有很强的稳定性。

存储型 XSS 的攻击步骤:

(1)攻击者将恶意代码提交到目标网站的数据库中。
(2)用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器。
(3)用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
(4)恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。

在这里插入图片描述

比如这个留言板功能,在一个系统中如果有留言板功能的话一定是把内容存储到数据库中,这样才能够保证每个用户都能够读取到留言。

如上图所示,当我输入以下留言时,数据库中就会存储alert(63252)内容,这样每当有用户访问留言板时他就会在起作用,在界面中弹出框。

如果黑客将一些恶意代码写入数据库,每当用户访问时就会执行恶意代码的话,后果不堪设想。

3.3DOM型

基于 DOM 的 XSS 攻击是不牵涉到页面 Web 服务器的。具体来讲,黑客通过各种手段将恶意脚本注入用户的页面中,比如通过网络劫持在页面传输过程中修改 HTML 页面的内容,这种劫持类型很多,有通过 WiFi 路由器劫持的,有通过本地恶意软件来劫持的,它们的共同点是在 Web资源传输过程或者在用户使用页面的过程中修改 Web 页面的数据。

DOM 型 XSS 的攻击步骤:

(1)攻击者构造出特殊的 URL,其中包含恶意代码。
(2)用户打开带有恶意代码的 URL。
(3)用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。
(4)恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。

4.危害

1、网络钓鱼,包括盗取各类用户账号;

2、窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作;

3、劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等;

4、强制弹出广告页面、刷流量等;

5、网页挂马,进行恶意操作,例如任意篡改页面信息、删除文章等;

6、进行大量的客户端攻击,如DDoS攻击;

7、获取客户端信息,例如用户的浏览历史、真实IP、开放端口等;

8、控制受害者机器向其他网站发起攻击;

9、结合其他漏洞,如CSRF漏洞,实施进一步作恶;

10、提升用户权限,包括进一步渗透网站;

取客户端信息,例如用户的浏览历史、真实IP、开放端口等;

8、控制受害者机器向其他网站发起攻击;

9、结合其他漏洞,如CSRF漏洞,实施进一步作恶;

10、提升用户权限,包括进一步渗透网站;

11、传播跨站脚本蠕虫等;

猜你喜欢

转载自blog.csdn.net/m0_54020412/article/details/125289605