I'm going through my "public_html" directory now and trying to restrict things which shouldn't be world-writeable/executable (but which are). Now I don't know what state the permissions are in drupal core, because I used Fantastico scripts to install. In fact, Fantastico (which isn't so fantastic) mucks everything up. It's very fast and loose with the +x and the +w. That's a separate issue which people should be aware of, but which can't be fixed here.
But I end up being able to get:
# querying this should give an "access denied" but doesn't
http: //<mysite>/sites/default/settings.php
# Many world readable/writeable - don't need to be
http://<mysite>/modules/*/LICENSE.txt|CHANGELOG|README.txt|etc
The most troubling thing about the settings.php is this: What if you're editing your site's config and you miss a bracket? Now your database passwords are out in the open for any hacker to see. I think it's ok to run them (and testing seems to confirm this): chmod u+rw settings.php (it gets included right, or do I need +x too?). This gives me an access denied 403 when I try to access it directly, which is what I was aiming for.
And almost all the modules I download out of contrib have world writeable .module files, .txt files which are a+x, *.mysql/pgsql files which are world readable, etc. So, now anybody in the world can query/probe your website for which modules you have installed and then use that knowledge to exploit any security holes which might exist in those modules. And, they can even figure out your database schemas while they're at it!