隐藏响应头中Apache、nginx或PHP的版本信息

╰半夏微凉° 2022-07-12 03:09 456阅读 0赞

默认地,服务器HTTP响应头会包含apache,nginx和php版本号。像下面的,这是有危害的,因为这会让黑客通过知道详细的版本号而发起已知该版本的漏洞攻击。

图示

Apache

为了阻止这个,需要在httpd.conf设置ServerTokens为Prod,这会在响应头中显示“Server:Apache”而不包含任何的版本信息。

下面是ServerTokens的一些可能的赋值:

ServerTokens Prod 显示“Server: Apache”
ServerTokens Major 显示 “Server: Apache/2″
ServerTokens Minor 显示“Server: Apache/2.2″
ServerTokens Min 显示“Server: Apache/2.2.17″
ServerTokens OS 显示 “Server: Apache/2.2.17 (Unix)”
ServerTokens Full 显示 “Server: Apache/2.2.17 (Unix) PHP/5.3.5″

PHP

需要将php.ini中的expose_php = On,改为Off,头信息中将隐藏X-Powered-By:PHP/7.1.0

nginx

1.隐藏版本号:

vi nginx.conf

在http 加上 server_tokens off;

如下:

  1. http {
  2. ……省略配置
  3. server_tokens off; ->即可隐藏版本号
  4. …….省略配置
  5. }

重启nginx后,我们返回的Server头格式为Server:nginx ,而且nginx自己的404页面也没有版本号的信息

2.返回自定义的server
混淆Server信息

我是不太愿意告诉别人我是使用什么Server的,但没有找到相关文献去隐藏它,所以我们可以混淆她,如把Server返回GFW之类的,吓唬吓唬那些脚本小子

大部分情况下,脚本的小子的扫描工具是扫描我们response返回的header中的server信息.我们可以采用编译源码的方法来改变返回的Server,笔者的版本是nginx1.7.0,我们修改src/http/ngx_http_header_filter_module.c 中的48行

  1. static char ngx_http_server_string[] = "Server: nginx" CRLF;

把其中的nginx改为我们自己想要的文字即可,笔者就改为了YSY. 笔者输出的Server:YSY.(这个前提是你进行了第一个步句的操作,关闭了版本号)

如果你的版本号是开着的,你又想调戏下脚本小子.比如Server:billgate/1.9.0

我们修改src/core/nginx.h 定位到13-14行

  1. #define NGINX_VERSION "1.7.0"
  2. #define NGINX_VER "nginx/" NGINX_VERSION

Server返回的就是常量NGINX_VER, 我们把NGINX_VERSION大小定义为1.9.0,nginx改为billgate就能达到我们的目的了

发表评论

表情:
评论列表 (有 0 条评论,456人围观)

还没有评论,来说两句吧...

相关阅读

    相关 隐藏apache版本信息

    当开启Apache服务的时候,他人可能通过F12找到你的Apache版本号,从而利用一些已知的漏洞或者零day漏洞来进行攻击。所以为了减少一点——仅仅是一点的风险,我们可以隐藏

    相关 retrofit2 获取响应信息

    前言 最近几天晚上时候,一直在修改自己前一段时间写的下载工具。想着把它变成开源库造福大家。原本,以为是很简单的事。结果在下载文件格式哪里,博主陡然发现! 以前自己用的时