0x01.错误详情页隐藏
错误详情页测试方法:
- 访问网站不存在的页面,如果网站没有做404页面重定向,就会泄露其敏感信息如下图:
- 查看响应头信息:
zzq@ubuntu:~$ curl -I http://192.168.178.135/
HTTP/1.1 200 OK
Date: Tue, 01 May 2018 11:58:36 GMT
Server: Apache/2.4.7 (Ubuntu) #中间件版本及操作系统
X-Powered-By: PHP/5.5.9-1ubuntu4.24 #显示服务端脚本语言及其版本号
Link: <http://192.168.178.135/index.php/wp-json/>; rel="https://api.w.org/"
Link: <http://192.168.178.135/>; rel=shortlink
Content-Type: text/html; charset=UTF-8
修复方法:
1).修改配置文件:etc/apache2/apache2.conf
或者/etc/httpd/conf/httpd.conf
隐藏中间件信息。修改或添加以下配置:
ServerTokens Prod
ServerSignature Off
2).修改配置文件:/etc/php5/apache2/php.ini
隐藏PHP信息,将expose_php = On 改为 expose_php = Off
expose_php = Off
3).修改配置文件: /etc/apache2/sites-enabled/000-default.conf
设置网站根目录为 /var/www/html/
zzq@ubuntu:~$ sudo vim /etc/apache2/sites-enabled/000-default.conf
4).修改配置文件:/etc/apache2/apache2.conf
将网站根目录里面的AllowOverride None
设置AllowOverride All
,保存退出!
zzq@ubuntu:~$ sudo vim /etc/apache2/apache2.conf
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All #设置为All,此目录下的.htaccess 指令才会生效
Require all granted
</Directory>
5).修改完以上配置文件保存并退出,然后重启apache服务
zzq@ubuntu:~$ sudo service apache2 restart
6).再次访问错误页面,已经没有刚才泄露的信息了
zzq@ubuntu:~$ sudo curl -I http://192.168.178.135/
HTTP/1.1 200 OK
Date: Tue, 01 May 2018 12:26:10 GMT
Server: Apache
Last-Modified: Tue, 17 Apr 2018 02:49:12 GMT
ETag: "2cf6-56a02621ccf1c"
Accept-Ranges: bytes
Content-Length: 11510
Vary: Accept-Encoding
Content-Type: text/html
0x02.重定向404页面
加固步骤:
1).在网站根目录新建一个.htaccess文件,内容为:
zzq@ubuntu:/var/www/html$ cd /var/www/html/
zzq@ubuntu:/var/www/html$ ls -a
. .. index.html wordpress
zzq@ubuntu:/var/www/html$ sudo vim .htaccess
ErrorDocument 404 /404.html
zzq@ubuntu:/var/www/html$ ls -a
. .. .htaccess index.html wordpress
zzq@ubuntu:/var/www/html$
2).在同目录下新建404.html,文件名与上一步指定的文件名相同,即404.html
zzq@ubuntu:/var/www/html$ sudo vim 404.html
<!DOCTYPE html>
<html>
<head>
<title>404页面</title>
</head>
<body>
Hello,This is 404 page!!
</body>
</html>
3).测试一下,可以看到我们自定义的页面已经生效
注意事项
1、不要将404错误直接转向到网站首页,这将导致首页不被收录;
2、/404.html 前面不要带主域名,否则返回的状态码是302或200状态码;
3、自定义的404页面必须是大于512B,如果小于这个大小,浏览器就不会执行;
0x03.列目录问题
什么是列目录
当Web服务器配置不当的时候,如果当前目录不存在默认文件(比如index.html),Apache会列出当前目录下所有文件,造成敏感信息泄露。
我们可以测试一下,测试方法:
首先我们可以删除存在的默认文件index.html
zzq@ubuntu:/var/www/html$ ls
404.html index.html wordpress
zzq@ubuntu:/var/www/html$ sudo cp index.html index.html.bak
zzq@ubuntu:/var/www/html$ sudo rm -rf index.html
zzq@ubuntu:/var/www/html$ ls
404.html index.html.bak wordpress
zzq@ubuntu:/var/www/html$
然后再访问网站
修复方法:
修改配置文件:/etc/apache2/apache2.conf
zzq@ubuntu:~$ sudo vim /etc/apache2/apache2.conf
<Directory /var/www/html> #这必须是网站的根目录
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Options Indexes FollowSymLinks
这里的indexes 是指在目录中要存在index文件,如果不存在把文件列出来,如果存在index文件可以直接显示index文件,因此每个目录都必须存在index文件,如果不存在有可能此目录把文件全部列出来。
删除Indexes这个参数,保存退出,然后重启apache服务
<Directory /var/www/html>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
zzq@ubuntu:~$ sudo service apache2 restart
再次访问就会出现403Forbidden页面如下图所示:
0x04.删除默认安装页面
测试方法
默认安装完成之后,会有一个默认的apache测试页面,里面会泄露一些信息,包括网站目录,操作系统,版本等等
加固方法
step1.编辑配置文件/etc/httpd/conf.d/welcome.conf
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
step2.找到如下行
step3.修改为如下,并保存退出
step4.重启apache服务
[root@localhost ~]# service httpd restart
修复验证
step1.在网站根目录下创建一个index.php文件
step2.再次访问
0x05.文件权限
在图片上传过程中,特对是针对上传图片得目录和上传得文件内容必须经过严格控制,因为可能由
于权限过高导致上传被突破后,直接放入小马,这个站点就被拿下了,所以对上传目录进行权限控
制。
漏洞测试
加固方法:
step1.编辑http.conf文件
[root@localhost upload]# vim /etc/httpd/conf/httpd.conf
step2.限定目录没有执行的PHP脚本执行的权限
step3.编辑重启服务
[root@localhost upload]# service httpd restart
step4.再次测试漏洞是否存在
可以看到/upload/目录下的php小马已经不能用了