|
- 11.28 限定某个目录禁止解析php
- 11.29 限制user_agent
- 11.30/11.31 php相关配置
- 扩展
- apache开启压缩 http://ask.apelearn.com/question/5528
- apache2.2到2.4配置文件变更 http://ask.apelearn.com/question/7292
- apache options参数 http://ask.apelearn.com/question/1051
- apache禁止trace或track防止xss http://ask.apelearn.com/question/1045
- apache 配置https 支持ssl http://ask.apelearn.com/question/1029
# 11.28 限定某个目录禁止解析php
- 如果有一个目录是可以上传图片,但是可能被有心之人上传php上去,因为httpd开放了php模块,所以如果被人上传了***文件(php类型),httpd就有可能会进行执行,一旦执行,就会让对方获得我们服务器的root权限,或者是被恶意删除或修改一些参数,导致服务器瘫痪或者是被***
- 案列:一台服务器,网站被***,但不知道是什么原因,不知道怎么***的,也不知道***到什么程度,只知道他们公司的数据库泄露了,数据是一些电话号码,***并没有去删除数据,因为他知道这个服务器的数据库里,电话号码每天都在增长,他就可以源源不断的获得新的电话号码,获得的电话号码可以卖给第三方;
- [ ] 解决方式:
- 把一个没有在这个服务器提交过的电话号码,在这个服务器的网站上提交一次,结果,马上就有人打电话过来,证明,***获得电话号码,到打电话给新的用户,这套体系,已经完全自动化了(每天都会去抓取一个新的电话号码来队列,然后马上卖给第三方,第三方马上打电话给这个用户),所以就猜测,网站的程序(php)存在漏洞,另一种可能就是sql注入的漏洞(可以把查询的sql通过一些特殊的提交,提交到服务器上,服务器就会把这个sql语句转换成正常的查询,最终获得一些数据回来);但是sql注入漏洞,很容易修复,只要在网站提交的入口,增加一些特殊符号的过滤,就能完全的阻断sql注入的漏洞。
首先抓包,监控数据的查询,因为电话号码是通过查询了数据来的,写一个死循环的脚本,每隔一分钟抓一次查询数据,抓完以后生成一个日志文件,
查看日志以后,发现有一条sql查询,和网站源生的查询不一样,通过日志定位到了时间点,然后就去web服务器上查看时间点的访问日志,通过日志查看到了一个非常特殊的请求,名字是以php结尾的文件,而且这个php文件是在图片的目录下进行访问的,然后去查看这个php 文件,发现这个文件内容,是获取服务器的权限,相当于在服务器开了一个后门;这个问题产生的根本原因,就是因为上传图片目录并没有禁止解析php
- 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。[1] 比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式***..
- 那么怎么配置设置禁止php 解析
- - 核心配置文件内容
php_admin_flag engine off
- curl测试时直接返回了php源代码,并未解析
- 首先编辑虚拟主机配置文件
```
#
#
Order deny,allow
Deny from all
Allow from 127.0.0.1
SetEnvIfNoCase Referer "http://111.com" local_ref
SetEnvIfNoCase Referer "http://aaa.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
Order Allow,Deny
Allow from env=local_ref
```
- 改为
```
#
#
php_admin_flag engine off
Order allow,deny
Deny from all
Order deny,allow
Deny from all
Allow from 127.0.0.1
SetEnvIfNoCase Referer "http://111.com" local_ref
SetEnvIfNoCase Referer "http://aaa.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
:wq
```
- 检查语法,重新加载配置
```
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@localhost ~]#
[root@localhost ~]# cd /data/wwwroot/111.com
[root@localhost 111.com]# ls
123.php admin index.php qq.png
[root@localhost 111.com]# mkdir upload
[root@localhost 111.com]# ls
123.php admin index.php qq.png upload
[root@localhost 111.com]# cp 123.php upload/
[root@localhost 111.com]# !curl
curl -x127.0.0.1:80 'http://111.com/admin.php?/alsjdf' -I
HTTP/1.1 404 Not Found
Date: Thu, 12 Oct 2017 12:41:28 GMT
Server: Apache/2.4.27 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1
```
- 再来访问下
```
[root@localhost 111.com]# curl -x127.0.0.1:80 'http://111.com/upload/123.php' -I
HTTP/1.1 403 Forbidden
Date: Thu, 12 Oct 2017 12:42:49 GMT
Server: Apache/2.4.27 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1
[root@localhost 111.com]# curl -x127.0.0.1:80 'http://111.com/upload/123.php'
403 Forbidden
Forbidden
You don't have permission to access /upload/123.php
on this server.
[root@localhost 111.com]#
```
- 先把filesmatch 注释掉
```
#
#
php_admin_flag engine off
#
#Order allow,deny
#Deny from all
#
Order deny,allow
Deny from all
Allow from 127.0.0.1
SetEnvIfNoCase Referer "http://111.com" local_ref
SetEnvIfNoCase Referer "http://aaa.com" local_ref
:wq
[root@localhost 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@localhost 111.com]# /usr/local/apache2.4/bin/apachectl graceful
[root@localhost 111.com]#
```
- 再来访问
```
[root@localhost 111.com]# !curl
curl -x127.0.0.1:80 'http://111.com/upload/123.php' |
|
|