近日发现我的WEB服务器遭到攻击,篡改了我的首页信息,杯具的是不是我先发现的,是我的同事发现了这一信息。
我打开首页后发现,篡改的首页信息是隐藏的。右击查看源码在最下面找到了一些莫名奇妙的友情连接,就去WEB服务器上查找可疑的文件,并查看WEB的access.log 没有发现问题(马虎)。 查看网站的主目录发现有可疑文件,分别在网站的主目录下和FCK下有一下0.jsp 1.jsp 00.php文件,并在FCK文件夹里发现有可疑的exe文件,分别有三个文件cmd.exe和FindPass.exe 看到这里心想完了,系统不保了,看了一下文件的上传日期就再次查看了一下access.log文件,发现有可疑的地方并执行了一个jsp的文件,马上复制这个地址在浏览器上打开发现 是一个“小马” 能执行成功。“小马”上传上去以后他们就可以接着上次“大马”和其他的他们用到的程序了,看来是我们WEB部署的程序上有上传的漏洞。被人家拿到了webshell。
环境:windows+apache+php+tomcat+jk
分析:
由于环境是支持jsp和php的所以在jsp的环境运行php是可以的,在php的环境下运行jsp也是可以运行的。上传目录的权限也有执行的权限。程序上也没有做真实的文件类型验证。
做修复工作:
服务上优化:
把运行jsp的目录禁止php的运行,把上传目录的脚本解析权限去掉。
apache的配置文件设置的太糙。
以前设置apache的配置文件是,除了.jpg .js .png .html等一些静态的文件又apache来处理,以外的所有有tomcat来处理。
现在要修改tomcat来处理的一些用到的扩展名,其它都由apache来处理。
这样才能拒绝扩展名的执行,因为apache和tomcat一起工作时 apache会将tomcat处理的文件名先给tomcat然后在看禁止权限规则。由于我们的网站都是动态的地址所以用不到jsp后缀名,所以.jsp的后缀名可以交给apache来处理,可以拒绝这个扩展名也可以不拒绝,就是不拒绝这个jsp扩展名的文件打开以后他也不会执行,他会显示这个jsp文件的内容。即使他改成jsp1 也是不能执行的。
然后再限制一下php
php就好限制了,网上有很多。把php_flag engine off 加到不想让php执行的目录权限里就可以了
最终的配置文件:
#vi uriworkermap.properties
###这里是交给我们的tomcat来处理的后缀名
JkMount /*.key tomcat
JkMount /*.aaa tomcat
……
httpd.conf 配置文件修改
#vi httpd.conf
###这个目录不允许运行php脚本,和禁止运行.jsp*、.php*的后缀名
<Directory "D:\opt\www\webroot">
php_flag engine off
<Files ~ "\.(php|jsp)">
Order allow,deny
Deny from all
</Files>
</Directory>
重启apache服务,测试吧!!!
以上配置都亲自测试过。哪里写的不好的、看不明白的请多多指点。
程序上优化:
程序上的优化就是来做真实的文件类型来判断是否能够上传。