用户登录  |  傲看软件园 用户注册
文章中心广告代码ASP源码PHP源码JSP源码.NET源码源码相关傲看留言板繁體中文
当前位置:傲看软件园文章中心电脑安全安防业界

Web服务器的安全和攻击防范 (四)

减小字体 增大字体 作者:佚名  来源:不详  发布时间:2008-10-20 19:57:09

  把尽可能多的服务隔离运行可以部分地解决这个问题,例如用Apache suexec程序的sbox让所有的CGI在隔离的环境以客户的用户ID而不是Web服务器的用户ID运行。另外,许多服务器上运行着FTP服务,例如wu-ftpd,该服务的所有文件传输都是隔离进行的,同样也保护了善意客户的资料避免被其他人偷看。

  然而,恶意的客户仍旧能够用CGI程序创建符号链接指向其他用户的存储区域,然后通过它自己的Web服务器查看其他人的文件,这是因为在一个运行多个网站的环境中,Web服务器无法简单地以隔离方式以及用它为之应答请求的客户的用户ID运行。管理员应该配置Web服务器以及其他文件传输程序使其不再使用符号链接。在Apache上,这可以通过关闭最顶层的“FollowSymLinks”选项实现(不要在较低的层次上把它重新打开),配置代码示例如下:



< directory / >Options -FollowSymLinks< /directory >


数据源的可靠性

  第三类常见的安全问题是CGI程序或PHP脚本的质量低下,它们信任了来源不可靠的参数,未经严格的检查就立即使用CGI参数。

  Web应用一般包含位于防火墙之内的和防火墙之外的两部分,防火墙之内的如本地的脚本程序、数据库、Web服务器以及本地数据文件等。由于这些部件都由管理员直接管理和控制,因此可以认为它们都是可以信任的。Web应用的其他组成部分位于防火墙之外,是不可信任的。这主要是指用户的浏览器——如果用户使用浏览器,而且没有为了更方便地控制输入Web应用的数据和发现Web应用中可能存在的问题而直接在telnet会话中输入Web请求。

  防火墙是可信任的Intranet和不可信任的Internet之间的分界线。

  所有来自信任分界线之外的数据未经检查就不应该进入Web应用,这包括所有传递给CGI脚本的参数,比如:GET、POST和COOKIE变量,HTTP_REFERER、HTTP_USER_AGENT和所有HTTP_*变量,以及所有其他远程生成的变量值。在CGI脚本使用所有这些变量之前,都必须对它们进行合法性检查,这种检查可以确保变量的值确实在预期的范围内。

  例如,有些脚本在请求的HTTP_REFERER正确时就接受表单输入,这是一种常见但错误的编程习惯。脚本用这种机制来防范伪造的请求是徒劳的。毫无疑问,对于攻击者来说,掌握必需的HTTP_REFERER并将它并入请求的其余部分一起发送是轻而易举的,因此这种保护是没有用的。这种脚本的错误在于:在这类调用中必须检查的不仅仅是HTTP_REFERER值,所有其他值都必须进行检查。[page]

伪造Web请求(一)

   下面这个简单的PHP程序将输出CGI参数b的值以及HTTP_REFERER的值:



kris@valiant:~/www < cat test.php< ?php print "The value of b is $bn"; print "The value of HTTP_REFERER is $HTTP_REFERERn";? >

  用telnet连接到80端口,我们能够向上述脚本提供任意的参数值b,同时还可以任意提供HTTP_REFERER值。我们把下面的几行发送到服务器:



GET /~kris/test.php?b=this+is+a+test HTTP/1.0Host: valiant.koehntopp.deReferer: http://www.attacker.com/die_sucker_die.html

  下面是完整的会话过程:



kris@valiant:~/www < telnet valiant 80Trying 193.102.57.3...Connected to valiant.koehntopp.de.Escape character is '^]'.GET /~kris/test.php?b=this+is+a+test HTTP/1.0Host: valiant.koehntopp.deReferer: http://www.attacker.com/die_sucker_die.htmlHTTP/1.1 200 OKDate: Sat, 08 Apr 2000 06:44:02 GMTServer: Apache/1.3.9 (Unix) (SuSE/Linux) PHP/4.0RC2-dev mod_ssl/2.4.7 OpenSSL/0.9.4X-Powered-By: PHP/4.0RC2-devConnection: closeContent-Type: text/htmlThe value of b is this is a testThe value of HTTP_REFERER is http://www.attacker.com/die_sucker_die.htmlConnection closed by foreign host.


Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

精品栏目导航

关于本站 | 网站帮助 | 广告合作 | 下载声明 | 友情连接 | 网站地图
冀ICP备08004437号 | 客服Q:354766721 | 交流群83228313
傲看软件园 - 绿色软件,破解软件下载站! 源码网 源码之家 绿软之家
Copyright © 2003-2010 OkHan.Net. All Rights Reserved .
页面执行时间:890.62500 毫秒
Powered by:OkHan CMS Version 4.0.0 SP2