Web安全之XSS跨站脚本攻击

一、XSS跨站脚本攻击简介

什么是XSS

XSS 又叫 CSS,全称跨站脚本攻击。它是指攻击者往 web 页面或 url 里插入恶意 JavaScript 脚本代码且应用程序对用户输入的内容没有过滤,那么当正常用户浏览该页面时,嵌入在 web 页面的恶意 JavaScript 脚本代码会被执行,从而达到恶意攻击正常用户的目的。

漏洞位置

数据交互与输出的地方,比如:输入框、URL等。

触发条件

漏洞产生的两个条件:

  • 用户可以控制的输入点

  • 输入能返回到前端的页面上被浏览器当成脚本语言解析执行

XSS大致分类

  • 反射型XSS:它是非持久型,也叫一次性 XSS,参数型的跨站脚本

  • 存储型XSS:它是将脚本代码写进数据库可以永久保存数据,危害最大

  • DOM型XSS:与反射性相似,但是 DOM 是树形结构,利用 DOM 标签

XSS危害

获取用户 cookie、键盘记录、xss gets hell、刷流量,执行弹窗广告、传播蠕虫病毒。

二、环境搭建

Pikachu:https://github.com/zhuifengshaonianhanlu/pikachu/archive/refs/heads/master.zip

在线环境:https://xss.haozi.me

三、漏洞利用

3.1、反射型XSS

  • 反射型XSS:它是非持久型,也叫一次性 XSS,参数型的跨站脚本

进入测试平台 pikachu,选择 Cross-Site Scripting -> 反射型xss(get)。

在输入框输入 xss111,然后查看源代码发现直接将我们输入的数据插入进前端。

那么我们输入 JavaScript 的弹框语句。

<script>alert(/xss/)</script>

注:这里需要 F12 将 maxlength="20" 修改为 maxlength="100" 不然只能输入 20 个字符。

 这时再次查看源代码,可以看到已经将我们的恶意语句插入前端所以导致了 XSS 漏洞。

 当然单单弹框肯定是没用的,我们还可以将 Cookie 弹出。

<script>alert(document.cookie)</script>

 此时就已经将当前 Cookie 以弹框的方式显示出来了,但现在有个问题作为攻击者现在弹出的 Cookie 是自己的用户也没用啊又不是其他用户的。

别着急后面会写到利用 XSS 平台获取其他用户的 Cookie。

3.2、存储型XSS

  • 存储型XSS:它是将脚本代码写进数据库可以永久保存数据,危害最大

进入测试平台 pikachu,选择 Cross-Site Scripting -> 存储型xss。

在留言板输入 XssTest,可以看到下方会将我们输入的内容显示。

这个数据是会一直保留在数据库中,每次我们加载这个页面时数据库都会将这个 XssTest 给输出到留言列表中。

那么就可以将 JavaScript 代码插入到数据库中,这样每次加载页面都会将数据库的内容提取出来并输出。

<script>alert(/xss/)</script>

3.3、DOM型XSS

  • DOM型XSS:与反射性相似,但是 DOM 是树形结构,利用 DOM 标签

进入测试平台 pikachu,选择 Cross-Site Scripting -> DOM型xss。

既然 DOM 型和 HTML 有关系,那么查看源代码找到相应的位置。

黄色框框分别对应的是输入框和按钮的代码,在红色框框的 JavaScript 代码中 str 变量 GET 接收了一个 text 名的数据也就是我们输入框输入的数据,然后会将我们输入的数据放入 HTML 的 A 标签中。那么我们只需要将 A 标签去进行一个闭合就会导致 XSS 的产生。

这里将 HTML的 A 标签单独复制出来构造 XSS 语句: "<a href='"+str+"'>what do you see?</a>"

"<a href=''><img src="#" onmouseover="alert('xss')">'>what do you see?</a>" 

最终构造的 XSS 语句为:

'><img src="#" onmouseover="alert('xss')">

3.4、搭建XSS平台接收Cookie

(1)搭建XSS平台

下载地址:mirrors / trysec / bluelotus_xssreceiver · GitCode

将下载的压缩包解压到网站根目录下,这里我解压到 WWW\XSS_platform 下。

启动 Apache 服务。

 访问浏览器本地 XSS_platform 目录进行安装。

这里的配置和密码根据自己的情况去设定。

 设置完成后提交。

访问后台 http://192.168.2.6/XSS_platform/login.php 进行登录。

登录后点击 "我的JS" 新建一个接收 cookie 的 js,插入 default 模板。

修改模板内容中的 website 变量值。

 这样子就搭建完成了。

(2)获取目标cookie

在利用刚刚设置的 js 文件生成 payload。

 复制此 payload 粘贴到存在 xss 漏洞的地方,这里插入到 pikachu 中的 xss 存储型。

当有人访问该页面就会将 coookie 发送到我们的 xss 平台上。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值