Nginx漏洞

目录

docker环境搭建

安装docker

nginx的两个常见的配置漏洞

CRLF换行符注入漏洞

扩展:

怎么解决换行符漏洞

目录穿越漏洞

问题:

原因:


首先有Nginx环境

docker环境搭建

安装docker

yum install docker.io

2.下载并解压docker环境Nginx配置漏洞安装包

cd到对应目录下,docker启容器

unzip vulhub-master.zip
cd /root/vulhub-master/nginx/insecure-configuration
docker-compose up -d

unzip vulhub-master.zip
cd /root/vulhub-master/nginx/insecure-configuration
docker-compose up -d

安装好后,用docker ps -a查看容器运行情况

nginx的两个常见的配置漏洞

CRLF换行符注入漏洞

怎么产生:

由于用户可以控制request_header头部,可以往里面插入数据,并且用户可以控制,导致用户可以通过换行符输入危险代码。

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

错误的配置文件示例(原本的目的是为了让http的请求跳转到https上):

 

 payload: http://your-ip:8080//%0d%0aSet-Cookie:%20a=1,可注入Set-Cookie头

  %0d%0a:换行符\r\n

连接查看到Set-Cookie被换到了下一行,导致莫名其妙给头部增加了一个数据。

换行符漏洞可以执行反射性的Xss,所以控制了HTTP的header头,我们就可以构造一些危险代码。但是这样的危害并不够,不能对系统进行影响。

换行符应当配合是ssrf的服务端请求伪造和被授权访问配合在一起才能发挥它的最大威力

扩展:

redis:未授权访问漏洞 Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关的策略,如配置防火墙规则避免其他非信任来源的IP访问,就会将Redis服务暴露在公网上;并且Redis默认情况是空密码连接,这导致任意用户可以访问目标服务器下未授权访问Redis以及读取Redis数据。 当nmap扫描发现靶机开启redis服务后,则可直接连接靶机,使用本地Redis客户端获取敏感数据。

redis-cli -h 靶机ip

怎么解决换行符漏洞

首先我们来看两个场景:

  1. 用户访问http://example.com/aabbcc,自动跳转到http://example.com/aabbcc

  2. 用户访问http://example.com/aabbcc,自动跳转到http://www.example.com/aabbcc

第二个场景主要是为了统一用户访问的域名,更加有益于SEO优化,

在跳转过程中,我们需要保证访问的页面不变,所以需要从Nginx获取用户请求的文件路径,查看Nginx文件档,可以发现三个表示url的变量:

  1. $url

  2. $document_url

  3. $request_url

注:1和2表示解码以后的请求路径,不带参数;3表示的是完整的URL(没有解码)。所以当我们遇到运维配置以下代码

解决办法:只需要将$url换成$request_url。

原因:换成$request_url后%0d和%0a解不了码,换行就不能生效

目录穿越漏洞

 这个常见于Nginx做反向代理的情况,动态的部分被proxy_pass传递给后端端口,而静态文件需要Nginx来处理,假设静态文件储存在/home/目录下,而该目录在URL中的名字为files,那么就需要用alias设置目录的别名。

location /files{
     alias /home/;
}

分析www.dadsadd.com/files,这个实际上是我们的一个静态文件的一个目录,但是真正的静态文件的目录是存储在我们的/home/目录下,所以我们就需要在Nginx下给files设置一个别名,设置home这个文件夹,所以这样以来我们访问的这个files,他就会找到别名home文件夹去,然后找到files,如果不设置别名就找不到。

问题:

如果我们这样访问,在配置我们以上的文件,就会实现我们的路径穿越,就可以下载它的文件,包括服务器上的一些敏感信息都可以下载。

为什么出现这样的问题:

 第一步

 第二步

由于现在我们需要在url里面匹配files,但真的静态文件是放在home目录下,所以现在通过location匹配到了url访问files的网址下,最终真正访问的文件是home这个文件夹,

也就相当于我们在www.dadsadd.com/files这里访问files就访问到了系统上的/home文件夹下,但是我们也可以写成www.dadsadd.com/files../所以我们可以根据这个路径穿越到根目录。

原因:

url上/files没有加后缀/,而alias设置的/home/是有后缀的,这个/就导致我们可以通过/files../从/home/目录穿越到他的上层目录。

分析:当我们写成/files../时他访问的并不是home,而是访问的home/..,这样的就会让我们本身进入了home目录下后又重新跳转到根路径下。

解决方法:将配置文件改为以下后就算输入/files../也不会匹配上/files/

 后缀/要么都加,要么都不加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庄山啸呼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值