Go语言基础之网站常见安全漏洞(下) | 青训营

292 阅读4分钟

青训营笔记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中。

image.png

2.3、具体行为:

Step1: 构造恶意链接,将username设置为恶意payload。 Step2: 攻击者通过网站反馈入口,向管理员/运营人员发送恶意链接。 Step3: 攻击者的服务器成功收到管理员/运营人员的Session Cookie。 Step4: 浏览器替换cookie为管理员的,获取管理员权限。

2.4、防护方法:

  1. 输入过滤:对输入的特殊字符进行拦截,禁止前端提交特殊字符
  2. 输出过滤:
  • 当字符输出到Dom时候,对危险字符进行html encode,避免XSS。
  • 使用vue/react等框架时候,避免使用危险指令,而应该使用安全指令。v-html/v-text
  1. 富文本场景:比如文章发布场景,本身是需要提供富文本功能,这时候需要严格限制tag和attribute,可以在代码层面做白名单或者黑名单。
  2. 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、漏洞利用步骤:

  1. 将更改Email的请求生成CSRF表单,并构造钓鱼链接。
  2. 发送链接给其他用户
  3. 用户点击链接后成功执行email更改操作。

3.3、防护方式:防护的核心是判断请求的来源

  1. CSRF tokens:首次访问时候给客户端传递一个token,客户端每次访问时候都必须带上次token才能访问。
  2. SameSite cookies:Strick->Lax(Default)->None.核心是禁止某些场景发送第三方cookie.
  3. Referer-based validation:校验Referer来源是否是合法站点。

思考:大厂微服务场景,CSRF防护应该怎么做? 注:

4、点击劫持

4.1、定义:

点击劫持(clickjacking)是一种在网页中将恶意代码等隐藏在看似无害或者存在诱导的内容(如按钮)之下,并诱使用户点击的手段,用户点击之后往往会执行一些非预期的操作。

4.2、漏洞场景:

考虑如下删除账号功能,如果目标站点CSRF防护做的很到位,无法直接构建CSRF钓鱼页面,这时候可以考虑在钓鱼页面iframe原始页面,并且覆盖一层诱导性的文字

4.3、漏洞利用步骤:

  1. 参考如下代码构造钓鱼页面链接。
  2. 发送链接给其他用户
  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我的站点

  1. X-Frame-Options:DENY/SAMEORIGIN
  2. CSP:frame-ancestors指令,用于设置允许frame的source列表
Content-Security-Policy:frame-ancestors <space separated list of sources>;

四、总结/注意事项

1、网站运营者:网络运营者应当采取技术措施和其他必要措施,确保其收集的个人信息安全,防止信息泄露、损毁、丢失。在发生或者可能发生个人信息泄露、损毁、丢失的情况是,应当立即采取补救措施,按照规定及时告知用户并向有关主管部门报告。 2、组织/个人:任何个人和组织不得窃取或者以其他非法方式获取个人信息,不得非法出售或者非法向他人提供个人信息。