Admittedly, this is again a repost from my other blog , but I am sure it would be useful to my O’Reilly readers.
Not the wormy “CodeRed”, but Red Alert, mind you.
Following the new “tradition” of posting a security tip of the week (mentioned here, here ; SANS jumped in as well), I decided to follow along and join the initiative. One of the bloggers called it “pay it forward” to the community.
So, Anton Security Tip of the Day #4: Code 200: Good or Bad?
Now, this is somewhat related to my previous tip (#3), but as it applies to web server logs, such as IIS Extended W3C (or other) logs or Apache access_log logs. Unlike, say, databases, all webserves come with logging enabled, so web server log review is a common task for web server admins as well as for security teams. But what do you look for in normal web access logs, apart from web site access statistics and visitor trends?
Obviously, observing various access failures is important. All the pesky 404s, 401s as well as 50X response codes.
Here are a couple of examples from Apache web server access_log logs:
18.104.22.168 - - [26/Sep/2004:21:10:22 -0400] “GET /MSADC/root.exe?/c+dir HTTP/1.0″ 404 286 “-” “-”
22.214.171.124 - - [10/May/2004:13:18:09 -0400] “GET /scripts/..%%35c../winnt/system32/cmd.exe?/c+dir HTTP/1.0″ 400 293 “-” “-”
Is this ominous or what? :) Nah, it is just my Linux + Apache honeynet responding to some good ole IIS 4.X attack. Truly nothing to worry about.
How about this one though?
126.96.36.199 - - [22/Apr/2004:11:56:49 -0400] “GET /cgi-bin/awstats.pl HTTP/1.0″ 200 2190 “-” “Mozilla/4.75 (Nikto/1.32 )”
Somebody using the web statistics CGI script? Benign, since the response code is 200 which means that the server served the page (or ran the script!) as expected? No, you are about to get 0wned thru an AWSTATS hole!
So, the gist of this tip is similar to the previous one: when monitoring web server logs, do not just focus on 404s, 401s, 50Xs and other “known bad” response codes; take a long hard look at the vanilla 200 response codes. “But how do I separate the “good” 200s from the “bad” 200s?” - you might ask! Well, that would be the subject of another tip in the future!