XSS漏洞基础学习(笔记)

时间:2024-03-19 08:48:18

包含一些基础的XSS学习。

XSS跨站脚本分类

XSS漏洞介绍

跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。故将其缩写为XSS。恶意攻击者往Web页面插入恶意Script代码,当用户浏览该页时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击者的目的

反射型XSS

非持久型XSS,这种攻击往往具有一次性。攻击者通过邮件等形式将包含XSS代码的连接发送给正常用户,当用户点击时,服务器接收该用户的请求并进行处理,然后把带有XSS的代码发送给用户。用户浏览器解析执行代码,触发XSS漏洞。

使用dvwa演示,演示时需注意设置dvwa安全性,否则可能无法成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传XSS漏洞基础学习(笔记)

提交一个test_name,提交内容返回到页面

XSS漏洞基础学习(笔记)

构造代码,输入并提交,触发代码,弹出对话框(包含对应Cookie值)

XSS漏洞基础学习(笔记)

存储型XSS

持久性XSS,攻击脚本存储在目标服务器的数据库中,具有更强的隐蔽性(论坛、博客、留言板等,发帖过程中被嵌入XSS代码,帖子被目标服务器存储在数据库中,当用户进行正常访问时,触发XSS代码)

例如:dvwa中的Stored XSS

XSS漏洞基础学习(笔记)

弹出弹窗以后,代码内容被保存,以后每次访问,都会触发代码
XSS漏洞基础学习(笔记)

DOM型XSS

Document Object Model 使用DOM动态访问更新文档的内容、结构及样式。HTML标签都是节点,通过DOM可以对所有的节点进行修改。服务器响应不会处理攻击者脚本,而是用户浏览器处理这个响应时,DOM对象就会处理XSS代码,触发XSS漏洞。

例如:dvwa DOM XSS

点击select以后,在URL处直接修改为test,此时,修改的内容test直接反弹到了网页的选项中
XSS漏洞基础学习(笔记)

XSS盗取Cookie

反射XSS盗取Cookie

存在反射型XSS漏洞的站点位置,利用以下链接盗取Cookie
url?uname=#
XSS漏洞基础学习(笔记)
在本地文件夹下编写一个cookie.php
XSS漏洞基础学习(笔记)
注意路径
XSS漏洞基础学习(笔记)
提交以后,页面重定向
XSS漏洞基础学习(笔记)
查看cookie.txt内容,cookie值被写入文件
XSS漏洞基础学习(笔记)

利用cookie会话劫持

打开cookie.txt文件,找到cookie值,访问目标站点,修改cookie为cookie.txt中的内容,即可成功访问。
XSS漏洞基础学习(笔记)

劫持会话后的操作

1.进入后台寻找上传点(一句话webshell)
XSS漏洞基础学习(笔记)

2.修改配置

XSS篡改网页链接

XSS篡改链接

window.onload 当窗口加载时,执行匿名函数。
例如,将所有a标签的链接替换为自定义的链接:

将篡改代码注入到对应XSS位置,以dvwa 反射XSS为例,审查元素,此时链接为官方链接
XSS漏洞基础学习(笔记)
将上述代码复制并提交,所有a标签链接发生改变
XSS漏洞基础学习(笔记)

篡改链接指向流量URL

刷流量,某些站点的重定向。
例如:link[j].href = “http://qq.com”,点击以后跳转到腾讯网
XSS漏洞基础学习(笔记)

篡改链接指向恶意URL

Beef进行恶意链接生成,利用hook.js执行其他命令

在kali中使用 beef-xss 生成恶意链接
XSS漏洞基础学习(笔记)
使用 service apache2 start 开启服务器,使用leafpad打开/var/www/html下的index.html,将恶意链接添加进去
XSS漏洞基础学习(笔记)

使用主机访问
XSS漏洞基础学习(笔记)

返回kali查看beef,出现了一台新的机器,包含对应信息以及一些可执行的命令(绿色可用,红色不可用)
XSS漏洞基础学习(笔记)

XSS盗取用户信息

盗取用户信息原理

克隆网站登录页面,利用存储XSS设置跳转代码,如果用户访问即跳转到克隆网站的登录页面,用户输入登录账号、密码被存储

setoolkit工具克隆网站

在kali下使用setoolkit,根据提示依次 set 1-2-3-2
XSS漏洞基础学习(笔记)
复制目标网站的URL
XSS漏洞基础学习(笔记)
在setoolkit中配置克隆网站的ip地址和被克隆网站的url
XSS漏洞基础学习(笔记)
通过URL访问克隆网站,克隆成功
XSS漏洞基础学习(笔记)
XSS漏洞基础学习(笔记)

存储XSS跳转克隆网站

xss payload:

例如:在dvwa 存储型XSS中,将上述代码写入(长度受限制可通过审查元素修改)
XSS漏洞基础学习(笔记)
提价以后页面跳转到克隆网站
XSS漏洞基础学习(笔记)
XSS漏洞基础学习(笔记)

查看盗取账号密码

当用户在克隆网站登录时,用户名和密码被发送给攻击者
XSS漏洞基础学习(笔记)
XSS漏洞基础学习(笔记)

没有过滤的XSS

实验环境:http://xss-quiz.int21h.jp/(一个日本安全研究员制作的练习靶场)

探测XSS过程

1.构造一个独一无二且不会被识别为恶意代码的字符串用来提交页面
例如:123thisisatestcode
2.进行代码审查,寻找构造的字符串是否在页面中显示
XSS漏洞基础学习(笔记)

闭合文本标签利用XSS

1.简单payload:

提交以后,弹窗,可以进入下一关
XSS漏洞基础学习(笔记)
XSS漏洞基础学习(笔记)

2.闭合标签payload:(b标签表示加粗文本)
"
b标签被闭合,同样可以进入下一关,在payload前加自定义内容,效果一样
XSS漏洞基础学习(笔记)
XSS漏洞基础学习(笔记)

标签属性中的XSS

配置Chrome关闭XSS-Auditor

在实验过程中,如果无法正常提交,使用 --args --disable-xss-author 进行配置。右键属性,将上述命令填在目标位置后面
XSS漏洞基础学习(笔记)

属性中的XSS闭合引入script

Ctrl+F,发现提交的参数以属性输出
XSS漏洞基础学习(笔记)
闭合并引入script脚本
">
XSS漏洞基础学习(笔记)

XSS漏洞基础学习(笔记)

属性中的XSS闭合引入事件

例如鼠标移动:
" οnmοuseοver=alert(document.domain)>
当鼠标移动到search文本框区域时,弹窗弹出
XSS漏洞基础学习(笔记)

选择列表中的XSS

select标签:创建单选或多选菜单
option标签:可用选项
表单:搜集用户输入

burpsuite测试XSS

使用burpsuite修改提交参数
XSS漏洞基础学习(笔记)
点击Forward发送包,显示内容为修改后的内容
XSS漏洞基础学习(笔记)

闭合触发XSS

修改参数进行闭合 ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8yMTAzNTQ4My01ZDM3NzhhMjM0N2JiMDJjLnBuZw?x-oss-process=image/format,png)

右键复制响应链接
XSS漏洞基础学习(笔记)

在浏览器中访问,弹窗弹出,确定以后可进入下一关
XSS漏洞基础学习(笔记)
XSS漏洞基础学习(笔记)

选择参数中的XSS

HTML表单隐藏参数

隐藏域是用来搜集或发送信息的不可见元素
代码格式:

burpsuite抓包测试

XSS漏洞基础学习(笔记)
审查元素,查找隐藏参数
XSS漏洞基础学习(笔记)

HTML中svg

SVG(可缩放矢量图形)使用XML格式定义图像。SVG文件可以通过以下标签嵌入HTML文档:、、。也可以使用标签。

<svg/事件="">

闭合触发XSS

"><svg/οnlοad=alert(document.domain)>%0a(%0a替换空格)
例如:在前两个参数中,XSS被过滤,在第三个参数进行闭合
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ko4N0ygn-1596515414469)(https://upload-images.jianshu.io/upload_images/21035483-e73c15dbfdbfb829.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
点击Forward,弹窗弹出,可进入下一关
XSS漏洞基础学习(笔记)
XSS漏洞基础学习(笔记)

限制长度的XSS

1.text:定义常规文本输入
属性:
value:输入字段初始值
readonly:输入字段只读
disable:输入字段禁用,不可点击,不会被提交
size:输入字段尺寸(以字符计)
maxlength:输入字段最大长度
2.XSS Payload长度计算
快速计算:使用python内置函数 len()
XSS漏洞基础学习(笔记)
3.修改源码
浏览器审查工具修改
4.Payload触发XSS漏洞

HTML事件中的XSS

通关使用客户端的javascript,可以将某些特定的事件处理器作为属性添加给特定的标签,并可以在事件发生时执行一个或多个JavaScript命令或函数。例如当鼠标单击时运行脚本等等。
1.XSS漏洞发现
设置独一无二的优良字符串,在响应中寻找
2.闭合思路
1、通过HTML事件来触发XSS,例如:
" οnmοuseοver="alert(document.domain)
2、闭合 input 标签,例如:
">

空格分隔属性的XSS

提交 test">,无弹窗
XSS漏洞基础学习(笔记)
进行测试,提交 test"123,123在 value 后面
XSS漏洞基础学习(笔记)
提交 test",效果类似
XSS漏洞基础学习(笔记)
提交 test 123,123成了新标签
XSS漏洞基础学习(笔记)
(test 123=123)
XSS漏洞基础学习(笔记)
构造XSS代码进行测试:
test οnmοuseοver=alert(document.domain)
XSS漏洞基础学习(笔记)
XSS漏洞基础学习(笔记)

JavaScript伪协议的XSS

将JavaScript代码添加到客户端的方法是把它放置在伪协议说明符 javascript: 后的URL中。该协议类型声明了URL的主体可以是任意JavaScript代码,由JavaScript的解释权运行。
例如:
javascript:var now = new Database();“

The time is:

” + now
JavaScript URL还可以含有执行动作,但不返回值的语句。
例如:
javascript:alert(“hello world!”)

:超链接 href指定链接的目标

提交test寻找XSS漏洞
XSS漏洞基础学习(笔记)
输入内容为URL,利用JavaScript伪协议构造XSS代码
javascript:alert(document.domain)
XSS漏洞基础学习(笔记)
点击链接即可弹出弹窗
XSS漏洞基础学习(笔记)

过滤的XSS

绕过过滤domain为空的XSS

输入test">,发现 domain 被替换为空
XSS漏洞基础学习(笔记)

双写绕过

payload:test">
成功绕过
XSS漏洞基础学习(笔记)

编码绕过

eval:执行字符串
atob:将加密的base64字符串(在线网站即可加密)转换为对应字符串
payload:test">
成功绕过
XSS漏洞基础学习(笔记)
XSS漏洞基础学习(笔记)

绕过替换 script 和 on 的XSS

输入test">,script被替换为xscript
XSS漏洞基础学习(笔记)
输入test" οnmοuseοver="alert(document.domain),onmouseover被替换为onxxx
XSS漏洞基础学习(笔记)

伪协议空格绕过

输入test">xss
javascript被替换为javaxscript
XSS漏洞基础学习(笔记)
payload:test">xss
(注:此空格为Unicode编码转换后的空格,即编码&#09;也可进行XSS注入)
XSS漏洞基础学习(笔记)

利用IE特性绕过XSS过滤

在stage12中,尝试HTML事件触发XSS,输入
test" οnclick=“alert(document.domain)
双引号和空格被过滤去掉
XSS漏洞基础学习(笔记)
尝试闭合input,利用外部标签触发XSS,输入
test”>
双引号和尖括号被过滤去掉
XSS漏洞基础学习(笔记)

IE特性

IE中,两个反引号可以闭合一个左边双引号 payload: οnmοusemοve=alert(document.domain)
XSS漏洞基础学习(笔记)

利用CSS特性绕过XSS过滤

background:url(“javascript:alert(document.domain);”); 设置背景颜色
目前IE支持(win10新版本不支持),其他浏览器不支持
payload:background-color:#f00;background:url(“javascript:alert(document.domain);”);

IE中利用CSS触发XSS

expression(css表达式) 可以在CSS中定义表达式来达到建立元素属性之间的联系等作用(IE5开始支持,IE8取消支持)
CSS中的注释//绕过对expression的过滤。例如:ex//pression
payload:xss:expre/**/ssion(if(!window.x){alert(document.domain);window.x=1;})

16进制绕过过滤触发XSS

可使用python(使用python2尽量)进行将字符串进行转换
XSS漏洞基础学习(笔记)
输入">,双引号与尖括号被转义
XSS漏洞基础学习(笔记)

双斜杠+16进制绕过

测试:\x3c \x3e
XSS漏洞基础学习(笔记)
payload:\x3cscript\x3ealert(document.domain);\x3c/script\x3e
XSS漏洞基础学习(笔记)

unicode绕过过滤XSS

可使用python(使用python2尽量)进行将字符串进行转换
XSS漏洞基础学习(笔记)
输入:\x3cscript\x3ealert(document.domain);\x3c/script\x3e,并未输出尖括号
XSS漏洞基础学习(笔记)

双斜杠+Unicode绕过

payload:\u003cscript\u003ealert(document.domain);\u003c/script\u003e
XSS漏洞基础学习(笔记)