什么是XSS?
CSS(Cross Site Scripting)—>>>XSS(跨站脚本攻击)
目的:让受害者http客户端运行攻击者编写的恶意脚本。
目标:前端脚本解析器,比如浏览器的javascript解析引擎、IE中的VBScript解析引擎。
攻击的架构:BS架构(browser<–>(http)server)
XSS有何危害?
XSS能够产生的危害依赖于浏览器客户端脚本解析引擎的能力。
- 技术上
窃取凭证
篡改DOM(篡改页面布局及内容)
嵌入恶意的脚本代码
发起恶意请求(Ajax)
- 社会影响上
无账号密码的情况下非法登录网站
网络钓鱼
网页蠕虫
网页篡改
破解CSRF token限制
XSS漏洞原理?
前端用户提交的脚本代码被其他用户浏览器执行产生预期外的执行后果。(让自己提交的前端脚本代码被别人运行)。
XSS分类
三类:反射型、存储型、DOM型
反射性XSS:一次性XSS,与服务器交互
存储型XSS:持久性XSS,与服务器交互
DOM型XSS:一次性XSS,不与服务器交互
如何发现XSS漏洞点?
找到输入点和输出点、以及两者共存的情况,或者根据输入点猜测后台的输出点位置及触发条件(盲X),比如:各类表单处、文件上传点等等。
XSS利用思路与步骤?
- 找到输入点和输出点、以及两者共存的情况,或者根据输入点猜测后台的输出点位置及触发条件(盲X)
- 构造payload,尽量一次性成功
- 观察闭合、过滤和拦截情况
- 重新构造payload
- 如不成功,重复第3、4步
XSS防御思路?
- 白名单策略
- 使用白名单写死允许的标签和事件规则
- 黑名单策略(不可靠)
- html实体编码转义
"、'、/、<、>、script、事件函数名
- 采用成熟防XSS的框架(参考OWASP网站)
- 服务端添加http-only头下发到客户端(防止cookie窃取)
- 采用最新版本浏览器