Web中间件漏洞总结之Nginx漏洞
2019-11-24 10:39:25 Author: xz.aliyun.com(查看原文) 阅读量:438 收藏

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

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

对于低版本的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

执行效果

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

执行效果

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

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

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

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

修复方法:
autoindex on改为autoindex off

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

漏洞复现:

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

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

CRLF是“回车+换行”(\r\n)的简称,其十六进制编码分别为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

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

修复方法:
只需过滤掉\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


文章来源: http://xz.aliyun.com/t/6801
如有侵权请联系:admin#unsafe.sh