随着INTERNET的普及,现在的WEB站点将面对更多的安全威胁。本文将介绍一些Linux环境下的一些帮助系统管理员抵御网络攻击的自由安全工具。
现在,有大量的自由软件可以帮助我们加强WEB服务器的安全。然而,在商业领域,只有Cybercop ( www.nai.com)、ISS ( www.iss.net)、Retina ( www.eeye.com)等几种相关产品。
加强WEB服务器的安全主要从三个方面入手。1).其所处的网络;2).运行的操作系统;3).服务器上运行的应用程序。本文我将详细介绍一些工具,你可以使用这些工具来加强自己WEB服务器的安全。
对于WEB服务器的测试最好能够采用结构化的方式。如果你是管理的是一个小网络,你可能对于每台服务器使用的操作系统和运行的程序有比较清楚的了解。但是对于一个大型网络,要对每台服务器都有清楚的了解是非常困难的。在这种情况下,可以采取以下四个步骤,进行了解:
指纹特征分析:扫描主机的操作系统、运行的应用程序和提供的服务。
缺陷分析:分析操作系统、应用程序、系统服务的潜在安全缺陷。
入侵测试:尝试利用上一步发现的缺陷进行攻击。
加固系统:修补上一步发现的缺陷,尽量减小系统的脆弱性。
本文将集中讨论前两步。
指纹特征分析
在网络安全规划中,指纹特征分析总是首先要做的。也就是说,在进行实际的测试之前,你不许知道测试目标使用的操作系统、运行的应用程序和提供的服务。这些细节可以帮助你发现潜在的安全缺陷。要知道这些细节,首先要判断系统的操作系统和打开的端口。
判断操作系统
nmap是一个伟大的端口扫描和操作系统检测工具,使用nmap可以非常有效地发现检测目标使用的操作系统:
#nmap -sT -O 192.168.1.1
Starting nmap V. 2.54BETA5 ( www.insecure.org/nmap/ )
TCP Sequence Prediction: Class=truly random
Difficulty=9999999 (Good luck!)
Remote operating system guess: Linux 2.0.32-34
从输出可以看出目标使用Linux操作系统。nmap是通过分析收到的报文议判断操作系统的类型的。
端口扫描
然后,我们进行端口扫描来判断目标打开的端口。如果可以和系统的某个服务建立连接,那么在端口上监听的服务进程就存在安全缺陷就可能被利用。
#nmap -sT 192.168.1.1
Starting nmap V. 2.54BETA5 ( www.insecure.org/nmap/ )
Intesting ports on 192.168.1.1 (206.135.57.167):
(The 1529 ports scanned but not shown below are in state: closed)
Port State Service
19/tcp open chargen
21/tcp open ftp
23/tcp open telnet
25/tcp open smtp
37/tcp open time
79/tcp open finger
80/tcp filtered http
113/tcp open auth
443/tcp filtered https
1723/tcp filtered pptp
Nmap run completed -- 1 IP address (1 host up) scanned in 12 seconds
扫描完毕TCP端口之后,我们还要找出打开的UDP端口:
#nmap -sU 192.168.1.1
Starting nmap V. 2.54BETA5 ( www.insecure.org/nmap/ )
Port State Service
37/udp open time
53/udp open domain
67/udp open bootps
69/udp open tftp
94/udp open objcall
111/udp open sunrpc
从端口扫描结果反县可以发现系统巡行ftp、http、auth、https、pptp、telnet、chargen、smtp、finger、time、domain、bootps、tftp、objcall、sunrpc。现在,我们把注意力转到Linux操作系统和检测目标提供的这些服务中存在的安全缺陷。完成了以上的信息收集,下面我们还需要判断WEB服务器是否能够正常提供服务。
netcat
netcat(nc)是一个简单的UNIX网络工具,它可以使用TCP或者UDP协议通过网络连接读写数据。它被设计为一个稳定的后端(back-end)工具,能够直接由其它程序和脚本轻松驱动。同时,它还是一个具有丰富功能的网络调试和探测工具,它能够建立你需要的几乎所有类型的连接,还有几个很有意思的内置功能。现在,我们使用nc建立到WEB服务器的连接,并发出一个HTML头请求:
#nc 192.168.1.2 80
GET HEAD/HTTP1.0
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/4.0
Date: Wed, 06 Dec 2000 00:45:56 GMT
Content-Type: text/html
Set-Cookie: ASPSESSIONIDQGGQQQPO=MJMCGMIAPIHOGLBNLFJPKCAH; path=/
Cache-control: Private
通过收到的信息,我们可以确定测试目标使用的WEB服务器是Microsoft IIS4。现在,我们能够把我们的安全规划限制在操作系统、WEB服务器版本、以及服务器上的应用程序了。
从上面的扫描中,我们可以看到服务器中还有其它的一些端口也打开了。这些打开的端口可能有许多缺陷。在服务器中,打开的端口应该有严格的限制,否则对带来很多安全缺陷。在知道了上面这些信息之后,我们可以进入下一步进行缺陷分析了。
缺陷分析
缺陷分析可以集中于两个方面:操作系统和应用程序。不过,这里我们只关心应用程序,也就是WEB服务器软件。
缺陷扫描
有些缺陷扫描程序能够综合已知的WEB安全缺陷。下面我们就使用这类程序对网站进行缺陷扫描。
whisker
whisker是一个非常好的WEB服务器缺陷扫描软件。它能够进行大量的缺陷扫描,而且升级非常频繁,能够很快地加入对新缺陷的检查。
#./whisker.pl -h 192.168.1.2 -i -v
-- whisker / v1.4.0 / rain forest puppy / www.wiretrip.net --
- Loaded script database of 1968 lines
= - = - = - = - = - =
= Host: 192.168.1.2
+ 404 Object Not Found: HEAD /
= Server: Microsoft-IIS/4.0
- Appending ::\, %2E, or 0x81 to URLs may give script source
- Also try +.htr and %20%20.htw tricks
- Security settings on directories can be bypassed if you use 8.3 names
+ 404 Object Not Found: GET /cfdocs/
+ 403 Access Forbidden: GET /scripts/
+ 403 Access Forbidden: GET /scripts/cfcache.map
+ 404 Object Not Found: GET /cfcache.map
+ 404 Object Not Found: GET /cfide/Administrator/startstop.html
+ 404 Object Not Found: GET /cfappman/index.cfm
+ 404 Object Not Found: GET /cgi-bin/
+ 404 Object Not Found: GET /whisker.ida
+ 404 Object Not Found: GET /whisker.idc
+ 404 Object Not Found: GET /whisker.idq
+ 404 Object Not Found: GET /whisker.htw
+ 404 Object Not Found: GET /whisker.htr
+ 403 Access Forbidden: GET /scripts/cpshost.dll
+ 404 Object Not Found: GET /samples/search/queryhit.htm
+ 404 Object Not Found: GET /adsamples/config/site.csc
+ 403 Access Forbidden: GET /scripts/counter.exe
+ 404 Object Not Found: GET /scripts/repost.asp
+ 404 Object Not Found: GET /scripts/postinfo.asp
+ 403 Access Forbidden: GET /scripts/fpadmcgi.exe
+ 403 Access Forbidden: GET /scripts/samples/
+ 403 Access Forbidden: GET /scripts/samples/search/webhits.exe
+ 403 Access Forbidden: GET /scripts/iisadmin/
+ 403 Access Forbidden: GET /scripts/iisadmin/ism.dll
+ 404 Object Not Found: GET /msadc/
+ 404 Object Not Found: GET /Sites/
+ 404 Object Not Found: GET /SiteServer/Publishing/viewcode.asp
+ 404 Object Not Found: GET /advworks/equipment/catalog_type.asp
+ 404 Object Not Found: GET /iisadmpwd/aexp4b.htr
+ 403 Access Forbidden: HEAD /scripts/samples/details.idc
+ 403 Access Forbidden: HEAD /scripts/samples/ctguestb.idc
+ 200 OK: HEAD /scripts/tools/newdsn.exe
- this can be used to make DSNs, useful in use with our ODBC exploit
- and the RDS exploit (with msadcs.dll)
+ 403 Access Forbidden: GET /scripts/iisadmin/bdir.htr
+ 404 Object Not Found: HEAD /carbo.dll
+ 403 Access Forbidden: HEAD /scripts/proxy/
+ 403 Access Forbidden: HEAD /scripts/proxy/w3proxy.dll
+ 404 Object Not Found: HEAD /prd.i/pgen/
+ 404 Object Not Found: HEAD /cgi-win/
+ 403 Access Forbidden: HEAD /scripts/nlog-smb.cgi
+ 403 Access Forbidden: HEAD /scripts/wwwboard/
+ 404 Object Not Found: HEAD /wwwboard/
+ 403 Access Forbidden: HEAD /scripts/wwwboard.pl
+ 403 Access Forbidden: HEAD /scripts/wwwboard/wwwboard.pl
+ 403 Access Forbidden: HEAD /scripts/wwwboard.cgi
+ 403 Access Forbidden: HEAD /scripts/wwwboard/wwwboard.cgi
+ 404 Object Not Found: HEAD /logs/
+ 404 Object Not Found: HEAD /database/
+ 404 Object Not Found: HEAD /databases/
+ 403 Access Forbidden: HEAD /scripts/campas
+ 403 Access Forbidden: HEAD /scripts/guestbook.cgi
+ 403 Access Forbidden: HEAD /scripts/guestbook.pl
+ 403 Access Forbidden: HEAD /scripts/edit.pl
+ 403 Access Forbidden: HEAD /scripts/webbbs.cgi
+ 403 Access Forbidden: HEAD /scripts/whois_raw.cgi
+ 404 Object Not Found: HEAD /webcart/
+ 404 Object Not Found: HEAD /webcart-lite/
+ 403 Access Forbidden: HEAD /scripts/AnyBoard.cgi
+ 403 Access Forbidden: HEAD /scripts/admin.php
+ 403 Access Forbidden: HEAD /scripts/code.php
+ 403 Access Forbidden: HEAD /scripts+ 403 Access \
Forbidden: HEAD /scripts/bnbform.cgi
从输出结果中,我们可以看到有三种基本的检测结果:200 OK、403 Access Forbidden和404 Object Not Found。这些结果表示:
200 OK
这个输出表示攻击检查成功。服务器存在这个缺陷。这些缺陷包括:newdsn.exe、htr和URL扩展字符串。攻击者可能利用这些缺陷侵入服务器。
403 Access Forbidden
表示whisker已经发现了可以用于攻击检查的文件,但是哟高呼没有对它的访问权限。在这种情况下,攻击者暂时无法通过这些可能的缺陷侵入服务器,但是如果将来权限设置出现失误就可能给攻击者以可乘之机。
404 Object Not Found
表示whisker没有发现可以用于攻击的文件。
whisker主要从以下的站点获得安全缺陷信息:http://www.foundstone.com、http://www.securityfocus.com、http://www.packetstorm.securify.com。
还有其它一些WEB服务器缺陷扫描程序,不过这些程序的包容性和反应速度都不及whisker。
Cgichk.pl
Cgichk.pl是一个使用perl编写的扫描程序,它有非常好的日志功能,能够对信息进行很好的回溯。
#./cgichk.pl
CGI scanner [in Perl] v1.1
Host: 192.168.1.2
HTTP Port [80]:
Log Session?(y/n)n
Press [enter] to check the httpd version...
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Wed, 01 Nov 2000 19:57:13 GMT
Content-Type: text/html
Set-Cookie: ASPSESSIONIDQQQQQGZZ=HGECMCCDEJALHKKHHCPMJLEP; path=/
Cache-control: private
Press [enter] to check for CGI vulnerabilities...
Searching for UnlG - backdoor : Not Found
Searching for THC - backdoor : Not Found
Searching for phf : Not Found
Searching for Count.cgi : Not Found
Searching for test-cgi : Not Found
Searching for nph-test-cgi : Not Found
Searching for nph-publish : Not Found
Searching for php.cgi : Not Found
Searching for handler : Not Found
Searching for webgais : Not Found
Searching for webdist.cgi : Not Found
Searching for faxsurvey : Not Found
Searching for htmlscript : Not Found
Searching for pfdisplay : Not Found
Searching for perl.exe : Not Found
Searching for wwwboard.pl : Not Found
Searching for www-sql : Not Found
Searching for view-source : Not Found
Searching for campas : Not Found
Searching for aglimpse : Not Found
Searching for glimpse : Not Found
Searching for man.sh : Not Found
Searching for AT-admin.cgi : Not Found
Searching for filemail.pl : Not Found
Searching for maillist.pl : Not Found
Searching for jj : Not Found
Searching for info2www : Not Found
Searching for files.pl : Not Found
Searching for finger : Not Found
Searching for bnbform.cgi : Not Found
Searching for survey.cgi : Not Found
Searching for AnyForm2 : Not Found
Searching for textcounter.pl : Not Found
Searching for classifields.cgi: Not Found
Searching for wguest.exe : Not Found
Searching for bdir - samples : Not Found
Searching for CGImail.exe : Not Found
Searching for newdsn.exe : Found!
Searching for fpcount.exe : Not Found
Searching for counter.exe : Not Found
Searching for visadmin.exe : Not Found
Searching for openfile.cfm : Not Found
Searching for exprcalc.cfm : Not Found
Searching for dispopenedfile : Not Found
Searching for sendmail.cfm : Not Found
Searching for codebrws.asp : Not Found
Searching for codebrws.asp : Not Found
Searching for showcode.asp : Not Found
Searching for search97.vts : Not Found
Searching for carbo.dll :Not Found
Server may have CGI vulnerabilities.
从结果可以看出,这个扫描程序只能发现whisker发现的一部分缺陷。其它的一些区别还包括输出的显示。whisker对输出的分类更详尽一些,例如:Access Forbidden和Object Not Found的划分。
Malice
Malice也是一个使用perl写成的perl扫描程序,具有某些规避IDS检测的功能,而且能够进行大量的检测。
./malice5.2.pl
Malice .5.2
Anti IDS scanner that uses null scans with HEAD requests
Much props to doom for editing this.
Host: 192.168.1.2
Port: 80
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Wed, 01 Nov 2000 20:02:45 GMT
PICS-Label: (PICS-1.0 "http://www.rsac.org/ratingsv01.html" l by \
"" on "1998.10.20T15:20-0400" exp "1999.10.20T12:00-0400" r \
(v 0 s 0 n 0 l 0))
Content-Type: text/html
Set-Cookie: ASPSESSIONIDQQQQQGZZ=OHECMCCDJGGMODLBHBIEDKGO; path=/
Cache-control: private
Checking 192.168.1.2 for CGI holes.....:
Exploit Found: /scripts/tools/newdsn.exe
Location: /scripts/tools/newdsn.exe
Exploit Found: /?PageServices
Location: /?PageServices
Exploit Found: WebDAV transversal
Location: /secret/secret/sql_tool.shtml
Exploit Found: default.asp
Location: /default.asp
malice能够进行一些其它扫描程序不能做的检查,而且它会试图避开IDS系统的检测。从结果还可以看出,它查出了两个whisker没有发现的缺陷。malice的另一个不同之处是,它只显示能够的检测结果。
扫描完成后,我们就获得许多系统潜在的缺陷信息。下一步就是对这些潜在的缺陷进行实际的攻击测试。完成实际的攻击测试之后,根据测试结果对实际的缺陷进行修补。
本文讲到的一些和一些没有讲到的WEB服务器缺陷扫描工具可以从以下地址获得。
whisker:http://www.wiretricp.net
cgichk.pl:http://packetstorm.securify.com
malice:http://kickme.to/security666
netcat:http://www.securityfocus.org
nmap:http://www.insecure.org
MD-webscan:http://www.internettrash.com/users/mordrian
结论
本文介绍了WEB服务器安全规划的前两步:指纹特征分析和缺陷分析。