CGI的安全问题

安全 应用安全
CGI中最常见的漏洞是由于未验证用户输入参数而引起的问题。CGI 脚本一般从 URL 、表单或路径信息(Path Information)中获取用户的请求信息。

CGI中最常见的漏洞是由于未验证用户输入参数而引起的问题。CGI脚本一般从URL 、表单或路径信息(Path Information)中获取用户的请求信息。Web程序开发人员容易习惯性认为用户会按照要求的格式输入数据,并在这个假定的前提下开发程序,而当这个前提没有满足时,程序的控制逻辑就可能发生错误。对于攻击者来说,他们总能找到一些开发人员未料到的发送数据的方法。

CGI程序中经常会使用路径信息填充PATH_INFO或其他环境变量,路径信息通常指Web服务器上的那些如配置文件、临时文件或者被脚本因问题调用的文件等此类不用变更的参数。但 PATH_INFO 变量是可以通过其他方式修改的,因而在使用时必须小心地验证其内容,盲目地根据PATH_INFO指定的路径文件进行操作的CGI脚本可能会被恶意用户利用。

例如,某个CGI脚本的功能是打印PATH_INFO中引用的文件,脚本程序如下所示:

源码复制打印

#!/bin/sh

#Send the header

echo "Content-type:text/html"

echo ""

#Wrap the file in some HTML

#!/bin/sh

echo "<HTML><HEADER><TITLE>FILE</TITLE></HEADER></TITLE>"

echo "Here is the file you requested:<PRE>\n"

cat $PATH_INFO

echo "</PRE></BODY></HTML>"

一个恶意的用户可能会输入这样的 URL:

http://www.hack6.com /cgi-bin/foobar.sh/etc/passed

上述脚本立刻就会返回机器的口令文件。通过这一方法,用户就可以读取机器上的几乎所有文件。

在使用CGI进行Web应用开发时,有一些应该遵循的重要原则。

1.按照帮助文件正确安装CGI程序,删除不必要的安全文件和临时文件。

2.检查CGI代码,检查其来源是否可靠、是否存在漏洞或恶意代码。

3.使用C/C++ 编写CGI程序时,注意使用安全的函数。

4.使用安全有效的验证用户的方法。

5.验证用户的来源,防止用户短时间内过多动作。

6.建议过滤下列字符:& ; · 、“ | * ? ~ <> ^ () [] {} $ \n \r \t \0 # ../ 。

7.注意处理好意外和错误情况。

责任编辑:蓝雨泪 来源: 黑客x档案
相关推荐

2019-04-04 11:55:59

2020-10-30 08:50:25

2016-03-01 11:44:57

2009-07-07 13:29:33

Servlet和JSP

2013-01-07 10:34:23

2013-03-12 09:22:32

2012-10-09 16:47:19

2010-04-02 13:53:47

2009-05-30 09:36:18

2010-05-04 17:43:50

Unix系统

2012-06-15 11:18:07

云安全云计算

2012-12-04 16:57:49

2013-04-02 11:07:16

2011-03-21 10:23:06

2011-05-20 11:59:32

2009-11-03 13:46:56

Oracle密码

2011-11-17 10:34:14

内网安全

2012-12-11 11:28:20

2013-09-05 09:42:06

2009-01-07 17:55:23

点赞
收藏

51CTO技术栈公众号