青训营笔记10之网站常见安全漏洞(下)
三、客户端漏洞
1、开发重定向
1.1. 开放重定向:
某些需要重定向到其他站点的功能,往往在参数中携带需要重定向的 URL ,但实际程序逻辑没有控制好重定向的范围,导致攻击者可以构造恶意链接,诱导用户重定向到恶意站点。
1.2. 危害:钓鱼攻击。
1.3.修复方案:对重定向严格进行白名单控制 并正确校验匹配白名单。
2、XSS
2.1、跨站脚本 (XSS) 攻击:
本质是一种 Script 代码注入, 攻击者往目标 Web 页面里插入恶意 Script 代码,当用户访问页面(有客户端时需要交互)时,嵌入其中 Web 里面的 Script 代码会被执行,从而达到恶意攻击用户的目的。 场景:反射型,存储型,Dom型 危害:通常的危害包括窃取用户敏感信息,以用户身份执行敏感操作。
2.2、表现形式:
前端代码使用了vue,会从请求path中读取username,同时使用v-html指令将username直接渲染到Dom中。
2.3、具体行为:
Step1: 构造恶意链接,将username设置为恶意payload。 Step2: 攻击者通过网站反馈入口,向管理员/运营人员发送恶意链接。 Step3: 攻击者的服务器成功收到管理员/运营人员的Session Cookie。 Step4: 浏览器替换cookie为管理员的,获取管理员权限。
2.4、防护方法:
- 输入过滤:对输入的特殊字符进行拦截,禁止前端提交特殊字符
- 输出过滤:
- 当字符输出到Dom时候,对危险字符进行html encode,避免XSS。
- 使用vue/react等框架时候,避免使用危险指令,而应该使用安全指令。v-html/v-text
- 富文本场景:比如文章发布场景,本身是需要提供富文本功能,这时候需要严格限制tag和attribute,可以在代码层面做白名单或者黑名单。
- CSP:用于缓解XSS,理念是对当前站点允许加载什么源的资源、发送什么请求能进行限制。 Content-Security-Policy: default-src 'self'; img-src *; media-src example.org example.net; script-src userscripts.example.com
3、CSRF
3.1、定义与危害:
跨站请求伪造(CSRF) : 允许攻击者诱导用户访问恶意链接,执行用户非预期执行的操作。
危害:用户执行敏感操作,如关注其他用户,或者更改账户的安全邮箱等。
3.2、漏洞利用步骤:
- 将更改Email的请求生成CSRF表单,并构造钓鱼链接。
- 发送链接给其他用户
- 用户点击链接后成功执行email更改操作。
3.3、防护方式:防护的核心是判断请求的来源
- CSRF tokens:首次访问时候给客户端传递一个token,客户端每次访问时候都必须带上次token才能访问。
- SameSite cookies:Strick->Lax(Default)->None.核心是禁止某些场景发送第三方cookie.
- Referer-based validation:校验Referer来源是否是合法站点。
思考:大厂微服务场景,CSRF防护应该怎么做? 注:
4、点击劫持
4.1、定义:
点击劫持(clickjacking)是一种在网页中将恶意代码等隐藏在看似无害或者存在诱导的内容(如按钮)之下,并诱使用户点击的手段,用户点击之后往往会执行一些非预期的操作。
4.2、漏洞场景:
考虑如下删除账号功能,如果目标站点CSRF防护做的很到位,无法直接构建CSRF钓鱼页面,这时候可以考虑在钓鱼页面iframe原始页面,并且覆盖一层诱导性的文字
4.3、漏洞利用步骤:
- 参考如下代码构造钓鱼页面链接。
- 发送链接给其他用户
- 用户访问链接,点击[Win 300$]时候,实际点击Delete Account
<style>
iframe { //设置目标站点完全透明
position:relative;
width:100%;
height:100%;
opacity:0.00001;
z-index:2;
}
div { //叠加一层div
position:absolute;
color:red;
top:535px;
z-index:1;
}
</style>
<div>Win 300$</div>//诱导按钮
<iframe src="https://0aad***************"><iframe>//目标站点
4.4、防护方式:
防护的核心是不让非预期的网站iframe我的站点
- X-Frame-Options:DENY/SAMEORIGIN
- CSP:frame-ancestors指令,用于设置允许frame的source列表
Content-Security-Policy:frame-ancestors <space separated list of sources>;
四、总结/注意事项
1、网站运营者:网络运营者应当采取技术措施和其他必要措施,确保其收集的个人信息安全,防止信息泄露、损毁、丢失。在发生或者可能发生个人信息泄露、损毁、丢失的情况是,应当立即采取补救措施,按照规定及时告知用户并向有关主管部门报告。 2、组织/个人:任何个人和组织不得窃取或者以其他非法方式获取个人信息,不得非法出售或者非法向他人提供个人信息。