您现在的位置:主页 > 青岛粘土陶粒 >
栏目导航
热门新闻

安全科普之Nginx中间件渗透总结

发布日期:2021-11-27 21:59   来源:未知   阅读:

  Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务器Nginx是由伊戈尔开发,因为它的稳定性、丰富的功能集、实例配置文件和低系统资源的消耗而闻名。

  Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行,其特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好

  中国大陆使用 nginx 的网站用户有:百度、京东、新浪、网易、腾讯、淘宝

  Nginx适用于高并发、可以做负载均衡服务器和HTTP服务器、具有代码特点、可以作为代理服务器

  首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(HTML、图片等)通过HTTP协议展现给客户端

  Nginx是一款轻量级的Webserver/反向代理server以及电子邮件代理server。并在一个BSD-like协议下发行,特点是占用内存小,并发能力强,Nginx相较于Apache/lighttpd具有占用内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名

  Nginx本身也是一个静态资源的服务器当只有静态资源的时候,就可以使用Nginx来做服务器,同时现在也很流行动静分离,可以通过Nginx来实现动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来动静资源做好了拆分以后,我们可以根据静态资源的特点将其作为缓存操作,这就是网站静态化处理的核心思路

  客户端本来可以直接通过HTTP协议访问某网站应用服务器,网站管理员可以在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回客户端,此时Nginx就是反向代理服务器

  用户A向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将推断向何处(原始server)转交请求,并将获得的内容返回给client。而用户A始终认为他访问的是原始server而不是nginx。因为防火墙作用,仅仅同意nginx进出,防火墙和反向代理的共同作用保护了院子内的资源—原始server

  如果服务器可以直接HTTP访问,为什么要在中间加一个反向代理,下面的负载均衡、虚拟主机等都基于反向代理实现,当然反向代理的功能也不仅仅是这些

  当网站访问量非常大,网站站长开心赚钱的同时,也摊上事了。因为网站越来越慢,一台服务器已经不够用了。于是将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用Nginx可以通过反向代理来实现负载均衡

  负载均衡的意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等等,从而共同完成工作任务,简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均衡一般都需要同时配置反向代理,通过反向代理跳转到负载均衡,而Nginx目前支持自带3种负载均衡策略,还有2种常用的第三方策略

  有的网站访问量大,需要负载均衡。然而不是所有的网站都如此出色,有的网站由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上

  例如将和两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互不影响,就像访问两个服务器一样,所以叫两个虚拟主机

  正向代理是一个位于用户A和原始server之间的代理server ,为了从原始server取得内容,用户A向代理server发送一个请求并指定目标(原始server)。然后代理server向原始server转交请求并将获得的内容返回给用户,用户必须进行一些特别的设置才能使用正向代理

  用途:在防火墙内的局域网用户提供访问Internet的途径。还能够使用缓冲特性降低网络使用率

  正向代理同意用户通过它访问任意站点而且隐藏用户自身,因此你必须采取安全措施以确保仅为经过授权的用户提供服务。

  对于任意文件名,在后面添加 /xxx.php(xxx为任意字符)后,即可将文件作为php解析

  该漏洞是Nginx配置所导致,与Nginx版本无关,下面是常见的漏洞配置:

  PHP根据URL映射,在服务器上寻找xxx.php文件,但是xxx.php不存在,又由于 cgi.fix_pathinfo 默认是开启的,因此PHP会继续检查路径中存在的文件,并将多余的部分当作 PATH_INFO 。接着PHP在文件系统中找到.jpg文件,而后以PHP的形式执行.jpg的内容,并将 /xxx.php 存储在 PATH_INFO 后丢弃,因此我们在phpinfo中的$_SERVER[‘PATH_INFO’] 看到的值为空(no value),如果继续添加后缀则蠢顺势显示后缀

  php的一个选项:cgi.fix_pathinfo,该选项默认开启,值为1,用于修理路径的

  如果需要使用到cgi.fix_pathinfo这个特性(例如:wordpress),那么可以禁止上传目录的执行脚本权限或将上传存储的内容与网站分离,即站库分离

  Nginx 的目录遍历与 Apache一样,属于配置方面的问题,错误的配置可导致目录遍历与源码泄露

  Nginx在遇到%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问 xxx.jpg%00.php 来执行其中的代码

  Nginx会将 $uri 进行编码,导致传入 %0a%0d 即可引入换行符,造成CRLF注入漏洞。

  错误的配置文件原本的目的是为了让http的请求跳转到https上的,意思就是配置实现了强制跳转的功能,当用户访问nginx服务器时,由于此配置的存在会被强制跳转到以https协议访问之前访问的链接

  配置中的 $url 是我们可以控制的,这样我们就可以在 $url 处填入CRLF ,然后对服务器进行访问实现头部注入

  劫持合法用户会话,利用管理员身份进行恶意操作,篡改页面内容、进一步渗透网站

  Nginx会将$uri进行解码,导致传入%0a%0d即科引入换行符,造成CRLF注入漏洞

  攻击者打开一个网站,然后服务器会回复他一个session id。比如SID=abcdefg。Attack把这个id记下了

  Attack给被攻击者发送一个电子邮件,他假装抽奖或者推销,诱导攻击者点击链接:,SID后面是Attack自己的session id

  被攻击者被吸引后,点击了,像往常一样,输入了自己的账号和口令从而登录到银行网站

  因为服务器的session id不改变,现在被攻击者点击后,他就拥有了被攻击者的身份,就可以为所欲为了

  复现时需要文件名的后面存在空格,而windows是不允许存在此类文件的,因此复现采用vulhub

  在nginx的range filter 中存在整数溢出漏洞,可以通过带有特殊构造的range的HTTP头的恶意请求引发这个整数溢出漏洞,并导致信息泄露。香港马尾资料开奖结果