漏洞: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是个泛指。
一些实际业务场景中会用到的缺陷正则:
英文的个人名字 Java类名 Email格式验证 多个邮箱地址验证 复数验证 模式匹配 使用python来进行测试有缺陷的正则示例 |
解决方案:
防范手段只能降低风险而不能百分百消除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()
漏洞:Client ReDos From Regex Injection相关推荐
- checkmarx检测js中的jQuery安全漏洞
checkmarx安全漏洞检测问题(javascript)处理 漏洞 主要是接口数据.storage.输入内容转换为js.html代码 window.eval().document.innerHTML ...
- 浅谈XXE漏洞攻击与防御——本质上就是注入,盗取数据用
浅谈XXE漏洞攻击与防御 from:https://thief.one/2017/06/20/1/ XML基础 在介绍xxe漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点 ...
- Web安全手册(漏洞理解、漏洞利用总结)
0x01 漏洞理解篇(Vulnerability) 前端 跨域安全 后端逻辑 0x02 漏洞利用篇(Exploit) SQL injection - MySQL XSS CSRF SSRF XXE S ...
- sql 整改措施 注入_SQL注入的漏洞及解决方案
一.sql注入漏洞 1. SQL注入漏洞 SQL注入攻击(SQL Injection),简称为注入攻击,SQL注入,被广泛用于非法获取网站控制权.这是在应用程序的数据库层中发生的安全漏洞.在设计程序中 ...
- 渗透笔记之web漏洞概述
文章目录 1.敏感信息泄露 风险等级 敏感信息泄露描述 敏感信息泄露的危害 敏感信息泄露修复方式 2.SQL注入 风险等级 SQL注入漏洞描述 SQL注入漏洞危害 SQL注入分类 SQL注入工具 SQ ...
- mysql服务攻击检测_3款SQL INJECTION攻击检测工具_MySQL
SQLinjection 随着 SQL INJECTION 攻击的明显增多,微软近日发布了三个免费的攻击检测工具,可帮助网站管理员和检测存在的风险并对可能的攻击进行拦截. 工具一: Scrawlr 下 ...
- WEB 漏洞-XXEXML 之利用检测绕过
WEB 漏洞-XXE&XML 之利用检测绕过 XXE&XML DTD 内部DOCTYPE 声明 外部DOCTYPE声明 内部实体声明 外部实体声明 为什么使用 DTD pikachu ...
- 【web安全原理分析】-XEE漏洞入门
前言 XXE漏洞 XXE漏洞全称(XML External Entity Injection)即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意 ...
- 文件包含和命令注入漏洞
文件包含和命令注入漏洞 文件包含漏洞 介绍 文件包含漏洞是代码注入的一种.其原理就是注入一段用户能控制的脚本或代码,让服务器端执行,代码注入的典型代表就是文件包含file inclusion.文件包含 ...
最新文章
- SQL语句小tips(持续更新)
- springboot使用HttpSessionListener监听器统计在线用户数
- mysql 实时备份_MySQL实现实时备份[转]
- iOS之常用的正则表达式
- 连接postgresql
- python 非线性多项式拟合_用python进行非线性回归-有什么简单的方法可以更好地拟合这些数据?...
- TextView跑步灯效果及在特殊情况下无效的解决方式
- 解压ubi文件_请问为什么AM3352 NAND FLASH UBI文件系统挂载失败?
- HDU2022 海选女主角【最值】
- LINUX文件处理命令
- 微信公号“架构师之路”学习笔记(一)-无限容量数据库架构设计(数据库分组、分片架构等)
- 2014最新开源微信源码 支持二次开发,微信对接公众平台多用户程序 全面体验
- 备考计算机三级数据库——SQL 案例
- 全网最详细ENSP安装教程,零基础网工小白必看!
- redis 复制功能测试(转阿辉的百度空间)
- python如何读取文件数据恢复_如何找回丢失的文件数据
- 不能设置一个python sdk_【君奉天|开发日记】Python SDK换唤醒词及设置服务配置
- Recylerview刷新图片闪烁
- SpringMVC视图及如何在域对象中共享数据
- 啊哈 , 算法 !--深度优先搜索( C语言版 )
热门文章
- Centos7 Apache 2.4.18编译安装
- Java中间件:淘宝网系统高性能利器
- discuzX 帖子 有的图片没输出 [attach]12323[/attach]的解决办法
- 机器学习的一些注意事项
- 计算机应用于材料组织结构检测,计算机在材料检测中的应用
- java web.xml 监听器_【JAVA 核心技术】java web 中的监听器
- java线程池怎么创建_java中的线程池,如何创建?
- 自动打包linux,Linux环境下Springboot自动打包发布功能
- php仿微信上传图片压缩,PHP仿微信多图片预览上传实例代码
- netlify支持php吗,hexo netlify 搭建简易博客