以xss-labs举例反射型xss注入的方式及基本思路

其它文章

xss-labs靶场1~5关详解
xss实验并对注入点、注入语句及危害知识总结
other article to be continue…

<1>什么是xss

xss的英文名字是cross-site-script。俗称跨站脚本,是一种注入攻击,指攻击者在被攻击的网页上利用编写时的漏洞注入恶意脚本代码,受害者访问该页面时,恶意代码会在用户的浏览器上执行。

<2>XSS的分类

  • 1.反射型

  • 2.dom型

  • 3.存储型

  • <1>反射型解析:反射型的数据走向是 客户端->服务器->客户端,XSS-LABS中全是这种类型的,或者也可以说是dom型的,客户端根据html网页源码,判断注入漏洞,不调用html中的js代码是反射型,而dom型则是直接调用网页源码中的js代码。

  • <2>dom型解析:dom型的数据走向是 URL->浏览器

  • <3>存储型解析:存储型的数据走向是 客户端->服务器->数据库->服务器->客户端,比如有些网站有评论功能,当你评论时,服务器会把你的评论保存再数据库中,如果这时候注入恶意的js代码,那么只要一有人请求这个网页,那么就会请求到有恶意代码的网页。

<3>XSS的危害

如果一个人发现了一个网站过滤不严的地方,然后用a标签写了一个连接,中间加入了js代码,骗你进这个网址点一点就能免费领电饭煲,当你点进去以后发现其实指向了自己经常登录的一个网站,后来也不在意,可能这时候你已经被拿走了你在这个网站的cookie,那么注入者拿着你的cookie登录网站,用你的大会员看视频,损害你的利益,甚至还租借你的大会员。

<4>传递参数方式

像SQL-LABS一样,XSS靶场也包括有不同的传递注入语句的方式,不过和SQL-LABS不同的是,XSS-LABS没有SQL-LABS那么多的传递方式,它有以下两种:

  • 1.get传参
  • 2.HTTP消息头传参
    在哪注入归根结底就是看网站源码调取哪里的参数,调取的参数加了怎样的过滤。

<5>常见存在注入的语句

  • 1.a标签中的href
  • 2.embed标签传参处
  • 3.input标签
  • 4.embed也可以作为其它标签的参数,比如span

<6>绕过的方法

  • 1.img标签src出错时用onerror注入

  • 2.将a标签闭合,用script标签进行注入

  • 3.用onmoseover等焦事件可以实现绕过执行脚本,焦事件可以用到input标签,a标签中的href属性,img标签等标签处。

  • 4.可以尝试将代码进行unicode编码等浏览器可以解析的编码方式进行注入

  • 5.可用转义序列实现绕过,转义序列是SGML类语言如xml、html中的中的一个设定,标志就是在一个数字前有 ”&#“ 这个字符后面可以跟十进制数或十六精进制,在构造语句时可以使用这种方法,从而实现绕过。

  • 6.不只是转义序列,当你碰到删除空格的过滤时可以常识使用url编码,用%0a换行

<7>反射型xss注入的基本思路

第一步:初步信息收集

判断一个网站是否存在xss注入,首先要有信息去分析,所以第一步进行信息收集

收集信息的方法
  • <1>查看网页源码,留意源码中常见存在注入的语句,并留意可以向服务器传递的参数
  • <2>向服务器传递参数,并判断,哪些参数被用到了网页上,并且初步记录
  • <3>将用了传递参数的语句总结出来之后,将常见存在注入的语句挑出,并且对它们的闭合方式进行记录
  • <4>对初步记录进行分析,并总结结论,结论的标准是
  • 我要在哪些语句上用哪些xss绕过方法进行注入
第二步:尝试注入并记录结果

根据第一步的初步信息记录结果,进行注入,但是一般网站都会进行waf防护,所以注入不成功很正常,所以要记录不成功的案例分析

第三步:分析不成功的结果

根据绕过方法,将第二步的信息分析,发现可能的方法,进行尝试,之后一直第二步第三步进行循环直到成功

<8>双写绕过的原理

双写注入一般出现在删除字符的情况下,调用str_replace函数,将传递过来中的参数中的指定字符串被替换成"",如下图:

在这里插入图片描述
根据原理,这一关有多种双写方式,比如在语句中用javassccript和javascrscriptipt的效果一样,原理是把中间的script删除之后,两边的字符又组成了新的’script’,但是计算机不会再检查一遍字符串,从而实现注入。

<9>特殊关卡的记录

1.十四关的知识点

这一关iframe标签中的网站用不了了,使这一关不能做,但是这里我讲一下exif,exif(exchangeable image file format)可交换文件格式,是一种用来记录数码照片属性,数据的文件格式,在php中有一个函数叫exif_read_data用来读取这种格式的文件,并且调用其中的参数,我们可以将js代码编辑到这种格式的文件中以此实现注入。修改exif文件格式的工具有很多读者可以自行寻找。

2.第十七、十八

这两关只是图片不一样其它完全相同,所以可以用相同的方法注入js脚本,查看服务器上的源码可以发现,arg01和arg02共同为swf文件传递参数,所以我们要根据这一特性和span标签中可以插入焦事件的特性嵌入js代码。先是在arg01处输入字符 ‘a’ 再在srg02处输入

b onmouseover=javascript:alert(form)

构造出的语句如下

<embed src=level17.swf?a=b onmouseover=javascript:alert('forming is handsome')/>

从而实现注入

3.第十九、二十

最后两关都调用swf格式的文件,flash可以解析的文件格式就是swf文件格式,由此可以看出xss-labd是有多老,随着技术的革新flash已经被淘汰了。所以我建议不要最后两关不要做了没有太大的意义。但是还是记录一下知识和注意事项以及原理

  • 1.swf文件是用action script写的,action script是一个脚本语言,在这个脚本语言中有可以与外部脚本通信的函数,比如externalinterface.call函数这个函数将外部函数调用并执行,从而实现xss其它类似的函数还有geturl、htmltext等(这个函数有点类似php中的call_user_func函数都是指定一个函数,然后将指定的参数带入到指定的函数中,并且执行)
  • 2.查看swf文件的脚本是要用到工具的,我用的是ffdec,这个工具就能查看Action script脚本,需要的同学可以自己上网找一下。
  • 3.embed标签中的src指向的地址后面可以传递参数形式如下
<embed src="level19?version=<script>alet('forming is handosme')</script>" />

其它文章

xss-labs靶场1~5关详解
xss理解进阶篇
other article to be continue…

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperForming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值