万能网站密码爆破测试工具,太强了 !

article/2025/9/28 21:27:41

内容来源:https://github.com/whwlsfb/BurpCrypto

BurpCrypto是一款支持多种加密算法、或直接执行浏览器JS代码的BurpSuit插件。

一、编译

mvn package

二、为什么解决了痛点

目前越来越多的网站系统在登录接口、数据请求接口中加入各式各样的加密算法,甚至有些网站在每次请求前都动态请求加密密钥等措施,对接口渗透工作造成较大障碍。依赖于BurpSuite中的那些编码方式、Hash算法已经远远不够,通过BurpCrypto内置的RSA、AES、DES模块可应对较为简单的前端加密接口,较为复杂的加密算法,可使用ExecJS模块直接手动编写处理代码。同时为了降低ExecJS模块的上手难度,未来将推出远程JS模块仓库,支持远程加载已经测试通过的JS功能代码,方便直接调用。

三、未来开发计划

四、安装

BurpCrypto可从其官方Github页面进行下载已编译好的版本,或下载源代码本地编译,然后在BurpSuite的扩展列表中添加插件,等待Output中输出BurpCrypto loaded successfully!则表示插件加载成功。

五、基础加密模块使用

基础编码方式,由于不同网站开发人员的使用习惯,加密时所使用的密钥、加密后的密文会使用不同的编码方式。目前插件内密钥输入所支持的编码方式有如下三种

  • Base64

  • HEX

  • UTF8String

密文输出所支持的编码方式有如下两种

  • Base64

  • HEX

ExecJS模块的输出内容由JS代码决定。

六、编码方式的辨别方法

为了照顾到对编码方式不了解的朋友,此处会简单讲解这些编码方式的辨别方法,已经了解的朋友可直接跳过参阅下一章节的具体使用讲解.

Base64编码与HEX编码常常用于编码二进制数据,UTF8String则是我们操作系统、网页中最常见的字符串的编码方式,下方是Base64、HEX、UTF8String编码的示例:

对字符串"test_z"进行Base64、HEX编码的结果
Base64:dGVzdF96
HEX:746573745f7a
UTF8String:test_z

AES和DES加密都属于对称加密算法,既加解密使用同一套密钥的加密算法,同时也是目前前端加密中较为常见的加密算法,目前插件支持的AES加密算法有:

  • AES/CBC/PKCS5Padding

  • AES/CBC/NoPadding

  • AES/CBC/ZeroPadding

  • AES/ECB/PKCS5Padding

  • AES/ECB/NoPadding

  • AES/ECB/ZeroPadding

  • AES/OFB/PKCS5Padding

  • AES/OFB/NoPadding

  • AES/OFB/ZeroPadding

  • AES/CFB/PKCS5Padding

  • AES/CFB/NoPadding

  • AES/CFB/ZeroPadding

  • AES/CTR/PKCS5Padding

  • AES/CTR/NoPadding

  • AES/CTR/ZeroPadding

DES加密算法有:

  • DES/CBC/PKCS5Padding

  • DES/CBC/ZeroPadding

  • DES/CBC/NoPadding

  • DES/ECB/PKCS5Padding

  • DES/ECB/ZeroPadding

  • DES/ECB/NoPadding

  • DES/OFB/PKCS5Padding

  • DES/OFB/ZeroPadding

  • DES/OFB/NoPadding

  • DES/CFB/PKCS5Padding

  • DES/CFB/ZeroPadding

  • DES/CFB/NoPadding

  • DESede/CBC/PKCS5Padding

  • DESede/CBC/ZeroPadding

  • DESede/CBC/NoPadding

  • DESede/ECB/PKCS5Padding

  • DESede/ECB/ZeroPadding

  • DESede/ECB/NoPadding

  • DESede/OFB/PKCS5Padding

  • DESede/OFB/ZeroPadding

  • DESede/OFB/NoPadding

  • DESede/CFB/PKCS5Padding

  • DESede/CFB/ZeroPadding

  • DESede/CFB/NoPadding

  • strEnc

在前端JS中常常会使用PKCS7Padding,在本模块中可使用PKCS5Padding代替,不影响使用。

DES加密中的strEnc算法是取自作者Guapo的一种3DES的模块,在少数系统中被使用,此处为了方便使用也引入了进来。

非对称加密算法

RSA算法则属于非对称加密算法,密钥分为公钥与私钥,暂时仅支持公钥加密,RSA加密支持两种公钥格式的输入,分别为

  • X509

  • ModulusAndExponent

X509密钥格式表现为一串由Base64编码后的字符串,常常以MIG开头。ModulusAndExponent(模数,指数)则表现为两个HEX编码的参数,Modulus是模数,常常较长,Exponent是指数,常常只有6位,以下为密钥示例:

X509: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCC0hrRIjb3noDWNtbDpANbjt5Iwu2NFeDwU16Ec87ToqeoIm2KI+cOs81JP9aTDk/jkAlU97mN8wZkEMDr5utAZtMVht7GLX33Wx9XjqxUsDfsGkqNL8dXJklWDu9Zh80Ui2Ug+340d5dZtKtd+nv09QZqGjdnSp9PTfFDBY133QIDAQAB
ModulusAndExponent:Modulus: A1E4D93618B8B240530853E87738403851E15BBB77421F9B2377FB0B4F1C6FC235EAEC92EA25BB76AC221DCE90173A2E232FE1511909C76B15251D4059B288E709C1EF86BCF692757AAD736882DD1E98BEDFED9311A3C22C40657C9A52880BDC4B9E539041D44D52CB26AD13AB086F7DC294D144D6633A62EF91CA1775EB9A09Exponent: 010001

七、使用

使用方式也较为简单,首先判断相关接口的加密算法,填入相应算法的加密密钥,点击Add processor,在弹出的加密配置命名输入对话框中,给予一个易于分辨的名称,提示Apply processor success!即表示添加成功。

此处以AES的CBC模式,填充Pkcs7,Key:Y3MxMTg1MzUyOS4x,IV:9875643210132456,Base64编码的方式做为示例。

若要删除processor则要点击Remove processor,输入刚刚编写的配置名,即可删除。

关于前端加密的分析过程可参阅jsEncrypter开发者c0ny1的文章:https://gv7.me/articles/2018/fast-locate-the-front-end-encryption-method/

八、补充阅读

对单加密参数的登录接口进行密码爆破的一种方法,ExecJS模块使用由于软件开发的复杂性,诸如多层嵌套加密、引入时间变量、动态密钥、魔改加密算法、新算法的涌现,插件注定永远无法做到对所有加密算法的百分百覆盖,所以提供了ExecJS模块,为动手能力较强的使用者提供一条新途径。

因JS新特性的快速迭代,插件中内置了Rhino、HtmlUnit、Jre内置三种JS执行引擎,各种执行引擎的优劣势可参阅BurpCrypto未来开发计划中对于各个引擎的特性介绍。

九、编写简单的JS脚本

使用ExecJS模块前需要先切换至插件的ExecJS选项卡,像常见编程语言一样,你需要编写一个入口函数。不过不同于其他编程语言的入口函数,插件将会把待处理/加密的内容传递给入口函数的第一个参数,而你编写的入口函数则需要在处理结束后返回处理结果。

为了方便使用,插件内置了一个快速生成函数体的菜单,在代码编辑器中的右键菜单中点击Append Simple Function,即可生成一个空函数calc,并自动在下面的入口函数名填写入口函数为calc

我们可以对该函数进行一些简单的修改,下面是一个示例脚本,该脚本将会把输入的内容倒转后再返回。

function calc(pass) {return pass.split("").reverse().join("");
}

编辑完成后,点击Add processor即可添加成功。

十、引用内置JS库

目前内置的JS库只有MD5与Base64,后续版本将会上线在线JS仓库,操作步骤将会发生变动。

为避免常见库的频繁整理导入的工作量,插件目前内置了MD5和Base64库,使用方法为在编辑器的右键菜单中的Include Snippet选中需要的JS库,即可引入。

十一、在功能区中调用插件

加密,通过在上述几个模块中成功添加processor后,即可通过以下两个渠道进行使用。

QuickCrypto(全局调用)

BurpCrypto几乎可以在BurpSuite的任何位置进行调用,调用方法也较为简单,以下动图为示例:

十二、Intruder(爆破模块)

在爆破模块中引用:

十三、解密(查询原文)

由于部分算法产生的结果具有不可逆性(哈希算法、自定义的JS代码等),所以通过本插件生成的所有结果均被保存到本地的K/V数据库中,可以通过插件中的Get PlainText功能获取原始明文。

使用方法为完整选中密文内容,右单击后找到BurpCrypto菜单中的Get PlainText功能,

此处演示的是RSA公钥加密后通过密文查询原始明文。

十四、结尾

以上为本插件的使用说明,后续将会将会陆续加入国密算法、ExecJS远程模块,模块互调等小功能更新与Bug修复,如果各位师傅有更多的建议也欢迎提PR或者Issure,谢谢!

本公号发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!


http://chatgpt.dhexx.cn/article/VwcHNd2w.shtml

相关文章

一个简单的Python暴力破解网站登录密码脚本

目录: 关键代码解释完整代码方法一运行结果 方法二运行结果 测试靶机为DVWA,适合DVWA暴力破解模块的Low和Medium等级 关键代码解释 url指定url地址 url "http://192.168.171.2/dvwa/vulnerabilities/brute/"header设置请求头 header {Us…

【谨慎学习】手把手教你破解网站管理后台帐号密码

【导读】 对于网站运行的个人站长而言,最担心的是应如何有效且安全的去管理自己的网站,否则自己辛辛苦苦经营的网站就会被不请自来的不速之客给攻破,轻则站点数据被窃取,重则整个网站都被攻陷,导致无法恢复。 本文主…

如何破解网络密码?(2种方法)

方法1:直接找网络的主人问(没有技术含量,不要脸的话就去问吧) 如果别人不告诉你怎么办? 两种解决方法: (1)叫你孩子去问,让他(她)撒撒娇~ &am…

黑客入门破解网络密码常用九个方法

个人网络密码安全是整个网络安全的一个重要环节,如果个人密码遭到黑客破解,将引起非常严重的后果。比如,银行卡账户密码被盗,你就给别人打工了。所以,增强网民的网络安全意识是网络普及进程的一个重要环节。 常言道&a…

Burp Suite暴力破解网站密码

一、准备: 1,靶场:个人选择DVWA。 2,工具:Burp Suite。 3,密码字典。二、开搞!: 注:任何未经授权的渗透测试皆为违法,本文仅供学习,维护网络安全…

Oracle数据误删恢复

Oracle数据误删恢复 欢迎关注微信公众号: 程序员小圈圈 转载请标明出处^_^ 原文首发于: www.zhangruibin.com 本文出自于: RebornChang的博客 对于删除数据,我们大致可以分为两种。 ①一种是在控制台执行的sql进行数据删除。 ②一…

SOLARIS系统下ORACLE数据恢复案例

服务器数据恢复环境: 两台SPARC SOLARIS操作系统服务器通过光纤交换机共享一台存储作为集群使用。平时是一台服务器(以下称为主服务器)在运行,如果该服务器发生故障宕机,只需要将这台服务器关机后开启另外一台服务器&a…

Oracle数据恢复

1、查询Oracle日志表 select * from v$sql ; select * FROM v$sqlarea ; 2、查询表的最新操作,找到被删除的数据 select * from v$sql where sql_text like %ABNORMAL_ORDERS% ORDER BY FIRST_LOAD_TIME desc; 找到操作的时间 FIRST_LOAD_TIME,SQ…

【服务器数据恢复】EXT3文件系统下Oracle数据库数据恢复案例

服务器数据恢复环境: 华为OceanStor某型号存储,十几块FC硬盘组建一组RAID5磁盘阵列,配备了一块热备盘;上层使用EXT3文件系统,配置了oracle数据库。 服务器故障: 该存储RAID5中的一块硬盘未知原因离线&…

Oracle-Oracle数据库备份与恢复

Oracle数据库备份与恢复 下面通过一些简单的例子来了解一下: Oracle数据库各种物理备份的方法。Oracle数据库各种物理恢复的方法利用RMAN工具进行数据库的备份与恢复。数据的导出与导入操作。 (1)关闭BOOKSALES数据库,进行一次完全冷备份。 select file…

Oracle—数据恢复

文档结构 1、恢复原理1.1、recyclebin(回收站)相关操作 1.2、archived redo(归档日志)1.3、supplemental log(补充日志) 2、恢复场景2.1、定义删除2.2、记录删除2.2.1、undo恢复2.2.2、redo恢复2.2.3、dbms…

Oracle数据库数据丢失恢复的几种方法总结

根据oracle数据库的特点和提供的工具,主要方法有以下几种方法: 利用逻辑备份使用import工具丢失数据的表 利用物理备份来通过还原数据文件并进行不完全恢复 利用dbms_logmnr包从redo log文件中恢复 利用flashback特性恢复数据 前提 为了方便…

QSS美化

摘自:https://qtdebug.com/qtbook-qss/ Qt 提供的 widget 的默认外观很多时候都不符合项目的界面需求,必须要改,修改一个 widget 的外观(Look and Feel)有以下的方法: 继承 Widget,然后在 pain…

Qss换肤设置

前言:本文大部分的内容来源于同类博客。章节1.1-1.3 摘自参考文档:http://www.th7.cn/web/html-css/201405/37286.shtml。1.4摘自参考文档。https://blog.csdn.net/Staranywhere/article/details/106967756。本文仅用作知识点整理。 目录: 1…

qss之QRadioButton

先来个示例 QRadioButton {font-family: "Microsoft YaHei";font-size: 14px;color: #BDC8E2;background-color: #2E3648; }效果图如下: 上面的例子是基本的样式设置,下面我们将探讨 QRadioButton 各种样式设置: 字体样式 font…

QSS的使用

QSS官方文档:https://doc.qt.io/qt-5/stylesheet-reference.html 图标制作例子: normal hover press disable 图标制作 按钮设计指南 按钮多态的几种方法 一、程序应用qss文件 QString qssPath QString("%1/stylesheet/style.qss").arg(a.applicationD…

QSS属性大全

1、选择器 1.1、通用选择器 /* 格式:* { 属性: 值; } 通用选择器一般用来给应用程序设置统一的字体,大小,颜色等 */ * {font-family: "Microsoft YaHei";outline: 0px;color: #DCDCDC; }1.2、类型选择器 /* 格式: 类…

Qt之QSS使用与基本语法

一、QSS介绍 QSS是一种从CSS借鉴过来的机制,用来实现对控件外观的自定义。但是它比CSS功能要弱化一些,有一些属性和选择器,QSS并没有。 Qt中的各个控件可以使用QSS来实现界面的个性化定制、美化,使用起来也是特别方便的。 二、Q…

QTreeWidget样式qss

文章目录 QTreeWidget/QTreeView样式QHeaderView背景属性alternate-background-color:交替背景色background:背景属性background-color:控件的背景色background-image:用于控件的背景图像。如果图像有透明部分则显示透明部分。bac…

qss文件使用

每个控件提供的样式太少?只能简单的设置颜色、字体颜色、字体大小?每次设置都要输入好长一串好麻烦? 现在你只要写一段qss就能满足你的一切需求,实现效果如下 本文将从下面三个方向慢慢阐述qss的使用 1、如何使用qss 2、如何修…