漏洞:Client ReDos From Regex Injection

漏洞描述:

扫描漏洞如下:


代码:

// In IE6, the hash fragment and search params are incorrect if the

    // fragment contains `?`.

    getSearch: function() {

      var match = this.location.href.replace(/#.*/, '').match(/\?.+/);

      return match ? match[0] : '';

    },

// Update the hash location, either replacing the current entry, or adding

    // a new one to the browser history.

    _updateHash: function(location, fragment, replace) {

      if (replace) {

        var href = location.href.replace(/(javascript:|#).*$/, '');

        location.replace(href + '#' + fragment);

      } else {

        // Some browsers require that `hash` contains a leading #.

        location.hash = '#' + fragment;

      }

    }


ReDoS(Regularexpression Denial of Service)
正则表达式拒绝服务攻击。开发人员使用了正则表达式来对用户输入的数据进行有效性校验,当编写校验的正则表达式存在缺陷或者不严谨时, 攻击者可以构造特殊的字符串来大量消耗服务器的系统资源,造成服务器的服务中断或停止。

每个恶意的正则表达式模式应该包含:使用重复分组构造、在重复组内会出现、重复、交替重叠。

有缺陷的正则表达式会包含如下部分。

(a+)+
([a-zA-Z]+)*
(a|aa)+
(a|a?)+
(.*a){x} | for x > 10
注意: 这里的a是个泛指。

一些实际业务场景中会用到的缺陷正则:

英文的个人名字
Regex: ^[a-zA-Z]+(([\'\,\.\-][a-zA-Z ])?[a-zA-Z]*)*$
Payload: aaaaaaaaaaaaaaaaaaaaaaaaaaaa!

Java类名
Regex: ^(([a-z])+.)+[A-Z]([a-z])+$
Payload: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!

Email格式验证
Regex: ^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$
Payload: a@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!

多个邮箱地址验证
Regex: ^[a-zA-Z]+(([\'\,\.\-][a-zA-Z ])?[a-zA-Z]*)*\s+<(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})>$|^(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})$
Payload: aaaaaaaaaaaaaaaaaaaaaaaa!

复数验证
Regex: ^\d*[0-9](|.\d*[0-9]|)*$
Payload: 1111111111111111111111111!

模式匹配
Regex: ^([a-z0-9]+([\-a-z0-9]*[a-z0-9]+)?\.){0,}([a-z0-9]+([\-a-z0-9]*[a-z0-9]+)?){1,63}(\.[a-z0-9]{2,7})+$
Payload: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!

使用python来进行测试有缺陷的正则示例
$ python -c "import re;re.match('^[a-zA-Z]+(([\'\,\.\-][a-zA-Z ])?[a-zA-Z]*)*$', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa!')"

 


解决方案:

防范手段只能降低风险而不能百分百消除ReDoS这种威胁。

1.  降低正则表达式的复杂度, 尽量少用分组;

2.  严格限制用户输入的字符串长度(特定情况下)。

    对本次测试漏洞进行分析,似乎并不存在重复分组或嵌套分组的正则表达式,为了应对安全测试,建议解决方案如下:

方案1

使用{m, n}替代“*”、“+”等,限制匹配的字符数量,如:

var href = location.href.replace(/(javascript:|#).*$/, '');

修改为

var href = location.href.replace(/(javascript:|#).{0, 1000}$/, '');

方案2

使用字符串截取函数slice()或substring(),替代replace()函数,如:

var href = location.href.replace(/(javascript:|#).*$/, '');

修改为

var lochref = location.href;

var idxnum = lochref.indexof(“javascript:”);

if(idxnum == -1) idxnum = lochref.indexof(“#”);

var href = idxnum == -1? lochref : lochref.slice(0, idxnum + 1);


参考资料:

Regular expression Denial of Service - ReDoS 

浅析ReDoS的原理与实践

Location 对象

正则表达式基础

js字符串截取函数slice()、substring()、substr()

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

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

相关文章

WinCE Boot方式及 Bootloader架构概述

Bootloader的概念就是一个用于引导的loader,在系统上电的时候最先被运行,然后对硬件平台做最基本的初始化,最后把操作系统加载起来。不同的嵌入式操作系统都有自己的Bootloader,但是本质功能都是一样的。 在WinCE中用的最多的就是…

静物摄影用光技巧_摄影技巧:摄影如何用光?摄影大师总结的10点,非常受用!...

点击上方蓝字关注「摄影技巧入门教程」ID:sheying116找到右上角点击?... 设为星标/置顶 丨摄影技巧丨丨摄影入门丨丨摄影教程丨丨摄影图片丨摄影技巧:光线的运用在摄影中至关重要,但很多摄影新手却不知道该如何用光,今天我们就来…

Python如何创建相同值的数组/列表

题目要求 现在有这样的一个需求:创建一个数组或列表,列表中的所有值是相同的。 解决方法 找到两种解决方法,第一种是使用Python的基础语法,第二种是借助numpy包提供的函数实现。分别为大家进行介绍。 方法一:使用P…

【转】肺小结节就诊指南:4种CT的区别及如何选择?

又到医院体检的季节,胸外科医师又要忙着给本院同事看片子了。目前体检查出的早期肺癌越来越多,主要归功于CT检查的普及,相较于X-ray胸片,CT对肺内小结节,特别是小于1cm的结节诊断率更高。因此,要提高早期肺…

CTL_CODE说明

我们在说DeviceIoControl函数时其第二个参数dwIoControlCode就是由CTL_CODE宏定义的,下边我们可以了解一下CTL_CODE的内容。CTL_CODE:用于创建一个唯一的32位系统I/O控制代码,这个控制代码包括4部分组成:DeviceType(设…

修改Linux主机名和IP

问题描述 又到了例行的系统安全测试时间,公司部署的一套系统需要做安全测试了,首先要做主机渗透,显然不可能在正式环境直接测,于是就把几台服务器做了个镜像,作为测试环境。 现在问题是,测试环境的ip要修…

可以获得索引值码_搜索引擎优化最适合什么样子的工作?

有些人一直在学习搜索引擎优化,并一直想学习搜索引擎优化。这里是一个关于搜索引擎优化职位的简要介绍。1、 搜索引擎优化的位置是什么?随着电子商务产业的发展,搜索引擎优化的地位越来越重要。它主要负责优化网页的自然排名,这与…

【转】医学图像之DICOM格式解析

最近导师给安排了新任务,由于刚进入实验室,对于医学图像这一块还一知半解,所以就想分享一下有关医学常见影像的学习资料(尤其是dicom后缀的图像文件),欢迎大家一起交流。 目录 1.医学影像学的介绍 2.DICOM信息的简介 3.DICOM内…

多元有序logistic回归分析_一文详述:观察性研究中的logistic回归分析思路

本文内容来自《中华流行病学杂志》2019年第40卷第8期,作者为冯国双教授,原题目为《观察性研究中的logistic回归分析思路》。将这篇文章分享给医咖会的伙伴们,希望大家能从领域大咖的见解中有所收获,指导医学研究之路。&#xff08…

【转】禁用Chrome和Firefox中自动播放的动画GIF

动画GIF已经腐臭,并且在浏览时自动播放时可能会非常烦人。以下是如何阻止他们在Chrome和Firefox中自动播放。 禁用动画GIF Firefox 在地址栏中输入: about:config,然后按Enter。如果“这可能会使您的保修信息失效,请点击&#…

Python:Sklearn概述

文章来源:https://blog.csdn.net/algorithmPro/article/details/103045824 Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单…

内存参数 计算_Spark统一内存管理的实现

本文从源码角度分析spark统一内存管理的实现原理。统一内存管理对象的创建统一内存管理对象在SparkEnv中进行创建和管理,这样内存管理就在Driver和Executor端中都可以使用。在SparkEnv的create函数中,创建内存管理对象的实现代码如下:val use…

Python:以鸢尾花数据为例,介绍决策树算法

文章参考来源: https://www.cnblogs.com/yanqiang/p/11600569.html https://www.cnblogs.com/baby-lily/p/10646226.html https://blog.csdn.net/liuziyuan333183/article/details/107399633 决策树算法 决策树算法主要有ID3, C4.5, CART这三种。 ID3算法从树的…

【转】CT球管小知识--热容量

Heat Unit 简称HU,为DR、CT等医疗设备中球管的热容量单位。如,Varian球管RAD14的热容量为300kHU。设备工作时,X线管两极之间要承受极高的电压,并通过一定量电流,高速电子束撞击阳极靶面,将产生大量热能。X线…

一键锁屏_ios快捷指令一键登录校园网(桂航为例,哆点认证)

(鄙人水平很有限,所学的专业也和此无关,文中有的东西可能会说错,但我尽量用简单的方式说。请多指教)现在很多高校现在晚上断电断网,最烦恼的事莫过于第二天早上起床眯着眼摸出手机输入账号密码登录校园网的…

【转】一篇文章完整了解CT成像技术(完整版)

1.CT的发明与发展 1.1 CT的发明 CT是计算机断层摄影术(Computed Tomography,CT)的简称,是继1895年伦琴发现X线以来,医学影像学发展史上的一次革命。 CT的发明可以追溯到1917年。当时,奥地利数…

Pandas数据可视化工具:图表工具-Seaborn

内容来源:https://www.jiqizhixin.com/articles/2019-01-30-15 简介 在本文中,我们将研究Seaborn,它是Python中另一个非常有用的数据可视化库。Seaborn库构建在Matplotlib之上,并提供许多高级数据可视化功能。 尽管Seaborn库可以…

图解WinCE6.0下的内核驱动和用户驱动

图解WinCE6.0下的内核驱动和用户驱动 在《WinCE驱动程序的分类》中曾提到&#xff0c;WinCE6.0的流驱动既可以加载到内核态也可以加载到用户态。下面通过一组图片简单说明一下这两种驱动的关系。 首先编写一个流驱动WCEDrv&#xff0c;代码如下。 代码 #include <windows.h&…

人体轮廓_女性人体油画轮廓柔和生动,优美动人,你喜欢吗?

人体油画是艺术和时代的产物&#xff0c;也是艺术结晶的重要体现&#xff0c;在文艺复兴以前&#xff0c;人体艺术大都以雕塑形式来表现&#xff0c;在此之后&#xff0c;人们都以意大利威尼斯绘画为代表&#xff0c;艺术家们开始以色彩塑造人体绘画艺术。随着时代进步和人们对…

机器学习分类模型中的评价指标介绍:准确率、精确率、召回率、ROC曲线

文章来源&#xff1a;https://blog.csdn.net/wf592523813/article/details/95202448 1 二分类评价指标 准确率&#xff0c;精确率&#xff0c;召回率&#xff0c;F1-Score&#xff0c; AUC, ROC, P-R曲线 1.1 准确率&#xff08;Accuracy&#xff09; 评价分类问题的性能指标…