Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
RegEx-DoS — 👮 👊 正则表达式拒绝服务(ReDoS)扫描器 | Kitploit
工具/GitHubGitHub/jagracey/regex-dos
防御工具漏洞扫描器静态代码分析 (SAST)漏洞分析DevSecOps
GitHubjagracey/regex-dos

RegEx-DoS

👮 👊 正则表达式拒绝服务(ReDoS)扫描器

查看仓库
182198年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

👮 👊 正则表达式拒绝服务(ReDos)扫描器

帮助您发现易受拒绝服务攻击的正则表达式。

请在投稿前阅读贡献指南。



ReDoS 扫描运行时的截图。

什么是正则表达式拒绝服务?

维基百科和OWASP对此有不错的解释。基本上,某些正则表达式在处理特定输入时可能需要极长的时间。下面是一个真实示例。

root@kitploit:~
>   console.time('benchmark');
    /^(([a-z])+.)+[A-Z](https://github.com/jagracey/regex-dos/blob/HEAD/%5Ba-z%5D)+$/.test('aaaaaaaaaaaaaaa');
    console.timeEnd('benchmark');
< benchmark: 0.060ms

>   console.time('benchmark');
    /^(([a-z])+.)+[A-Z](https://github.com/jagracey/regex-dos/blob/HEAD/%5Ba-z%5D)+$/.test('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
    console.timeEnd('benchmark');
< benchmark: 308.656ms

>   console.time('benchmark');
    /^(([a-z])+.)+[A-Z](https://github.com/jagracey/regex-dos/blob/HEAD/%5Ba-z%5D)+$/.test('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
    console.timeEnd('benchmark');
< benchmark: 3179.829ms


>   console.time('benchmark');
    /^(([a-z])+.)+[A-Z](https://github.com/jagracey/regex-dos/blob/HEAD/%5Ba-z%5D)+$/.test('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
    console.timeEnd('benchmark');
< benchmark: 22159.769ms  // 22 seconds

>   // You can guess what would happen if you test the RegEx with 100 repeating characters.
    console.time('benchmark');
    /^(([a-z])+.)+[A-Z](https://github.com/jagracey/regex-dos/blob/HEAD/%5Ba-z%5D)+$/.test( 'a'.repeat(100) );
    console.timeEnd('benchmark');
< benchmark: lol.....no.


# 安装 ReDoS

像往常一样,使用 NPM 安装。

root@kitploit:~
npm install redos

您可以在命令行中运行 redos:

root@kitploit:~
# 使用 "Find" 对任意一组 JS 文件运行 Regex-DoS。
find . -name "*.js" -not -path "./node_modules/*" -exec redos {} \;

或者作为 node 模块运行:

root@kitploit:~
var redos = require('redos');

// 使用回调
redos(" 'aaaa'.split(/a+b?c*/g); ", function(regexNodes){
  console.log( regexNodes.results() );
};


// 或者不使用回调
redos(" 'aaaa'.split(/a+b?c*/g); ").results();


// 或者使用更合适的内容进行解析
const fs      = require('fs');
const content = fs.readFileSync('./foobar.js'); // <--- 您自己的文件
redos( content ).results();


测试

即将推出?



贡献

有关如何贡献的详细信息,请参阅贡献指南。内容可能和您预期的一样。

行为准则

有关详细信息,请参阅行为准则。基本可以归结为:

为了营造一个开放和友好的环境,我们作为 贡献者和维护者承诺,让参与我们的项目和 社区对每个人来说都是一种无骚扰的体验,无论年龄、体型、 残疾、种族、性别认同与表达、经验水平、 国籍、个人外貌、种族、宗教或性认同与取向如何。

许可证

MIT 许可证(MIT)

版权所有 (c) 2016 John Gracey

特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向其提供本软件的人员这样做,但须满足以下条件:

上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。

本软件按“现状”提供,不附带任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权保证。在任何情况下,作者或版权持有人均不对因使用本软件或与本软件的使用或其他交易有关的任何索赔、损害或其他责任负责,无论是合同行为、侵权行为还是其他行为。

下载工具