Web中间件漏洞总结之Nginx漏洞

admin 2023年12月30日18:36:26评论31 views字数 2199阅读7分19秒阅读模式

解析漏洞

漏洞简介:
对于任意文件名,在后面加上/任意文件名.php后该文件就会以php格式进行解析,是用户配置不当造成的
漏洞复现:
在网站根目录新建test.jpg,里面写入phpinfo(),打开试一下

Web中间件漏洞总结之Nginx漏洞

试一试Nginx的解析漏洞,在后面加上/x.php

Web中间件漏洞总结之Nginx漏洞

对于低版本的php能够直接解析成功,高版本php因为引入了security.limit_extensions,限制了可执行文件的后缀,默认只允许执行.php文件,这里来看看两个与Nginx解析漏洞相关的核心配置
核心配置:cgi.fix_pathinfo
该选项位于配置文件php.ini中,默认值为1,表示开启。当php遇到文件路径/aaa.xxx/bbb.yyy/ccc.zzz时,若/aaa.xxx/bbb.yyy/ccc.zzz不存在,则会去掉最后的/ccc.zzz,然后判断/aaa.xxx/bbb.yyy是否存在,若存在,则把/aaa.xxx/bbb.yyy当做文件/aaa.xxx/bbb.yyy/ccc.zzz解析,若/aaa.xxx/bbb.yyy仍不存在,则继续去掉/bbb.yyy,以此类推。若是关闭该选项,访问 http://192.168.43.13/test/test.jpg/x.php 只会返回找不到文件。但关闭该选项很可能会导致一些其他错误,所以一般是开启的
核心配置:security.limit_extensions
在我的配置文件中,它位于/etc/php-fpm.d/www.conf
这个选项开始是被注释了的也就是默认只允许执行php文件,将;去掉,可以在后面添加其它后缀,比如添加.jpg这样.jpg文件也能够以php来执行,修改了后需要service php-fpm restart重启php

Web中间件漏洞总结之Nginx漏洞

执行效果

Web中间件漏洞总结之Nginx漏洞

或者将.php删除,也就是security.limit_extensions后面留空,这样就是允许任意格式的文件执行

Web中间件漏洞总结之Nginx漏洞

执行效果

Web中间件漏洞总结之Nginx漏洞

修复方法:
1.将php.ini文件中的cgi.fix_pathinfo的值设为0
2.将security.limit_ectensions后面的值设为.php

目录遍历

漏洞简介:
和Apache目录遍历一样属于配置错误,可导致源码泄露与目录遍历
漏洞复现:
访问test目录

Web中间件漏洞总结之Nginx漏洞

核心配置:
修改/usr/local/nginx/conf/nginx.conf,在如下图位置添加autoindex on,默认是没有这一行的

Web中间件漏洞总结之Nginx漏洞

然后访问test目录,成功实现目录遍历

Web中间件漏洞总结之Nginx漏洞

修复方法:
autoindex on改为autoindex off

目录穿越

漏洞简介:
Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞
配置不当:
在如下配置中设置目录别名时/test配置为/home/的别名,那么当我们访问/test../时,nginx实际处理的路径时/home/../,从而实现了穿越目录

Web中间件漏洞总结之Nginx漏洞

漏洞复现:

Web中间件漏洞总结之Nginx漏洞

修复方法:
Nginx配置文件中的/test改为/test/(闭合)

CRLF注入

漏洞简介:
我对这个漏洞也不是特别了解,所以我还是看看基本定义和利用吧

CRLF是“回车+换行”(rn)的简称,其十六进制编码分别为0x0d0x0a。在HTTP协议中,HTTP headerHTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP内容并显示出来。所以,一旦我们能够控制HTTP消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码。CRLF漏洞常出现在LocationSet-cookie消息头中。
漏洞复现:
(1)通过CRLF注入构造会话固定漏洞
固定会话漏洞:
如果注册前有一个session id为某个值,注册后发现自己的session id还是为这个值就极有可能存在固定会话漏洞
下面举一个固定会话漏洞利用的例子:
假如有一个网站,你注册了一个账号,注册之前抓包PHPSESSID = ghtwf01,注册成功后发现PHPSESSID依然为ghtwf01,此时是普通用户权限
这个时候就可以社工管理员点击某个链接,比如http://xxx/?PHPSESSID=ghtwf01,这个时候你的账户权限就会变为管理员权限(类似于CSRF)
CRLF注入怎么构造会话固定漏洞呢?
构造链接:http://10.23.88.137%0aSet-Cookie:sessionid=ghtwf01

Web中间件漏洞总结之Nginx漏洞

给管理员点击即可
(2)通过CRLF注入消息头引发反射型XSS漏洞
构造链接:http://10.23.88.137%0d%0a%0d%0a<script>alert(/xss/);</script>

Web中间件漏洞总结之Nginx漏洞


修复方法:
只需过滤掉r 、n之类的换行符就可

参考链接

https://blog.csdn.net/qq_32434307/article/details/79480036
https://article.itxueyuan.com/1DoQ31
https://blog.csdn.net/liuhuaijin/article/details/77449579
https://www.cnblogs.com/0x4D75/p/9790281.html

来源:https://xz.aliyun.com/ 感谢【ghtwf01 

原文始发于微信公众号(船山信安):Web中间件漏洞总结之Nginx漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月30日18:36:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Web中间件漏洞总结之Nginx漏洞http://cn-sec.com/archives/2350406.html

发表评论

匿名网友 填写信息