java代码审计-换行符CRLF注入

        CRLF 的缩写是指回车和换行操作,其中 CR ASCII 中的第 13 个字符,也 写作 \r , LF ASCII 中的第 10 个字符,也写作 \n ,因此 CRLF 一般翻译为回车换行注入漏洞。
什么是CRLF注入漏洞?

        CRLF 即【回车\r+换行\n】的简称,十六进制码为0x0d和0x0a 。在http协议中,http header 与 http body是用两个crlf分隔的,浏览器就是根据这两个crlf来取出http内容并显示出来的 ,当http消息头中的字符串外部可控,攻击者注入一些恶意的换行比如一些会话cookie或者html代码时就会导致存在安全风险。

CRLF注入漏洞演示1

实战环境:vulhub的nginx配置错误导致漏洞

搭建

我用的snap在ubuntu下载安装了docker

参考链接

Vulhub - Docker-Compose file for vulnerability environmentVulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。icon-default.png?t=N7T8https://vulhub.org/#/environments/nginx/insecure-configuration/

下载Vulhub.zipicon-default.png?t=N7T8https://github.com/vulhub/vulhub/archive/master.zipgithub链接

git clone GitHub - vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose

启动

在项目nginx/insecure-configuration路径下执行以下命令

docker compose up -d

查看docker容器运行状态

sudo docker ps -a

漏洞poc测试

curl -i http://192.168.218.134:8080/%0d%0aheader:header
-i 将显示服务器返回的完整响应信息,包括响应头和响应体

可以看到header增加了

尝试注入xss

http://192.168.218.134:8080/%0d%0a%0d%0a<script>alert(0)</script>

浏览器打开此xss没有执行,此xss没有执行成功。原因是重定向时浏览器不会加载响应体,..... 因该是有可以打xss的方法,笔者暂时没有想到。

漏洞分析

这是nginx配置错误导致的漏洞,这样的配置原本的目的是将http跳到https:。但location后的$url是直接拼接之后的,为用户可控参数,又没有对参数进行过滤,间接导致nginx解析了%0d%0a为一个换行

CRLF注入漏洞演示2
下列 Web 应用程序代码会尝试从一个请求对象中读取整数值。如果数值未被解 析为整数,输入就会被记录到日志中,并附带一条提示相关情况的错误信息。
<%@ page contentType="text/html;charset=UTF-8" language="Java" %> 
<%@ page import="Java.util.logging.Logger" %> 
<%@ page import="Java.util.logging.Level" %> 
<html> 
<head> <title>日志注入</title> 
</head> <body> <% String val=request.getParameter("val"); Logger log = Logger.getLogger("log"); log.setLevel(Level.INFO); try{ int value = Integer.parseInt(val); System.out.print(value); }catch(Exception e){ log.info("Filed to parse val = " + val); } 
%> </body> 
</html>
如果用户为“ val ”提交参数 val=aaa ,则日志会记录以下条目:
INFO:Failed to parse val=aaa
然而,如果攻击者提交字符串val=“aaaa %0a%0aINFO:xxxxx则 日志中就会记录以下条目。
INFO:Failed to parse val=aaa
INFO:xxxxx
显然,攻击者可以通过将未经验证的用户输入写入日志文件,使日志条目被伪造或者恶意信息被注入日志
CRLF注入漏洞演示3

根据重定向的逻辑我写了一个servlet的demo,用来测试

public class RedirectServlet extends HttpServlet {
}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String input = request.getParameter("input");System.out.println(input);response.sendRedirect("success.jsp?message=" + input);}
}

我的servlet配置如下

<servlet><servlet-name>redirectServlet </servlet-name><servlet-class>RedirectServlet </servlet-class>
</servlet><servlet-mapping><servlet-name>redirectServlet </servlet-name><url-pattern>/redirect</url-pattern>
</servlet-mapping>

开始测试

curl -i http://localhost:8080/redirect?input=123

尝试注入

curl -i http://localhost:8080/redirect?input=123%0d%0aheader:header

 没有换行,没有触发漏洞。

但可以看出来System.out.println 是识别了换行符的,当增加%a的时候

curl -i http://localhost:8080/redirect?input=123%0d%0a%0a%0a%0a%0aheader:header

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/120360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

找游戏外包开发游戏,有哪些好处呢?

游戏外包开发是将游戏开发的一部分或全部工作交给专业的外部开发团队或公司完成的做法。这种方法有许多潜在的好处&#xff0c;包括&#xff1a; 降低成本&#xff1a;游戏外包通常可以降低游戏开发成本&#xff0c;因为外包开发公司通常可以提供更具竞争力的价格。这是因为它…

【2023CANN训练营第二季】——通过一份入门级算子开发代码了解Ascend C算子开发流程

本次博客讲解的代码是Gitee代码仓的Ascend C加法算子开发代码&#xff0c;代码地址为&#xff1a; quick-start 打开Add文件&#xff0c;可以看到文件结构如下&#xff1a; 其中add_custom.cpp是算子开发的核心文件&#xff0c;包括了核函数的实现&#xff0c;展示了如何在Asc…

Spring Cloud之负载均衡与服务调用(Ribbon)

目录 Ribbon 简介 负载均衡 简介 负载均衡方式 服务端负载均衡 工作原理 特点 客户端负载均衡 工作原理 特点 对比 实现 负载均衡策略 切换负载均衡策略 定制负载均衡策略 超时与重试 单个服务配置 全局配置 服务调用 示例 Ribbon 简介 Ribbon 是 Netfli…

WEB使用百度地图展示某地地址

第一步 进入百度地图开发平台 百度地图开放平台 | 百度地图API SDK | 地图开发 第二步注册 获取AK秘钥&#xff0c;点击【创建应用】进入AK申请页面&#xff0c;填写应用名称&#xff0c;务必选择AK类型为“浏览器端”&#xff0c;JS API只支持浏览器端AK进行请求与访问 下面…

最小二乘法,可视化UI界面

import tkinter as tk import numpy as np import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from pylab import mplmpl.rcParams[font.sans-serif] [FangSong] # 指定默认字体 mpl.rcParams[axes.unicode_minus] False …

雪糕冰淇淋经营配送小程序商城效果如何

雪糕冰淇淋是很多年轻人喜欢的食品之一&#xff0c;市面上的雪糕品牌类型众多&#xff0c;销售模式主要为厂家批发、经销商零售等&#xff0c;由于雪糕冰淇淋的易化性&#xff0c;很多用户会选择就近购买&#xff0c;但制作技术升级和长途冷藏技术下&#xff0c;网购成为另一种…

VB.NET 三层登录系统实战:从设计到部署全流程详解

目录 前言&#xff1a; 什么是三层 为什么要用到三层: 饭店→软件 理解: 过程: 1.三层包图: 2.数据库 3.三层项目 4.用户界面 5.添加引用 代码实现: Entity层 BLL层 DAL层 UI层 总结: 前言&#xff1a; 什么是三层 三层就是把各个功能模块划分为表示层&#…

【从瀑布模式到水母模式】ChatGPT如何赋能软件研发全流程

文章目录 &#x1f384;前言&#x1f354;本书概要&#x1f33a;内容简介&#x1f33a;作者简介&#x1f33a;专家推荐&#x1f6f8;读者对象&#x1f354;彩蛋 &#x1f384;前言 计算机技术的发展和互联网的普及&#xff0c;使信息处理和传输变得更加高效&#xff0c;极大地…

安全和便捷:如何将运营商二要素API应用于实名制管理中

引言 随着互联网的快速发展&#xff0c;数字化身份验证和实名制管理变得越来越重要。在金融、电子商务、社交媒体等领域&#xff0c;确保用户身份的安全和准确性至关重要。运营商二要素核验API成为了实名制管理的有力工具&#xff0c;它不仅能够提供高水平的安全性&#xff0c…

JVM进阶(2)

一)方法区: java虚拟机中有一个方法区&#xff0c;该区域被所有的java线程都是共享&#xff0c;虚拟机一启动&#xff0c;运行时数据区就被开辟好了&#xff0c;官网上说了方法区可以不压缩还可以不进行GC&#xff0c;JAVA虚拟机就相当于是接口&#xff0c;具体的HotSpot就是虚…

虹科案例 | 使用虹科MSR147WD测试自行车背包的热生理舒适性

使用虹科MSR147WD测试自行车背包的热生理舒适性 在进行运动活动时&#xff0c;佩戴背包会对穿戴者的舒适度产生影响&#xff0c;并且也会对热调节产生影响&#xff0c;类似于一件服装的作用。为了优化背包的材料和设计属性&#xff0c;我们利用MSR Electronics GmbH的微型数据记…

Java实现Csv文件导入导出

Java实现Csv文件导入导出 什么是.csv文件&#xff1f; CSV&#xff08;Comma-Separated Values&#xff0c;逗号分隔的值&#xff09;是一种简单、实用的文件格式&#xff0c;用于存储和表示包括文本、数值等各种类型的数据。CSV 文件通常以 .csv 作为文件扩展名。这种文件格…

C语言编写图形化界面-创建按钮-为其指定样式

文章目录 前置章节指定窗口样式给按钮加边框扁平化按钮复选框样式按钮自动复选框 单选按钮三态按钮自动三态按钮 默认按钮样式&#xff08;对话框Enter键&#xff09; 设置按钮位置和大小封装函数 前置章节 开始之前&#xff0c;需要学习以下章节&#xff1a; 创建窗口 窗口过…

NAT技术与代理服务器

目录 一、NAT与NAPT技术 1.NAT技术 2.NAPT技术 &#xff08;1&#xff09;四元组的唯一性 &#xff08;2&#xff09;数据的传输过程 &#xff08;3&#xff09;NAPT的缺陷 二、代理服务器 1.正向代理和反向代理 2.代理服务器的应用 &#xff08;1&#xff09;游戏加…

图纸管理制度《四》

1、目的 使公司的图纸得到有效的控制&#xff0c;确保生产所用的图纸为最新有效版本&#xff0c;避免因图纸管理不当造成的损失。 2、定义 本制度所述的图纸包括产品总装图、装配图、零件图、工装图纸、检具图纸、包装图纸、工艺流程 3、范围 客户提供的图纸&#xff0c;技…

selenium+python web自动化测试框架项目实战实例教程

自动化测试对程序的回归测试更方便。 由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行... 可以运行更加繁琐的测试 自动化测试的一个明显好处就是可以在很短的时间内运行更多的测试。学习自动化测试最终目的是应用到实际项目中&…

LabVIEW应用开发——基本函数(一)

前面我们介绍了一些控件的介绍和属性的配置&#xff0c;想要完成一个软件只会拖控件肯定是不行的&#xff0c;没办法实现既有的功能。比如我们要实现从串口中读到数据&#xff0c;根据一定的协议解析&#xff0c;然后转换成各个参数的值的显示&#xff0c;包括时间、电压、电流…

796. 子矩阵的和(左上角前缀和)

题目&#xff1a; 796. 子矩阵的和 - AcWing题库 思路&#xff1a; 1.暴力搜索&#xff08;搜索时间复杂度为O(n2)&#xff0c;很多时候会超时&#xff09; 2. 前缀和&#xff08;左上角前缀和&#xff09;&#xff1a;本题特殊在不是直接求前n个数的和&#xff0c;而是求…

第1篇 目标检测概述 —(3)目标检测评价指标

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。目标检测评价指标是用来衡量目标检测算法性能的指标&#xff0c;主要包括几个指标&#xff1a;精确率&#xff08;Precision&#xff09;、召回率&#xff08;Recall&#xff09;、交并比&#xff08;IoU&#xff09;、平均…

UI自动化测试是什么?什么项目适合做UI自动化测试

UI 测试是一种测试类型&#xff0c;也称为用户界面测试&#xff0c;通过该测试&#xff0c;我们检查应用程序的界面是否工作正常或是否存在任何妨碍用户行为且不符合书面规格的 BUG。了解用户将如何在用户和网站之间进行交互以执行 UI 测试至关重要&#xff0c;通过执行 UI 测试…