关于百度首页的一个小BUG
2022-9-15 15:0:57 Author: 珂技知识分享(查看原文) 阅读量:28 收藏

这算小BUG,无关安全问题,所以就直接写公众号里了。

首先还是先拜读

https://xz.aliyun.com/t/11682

这篇文章介绍了关于<!--<script>的一个特性,用来绕过一个非常困难的XSS题目。我们都知道,对于反射XSS来说,如果反射点在js当中,比如下面这样。

<script>var a = '我是反射点';</script>

我们无需构造那些随着js和反射点增多的复杂payload,只需要简单粗暴的

</script><script>alert(1)</script>

<script>var a = '</script><script>alert(1)</script>';</script>

在一般语言来说,想要突破单引号,只有第二个单引号将其闭合才行,但</script>标签闭合显然优先级比单引号更高,于是上述代码被分割成了三段。

<script>var a = '</script><script>alert(1)</script>';</script>

第一段语法不合格被忽视,因此最终只执行了第二段。

由此衍生出了一个特性,也就是你是无法直接打印</script>字符串的。

<script>alert('</script>')</script>

而<!--<script>可以突破这个限制。

<script>alert('<!--<script>');alert('</script>');</script>

因为<!--<script>同样有很高的优先级,它会吞掉最下一个</script>使其失效,如果不加后面alert('</script>');,整个js就会被破坏掉。

在源码页面可以看到,原本正常的</script>被视为js代码,完全失效了。

那么这样有什么用呢?通常我们的html页面都是一段script标签,再加一段其他html标签的,如果能在js中插入一段<!--<script>,那么很可能祸害一大堆html代码。

在原文中,就因为该题能控制两个传参,因此将A到B所有的js和html,都当成了反引号引起来的字符串,得以实现XSS。

简化一下就是这样。

<script>var a = '反射点一<!--<script>'+`';</script><img src="反射点二`+alert(1);</script>"><script>var b ='b';</script>

这样实际上等于。

<script>var a = '反射点一<!--<script>'+ `';</script><img src="反射点二`+ alert(1);</script>"><script>var b = 'b';</script>

不过这种XSS的办法还是要求使用单引号或者反斜杠突破var a =''的单引号束缚,但即使无法突破,我们还是可以拿<!--<script>去祸害一下各种网站,看它们是否对<!--<script>进行了额外处理。

比如百度首页,搜索<!--<script>是这样的。

再点一下左边的蓝色百度一下会变成这样。

很显然,两种排版都出问题了,我们查看网页源代码。

<!--<script>被插入到js当中,这代表着它吞掉了很多的代码。如下,很多标签都没有高亮,意味着它们被当成了错误的js代码。

当然,百度还是将单引号反斜杠正斜杠都转义了,这意味着我们无法实现XSS。

考虑到现在就连CTF都几乎没有XSS了,实战中更不可能遇上这么苛刻的东西,所以这似乎又是个没有卵用的文章。

结尾也给一个简单的小题,是我在实战中碰上的一种XSS绕过情况。

<html><body><?php$a = $_GET['a'];$a = str_replace("'","\'",$a);$a = str_replace("<","&lt;",$a);$a = str_replace(">","&gt;",$a);?><script type="text/javascript">if('<?php echo $a;?>' != ''){    var a = '<?php echo $a;?>';}</script></body></html>

有兴趣的自己搭建试一试。


文章来源: http://mp.weixin.qq.com/s?__biz=MzUzNDMyNjI3Mg==&mid=2247485606&idx=1&sn=13379098418091d8c948e2796d08b3a8&chksm=fa9735c9cde0bcdf0e3f676b04e968129d5b97d978d1b2acb77f4ec6932c515909e0254d2d28#rd
如有侵权请联系:admin#unsafe.sh