Nginx实例分析实例
10.24.10.203:808
Nginx文件类型错误解析漏洞
利用方式
Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。配置文件中会有类似如下内容。
演示:
服务器:10.24.10.203
Nginx 版本:0.8.33
测试URL:10.24.10.203:808/1.jpg/1.php
1.选择上传:上传一个jpg图片,图片内包含php代码。
2.通过返回的路径,获取图片地址:
3.利用解析漏洞,执行php代码:
修复方法
解决方案:
C:\php5\php.ini
cgi.fix_pathinfo值为1,就存在问题。
1.修改php.ini文件,将cgi.fix_pathinfo的值设置为0;
Nginx配置错误而导致目录遍历漏洞
利用方式
在Nginx的配置文件中如果开启了autoindex选项,并采用类似下面的配置时会造成目录遍历漏洞
当访问10.24.10.203:808/files/这个URL时,正常情况应该遍历html/test/这个目录,但是如果访问10.24.10.203:808/files../,这个URL时,则会遍历上一级目录(html/)了。
修复方法
见下图,保持location和alias中内容一致。
Nginx安全加固
针对Nginx的安全加固,主要从以下两个方面考虑:一、Nginx Web Server程序本身是否安全,如是否存在安全漏洞;二、Nginx Web Server是否提供了可使用的安全功能,这部分主要是检查Nginx的配置是否得当,是否存在由于配置失误导致的安全问题。
在选择Nginx版本时,需要关注是否存在安全漏洞和版本的稳定性。一般选择最新的稳定版本,这样可以在稳定性和安全之间取得一个平衡。在升级Nginx版本前建议先在测试环境中测试通过后再正式升级,以避免由于兼容性带来其他不可预知的问题。
Nginx安全配置
1. 修改/隐藏Nginx Banner信息
攻击者在对目标服务器进行渗透攻击前,通常会有一个目标信息收集阶段,这个阶段的任务就是通过各种手段获取到目标服务器的信息,如获取目标服务器的系统版本、Web、数据库的类型及相关信息,这个阶段获取到的信息将直接关系到攻击者下一步采取的攻击手段。因此,修改/隐藏Nginx的相关信息将在一定程度上可以增大攻击者的攻击难度,也可以骗过一些自动化攻击工具。
1. 修改E:\nginx-0.8.33\nginx-0.8.33\f
在http {}里加上server_tokens off;
2.修改E:\nginx-0.8.33\nginx-0.8.33\f
到:  fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
改为: fastcgi_param SERVER_SOFTWARE nginx;
3.重启nginx
2. Nginx日志安全
不论在那种服务器上,日志都是一个非常重要的部分,我们需要对它严加保护。在Nginx 上也是如此。Nginx的日志默认存放在安装目录的logs目录下,首先要修改日志的默认保存路径,然后设置只允许管理员有日志存放目录的完全控制权限。
默认日志路径:E:\nginx-0.8.33\nginx-0.8.33\logs
通过修改f 配置文件,更改日志目录,
3. Nginx权限设置
Nginx权限设置分为Nginx运行权限设置和网站目录权限设置两部分。
Nginx运行权限:
指Nginx以什么权限运行,以管理员权限运行是一个非常糟糕的决定。这样的后果是攻击者一旦攻击成功,将直接获取到一个高权限的WebShell。因此,我们需要设置Nginx以一个低权限的身份运行。
linux下通过修改“f”这个配置文件来实现,如设置:user  nobody;
Windows下,可以使用一个低权限的,不属于任何组的用户,启动nginx,方法见Apache 降权。
网站目录权限设置则要遵循以下原则:
a) 如果目录有写入权限,一定不要分配执行权限
b) 如果目录有执行权限,一定不要分配写入权限
c) 网站上传目录和数据库目录一般需要分配“写入”权限,但一定不要分配执行权限
nginx 配置文件d) 其他目录一般只分配“读取”权限即可

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。