3-10xss绕过思路讲解和案例演示

XSS绕过-过滤-转换

因为在我们的实际测试过程中,有很多安全系统或多或少,会去做一些安全措施,但是,这些措施,有可能会因为程序员逻辑不够严谨,或者他使用的方法是错的,保证了他的措施起到了一部分作用,但是还是可以被绕过的

0,前端限制绕过,直接抓包重放,或者修改html前端代码
我们的安全措施不要在前端去做,比如输入字符长度限制,这样也引申出一个思想,我们所有的安全措施,永远不要放在前端去做,前端会通过js,会通过属性,起到安全的辅助措施,但是本质上是没有作用的

1.大小写,比如:<SCRIPT>aLeRT(111)</sCRIpt>
在后台对输入进行过滤,会有两种思路,一种是对输入里面的内容进行正则匹配,然后发现符合正则表达式内容的,把他干掉,对输入一整串的内容,用查找去查找,然后有的话,也会把他干掉

一般来说,正则是区分大小写的,如果说,过滤措施只对小写进行处理,没有对大写进行处理,我们可以通过大小写混合的方式绕过措施,大小写混合的输入,在输出到前端的时候,仍然会被正常执行,这是大小写的用法

2,拼凑: <scri<script>pt>alert(111)</scri</script>pt>

后台的逻辑,对于script标签去进行替换,但是一般的逻辑只会替换一次,也就是在输入的内容里面,会把script标签给替换掉,但是我们前后这段,又组合成新的script,他不会重复的做处理,所以导致这样的写法,可以绕过后台的措施


3,使用注释进行干扰:<scri<!--test-->pt>alert(111)</sc <!--test--> ript>

在前端,我们可以插入注释的标签,我们可以通过前端的注释符号,然后在我们输入的payload里面,去进行一个干扰,这一段就是一个script标签,中间这段,不会去执行他的,因为他是一个注释,但是这串内容输入到后台,后台可能会不认识他,所以他并不会认为这是个script标签,从而绕过后台的措施,这是一个常见的转换思路

XSS绕过-过滤-编码

核心思路:

后台过滤了特殊字符,比如

编码不能随便乱用,不能说,我们编码成不认识的,就算成功了,编码的时候,虽然说,你最终输入的时候,绕过了后台,但是你输出的时候,一定要能在输出点被正常翻译,这个编码才是有效的

当浏览器对该编码进行识别时,会翻译成正常的标签,从而执行。

在使用编码时需要注意编码在输出点是否会被正常识别和翻译!

所以对我们有个要求,要知道前端的各种标签属性里面,能够处理那些编码,或者说,我们能够通过那些手段,能够让他正常翻译

XSS绕过-过滤-编码

栗子1:

<img src=x onerror="alert('xss')"将alert('xss')进行URL编码,可以执行吗

<img src=x onerror="alert%28%27xss%27%29" /> 

img标签是个图片,src是个字符,没法读到这个图片,可以通过oneeror读到js函数,直接调用alert函数

如果说,后台对alert进行过滤,我们可以对他进行编码

并不会执行 ,why,?因为这些属性标签并不会正常解析这些编码

所以不会去弹窗,没有意义

XSS绕过-过滤-编码

栗子2:使用事件属性onxxx();

栗子2:使用事件属性onxxx();
<img src=x onerror="alert('xss')" />可以把alert('xss')进行html编码
因为html编码,输出到浏览器前端会被进行翻译
<img src=x onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#120;&#115;&#115;&#39;&#41; "/> 
翻译成之后,会被当作一个方法来执行,从而来弹这个窗
<img src=x 
onmouseover="&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#120;&#115;&#115;&#39;&#41; " />
可以执行
注意,事件标签里面并不会执行<script></script>标签里面的代码。

XSS绕过的姿势有很多,取决于你的思路和对前端技术的掌握程度

因为xss的绕过比较灵活,也并没有某个绕过姿势可以适用所有场景,这里主要是靠我们自己去尝试,可以多通过论坛和一些互联网的博客,去看一些对应的姿势,收集对应的方法,当我们理解了这些绕过姿势,当我们在做防范的时候,或者说,给我们的安全开发人员给建议的时候,我们也能够给出一个比较完整的方案措施,以至于不会出现这些被绕过的漏洞

XSS绕过实验演示

我们打开pikachuxss过滤,同样的在这个地方根据之前的思路,输入一些对应的字符串,看他如何处理

<script>;"7777

我们点提交

在这里插入图片描述

我们可以看一下源码,搜7777

在这里插入图片描述

我们刚刚输入的script标签貌似被干掉了,那是不是就以为着,后台对我们输入的script标签进行过滤呢,我们根据刚刚的思路,做一个尝试性的绕过,大小写混合

<ScRiPt>alert('111')</ScRiPt>

在这里插入图片描述

这就弹出来了,后端只是对小写的script进行过滤,我们看一下后端代码的逻辑

在这里插入图片描述

把message用preg_replace这么个方法,在PHP里面,对后面的字符串,去匹配前面的正值,如果匹配到了,就会把他替换为指定的字符,这边指定的是空,就是直接把它干掉的意思,因为正则是区分大小写的,这里只是对小写前面的script进行了过滤,通过大写,就可以绕过它

因为这里过滤了script,所以这里用img标签也可以

<img src=x onerror="alert(111)"/>

在这里插入图片描述

所以说,xss绕过,其实是比较灵活的,主要是看我们的知识,够不够风骚,能够绕过管理员的逻辑

html编码

<img src=x onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#120;&#115;&#115;&#39;&#41;"/>

在这里插入图片描述

拼凑

<scri<script>pt>alert(111)</scri</script>pt>

在这里插入图片描述

被过滤掉了

注释符

<scri<!--test-->pt>alert(111)</sc <!--test--> ript>

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值