chaihongjun.me

伪装nginx变成任意webserver

   修改web server的版本号甚至是名称,在一定程度上都可以起到伪装保护web服务器的作用,web server有很多种,比如常见的apache,nginx,IIS,以及国内外互联网大厂自己的GWS,BWS等等。这里介绍针对nginx的伪装成GWS的方法,总体方法是先修改nginx的源码包内的相关文件,然后再重新编译一次,最后我们验证一下结果即可。

1.修改源码包src/core/nginx.h 这个文件:

/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_


#define nginx_version      1010003
#define NGINX_VERSION      "1.10.3"
#define NGINX_VER          "nginx/" NGINX_VERSION

#ifdef NGX_BUILD
#define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD    NGINX_VER
#endif

#define NGINX_VAR          "NGINX"
#define NGX_OLDPID_EXT     ".oldbin"


#endif /* _NGINX_H_INCLUDED_ */

我们可以看到

#define nginx_version 
#define NGINX_VERSION  
#define NGINX_VER

以上三行,前两个对应不同格式的版本号,以及最后一个定义软件名称,这里我不需要改变版本号,防止以后升级的时候忘记当前的版本号,只想改变对外显示的软件名称:

/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_


#define nginx_version      1010003
#define NGINX_VERSION      "1.10.3"
#define NGINX_VER        "GWS" NGINX_VERSION

#ifdef NGX_BUILD
#define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD    NGINX_VER
#endif

#define NGINX_VAR          "NGINX"
#define NGX_OLDPID_EXT     ".oldbin"


#endif /* _NGINX_H_INCLUDED_ */

因此只修改define NGINX_VER

2.再修改源码包src/http/ngx_http_header_filter_module.c

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

改成

static char ngx_http_server_string[] = "Server: GWS" CRLF;

3.重新编译nginx

4.验证:

伪装nginx变成任意webserver

可以看到服务器已经变成了GWS

##########################2017-09-23 更新

遗漏的一点,如果没有使用自定义的404,503等页面,当服务器返回404,503等页面的时候还是会出现"nginx"的字样,所以需要将nginx源码包内src/http目录下面的http/ngx_http_special_response.c文件做修改,将:

static u_char ngx_http_error_tail[] =
"<hr><center>nginx</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;

改成

static u_char ngx_http_error_tail[] =
"<hr><center>gws</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;

当然,这些改动是在编译之前完成。

知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。作者:柴宏俊»