盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

CGI的安全

时间:2024/11/5作者:未知来源:盾怪网教程人气:

[摘要]` & ! # ( ) [ ] : ' " 每一个这种字符在shell中都起着特殊的作用。例如,假如你想利用finger来 查询一台计算机并将结果存储到一个文件中...
` & $
! # ( ) [ ] : {
} ' "


  每一个这种字符在shell中都起着特殊的作用。例如,假如你想利用finger来
查询一台计算机并将结果存储到一个文件中,你可以在命令行中如下输入:

  finger @fake.machine.org > results

  这会使用finger查询主机fake.machine.org并将查询结果保存到一个文本文
件results中。这个>字符在这里是一个重定向符。如果你要实际地使用>字符
——例如,你想将它回显到屏幕上——你将需要在这个字符前加一个反斜杠。
举个例子,下面将向屏幕输出一个符号>:

  echo \>

  这被称为转义字符(escaping or sanitizing the character string)。

  hacker是怎样利用这个作为他(她)的优势的?观察以下程序3中用perl编
写的finger程序。这个程序所做的是允许用户查询一个用户和一台主机的详细
信息,并且,这个CGI可以查询用户并显示结果。

程序3. finger.cgi.
#!/usr/local/bin/perl
# finger.cgi - an unsafe finger gateway
require 'cgi-lib.pl';
print &PrintHeader;
if (&ReadParse(*in)) {
  print "\n";
  print `/usr/bin/finger $in`;
  print "\n";
}
else {
  print " \n";
  print "\n";
  print "\n\n";
  print "Finger Gateway\n";
  print "\n";
  print "User@Host: \n";
  print "\n";
  print "\n";
  print " \n";
}

  乍一看,这个程序好象没有什么害处。因为是用Perl编写的,不会有buffer
overflow的危险。我使用了finger的完全路径,这样gateway不会被伪造的
finger程序所欺骗。如果输入是一个不合适的格式,那么gateway将返回一个错
误而不会被人利用。

  但是,如果我尝试如下的输入会怎样呢(如图1所示)
  nobody@nowhere.org;/bin/rm -rf /
  FINGER GATEWAY
 ___________________________________
User@Host:

关键词:CGI的安全




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版