This pen test posted on Security Focuses' Pen-Test mailing list brings up the question of the testing of protocols as to the OSSTMM (http://www.osstmm.org) and the reliability of NMAP's protocol scanning. As I apply the module "Port Scanning" the tasks for protocol identification are a bit difficult to automate. Of course, NMAP claims to do it but I consistantly get at least IGMP for most systems which I do have difficulty with accepting. I use NMAP for many of the tasks in that section but hav been hesitant on the protocol testing. Of course a bit of scripting will automate some but while I was a bit hesitant about NMAP's results I thought I would ask what others thought of this. Sincerely, -pete. -----Original Message----- From: Curt Wilson [mailto:netw3at_private] Sent: Wednesday, May 30, 2001 7:51 AM To: pen-testat_private Subject: Penetration test report - your comments please? Enclosed is a text report on a pen test I did recently. I was given three hours to attempt penetration from remote without touching any other hosts, using brute force, relying on DOS, social engineering or physical attacks. I'm curious if I missed anything obvious, and would be thankful for any comments or suggestions from other penetration testers, especially if you are one of the people who authored one of the messages included from various security mailing lists. Thanks for any input folks. Initial Audit and Penetration test: <company name>. Submitted by Curt Wilson, Netw3 Consulting The www.<sitename.com> system is currently running at <ISP> and does not have any type of firewall or other access control mechanism in place that I am aware of. Therefore, this audit is only reflective of the current state of the system. Network and host remote vulnerability conditions were tested for, with the exclusion of Denial of Service (DOS) and brute-force attacks. I was unable to penetrate into the operating system or database within the allotted time, therefore it is likely that <sitename.com> is fairly secure from all but the most determined attackers or those with pre-existing access. Basic recommendations: Disable any unnecessary services and web modules. Apply all necessary patches on a timely basis. Restrict access on a IP address level through TCP wrappers, router access control lists, firewall filters, or newer features in the Linux 2.4 kernel. Enable encryption for all exposed services when possible, and protect any systems used for administration or any systems that may store login credentials or certificates. Choose strong passwords, and review all logs on a timely basis. A hardening tool such as Bastille Linux could be helpful. Additionally, ensure that all data pathways to target system from ISP and internal company network are secure. Enumeration and penetration attempts: The nmap tool was used to scan all listening TCP ports and attempt to identify the Operating System. Results were obtained for TCP, but some mechanism is in place that blocked my nmap UDP scan and revealed that all UDP ports were listening (which is obviously not the case; this result is often caused by a firewall. An attempt to scan UDP from windows was also met with unreliable results). [root@premis netw3]# nmap -sS -P0 -n <IP address> -O Starting nmap V. 2.54BETA5 ( www.insecure.org/nmap/ ) Interesting ports on (<IP address>): (The 1527 ports scanned but not shown below are in state: closed) Port State Service 22/tcp open ssh 80/tcp open http 111/tcp open sunrpc 443/tcp open https 5432/tcp open postgres 8007/tcp open jserv 8080/tcp open http-proxy TCP Sequence Prediction: Class=random positive increments Difficulty=3308963 (Good luck!) Remote operating system guess: Linux 2.1.122 - 2.2.16 The TCP portscan can be made less attractive by the use of TCP wrappers plus a tool such as portsentry to block access from IP addresses that generate a number of connection attempts that exceed a set threshold. Care must be taken to ensure that a Denial of Service (DOS) condition does not result from an attacker sending spoofed or decoy IP addresses that belong to the systems upstream routers or other important clients or Internet access points. Such a condition could be easily fixed, however. TCP sequence prediction indicates that the spoofing of TCP connections based on sequence numbers would be a nearly impossible task. The basic Linux kernel has been resistant to TCP sequence number prediction attacks for some time. The remote operating system guess can be circumvented through kernel modifications, if this is considered important. Attackers use this information during a reconnaissance phase to determine attack methodologies. Recommendations by port: TCP port 22: SSH: SSH-1.99-OpenSSH_2.3.0p1 Protocol version 1.99, software version 2.3.0p1 OpenSSH is known to be generally secure, having affiliation with the OpenBSD operating system, which is known for it's good security. However, a known vulnerability exists in the SSH version 1 protocol which allows a (very difficult) insertion attack to take place. The chance of such an attack is very slim. Solution: Upgrade to OpenSSH 2.5.2 which supports SSH V2. Reference: http://www.core-sdi.com/soft/ssh/ssh-advisory.txt SSH protocol V1 is vulnerable to a man-in-the-middle attack through the use of an exploit tool called sshmitm, which is part of the dsniff package. Certain restrictive conditions must exist for this attack to be feasible, namely, the SSH connection must be routed through the Internet, or through some other network where a man-in-the-middle attack can take place through a variety of methods. If SSH is used on an internal network, or is used sparingly from the Internet (with IP address access control in all cases), the chance of this vulnerability being exploited is very slim. Reference: http://www.monkey.org/~dugsong/dsniff Reference: http://sysadmin.oreilly.com/news/silverman_1200.html Another recently discovered vulnerability reveals that the exact length of a users password can be determined through the passive monitoring of an SSHv1 sssion. Fix: upgrade to the most recent version of SSH available and apply any vendor security patches. Reference: http://www.openwall.com/advisories/OW-003-ssh-traffic-analysis.txt As long as strong passwords are used, a successful attack through the normal SSH authentication mechanism is unlikely. Upgrade to the latest version of SSH and ensure that proper logging is taking place and that logs are monitored on a regular basis. 4/11/01: 11:20PM Attempted SSHv1 CRC compensation attack exploit using the xpl exploit; unsuccessful, wrong version of SSH. I have no means to implement a sniffing attack since the scope of this penetration test was related to the target system <sitename.com> and not related machines or network infrastructure. Note than a dedicated attacker will have no such scruples. TCP port 80: HTTP Web header: Apache/1.3.14 (Red-Hat/Linux) tomcat/1.0 modssl/2.7.1 OpenSSL/0.9.5a DAV/1.0.2 PHP/4.0.4pl1 modperl/1.24 on Red Hat Linux Apache/1.3.14: This version of apache is vulnerable to an information leakage bug that would allow an attacker to retrieve a directory listing and obtain pathnames. This information could be leveraged for other attacks, but is considered a low-risk vulnerability. I was unable to find any actual exploit or the details on how to leverage this vulnerability manually. Fix: Upgrade to version 1.3.19 is suggested for maximum security. Reference: http://www.securityfocus.com/bid/2503 The Apache web server allows a PUT request to the root directory, but an attempt to actually place a file using this method failed. http://www.>/admin/ The Tomcat Administration tools directory /admin should be restricted to Internet access. The administration tools are protected by password authorization, so as long as strong passwords are used, the risk is minimal. For best results, apply access control mechanisms to prevent directory access of /admin in the first place. An attacker could still attempt to run a brute force attack on passwords. Ensure that logging is enabled, and strong passwords have been used. Restrict or remove the admin directory if it's not being used. Reference: http://www.securityfocus.com/archive/1/71116 DAV/1.0.2: No known vulnerabilities for this version of DAV on Apache. An attempt to connect using Dreamweaver 4 as a DAV client failed, either due to a disallowed connection or bad credentials. If DAV is used over port 80, authentication information may be passed in clear-text and intercepted through a sniffing based attack. Ensure that strong passwords are required for WebDAV access and limit connections as much as possible by restricting DAV access only to web page directories (along with the other aforementioned access control methods). Reference: http://www.webdav.org/mod_dav/ - security PHP/4.0.4pl1: This is a recent patch to the PHP package and should be secure against known vulnerabilities. Reference: http://www.securityfocus.com/bid/2206 Modperl/1.24: No specific remote vulnerability information has been discovered. TCP port 111: Sun Remote Procedure Call portmapper. Close this port or apply access control mechanisms to prevent future Sun RPC portmapper based attacks and information gathering tools from automated scans. An rpcinfo request to <sitename.com> only shows the portmapper itself listening, so perhaps the other RPC ports have either been disabled, or the portmapper has been configured to not give out this information. Many scanning and cracking tools work through TCP and UDP port 111 and this port is one of the most commonly attacked on the Internet today. The specific risk appears to be low, unless other RPC services ARE actually running on their default ports. Various tests to exploit statd and other RPC services failed. [root@premis netw3]# rpcinfo -p www.<sitename.com> program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 4/11/01: 11:15 PM Attempted to access rpc.mountd with ADMmountd exploit; unsuccessful. Perhaps RPC port is not listening. 4/11/01: 11:35 PM Attempted rpc.statdx exploit, attempted to exploit RedHat 6.0-6.2 to no avail. Either statd is not listening or is listening on a different RPC port. At this point, the average attacker would most likely give up and stop probing non-replying RPC services. TCP port 443: SSL. Modssl/2.7.1: Unable to find any specific security issues. Note that the SSL 2.0 protocol is vulnerable to a man-in-the-middle attack with the sslmitm tool of the dsniff package previously discussed in the SSH section of this report. The likelihood of such an attack is very slim and requires existing access. If an attacker were able to obtain such access, they could possibly eavesdrop on the authentication credentials. For best results, only use SSL 3.0. OpenSSL/0.9.5a: Unable to find any remote security issues. See note above TCP port 5432: Postgres: Basic research does not indicate any known vulnerabilities by leaving this port open since there are a variety of authentication schemes already taking place by default. An extensive search revealed no public vulnerabilities for the Postgres TCP server. Of course, this port should be restricted to the systems that need to access it. On the local side, Postgres passwords are stored in cleartext, but in a file only accessible to the postgres admin login, and root. A local vulnerability only, unless an intruder can obtain remote root access, and if they have obtained root then there are many other problems to deal with. Reference: http://www.securityfocus.com/bid/1139 Reference: http://www.phpbuilder.com/columns/kevin20010314.php3?page=3 TCP port 8007: Tomcat protocol port. Restrict access to desired hosts. If I recall correctly from our discussion, Tomcat only needs to communicate with Apache, and not with the world, therefore restriction should be placed on IP address. No known attacks exist for this service that I was able to locate. TCP port 8080: Tomcat Web Server Header reveals: : Servlet-Engine: Tomcat Web Server/3.2 (final) (JSP 1.1; Servlet 2.2; Java 1.3.0; Linux 2.2.16-22enterprise x86; java.vendor=IBM Corporation) Tomcat system is not vulnerable to .jsp source code display, since tomcat runs with Apache and not as it's own web server. Issue reported on SecurityFocus Bugtraq Tues, April 3, 2001. Reference: http://www.securityfocus.com/bid/2527 Close port 8080, or disable the service if it's not needed, since crackers scanning for proxy servers will find this port, drawing unnecessary attention to your site. The Tomcat Web server on port 8080 includes various examples of servlet and jsp code that allows parameters to be passed. In general, it is a good idea to restrict access to sample or demonstration code. At the moment, no known security vulnerabilities or denial of service conditions exist in the demonstration code. Restrict access to port 8080, only allowing access from those systems that must communicate in this manner. Leaving port 8080 open to the global Internet allows a potential attacker to retrieve various data about the servers operating environment that could be useful in the implementation of other types of exploits or possible cookie/session state attacks. This is an informational gathering attack only and does not itself allow for intrusion. Reference: http://www.securityfocus.com/bid/1532 Operating system data was obtained from <sitename.com> by requesting a non-existing SNP file with the following URL: http://www. >:8080/examples/jsp/snp/blotto.snp Servlet init parameters: Context init parameters: Context attributes: javax.servlet.context.tempdir = /opt/tomcat/work/localhost_8080%2Fexamples sun.servlet.workdir = /opt/tomcat/work/localhost_8080%2Fexamples Request attributes: Servlet Name: snoop Protocol: HTTP/1.1 Scheme: http Server Name: www.<sitename.com> Server Port: 8080 Server Info: Tomcat Web Server/3.2 (final) (JSP 1.1; Servlet 2.2; Java 1.3.0; Linux 2.2.16-22enterprise x86; java.vendor=IBM Corporation) Remote Addr: <pen test IP addr> Remote Host: <pen test IP addr> Character Encoding: null Content Length: -1 Content Type: null Locale: en_US Default Response Buffer: 8192 Parameter names in this request: Headers in this request: User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) Cookie: JSESSIONID=j7vygwbsa1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */* Host: www.<sitename.com>:8080 Accept-Encoding: gzip, deflate Accept-Language: en-us Connection: Keep-Alive Cookies in this request: JSESSIONID = j7vygwbsa1 Request Is Secure: false Auth Type: null HTTP Method: GET Remote User: null Request URI: /examples/jsp/snp/blotto.snp Context Path: /examples Servlet Path: /jsp/snp/blotto.snp Path Info: null Path Trans: null Query String: null Requested Session Id: j7vygwbsa1 Current Session Id: j7vygwbsa1 Session Created Time: 986245076263 Session Last Accessed Time: 986245144366 Session Max Inactive Interval Seconds: 1800 Session values: tomcat.auth.originalLocation = /examples/jsp/security/protected/index.jsp If possible, don't run Tomcat as root, in the event that the Tomcat server would be attacked through a buffer overflow, format string, or other type of exploit. To run as "nobody" one method is: If your UNIX-style box has an "rc.d"-style boot directory (Solaris, RedHat, etc.), then the simplest way is to create a file in the appropriate boot directory which looks something like this: #!/bin/sh CLASSPATH=/your/classpath/here export CLASSPATH su - nobody -c "/tomcat/bin/tomcat.sh $@" You can then invoke this as /etc/rc.d/init.d/tomcat (start | stop) from your boot sequence in the same way that you start Apache (for instance). TCP, IGMP, ICMP, and UDP protocols are allowed through at the current time. TCP is necessary. UDP may not be, since I don't believe there is any service that relies upon UDP at <sitename.com> (but I don't know this for a fact). Certain components of ICMP are necessary, but others should be blocked. See the ipchains reference which includes ICMP information at http://www.sans.org/infosecFAQ/firewall/blocking_ipchains.htm for more information. IGMP does not pose a large risk on a Linux system, but is probably not necessary and may most likely be removed without any harm in functionality. [root@premis netw3]# nmap -sO www.<sitename.com> Starting nmap V. 2.54BETA5 ( www.insecure.org/nmap/ Interesting protocols on <sitename.com> (<IP address>): (The 250 protocols scanned but not shown below are in state: closed) Protocol State Name 1 open icmp 2 open igmp 6 open tcp 17 open udp Misc Information that may or may not be useful: Date: Fri, 6 Apr 2001 08:52:28 -0600 From: rudi carell <rudicarellat_private> Subject: Servlets and the NULL-BYTE MIME-Version: 1.0 Content-Type: text/plain; format=flowed I am not sure if this is common knowledge but ..did anybody of you ever notice, that the NULL-BYTE (\000) can be used for java-servlets and jsp s the same way as it can be used in perl- scripts? every unchecked http-parameter passed to a File, RandomAccessFile or similar Java-Class makes it possible for an Attacker to cut off program-supplied file-extensions or do a traversal-exploit. is this behavior conformable to java/Unicode specs??? My attempts at implementing this null-byte exploit were met with failure, perhaps due to the limited time allocated to this phase of the project, or due to the possibility that the site is not vulnerable. The only thing I could do was to return a blank page instead of the logout or login page for the main case search servlet as such: http://www. >/<path>/<path>/<servletname>?page='\000\' Ensure that the java code is written in a manner to restrict use of the null-byte exploit technique. Java code checklist: http://java.sun.com/security/seccodeguide.html http://sunsolve.sun.com/pub-cgi/retrieve.pl?doctype=coll&doc=secbull/201&typ e=0&nav=sec.sbl&ttl=sec.sbl Java security bulletin Feb 2001. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | Curt R. Wilson * Netw3 Consulting * www.netw3.com | | Internet Security, Networking, PC tech, WWW hosting | | Netw3 Security Reading Room : www.netw3.com/documents.html | | Serving Southern Illinois locally and the world virtually | | netw3at_private 618-303-NET3 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
This archive was generated by hypermail 2b30 : Wed May 30 2001 - 08:59:34 PDT