XSS讲解上(web安全入门10)

一、XSS 漏洞概述

1.1 简介

XSS 被称为跨站脚本攻击(Cross-site scripting),本来应该缩写为 CSS,但是由于和 CSS

(Cascading style sheets,层叠样式脚本)重名,所以更名位 XSS。

XSS 主要是基于 JavaScript(JS)完成恶意的攻击行为。JS 可以非常灵活的操作 html、css 和

浏览器,这使得 XSS 攻击的想象空间特别大。

XSS 通过将精心设计构造的代码(JS)注入网页中,并由浏览器解释运行这段 JS 代码,以达

到恶意攻击的效果。当用户访问被 XSS 脚本注入的网页,XSS 脚本就会被提取出来。用户浏

览器就会解析这段浏览器代码,也就是用户被攻击了。

用户最简单的动作就是使用浏览器上网,并且浏览器中有 JavaScript 解释器,可以解析

JavaScript,然而浏览器不会判断代码是否恶意。也就是说,XSS 的对象是用户和浏览器。

1、XSS 漏洞发生在哪里?

发生在服务器端

在这里插入图片描述

微博、留言板、聊天室等等收集用户输入的地方,都有可能被注入 XSS 代码,都存在遭受

XSS 攻击的风险,只要没有对用户的输入进行严格的过滤,就会被 XSS 攻击。

1.2XSS 危害

XSS 利用 JS 代码实现攻击,有很多种攻击的方法,以下简单列出几种

1、盗取各种用户账户

2、盗取用户 Cookie 资料,冒充用户身份进入网站

3、劫持用户会话,执行任意操作

4、刷流量、执行弹窗广告

5、传播蠕虫病毒

等等

1.3XXS 漏洞的验证

我们可以用一段简单的代码,验证和检测漏洞的存在,这样的代码叫做 PoC(Proof of Concept)
在这里插入图片描述

EXP 是工具,包含 PoC、shellcode、payload 验证漏洞存在的 Poc 如下:

<script>alert(/XSS/)</script> 常用
<script>confirm('XSS')</script>
<script>prompt('XSS')</script>

我们可以在测试页面中提交这样的代码,当我发现提交的代码
被当作字符串输出在 HTML 页面中,浏览器会根据[

它,并执行弹窗操作,即可以执行其他 JS 代码,因此我们验证了 XSS 漏洞的存在性。

例如:

index.php 文件

在这里插入图片描述

xss.php 文件

在这里插入图片描述

二、XSS 的分类

XSS 漏洞大概分为三个类型:反射型 XSS、存储性 XSS、DOM 型 XSS

2.1 反射型 XSS

反射型只是简单的将用户输入的数据"反射"给浏览器,其应用场景往往是黑客诱使用户点击

一个恶意链接,从而获得用户的 cookie 信息。

反射性 XSS 是非持久性、参数型的跨站脚本。反射型 XSS 的 JS 代码在 Web 应用的参数

(变量)中,如搜索框的反射型 XSS。

例如 cms 文件管理系统中:

在搜索框中,提交 PoC[],点击搜索,即可触发反射型 XSS。

注意到,我们提交的 poc 会出现在 search.php 页面的 keywords 参数中。

例如编写如下测试页面 xss_test.php

<?php
$input = $_GET["var"];
echo "<div>".$input."</div>";
?>

在浏览器输入端提交参数 http://ip/xss_test.php?var= 会发现 alert(/xss/)已经被执行了,弹窗成功 查看页面源代码,会发现用户输入的 script 代码,已经被写入到页面中,显然,这不是开发 人员想要看到的情况。

在这里插入图片描述

2.2 存储型 XSS

存储型 XSS 是一个持久性跨站脚本。持久性体现在 XSS 代码不是在某个参数(变量)中,

而是写进数据库或文件等可以永久性保存数据的介质中。

存储型 XSS 通常发生在留言板的地方。我们在留言板位置留言,将恶意代码写进数据库中。

此时,所有查看我留言的用户,甚至是管理员,都会在他们的浏览器端执行恶意的 javascript

代码,黑客把恶意的脚本保存到服务器端,所以这种 XSS 攻击就叫存储型 XSS。

例如 cms 文件管理系统,留言板中存在存储型 xss 漏洞

2.3 DOM XSS

DOM XSS 比较特殊。owasp 关于 DOM 型号 XSS 的定义是基于 DOM 的 XSS 是一种 XSS

攻击,其中 XSS 攻击的 payload 由于修改受害者浏览器页面的 DOM 树而执行的。其特殊

地方在于 payload 在浏览器本地修改 DOM 树而执行,并不会上传到服务器上,这也就使

得 DOM XSS 比较难以检测,其实它和反射型 XSS 类似,但是由于历史原因,将其单独作为

一个分类。

例如,创建 domxss.html 文件

在这里插入图片描述

unescatpe()函数的功能是,将 url 地址中的 url 编码进行解码,因为 url 地址中有些字符是进

行 url 编码的。

提交请求

http://ip/domxss.html# message=

或者

http://ip/domxss.html?message=

我们以描点的方式提交 PoC 并不会发送到浏览器,但是已经触发了 XSS。

查看提交参数后的 HTML 页面(DOM 树),会被重新渲染,从而在不通过服务器端的情况

下改变 DOM 树。

页面源代码中,没有弹窗的 xss 代码,但是在审查元素的查看器中存在弹窗的 xss 代码。

在这里插入图片描述

注意:只要修改了 DOM 树,浏览器就会重新渲染页面。

练习:DVWA 中的 xss

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑战士安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值