什么是XSS?
CSS(Cross Site Scripting)–>XSS
XSS攻击通常指通过网页开发留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
XSS攻击目标:前端脚本解析器,比如浏览器的Javascript解析引擎
BS架构:browser<->(http)server
如何发现XSS:
XSS利用思路和步骤:
1.找到输出点,以及两者共存的情况,或者根据输入点猜测后台输出点位置及触发条件(盲X)
2.构造playload,尽量一次性成功
3.观察闭合。过滤和拦截情况
4.如不成功,重复第三,四步
XSS修复思路:
黑名单策略:
1.html实体编码转移,“ and ’ and / and /and <> and script
2.采用成熟的防XSS网站框架(参考OWASP网站)
3.服务端添加http-only头下发到客户端(防止cookie窃取)
4.采用最新版本浏览器
白名单从策略:
1.使用白名单写死允许的标签和事件规则
JS基础:
1.js事件:
onclick()
onmouseover="javascript:alert(1)"
2.console.log() 控制台输出
3.js注释符:// 及其危险,尽量少用,只能注释当前行
4.绕过alert:promot/console.log
XSS平台模板:
1.第一个弹框:
alert和onfirm功能是一样的
<script>alert(1)</script>
<script>confirm(1)</script>
2.js控制台输出:
<button type="button" onmouseover="console.log(document.cookie)">点我</button>
3.鼠标移动弹窗:
有时候input是隐藏的,所以可以:name=" οnmοuseοver=“alert(1);” type=“text”
onmouseover="javascript:alert(1)"
4.超链接:
<a href=javascript:alert(1)>超链接</a>
5.重构input输入框:
<input type="name" onclick="alert(1)">
<input name="keyword" value="" onmouseover="alert(1)"> //通过事件
绕过姿势:
1.html实体编码绕过
2.大写小写交替绕过
<a HeReF=javascript:alert(1)>xxx</a>
```
3.双写绕过,
如scrscriptipt,
4.生僻函数绕过
# XSS危害:
盗取cookie,废掉页面,弹出窗口,导航到恶意网站
监控键盘操作,模仿windos注销界面