一、防止数据库被非法下载
应当说,有一点网络安全的管理员,都会把从网上下载的网站程序的默认数据库路径进行更改。当然也有一部分管理员非常粗心,拿到程序直接在自己的服务器上进行安装,甚至连说明文件都不进行删除,更不要说更改数据库路径了。这样黑客就可以通过直接从源码站点下载网站源程序,然后在本地测试找到默认的数据库,再通过下载数据库读取里面的用户信息和资料(一般是经过MD5加密的)找到管理入口进行登陆获得webshell。还有一种情况是由于程序出错暴出了网站数据库的路径,那么怎么防止这种情况的发生呢?我们可以添加mdb的扩展映射。如下图所示:
打开IIS添加一个MDB的映射,让mdb解析成其他下载不了的文件:“IIS属性”—“主目录”—“配置”—“映射”—“应用程序扩展”里面添加.mdb文件应用解析,至于用于解析它的文件大家可以自己进行选择,只要访问数据库文件出现无法访问就可以了。
这样做的好处是:1只是要是mdb后缀格式的数据库文件就肯定下载不了;2对服务器上所有的mdb文件都起作用,对于虚拟主机管理员很有用处。
二、防止上传
针对以上的配置如果使用的是MSSQL的数据库,只要存在注入点,依然可以通过使用注入工具进行数据库的猜解。倘若上传文件根本没有身份验证的话,我们可以直接上传一个asp的木马就得到了服务器的webshell。
对付上传,我们可以总结为:可以上传的目录不给执行权限,可以执行的目录不给上传权限。Web程序是通过IIS用户运行的,我们只要给IIS用户一个特定的上传目录有写入权限,然后又把这个目录的脚本执行权限去掉,就可以防止入侵者通过上传获得webshell了。配置方法:首先在IIS的web目录中,打开权限选项卡、只给IIS用户读取和列出目录权限,然后进入上传文件保存和存放数据库的目录,给IIS用户加上写入权限,最后在这两个目录的“属性”—“执行权限”选项把“纯脚本”改为“无”即可。见下图
最后提醒一点,在你设置以上权限的时候,一定要注意到设置好父目录的继承。避免所做的设置白费。
三、MSSQL注入
对于MSSQL数据库的防御,我们说,首先要从数据库连接帐户开始。数据库不要用SA帐户。使用SA帐户连接数据库对服务器来说就是一场灾难。一般来说可以使用DB_OWNER权限帐户连接数据库,如果可以正常运行,使用public用户最安全的。设置成dbo权限连接数据库之后,入侵者基本就只能通过猜解用户名和密码或者是差异备份来获得webshell了,对于前者,我们可以通过加密和修改管理后台的默认登陆地址来防御。对于差异备份,我们知道它的条件是有备份的权限,并且要知道web的目录。寻找web目录我们说通常是通过遍历目录进行寻找或者直接读取注册表来实现。无路这两个方法的哪一种,都用到了xp_regread和xp_dirtree两个扩展存储过程,我们只需要删除这两个扩展存储就可以了,当然也可以把对应的dll文件也一起删除。
但是如果是由于程序出错自己暴出了web目录,就没有办法了。所以我们还要让帐户的权限更低,无法完成备份操作。具体操作如下:在这个帐户的属性—数据库访问选项里只需要对选中对应的数据库并赋予其DBO权限,对于其他数据库不要操作。接着还要到该数据库—属性—权限把该用户的备份和备份日志的权限去掉,这样入侵者就不能通过差异备份获得webshell了。
apache的配置文件httpd.conf中加入这行即可:
AddOutputFilter INCLUDES .shtml .html
iis下原理一说大家就知道了
默认情况下.shtm的解析用的是
C:\WINDOWS\system32\inetsrv\ssinc.dll这个dll文件。我们可以将html格式的修改成用这个dll解析即可,
也可以让html有asp的解析。
修改后如下:
没有特殊需要,不建议这样操作。
LoadModule include_module libexec/apache2/mod_include.so
2. AddType部分去掉这两段注释:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
3. Directory目录权限里面找到
Options Indexes FollowSymLinks
增加Includes修改为:
Options Indexes FollowSymLinks Includes
4. 重新启动Apache,测试:
<!–#include file=”head.html”–>
Holle Word!,这是中间的内容
<!–#include file=”foot.html”–>
以下是其它网友的补充:
什么是SSI?
SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有强大的功能,只要使用一条简单的SSI命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。
如何使你的Apache服务器支持SSI?
Apache默认是不支持SSI的,需要我们更改httpd.conf来进行配置。我这里以windows平台的Apache 2.0.x为例,打开conf目录下的httpd.conf文件,搜索“AddType text/html .shtml”,搜索结果:
# AddType text/html .shtml
# AddOutputFilter INCLUDES .shtml
把这两行前面的#去掉。
然后搜索“Options Indexes FollowSymLinks”
在搜索到的那一行后面添加“ Includes”
即将该行改变为 Options Indexes FollowSymLinks Includes
保存httpd.conf,重起apache即可。
到此我们就完成了对Apache SSI的设置。