还剩3页未读,继续阅读
文本内容:
Nginx破绽利用与平安加固电脑资料本文主要分为两大局部,第一局部介绍了Nginx的一些常见平安破绽的形成原因、利用方法,并给出了相应的解决方法;第二局部介绍了Nginx平安加固时需要关注的主要内容,Nginx(发音同enginex)是一款轻量级的Web效劳器/反向代理效劳器及电子邮件(IMAP/POP3)代理效劳器,由俄罗斯的程序设计师IgorSysoev所开发,可以稳定地运行在Linux、Windows等操作系统上,其特点是占用内存少,并发才能强同其他软件一样,Nginx也出现过一些平安破绽,利用这些破绽可以对Web效劳器进展浸透攻击下面我们通过实例来介绍几个关于Nginx的平安破绽,以及相应的破绽利用方法Nginx破绽分析实例Nginx文件类型错误解析破绽在xx年的时候,国内平安组织80Sec发现了一个Nginx文件类型解析破绽,但实际上这个并非Nginx本身的破绽,而是由于配置导致的平安问题下面我们详细分析一下这个破绽破绽分析Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正那么匹配设置SCRIPTFILENAME配置文件中会有类似如下内容,如图1所示图1location对恳求进展选择的时候会使用URI环境变量进展选择,其中传递到后端Fastcgi的关键变量SCRIPTFILENAME是由Nginx生成的$fastcgiscriptname来决定的而通过分析可以看到$fastcgiscriptname是直接由URI环境变量控制的,这里就是产生问题的点当访问
192.
168.
1.103/phpinfo.jpg/
1.php这个URL时,$fastcgiscriptname会被设置为“phpinfo.jpg/
1.php”,然后构造成SCRIPTFILENAME传递给PHPCGI,但是PHP为什么会承受这样的参数,并将phpinfo.jpg作为PHP文件解析呢?这就要说到fixpathinfo这个选项了,如图2所示图2假如开启了这个选项,那么就会触发在PHP中的如下逻辑,如图3所示图3到这里,PHP会认为SCRIPTFILENAME是phpinfo.jpg,而
1.php是PATHINFO,所以就会将phpinfo.jpg作为PHP文件来解析了破绽危害利用该破绽,攻击者可以将任意文件类型作为PHP文件解析,攻击者通常利用该破绽来获取到一个WebShell破绽利用假设某一效劳器存在该破绽,攻击者可以通过上传一张包含PHP后门代码的图片来获取WebShell,这是一种常见的攻击方式,如图4所示图4解决方案这里介绍两种解决方案
一、修改php.ini文件,将cgi.fixpathinfo的值设置为0;
二、在Nginx配置文件中添加以下代码if$fastcgiscriptname~\..*\/.*php{return403;}这行代码的意思是当匹配到类似test.jpg/a.php的URL时,将返回403错误代码,如图5所示图5Nginx配置错误而导致目录遍历破绽在Nginx的配置文件中假如开启了autoindex选项,并采用类似下面的配置时会造成目录遍历破绽,如图6所示图6当访问
192.
168.
1.103/test/这个URL时,正常情况应该遍历html/test/这个目录,但是假如访问
192.
168.
1.103/test../这个URL时,那么会遍历上一级目录(html/)了下面我们通过一个实例来演示下这个破绽,先来看下正常访问时返回的页面,如图7所示图7如今我们再来看下破绽被触发后返回的页面,如图8所示通过图8所示的返回结果,我们可以看到利用该破绽我们成功遍历到了其上一级目录,下面提供两种方法来解决这个问题,从中选择一种即可,详细配置如下列图9所示图9如今我们再来验证下当采用上面的代码加固Nginx以后,效劳器是否还存在破绽图10从图10的返回结果可以看到破绽没有被触发,而是返回了404页面,说明破绽被修复Nginx平安加固针对Nginx的平安加固,主要从以下两个方面考虑
一、NginxWebServer程序本身是否平安,如是否存在平安破绽;
二、NginxWebServer是否提供了可使用的平安功能,这局部主要是检查Nginx的配置是否得当,是否存在由于配置失误导致的平安问题Nginx版本的选择与安装考前须知在选择Nginx版本时,需要关注是否存在平安破绽和版本的稳定性一般选择最新的稳定版本,这样可以在稳定性和平安之间获得一个平衡在晋级Nginx版本前建议先在测试环境中测试通过后再正式晋级,以防止由于兼容性带来其他不可预知的问题关于Nginx的平安破绽可以关注Nginx官方的平安公告(nginx/en/securityadvisories.html)或到其他一些破绽平台上查找在安装Nginx时建议使用自定义安装途径,假如采用默认安装途径,很容易被攻击者和一些自动化攻击工具猜想到,为其进展下一步的攻击提供便利Nginx平安配置
1.修改/隐藏NginxBanner信息在Linux平台下以源码方式安装Nginx时,可以通过修改“src/core/nginx.h”中的信息来到达隐藏或自定义Banner信息的目的我们先来看下nginx.h这个文件中默认的内容,类似图11所示这时当我们访问Nginx效劳器时,Server字段会返回真实的Banner信息,如图12所示图12如今我们定义nginx.h中关于Banner信息的内容,可参考图13图13修改完成后,重新编译Nginx,然后安装即可安装完成后,我们再来访问下该Nginx效劳器,发现这时Server返回的内容为自定义的Banner信息了,如图14所示图
142.Nginx日志平安不管在那种效劳器上,日志都是一个非常重要的局部,我们需要对它严加保护在Nginx上也是如此Nginx的日志默认存放在安装目录的logs目录下,首先要修改日志的默认保存途径,然后设置只允许员有日志存放目录的完全控制权限
3.Nginx权限设置Nginx权限设置分为Nginx运行权限设置和网站目录权限设置两局部Nginx运行权限是指Nginx以什么权限运行,以管理员权限运行是一个非常糟糕的决定这样的后果是攻击者一旦攻击成功,将直接获取到一个高权限的WebShell因此,我们需要设置Nginx以一个低权限的身份运行,可通过修改“Nginx.conf”这个配置文件来实现网站目录权限设置那么要遵循以下原那么a假如目录有写入权限,一定不要分配执行权限b假如目录有执行权限,一定不要分配写入权限c网站上传目录和数据库目录一般需要分配“写入”权限,但一定不要分配执行权限d其他目录一般只分配“读取”权限即可模板内容仅供参考 。