如何使用Regexploit识别ReDoS正则表达式拒绝服务攻击

一颗小胡椒2022-04-28 22:18:30

关于Regexploit

Regexploit可以帮助广大研究人员找出易受正则表达式拒绝服务攻击(ReDoS)的正则表达式。

许多默认正则表达式解析器都很复杂,而且存在很多安全问题。当显示匹配的输入字符串时,使用正则表达式匹配的方式可能速度会很快,但是某些不匹配的输入字符串可能会使正则表达式匹配器进入疯狂的回溯循环,并且需要花费很长时间来处理。此时,将有可能导致应用程序出现拒绝服务的情况,因为CPU在尝试匹配正则表达式时会卡住。

该工具的主要目的如下:

寻找易受正则表达式拒绝服务攻击(ReDoS)的正则表达式;
给出一个会导致死循环回溯的恶意字符串示例;

最坏情况复杂性

最坏情况复杂性反映了正则表达式匹配器的回溯过程相对于输入字符串长度的复杂性。这个最坏情况复杂性是以立方计算的,如果字符串的易受攻击部分的长度增加了一倍,则执行时间应延长约8倍(2^3)。

工具安装

该工具需要在本地安装并配置好Python 3.8+环境。由于Regexploit会从JavaScript/TypeScript代码中提取正则表达式,因此还需要安装好NodeJS 12+。

首先,我们可以创建一个虚拟环境:

python3 -m venv .env
source .env/bin/activate

然后使用pip来安装Regexploit:

pip install regexploit

工具使用

正则表达式处理

我们可以通过stdin(每个正则表达式占一行)向Regexploit输入正则表达式:

regexploit

或者直接处理正则表达式列表文件:

cat myregexes.txt | regexploit

自动提取正则表达式

Regexploit内置支持解析Python、JavaScript、TypeScript、C#、YAML和JSON代码中的正则表达式。

Python代码

通过AST解析Python代码(无需执行)并提取正则表达式,并分析是否易受ReDoS:

regexploit-py my-project/
regexploit-py "my-project/**/*.py" --glob

Javascript / Typescript

该功能将使用regexploit/bin/javascript中捆绑的NodeJS包实现,并解析JavaScript中的正则表达式:

regexploit-js my-module/my-file.js another/file.js some/folder/
regexploit-js "my-project/node_modules/**/*.js" --glob

JSON/YAML

YAML支持需要安装pyyaml,我们可以使用命令“pip install regexploit[yaml]”进行安装:

regexploit-json *.json
regexploit-yaml *.yaml

C#(.NET)

regexploit-csharp something.cs

工具使用样例

运行Regexploit,并在命令行中输入正则表达式“v\w*_\w*_\w*$”:

$ regexploit
v\w*_\w*_\w*$
Pattern: v\w*_\w*_\w*$
---
Worst-case complexity: 3 ⭐⭐⭐ (cubic)
Repeated character: [5f:_]
Final character to cause backtracking: [^WORD]
Example: 'v' + '_' * 3456 + '!'

此时,Regexploit将返回评估结果。

项目地址

Regexploit:https://github.com/doyensec/regexploit

javascript正则表达式
本作品采用《CC 协议》,转载必须注明作者和本文链接
许多默认正则表达式解析器都很复杂,而且存在很多安全问题。此时,将有可能导致应用程序出现拒绝服务的情况,因为CPU在尝试匹配正则表达式时会卡住。这个最坏情况复杂性是以立方计算的,如果字符串的易受攻击部分的长度增加了一倍,则执行时间应延长约8倍(2^3)。工具安装该工具需要在本地安装并配置好Python 3.8+环境。此时,Regexploit将返回评估结果。
2019 年七月初,Cloudflare 曾经全球中断服务,原因是为了改进内联 JavaScript 屏蔽,
字符串是 JavaScript 中的重要数据类型
前言本系列的前十三篇文章,讲解了V8执行Javascript时最基础的工作流程和原理,包括词法分析、语法分析、字节码生成、Builtins方法、ignition执行单元,等等,达到了从零做起,入门学习的目的。接下来的文章将以问题为导向讲解V8源码,例如:以闭包技术、或垃圾回收为专题讲解V8中的相关源码。V8代码过于庞大,以问题为导向可以使得学习主题更加明确、效果更好。
近日,Akamai安全情报小组的研究人员发现黑客“创造性“地篡改电商网站的404页面来窃取用户的信用卡信息。(研究人员还发现另外一种攻击手法:将代码隐藏在HTML图像标签的“onerror”属性和图像二进制文件中,使其显示为Meta Pixel代码片段。)
思科的Talos专家披露了最近修补的漏洞的详细信息,这些漏洞影响了流行的Chrome和Firefox Web浏览器。第一个问题被称为CVE-2020-6463,是一个影响PDFium的内存破坏漏洞。PDFium是Chrome和其他应用程序使用的开源PDF库。该漏洞是一个严重程度很高的漏洞,CVSS评分为,Google 于4月发布了Chrome 版本解决了该漏洞 Google对该漏洞奖励了5,000美元的奖金。攻击者可以利用这个漏洞,诱骗受害者访问一个特别设计的URL对象,从而导致越界读取。
Ceye DNS:DNS oob平台 http://ceye.io/. TLS证书信息查询Censys:https://censys.io. 网络空间搜索Fofa:https://fofa.info/
绕过 XSS 检测机制
2022-05-05 07:30:30
跨站点脚本 (XSS) 是最常见的 Web 应用程序漏洞之一。它可以通过清理用户输入、基于上下文转义输出、正确使用文档对象模型 (DOM) 接收器和源、执行正确的跨源资源共享 (CORS) 策略和其他安全实践来完全防止。尽管这些预防性技术是公共知识,但 Web 应用程序防火墙 (WAF) 或自定义过滤器被广泛用于添加另一层安全性,以保护 Web 应用程序免受人为错误或新发现的攻击向量引入的缺陷
ImHex是一款功能强大的十六进制编辑器,该工具专为逆向工程分析师、编程开发人员以及那些想好好保护自己眼睛的安全人员所设计。哪怕你每天工作到凌晨三点(虽然不建议),也不会伤害你的眼睛!
一颗小胡椒
暂无描述