Nginx 配置错误导致的漏洞
(哈哈,我来了,我来了,我抱着nginx漏洞来了 )
开始正文前的题外话
一开始写jquery漏洞的时候纯粹是抱着当做漏洞笔记来写的,写着写着发现身为一个我网安工作者,有义务为各位大佬、帅哥美女们科普一下真实的网安工作(很枯燥,估计没人感兴趣)。当然了,还是以漏洞笔记为主,如果各位想了解网络安全工作是多么能摸鱼有意思的话,请各位评论一下,想看我就写,不过更新时间不确定(绝不是因为懒)。
Nginx配置错误
Nginx利用配置文件nginx.conf来进行相关配置,因为是认为进行修改配置,所以很难保证不会出现错误的配置(尤其是刚接触nginx的),一旦出现了错误配置的情况,那么漏洞也就随之出现。
目前因为Nginx配置错误造成的漏洞一共有三种:
- CRLF注入漏洞
- 目录穿越遍历漏洞
- add_header被覆盖
根据一口吃不成个胖子的原则,我一个漏洞一个漏洞来(再说一次,绝不是因为懒)。
因为最近在做测试的时候发现nginx的指纹比较多,而为了拿到更多的有用信息,目录穿越遍历漏洞是我首选的,所以就先说目录穿越。
目录穿越遍历漏洞
漏洞成因
目录穿越漏洞常见于Nginx做反向代理的情况,动态的部分被proxy_pass传递给后端端口,而静态文件需要Nginx来处理。
看不懂是吧,我也看不懂(没做过反向代理),然后了解了一下nginx反向代理的配置后,我觉得我行了,下面解释一下上面那句话。
现在假设我们需要用到nginx来进行反向代理,动态的部分就不说了,通过端口代理转到后端,静态的部分怎么办呢,就需要设置别名让nginx处理这一部分,假设现在要做反向代理,静态文件都存储在/home目录下,而像要url中显示名字为files,那就需要加别名了(alias)。
怎么做呢,很简单,编辑nginx.conf,也就是nginx的配置文件,具体怎么做反向代理我就不说了,主要说一下如果错误配置会产生漏洞的地方。好了,上图
乍一看没什么毛病对吧,我第一次见也是这种感觉,但现在的我不一样了,我查过资料了,问题就在/上,在将/home/的别名设置为/files后,nginx运行正常,反向代理也正常,那为什么还会出现漏洞呢,问题就在/home/上,当访问/files时,nginx会解析为/files../,但是/files是别名啊,真正要访问的是/home/,所以最终访问的会变成/home/../,这样就实现了目录穿越遍历。(所以一半以上的漏洞都来自人为的错误配置)
漏洞复现
这里我就不拿实际网站测试了(主要是怕被关小黑屋,绝不是因为我懒),用vulhub搭建环境来演示。
温馨提示:在没有获得授权的情况下不要对任何网站进行渗透测试哈,犯法,会吃上国家饭的。
我是直接docker拉取镜像搭建的(具体过程出门左转找度娘)
开放了三个端口:8080、8081和8082
剩下的就简单了,三个端口挨个访问/files../测试即可。好了,上图
相当于底裤都被看光了,把源码啥的更是不用多说了。
漏洞修复建议(摘自https://blog.csdn.net/weixin_51198941/article/details/133378670)
只需要保证 location 和 alias 的值都有后缀 / 或都没有 / 这个后缀即可。
剩下两个下次再说,今天又是觉得自己可以了的一天,愿多点目录遍历漏洞。
此致,敬礼∠(°ゝ°)
更新2024.07.18
额,主要是因为我少说了一个漏洞成因,疏忽了,补充一下。
还是这张图
在nginx.conf配置文件里autoindex参数为on时,会造成目录遍历,这个参数只要是处在on的状态就会造成目录遍历,而别名参数alias只是会造成目录穿越漏洞。
修复也很简单,autoindex参数改为off即可。
其实nginx有一大部分漏洞成因都是因为不当配置造成的,因为nginx配置文件中能作为修改项进行修改的参数有很多,甚至可以说除了描述和固定参数外,其他的都可以进行修改,这也是其他组件出现漏洞的成因之一,之所以那nginx来写主要是太典型了,当时这个漏洞出来后几乎用到nginx的都存在这个问题,而且不受版本影响(现在版本是否还存在这个问题我没有验证,后面会验证一下)。
希望我写的漏洞相关文章对大家有帮助吧,就这样,摸鱼看去年的blackhat大会视频了。
此致,敬礼∠(°ゝ°)
阅
阅
大佬牛逼~
666
看不懂看不懂
阅
看不懂 但 已阅
看不懂 但 已阅
看不懂 但 已阅
已读
看不懂 但 已阅