科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>网络频道>ZD评测>OWASP要素增强Web应用程序安全(6)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

不安全的直接对象引用和跨站请求伪造(CSRF)是许多Web应用中的严重缺陷。实际上,一些黑客表示,对于CSRF来说,互联网上没有哪个网站没有可被CSRF利用的缺陷。

来源: 2007年06月08日

关键字:Web安全 安全管理

不安全的直接对象引用和跨站请求伪造(CSRF)是许多Web应用中的严重缺陷。实际上,一些黑客表示,对于CSRF来说,互联网上没有哪个网站没有可被CSRF利用的缺陷。在这篇文章中,笔者介绍了这两种Web应用程序弱点的本质,同时就保护Web应用程序免受相关攻击提出一些建议。

无法合理保护网站服务器上的目录和文件夹的安全,是使得不安全的直接对象引用成为具有吸引力的攻击方法的根本原因。不安全的直接对象引用,也叫目录游走,只需简单调整用户访问一个网站时或直接提交给桌面的脚本中的URL就可以进行利用。这个缺陷代替了不完善的访问控制,2004 OWASP 十大列表中的A2。

下面是取自Imperva网站的Web贴子中的一个例子。在图A中,系统提交一个请求获取2003年3月20日的新闻文件。假设这个HTTP请求是根据用户提供的输入建立,那么它就会成为不安全的直接对象引用安全攻击的主要目标。

OWASP要素增强Web应用程序安全(6)

图A 一个请求

如果网站开发者没有进行妥善检查并只允许有效的输入,入侵者就能输入“../”字符序列跳出当前目录并进入上级目录。一些这样的序列能够不断的在三个目录中游走直至到达目标目录的上级目录。在图B中,一位入侵者正尝试在四个目录中游走进行访问。如果成功了,她将收到win.ini 文件而不是新闻文件。

OWASP要素增强Web应用程序安全(6)

图B 在四个目录中游走

即使攻击者不知道到底需要跳过几级目录才能到达目录树的正确位置,但利用字符串输入也不难找到结果。

防御目录游走或不安全的直接对象引用攻击的方法相当简单:

◆锁定网站服务器上的所有目录和文件夹。无论如何,通过互联网访问一台服务器的用户都不能访问除专门用于存放Web内容的目录以外的目录。
◆然后,确认所有输入。为防止目录游走,应特别小心“./”或“..”。这个系列的第三部分详细说明了输入确认的问题。
◆让私有对象引用的隐秘性。

跨站请求伪造 (CSRF)

CSRF与跨站脚本(XSS)非常相似, 只有一个非常重要的不同之处。XSS利用客户端的弱点,而CSRF利用的是网站服务器的弱点。

按照OWASP, “一个CSRF袭击迫使某个登录的浏览器向易受攻击的Web应用发送一个请求,然后以受害者的名义,为入侵者的利益进行所选择的行动”(“OWASP Top 10”, 2007 (RC1), 19页)。

这段描述的关键部分是“强迫已登录的”受害者发送请求。攻击者利用网站对目标用户的信任。这意味着如果攻击取得成功,攻击者就能代表用户执行以下行为:

◆购买商品
◆转账
◆运行恶意软件,留下很少或不留下查明真实攻击者的痕迹
◆进行股票交易
◆订阅在线服务

CSRF并不是一个简单的问题。据ha.ckers.org创立者rsnake称,互联网上有太多CSRF脆弱性需要注意(Kelly Jackson Higgins,“CSRF脆弱性:‘一个沉睡的巨人’”,darkReading,2006年10月17日)。WhiteHat Security的建立者Jeremiah Grossman也赞同这个观点,他指出:“由于工作机制与Web相似,[CRSF]并不被看作是一个脆弱性”(同上)。

那么其工作原理是什么呢?HTML镜像标签和JavaScript镜像对象是CSRF最常用的两个路径。图C中列出了CSRF攻击常用的HTML和JavaScript方法(Robert Auger,“跨站请求伪造(CSRF/XSRF)常见问题解答”,cgisecurity.net,2007年1月28日)。

OWASP要素增强Web应用程序安全(6)

图C CSR攻击

对用户的攻击有多种方法,包括e-mail和诱使用户点击入侵者网站上的某个链接。一旦发动攻击, 它依靠目标网站上的一个现有可信会话或受害者PC上的一个自动登录cookie来执行。如果存在一个可信会话,攻击命令就在受害者的安全环境中,在网站服务器上运行。

预防CSRF攻击相当困难,但并非无法预防。用户能够采用的最佳防御手段是采取适当的步骤,保证可信会话不会被攻击者所利用。

◆完成任务后退出可信会话。
◆让网站记住你的登录用户名和密码时要小心。留在客户端的登录信息可能会攻击者加以利用。
◆在完成可信会话后删除所有cookie。

在努力编写不易受到CSRF攻击的应用程序时,网站开发者面临更大的挑战。下面是一些应该考虑的应对措施:

◆设定短暂的可信用户会话时间。
◆每次提出一个可信行为时,对发出请求的用户进行验证。
◆在URL和表单中增加的每个请求nonce提供基本会话令牌以外的每个请求用户验证。
◆从应用程序中删除所有XSS脆弱性。攻击者通过XSS可获得有用的攻击信息。例如,攻击者可以伪造一个提示用户输入身份信息的表单。

结论

不安全的直接对象引用所造成的漏洞很容易预防。基本的文件夹和目录访问控制以及一致的输入确认即使不能抵御全部攻击,也能够阻止大多数这类攻击。

CSRF是一种更难防御的脆弱性。提高用户的危险意识以及说明如何保护自己免受攻击是一个好的开始。开发者必须了解如何建立一个可信会话,以及在提出可信行为时如何重新验证用户身份。只有全面了解Web应用程序的设计过程才能开发出不会受到CRSF攻击的网站。

推广二维码
邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

重磅专题