网络攻防学习笔记 Day35
不设置 Cookie 安全属性的原因主要有两种:一种是 Web 应用开发者不知道安全属性或不愿意使用安全属性;第二种是设置安全属性后应用无法运行。
跨站请求伪造(Cross Site Request Forgery,CSRF)是指攻击者假冒受信任用户向第三方网站发送恶意请求,如交易转账、发邮件、发布网帖、更改邮箱密码或邮箱地址等。它与 XSS 的差别在于:XSS 利用的是网站内的信任用户,而 CSRF 则是通过伪装来自受信任用户的请求来利用受信任的网站。
什么样的网站会存在 CSRF 安全漏洞呢?一般来说,如果网站中执行关键处理功能的网页中仅使用 Cookie 进行会话管理或仅依靠 HTTP 认证、SSL 客户端证书、手机的移动 ID 来识别用户,则该网站就可能存在可被攻击者利用的 CSRF 漏洞。
专门检测 CSRF 漏洞的工具,如 CSRFTester、CSRF Request Builder 等。这些工具的检测原理是:首先需要抓取用户在浏览器中访问过的所有链接以及所有的表单等信息,然后在工具中修改相应的表单等信息,重新提交,这相当于一次伪造客户端请求。如果修改后的测试请求被网站服务器成功接受,则说明存在 CSRF 漏洞。
采取三种措施来防御 CSRF 攻击,包括:嵌入机密信息(令牌)、再次认证(输入密码)、检查 Referer。
一般来说,如果 Web 应用满足以下 3 个条件时,就有可能产生目录遍历漏洞:
(1)外界能够指定文件名。
(2)能够使用绝对路径或相对路径等形式来指定其他目录的文件名。
(3)没有对拼接后的文件名进行校验就允许访问该文件。
Shell 支持连续执行多条命令,如 UNIX 操作系统 Shell 中使用分号(;)或管道(|)等字符支持连续执行多条命令,Windows 操作系统 cmd.exe 使用 &符号来连接多条命令。
防御 OS 命令注入的策略一般包括以下几种:
(1)选择不调用操作系统命令的实现方法,即不调用 Shell 功能,而用其他方法实现。
(2)避免使用内部可能会调用 Shell 的函数。
(3)不将外部输入的字符串作为命令行参数。
(4)使用安全的函数对传递给操作系统的参数进行转义,消除 Shell 元字符带来的威胁。由于 Shell 转义规则的复杂性以及其他一些环境相关的原因,这一方法有时很难完全凑效。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/e010dd7eb860b435ae6f8616b】。文章转载请联系作者。
评论