Freeware
Security Web Tools
Gary Bahadur
In today's e-commerce-enabled environment, a company's
Web site is of paramount importance. Web sites are subject to daily
attacks. Everything from defacement to denial of service attacks
are launched against small "DotComs" and large multi-national
corporations. The purpose of this article is to look at some freeware
Linux tools the security-conscious administrator can use in the
war against cyber attacks.
There are numerous freeware tools available for all four phases
of securing a Web server. However, in the commercial arena, there
are not many tools available. You probably already know some of
the commercial tools such as Cybercop (www.nai.com), ISS
(www.iss.net), and Retina (www.eeye.com).
There are three facets to securing a Web server. The first is
the network on which it resides; the second is the operating system
on which it is running; and the third is the applications running
on the Web server. In this article, I will discuss in detail some
tools that you can use to increase your security posture. These
tools deal mainly with the version of the Web server running. For
a detailed analysis of network and application security, please
see "Securing Your Web Server", Sys Admin magazine,
June 1999.
Web server security testing is best done with a structured approach.
If you administer a small network, you probably already know the
operating system on each machine and what services it is running.
For administrators who have large networks, the composition of each
server may not be known. Take the following steps to perform an
assessment of Web servers on the network:
1. Footprint Analysis -- Scan the environment for operating
systems, applications, and running services.
2. Vulnerability Analysis -- Determine potential vulnerabilities
in services, applications, and running operating systems.
3. Penetration Testing -- Attempt to exploit vulnerabilities
found in the Vulnerability Analysis phase.
4. Securing -- Fix the weaknesses found in the Penetration
Testing phase and institute procedures to minimize future weaknesses
in the environment.
The first two phases will be discussed in this article.
Footprint Analysis
Footprint Analysis is always the first step in performing a security
assessment. What does this actually mean? Before testing a system,
you must know what the operating system is and what services and
applications are running on it. These details about the system will
help uncover potential vulnerabilities. To do this, the tools are
basically the same as for performing a network security assessment.
First, determine the operating system and open ports to determine
what services are running. This will focus our assessment activities.
Operating System Identification
Nmap is a great tool for port scanning and operating system identification.
Open ports are services running on the system:
#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
This output says that the target Web server is Linux. Nmap determined
the operating system by the responses it received from packets sent.
Port Scanning
Port scanning looks for open ports that can allow potential connection
to the system. If a connection can be made to the system, a vulnerability
may exist if the service is running on that open port:
#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
This output indicates that the Web server has a number of open ports.
We have just narrowed the potential range of vulnerabilities to the
Linux operating system and services (ftp, http, auth,
https, pptp, telnet, chargen, smtp,
finger). Our concern is mainly for the Web server ports 80
and 443. However, all open ports can pose a risk to the Web server.
In addition to TCP port scanning, we need to know what UDP ports
are open. UDP ports can pose a threat in the same manner as TCP
ports:
#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
After we have determined the operating system and available ports
on the Web server, we have to identify the type of Web server that
is running. There are several methods to do this, all of which require
connecting to the Web server port (normally 80).
Netcat
Netcat (nc) is a tool to allow raw socket connection to ports.
Over a raw connection, data can be sent and received. In this case,
we are sending an html head request, and the Web server version
can be retrieved:
#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
The netcat command allowed us to make a raw connection to port
80 and request header information. The header information says that
the version of the Web server is Microsoft IIS 4.0. We can now limit
the scope of our assessment to the operating system, the Web server
version, and the applications running on the server.
If this were a network security assessment, we would have to connect
to all open ports and determine what each service is and what versions
are running to lead us to the next phase -- Vulnerability Assessment.
For most Web servers, the tcp and udp ports, which
are open in the above example, can hold numerous vulnerabilities.
Open ports should be strictly limited to necessary ports. The more
open ports, the greater the potential risk of exploitation. Open
ports can be very dangerous, so close all unnecessary ports. If
this were a complete assessment of the server, all ports would have
to be investigated and secured. The Web server should have a minimum
amount of ports open. To completely secure all aspects of the server,
perform a full network assessment.
Now that we know what the operating system is and the services
that are running, we can move on to the next phase, Vulnerability
Analysis.
Vulnerability Analysis
Vulnerability Analysis can focus on two areas: the operating system,
and the applications. We will focus only on the applications, however.
Operating system vulnerabilities will matter to us only as it pertains
to the Web server software. When installed, Web server software
can make modifications to the operating system that can create an
exploitable weakness in the server. A Web server can be insecure
through both the applications and the operating system. A security
assessment is incomplete without reviewing both of these areas,
however, this article focuses just on vulnerabilities related to
the Web server software.
Vulnerability Scanning
We can launch scanner software that goes through a list of known
vulnerabilities in Web server software. Most of these programs will
aggregate exploits from different Web server software and launch
the scan based on all these checks. Most are not very discriminating
in selecting specific checks based on application. Each of the following
programs has been compiled and executed from a Linux Redhat 6.2
system.
Whisker
Whisker is a very good Web server scanning software that is updated
relatively frequently and has a comprehensive list of checks.
#./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
As we can see in the Whisker output, there are several problems associated
with this Web server. There are three basic results in this output,
200 OK, 403 Access Forbidden, and 404 Object Not
Found. These mean the following:
200 OK -- This result means that the exploit check
was successful. The server is vulnerable to attack. This server
has potential vulnerabilities in the newdsn.exe, htr,
filenames, and appending characters at the end of URLs. An attacker
can attempt to compromise this server through three different attacks.
403 Access Forbidden -- The scanner has found the file
that the exploit is checking, but the user does not have access
to the file to attempt exploitation. This is both good and bad.
It is good because the attacker can not compromise the system through
this method, but because the file is still there, the system may
be compromised using this file in the future.
404 Object Not Found -- The scanner was not able to
find the exploitable file. This is very good because the vulnerable
file has been removed from the system and can not be attacked.
The scanning software goes through known security vulnerabilities
that get posted to places such as Foundstone (www.foundstone.com),
Security Focus (www.securityfocus.com), and Packetstorm (www.packetstorm.securify.com).
These program writers implement checks as the exploit becomes available
to the general public.
There are a number of other Web security scanners. Some are not
as comprehensive as others or do not get updated as frequently.
These have varying degrees of functionality and usability. The output
from several of these tools is listed below.
Cgichk.pl
Cgichk.pl is a Perl-based scanner that has good logging
functionality and pulls back header information:
#./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.
This scanner found only one of the problems discovered with Whisker.
The other major difference is the way the output has been displayed.
As seen with Whisker, there is a difference in if a file was found
but not accessible (Access Forbidden), and if the file did not exist
at all (Object Not Found). The Whisker output provides greater details
about files found.
Malice
Malice is a Perl-based scanner that has some built-in IDS evasion
functionality and large list of checks:
./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 is different from the other scanners in that it has some checks
that were not in the other scanners and that can try to evade IDS
systems. It didn't find two checks that were not found by Whisker
or the other scanners. Another difference is that it is not displaying
the checks as they are being executed and checks that have failed
are not being displayed. There is a lot of benefit to displaying all
activity as it is being executed.
Md-webscan
Md-webscan is a scanner that falls somewhere in the middle of
the road and has the most common checks.
#./md-webscan -h 192.168.1.2
md-webscan: A scanner for a few well-known CGI vulnerabilities.
By: -=[Mordrian]=-
Email: <mordrian@hotmail.com>
Version: 1.0.0
Scanning for THC Backdoor: Not Present
Scanning for UnlG Backdoor v1.: Not Present
Scanning for UnlG Backdoor v1.: Not Present
Scanning for gH.cgi: Not Present
Scanning for The old phf: Not Present
Scanning for Count.cgi: Not Present
Scanning for test-cgi: Not Present
Scanning for nph-test-cgi: Not Present
Scanning for nph-publish: Not Present
Scanning for php.cgi: Not Present
Scanning for PHP's executable: Not Present
Scanning for handler: Not Present
Scanning for webgais: Not Present
Scanning for websendmail: Not Present
Scanning for webdist.cgi: Not Present
Scanning for faxsurvey: Not Present
Scanning for htmlscript: Not Present
Scanning for pfdisplay.cgi: Not Present
Scanning for perl.exe in cgi-b: Not Present
Scanning for perl in cgi-bin: Not Present
Scanning for wwwboard.pl: Not Present
Scanning for wwwboard.cgi: Not Present
Scanning for www-sql: Not Present
Scanning for view-source: Not Present
Scanning for campas: Not Present
Scanning for aglimpse: Not Present
Scanning for glimpse: Not Present
Md-Scan did not have as many checks as Whisker and did not find any
problems with the Web server. Again, the other difference is that
it did not differentiate between a file not being present and access
being denied to the exploitable file. The result Not Present doesn't
tell us if the file isn't present or if access is not allowed.
When running scanner sofware, a lot of value can be had from watching
the log files on the target server to see what is actually showing
up. If real time IDS systems are being used, it is very important
to watch the traffic to understand what is being recorded and what
the IDS system thinks is happening. In almost all cases, IDS systems
will not correctly identify all the attacks. It is important to
know what the IDS thinks all the attacks are. Frequently, IDS systems
will report false positive results.
Once the scanning phase has completed, we have a list of potentially
exploitable Web programs. As seen by the checks, exploitable programs
can be cgi, perl, asp, etc. These can be shipped
with the Web server software or be third-party software. The last
two phases, Penetration Testing and Securing, take the data gathered
from the first two phases to determine actual vulnerabilities, perform
the exploitation to prove it is viable, and then fix them.
The programs in Table 1 are just some of the more popular ones
available freely on the Internet. Because these are freeware, the
updates are sporadic. Whisker is probably the best freeware scanner
currently. There are other Web security-testing tools that will
be useful to the conscientious administrator. A five-minute search
of the Internet will have you inundated with all forms of security
testing tools.
Conclusion
The Footprint Analysis phase first focuses our assessment against
running applications and a known operating system. The Vulnerability
Analysis phase highlights potential weaknesses in the Web server,
based on the service running and the operating system. The Penetration
Testing phase then takes advantage of vulnerabilities and proves
whether they are real or not. Not all discovered checks can be easily
exploited. There may be false positive results from these tools
that may not be a real problem. Securing the server is the last
phase.
For the systems administrator who is limited on resources and
security expertise, programs such as the ones described here can
help bridge the gap between insecure and secure systems. Security
is an ongoing concern. These tools should not just be run once.
Security assessments should be performed on a continuous basis to
keep the environment safe.
Gary Bahadur is the Chief Information Officer for Foundstone
Inc. (www.foundstone.com). Foundstone specializes in security consulting
and training. Gary has been performing Attack and Penetration testing
for more than five years.
|