阅读背景:

限定某个目录、禁止解析php限制user_agent及 php相关配置

来源:互联网 
访问控制 – 禁止php解析目录概要 核心配置文件内容 <Directory /data/wwwroot/www.123.com/upload> php_admin_flag engine off </Directory> curl测试时直接返回了php源代码,并未解析 案例 假设有一个目录是可以上传图片,但是可能被有心之人上传php上去,因为httpd开放了php模块,所以如果被人上传了木马文件(php类型),httpd就有可能会进行执行,一旦执行,就会让对方获得我们服务器的root权限,或者是被恶意删除或修改一些参数,导致服务器瘫痪或者是被攻击 案例: 一台服务器,网站被入侵,但不知道是什么原因,不知道怎么入侵的,也不知道入侵到什么程度,只知道他们公司的数据库泄露了,数据是一些电话号码,黑客并没有去删除数据,因为他知道这个服务器的数据库里,电话号码每天都在增长,它就可以源源不断的获得新的电话号码,获得的电话号码可以卖给第三方; 分析: 把一个没有在这个服务器提交过的电话号码,在这个服务器的网站上提交一次,结果,马上就有人打电话过来,证明,黑客获得电话号码,到打电话给新的用户,这套体系,已经完全自动化了(每天都会去抓取一个新的电话号码来队列,然后马上卖给第三方,第三方马上打电话给这个用户),所以就猜测,网站的程序(php)存在漏洞,另一种可能就是sql注入的漏洞(可以把查询的sql通过一些特殊的提交,提交到服务器上,服务器就会把这个sql语句转换成正常的查询,最终获得一些数据回来);但是sql注入漏洞,很容易修复,只要在网站提交的入口,增加一些特殊符号的过滤,就能完全的阻断sql注入的漏洞。 解决方法: 首先抓包,监控数据的查询,因为电话号码是通过查询了数据来的,写一个死循环的脚本,每隔一分钟抓一次查询数据,抓完以后生成一个日志文件, 查看日志以后,发现有一条sql查询,和网站源生的查询不一样,通过日志定位到了时间点,然后就去web服务器上查看时间点的访问日志,通过日志查看到了一个非常特殊的请求,名字是以php结尾的文件,而且这个php文件是在图片的目录下进行访问的,然后去查看这个php 文件,发现这个文件内容,是获取服务器的权限,相当于在服务器开了一个后门;这个问题产生的根本原因,就是因为上传图片目录并没有禁止解析php sql注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。[1] 比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.. 访问控制 – 禁止php解析 打开虚拟主机主机配置文件 [root@hf-01 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 把代码放入到配置文件中 <Directory /data/wwwroot/111.com/upload> ##把upload目录下所有的php禁止解析 php_admin_flag engine off //禁止解析php <FilesMatch (.*)\.php(.*)> //现在这里所有访问php都会是403 ##这里的 .用\脱义 Order allow,deny //如果不做这个deny,就会直接访问到源代码,这样就不太友好 Deny from all </FilesMatch> 然后保存退出 检查配置文件是否存在语法错误,并重新配置文件 [root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl graceful [root@hf-01 111.com]# 创建upload目录,新建php文件 [root@hf-01 111.com]# mkdir upload [root@hf-01 111.com]# ls 123.php admin index.php QQ111.jpg upload [root@hf-01 111.com]# cp 123.php upload/ [root@hf-01 111.com]# curl访问 [root@hf-01 111.com]# curl -x127.0.0.1:80 '111.com/upload/123.php' -I HTTP/1.1 403 Forbidden Date: Tue, 26 Dec 2017 16:09:43 GMT Server: Apache/2.4.29 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1 [root@hf-01 111.com]# 这时在去虚拟主机配置文件中注释掉FilesMatch [root@hf-01 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com/upload> ##把upload目录下所有的php禁止解析 php_admin_flag engine off #<FilesMatch (.*)\.php(.*)> ##这里的 .用\脱义 #Order allow,deny #Deny from all #</FilesMatch> </Directory> 然后保存退出 检查配置文件是否存在语法错误,并重新配置文件 [root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl graceful [root@hf-01 111.com]# 这时候访问php,会发现无法解析php [root@hf-01 111.com]# !curl curl -x127.0.0.1:80 '111.com/upload/123.php' <?php echo "123.php"; [root@hf-01 111.com]# 在浏览器中访问https://111.com/upload/123.php,会提示直接下载,这是因为无法解析php 访问控制 – 禁止php解析目录概要 核心配置文件内容 <Directory /data/w



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: