nginx CRLF(换行回车)注入漏洞复现

本文介绍nginxCRLF(换行回车)注入漏洞的原理与环境搭建过程,通过修改配置文件实现强制跳转功能,并演示如何利用该漏洞进行攻击。最后给出防御建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nginx CRLF(换行回车)注入漏洞复现

一、漏洞描述

CRLF是”回车+换行”(\r\n)的简称,其十六进制编码分别为0x0d和0x0a。在HTTP协议中,HTTP header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP内容并显示出来。所以,一旦我们能够控制HTTP消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码。CRLF漏洞常出现在Location与Set-cookie消息头中。

二、漏洞原理

1、 修改nginx.conf,在如下图位置添加如下配置,此配置实现了强制跳转的功能,当用户访问nginx服务器时由于此配置的存在会被强制跳转到以https协议访问之前访问的链接。

  

2、上面的配置的关键利用点由两个:一是配置中的$url是我们可以控制的,这样我们就可以在$url处填入CRLF,然后对服务器进行访问实现头部注入。二是服务器会返回一个302跳转给用户,所以我们注入的头部参数又会返回到客户这边。

三、漏洞环境搭建和复现

1、 在ubuntu 16.04安装nginx

1.1安装nginx依赖库

1.1.1安装gcc g++的依赖库

ubuntu平台可以使用如下命令:

apt-get install build-essential

apt-get install libtool

1.1.2安装pcre依赖库

apt-get install libpcre3 libpcre3-dev

1.1.3安装zlib依赖库

apt-get install zlib1g-dev

1.1.4安装ssl依赖库

apt-get install openssl

1.2安装nginx

#下载最新版本:

wget http://nginx.org/download/nginx-1.11.3.tar.gz

#解压:

tar -zxvf nginx-1.11.3.tar.gz

#进入解压目录:

cd nginx-1.11.3

#配置:

./configure --prefix=/usr/local/nginx

#编辑nginx:

Make

#安装nginx:

make install

#启动nginx:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

1.3浏览器访问,测试nginx是否搭建成功

  

2、 修改/usr/local/nginx/conf/nginx.conf,在如下图位置添加如下内容:

  

3、重启nginx服务

./sbin/nginx -s reload

  

3、重启nginx服务

./sbin/nginx -s reload

  

4、浏览器访问http://192.168.10.137/,然后抓包,修改数据包,如下图所示,成功实现了CRLF头部注入

  

四、漏洞防御

1、删除配置不当的配置

 

--------------------------------------------------------------------------------------------

参考资料: https://blog.youkuaiyun.com/liuhuaijin/article/details/77449579

转载于:https://www.cnblogs.com/yuzly/p/11212233.html

DedeCMS是一款流行的内容管理系统(CMS),但在过去的一些版本中存在SQL注入漏洞。SQL注入是一种通过将恶意的SQL代码插入到应用程序的输入字段中,从而控制数据库执行非预期操作的攻击方式。以下是DedeCMS SQL注入漏洞复现的步骤: ### 步骤一:环境搭建 1. **下载DedeCMS**:从官方网站或其他可信来源下载DedeCMS的旧版本(存在漏洞的版本)。 2. **安装DedeCMS**:按照官方文档的步骤进行安装,确保数据库和Web服务器(如Apache或Nginx)正常运行。 ### 步骤二:识别漏洞 1. **查找注入点**:常见的注入点包括搜索功能、登录功能等。假设我们使用搜索功能作为注入点。 2. **构造恶意输入**:在搜索框中输入带有SQL注入的恶意输入。例如,`' OR '1'='1`。 ### 步骤三:执行SQL注入 1. **测试注入**:在搜索框中输入测试语句,观察页面响应。如果页面返回了异常的结果或错误信息,说明存在SQL注入漏洞。 2. **提取数据**:使用SQL注入技术提取数据库中的数据。例如,使用`UNION SELECT`语句结合`information_schema.tables`表来获取表名。 ### 步骤四:利用漏洞 1. **获取数据库信息**:通过SQL注入获取数据库版本、用户信息、数据库名等信息。 2. **获取表和列信息**:利用`information_schema`数据库获取表名和列名。 3. **提取数据**:根据获取的表名和列名,提取具体的数据。 ### 步骤五:修复漏洞 1. **更新DedeCMS**:升级到最新版本,修复已知的SQL注入漏洞。 2. **代码审计**:对代码进行审计,修复所有可能的注入点。 3. **使用参数化查询**:确保所有数据库查询都使用参数化查询,防止SQL注入。 ### 示例代码 以下是一个简单的示例,展示如何通过SQL注入获取数据库版本信息: ```sql SELECT * FROM users WHERE username = '' OR '1'='1' AND password = ''; ``` 通过这种方式,攻击者可以绕过身份验证,获取所有用户的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值