nginx 漏洞复现

Track-mss   ·   发表于 2021-08-25 11:38:27   ·   CTF&WP专版

0x01 nginx配置安全漏洞

1、 CRLF注入漏洞

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

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

  1. location / {
  2. return 302 https://$host$uri;
  3. }

Payload: http://url/%0a%0dSet-Cookie:%20a=1,可注入Set-Cookie头。

利用Payload: http://url/%0D%0ASet-Cookie:%20a=1%0d%0a%0d%0a<img src=1 οnerrοr=alert(/xss/)> ,可构造一个xss漏洞:

2、 目录穿越漏洞

Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。

错误的配置文件示例(原本的目的是为了让用户访问到/home/目录下的文件):

  1. location /files {
  2. alias /home/;
  3. }

Payload: http://URL/files../ ,成功穿越到根目录:

3、 add_header被覆盖

Nginx配置文件子块(server、location、if)中的add_header,将会覆盖父块中的add_header添加的HTTP头,造成一些安全隐患。

如下列代码,整站(父块中)添加了CSP头:

  1. add_header Content-Security-Policy "default-src 'self'";
  2. add_header X-Frame-Options DENY;
  3. location = /test1 {
  4. rewrite ^(.*)$ /xss.html break;
  5. }
  6. location = /test2 {
  7. add_header X-Content-Type-Options nosniff;
  8. rewrite ^(.*)$ /xss.html break;
  9. }

但/test2的location中又添加了X-Content-Type-Options头,导致父块中的add_header全部失效:

XSS可被触发:

0x02 nginx 解析漏洞

访问http://URL/uploadfiles/nginx.pnghttp://URL/uploadfiles/nginx.png/.php即可查看效果


增加/.php后缀,被解析成PHP文件:

也可配合文件上传来getshell。此处不再演示。

打赏我,让我更有动力~

0 条回复   |  直到 2021-8-25 | 1989 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.