前言:自学笔记,大佬勿喷!!有错误还请指出。
0x00 漏洞原理
攻击者向web页面插入恶意可执行脚本代码,当用户浏览该页面时,嵌入到web页面的恶意代码就会被执行,从而达到攻击者盗取用户信息或侵犯用户安全隐私的目的。
0x01 漏洞产生条件
寻找参数未过滤的输出函数
漏洞类型:
反射型:需要用户点击链接才能触发(一次性),一般出现在搜索页面
存储型:代码存放在服务器中,一般在个人信息或留言等地方,每当访问该页面就会触发代码(具有很高隐蔽性)
DOM型:处理后的结果会成为页面的一部分,不提交数据到服务器,从客户端获得DOM中的数据在本地执行。
区别(代码层面):
反射型:发送一次带有xss代码的请求,只在当前数据包会有xss代码
存储型:发送一次带有xss代码的请求,以后在这个页面数据包都会有xss代码
DOM型:发送一次带有xss代码的请求,数据包中没有xss代码
0x02 漏洞危害
1.盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2.控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3.盗窃企业重要的具有商业价值的资料
4.非法转账
5.强制发送电子邮件
6.网站挂马
7.控制受害者机器向其它网站发起攻击
8.结合其他漏洞,如csrf,实施进步危害;
9.提升用户权限,包括进一步渗透网站
10.传播跨站脚本蠕虫等
0x03 绕过思路
00 大小写绕过
<script>alert(/1/)</script> --> <ScRiPt>alert(/1/)</ScRiPt>
01 双写绕过
<script>alert(/1/)</script> --> <scr<script>ipt>alert(/1/)</sc<script>ript>
02 js伪协议
javascript:alert('xss') --> java script:alert('xss');
03 编码
base64编码:
<script>alert(/1/)</script>
PHNjcmlwdD5hbGVydCgvMS8pPC9zY3JpcHQ+
JS编码:
Uncode编码
\u00+16进制16进制
\x+16进制html实体编码:
&# + 10进制/16进制+;
0x04 修复建议
1、使用httponly,开启了httponly后,无法使用js读取到cookie
2、对用户的输入进行过滤,如过滤"<"">""script"等等
3、对输出进行编码,如html编码、js编码等