1.CRLF注入

1.1环境配置

apt install nginx

vi /etc/nginx/sites-available/default

location / {
    return 302 https://$host$uri;
}

service nginx restart

1.2原理

$uri为接收浏览器中的url的变量,并且会进行解码(比如传入url编码过的参数)

return 302 https://$host$uri;为返回对应的https页面。

如果返回$uri,当传入%0D%0A就会解码成换行和回车.

当访问

http://1.1.1.1/%0D%0Aset-cookie:JSPSESSID=123时,会跳转到

https://1.1.1.1/%0D%0Aset-cookie:JSPSESSID=123,返回的302跳转包头应该为

HTTP/1.1 302 Moved Temporarily
.........
.........
Location: https://1.1.1.1/%0D%0Aset-cookie:JSPSESSID=123

但是因为配置文件利用的是$uri会对%0A%0D解码,所以实际的返回的跳转的包头

HTTP/1.1 302 Moved Temporarily
.........
.........
Location: https://1.1.1.1/
set-cookie:JSPSESSID=123

所以cookie就可以修改了,如果给别人发送这样一个链接,就可以控制他的cookie了。

结合xss:

两个CRLF区分头部和内容部分,所以<script>alert(222)</script>就变成了返回的内容

这里是个302跳转,我也不知道这个xss会不会执行,在浏览器上是不会弹窗的。

我还看了师傅讲的 新浪某站CRLF注入,猜测:

并不是nginx的配置问题,而是一个http header函数的注入,php4.4开始header就限制只能处理一个头部,所以高版本是没有办法复现的。

1.3修复

location / {
    return 302 https://$host$request_uri;
}

或者过滤\r \n

$request_uri不会对参数进行编码

2.目录穿越漏洞

2.1配置

想让用户直接获取主机上的文件,可以修改nginx的配置文件

vi /etc/nginx/sites-available/default

location /files {
    alias /home/;
    autoindex on;   //可以显示目录列表
}

2.2原理

当访问http://1.1.1.1/files的时候,就可以访问/home下的文件了。

因为配置/files的别名是/home/,所以访问/files../相当于访问/home/../这样自然就到了上一级目录。

2.3 修复

根据原理,/files与他的别名相对应就可以了。

/files---/home

/files/---/home/

3.Http Header被覆盖的问题

3.1环境配置

vi /etc/nginx/sites-available/default

server {
    ...
    add_header Content-Security-Policy "default-src 'self'";
    add_header X-Frame-Options DENY;

    location = /test1 {
        rewrite ^(.*)$ /xss.html break;
    }

    location = /test2 {
        add_header X-Content-Type-Options nosniff;
        rewrite ^(.*)$ /xss.html break;
    }
}

在web目录下边新建xss.html,内容为

<script>alert(1)</script>

3.2原理

/test2子块中的策略会直接覆盖父块中的策略使其失效

3.3 复现

访问/test1,发现不弹窗,查看源码

发现CSP起了作用,访问/test2,发现直接弹窗

nginx配置不当引起的错误的更多相关文章

  1. Nginx配置不当可能导致的安全问题

    Nginx配置不当可能导致的安全问题 Auther: Spark1e目前很多网站使用了nginx或者tenginx(淘宝基于Nginx研发的web服务器)来做反向代理和静态服务器,ningx的配置文件 ...

  2. nginx配置不当容易产生的安全问题

    nginx一般用于做外网代理,配置也比较方便,但是配置不当的时候会产生一些安全问题.其中包括各个大厂也都出现过. intra server ->  proxy -> nginx 一般正常的 ...

  3. Nginx配置不当(CRLF注入 、目录穿越)

    基于vulhub漏洞环境 环境搭建参考:https://blog.csdn.net/qq_36374896/article/details/84102101 1.漏洞名称 CRLF注入 2.漏洞原理 ...

  4. nginx配置不当导致的目录遍历下载漏洞-“百度杯”CTF比赛 2017 二月场

    题目:http://98fe42cede6c4f1c9ec3f55c0f542d06b680d580b5bf41d4.game.ichunqiu.com/login.php 题目内容: 网站要上线了, ...

  5. nginx 配置不当导致目录遍历下载漏洞

    今天做百度杯的时候发现一个题很有意思. 点进题目,发现了一个js重定向到login.php,抓包发现请求的header中cookie=0,做过这种类似的题目,o==false,在请求头里面将cooki ...

  6. nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现

    nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...

  7. NGINX 配置404错误页面转向

    什么是404页面 如果碰巧网站出了问题,或者用户试图访问一个并不存在的页面时,此时服务器会返回代码为404的错误信息,此时对应页面就是404页面.404页面的默认内容和具体的服务器有关.如果后台用的是 ...

  8. nginx配置 的话注意几点 1.错误时注意看log 2.天威证书的话,有文档按照其文档一步步配置即可;3每句话的结尾注意千万别丢掉分号

    nginx配置 的话注意几点 1.错误时注意看log  2.天威证书的话,有文档按照其文档一步步配置即可:3每句话的结尾注意千万别丢掉分号:4.配置https时 其转发可以转发到http上 pass_ ...

  9. NGINX 配置404错误页面转向

    什么是404页面 如果碰巧网站出了问题,或者用户试图访问一个并不存在的页面时,此时服务器会返回代码为404的错误信息,此时对应页面就是404页面.404页面的默认内容和具体的服务器有关.如果后台用的是 ...

随机推荐

  1. kong命令(四)upstream

    介绍 upstream 就是一个虚拟的服务.可用于配置多个target目标服务时实现负载均衡的效果. 注意:service的host指的就是upstream的name. 同时upstream提供了一个 ...

  2. js之split拆分字符串

    js之split拆分字符串 1.单字符拆分 let arr = str.split(',') 2.多字符拆分 let arr = str.split(/[(),]/)

  3. React/Refs and this DOM

    Refs 提供了一种方式,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素. 何时使用Refs 管理焦点,文本选择或媒体播放. 触发强制动画. 集成第三方 DOM 库. 避 ...

  4. js入门第二篇之流程控制语句

    表达式语句: 一个表达式可以产生一个值,有可能是运算.函数调用 字面量 表达式可以放在任何需要值的地方. 语句: 语句可以理解成一个行为,循环语句和判断语句就是典型的语句,一个程序有多个语句组成. 流 ...

  5. XCode5环境下利用crash log调试线上Crash的流程

    1.前言 本文主要介绍在XCode5环境下,如何根据App自己生成的crashlog来调试真机上运行时产生的crash问题. 2. 步骤 (1)构造一段会crash的代码,并放到viewDidLoad ...

  6. linux物理地址和虚拟地址定义

    线性地址(Linear Address) 是逻辑地址到物理地址变换之间的中间层 如果启用了分页机制,那么线性地址可以再经过变换以产生一个物理地址:如果没有启用分页机制,那么线性地址直接就是物理地址 分 ...

  7. 程序员与数据库打交道的JDBC知识概要

    1.JDBC全称:Java database connectivity,Java数据库连接. (1)           JDBC是一种用于执行SQL语句的Java API,为多种关系数据库提供多种统 ...

  8. Elasticsearch 9300无法访问,客户端出现NoNodeAvailableException[None of the configured nodes are available:  [{#transport#‐1}{exvgJLR‐RlCNMJy‐hzKtnA}

    1.  进入容器 docker exec ‐it ID /bin/bash 2. 拷贝配置文件到宿主机 docker cp  ID:/usr/share/elasticsearch/config/el ...

  9. libssh2--ssh2实例

    #include "libssh2_config.h"#include<libssh2.h>#include<libssh2_sftp.h> 上述为所包含必 ...

  10. RT-Thread--内核基础

    内核介绍 内核处于硬件层之上,内核部分包括内核库.实时内核实现. 实时内核的实现包括:对象管理.线程管理及调度器.线程间通信管理.时钟管理及内存管理等等,内核最小的资源占用情况是 3KB ROM,1. ...