{"id":13801644,"url":"https://github.com/whwlsfb/BurpCrypto","last_synced_at":"2025-05-13T11:31:34.008Z","repository":{"id":37425388,"uuid":"267751675","full_name":"whwlsfb/BurpCrypto","owner":"whwlsfb","description":"BurpCrypto is a collection of burpsuite encryption plug-ins, support AES/RSA/DES/ExecJs(execute JS encryption code in burpsuite). 支持多种加密算法或直接执行JS代码的用于爆破前端加密的BurpSuite插件","archived":false,"fork":false,"pushed_at":"2023-08-04T02:54:21.000Z","size":11493,"stargazers_count":1499,"open_issues_count":15,"forks_count":172,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-04-08T13:13:37.026Z","etag":null,"topics":["burp-extensions","burp-plugin","burpcrypto","burpsuite","burpsuite-extender","ctf","ctf-tools","execute-js-encryption","fuzz-testing","payloads"],"latest_commit_sha":null,"homepage":"https://blog.wanghw.cn/burpcrypto","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/whwlsfb.png","metadata":{"files":{"readme":"README-zh_CN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-29T02:59:15.000Z","updated_at":"2025-04-04T02:37:41.000Z","dependencies_parsed_at":"2024-09-21T04:30:43.839Z","dependency_job_id":"57c9c50c-e5a6-450a-9830-d0996d916602","html_url":"https://github.com/whwlsfb/BurpCrypto","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whwlsfb%2FBurpCrypto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whwlsfb%2FBurpCrypto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whwlsfb%2FBurpCrypto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whwlsfb%2FBurpCrypto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/whwlsfb","download_url":"https://codeload.github.com/whwlsfb/BurpCrypto/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253932900,"owners_count":21986473,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["burp-extensions","burp-plugin","burpcrypto","burpsuite","burpsuite-extender","ctf","ctf-tools","execute-js-encryption","fuzz-testing","payloads"],"created_at":"2024-08-04T00:01:25.290Z","updated_at":"2025-05-13T11:31:29.962Z","avatar_url":"https://github.com/whwlsfb.png","language":"Java","readme":"# BurpCrypto\n[![Releases](https://img.shields.io/github/v/release/whwlsfb/BurpCrypto.svg?include_prereleases\u0026style=square)](https://github.com/whwlsfb/BurpCrypto/releases)\n[![Downloads](https://img.shields.io/github/downloads/whwlsfb/BurpCrypto/total?label=Release%20Download)](https://github.com/whwlsfb/BurpCrypto/releases/latest)\n\nBurpCrypto是一款支持多种加密算法、或直接执行浏览器JS代码的BurpSuite插件。\n\n[English](./README.md) | 简体中文\n\n# 导航\n\n* [编译](#编译)\n* [为了解决什么痛点](#为了解决什么痛点)\n* [未来开发计划](#未来开发计划)\n* [安装](#安装)\n* [基础加密模块使用](#基础加密模块使用)\n   * [基础编码方式](#基础编码方式)\n   * [编码方式的辨别方法](#编码方式的辨别方法)\n   * [AES/DES/RSA加密](#aesdesrsa加密)\n       * [对称加密算法](#对称加密算法) \n       * [非对称加密算法](#非对称加密算法)\n       * [使用](#使用)\n       * [补充阅读](#补充阅读)\n* [ExecJS模块使用](#execjs模块使用)\n   * [编写简单的JS脚本](#编写简单的js脚本)\n   * [引用内置JS库](#引用内置js库)\n* [在功能区中调用插件](#在功能区中调用插件)\n   * [加密](#加密)\n       * [QuickCrypto（全局调用）](#quickcrypto全局调用) \n       * [Intruder（爆破模块）](#intruder爆破模块)\n   * [解密（查询原文）](#解密查询原文)\n* [404Starlink](#404starlink)\n* [其他注意事项](#其他注意事项)\n   * [数据库清理](#数据库清理)\n\n# 编译\n```\n$ mvn package\n```\n\n# 为了解决什么痛点\n\n目前越来越多的网站系统在登录接口、数据请求接口中加入各式各样的加密算法，甚至有些网站在每次请求前都动态请求加密密钥等措施，对接口渗透工作造成较大障碍。依赖于BurpSuite中的那些编码方式、Hash算法已经远远不够，通过BurpCrypto内置的RSA、AES、DES模块可应对较为简单的前端加密接口，较为复杂的加密算法，可使用ExecJS模块直接手动编写处理代码。同时为了降低ExecJS模块的上手难度，未来将推出远程[JS模块仓库](https://github.com/whwlsfb/BurpCrypto-JsLibrary)，支持远程加载已经测试通过的JS功能代码，方便直接调用。\n\n# 未来开发计划\n\n- [x] AES/DES加密支持\n- [x] RSA公钥加密支持\n- [ ] RSA私钥加密支持\n- [ ] 国密加密算法支持\n- [x] ExecJS代码执行模块\n\t- [x] 多JS执行引擎切换（Rhino、HtmlUnit、Jre内置）\n\t- [ ] 远程JS仓库支持\n\n\n# 安装\nBurpCrypto可从其官方[Github](https://github.com/whwlsfb/BurpCrypto/releases)页面进行下载已编译好的版本，或下载源代码本地编译，然后在BurpSuite的扩展列表中添加插件，等待Output中输出`BurpCrypto loaded successfully!`则表示插件加载成功。\n\n# 基础加密模块使用\n\n## 基础编码方式\n\n由于不同网站开发人员的使用习惯，加密时所使用的密钥、加密后的密文会使用不同的编码方式。目前插件内密钥输入所支持的编码方式有如下三种\n\n- Base64\n- HEX\n- UTF8String\n\n密文输出所支持的编码方式有如下两种\n\n- Base64\n- HEX\n\nExecJS模块的输出内容由JS代码决定。\n\n\n### 编码方式的辨别方法\n\n\u003e 为了照顾到对编码方式不了解的朋友，此处会简单讲解这些编码方式的辨别方法，已经了解的朋友可直接跳过参阅下一章节的具体使用讲解.\n\nBase64编码与HEX编码常常用于编码二进制数据，UTF8String则是我们操作系统、网页中最常见的字符串的编码方式，下方是Base64、HEX、UTF8String编码的示例：\n```text\n对字符串\"test_z\"进行Base64、HEX编码的结果\nBase64：dGVzdF96\nHEX：746573745f7a\nUTF8String：test_z\n```\n\n## AES/DES/RSA加密\n\n### 对称加密算法\nAES和DES加密都属于对称加密算法，既加解密使用同一套密钥的加密算法，同时也是目前前端加密中较为常见的加密算法，目前插件支持的AES加密算法有：\n\n- AES/CBC/PKCS5Padding\n- AES/CBC/NoPadding\n- AES/CBC/ZeroPadding\n- AES/ECB/PKCS5Padding\n- AES/ECB/NoPadding\n- AES/ECB/ZeroPadding\n- AES/OFB/PKCS5Padding\n- AES/OFB/NoPadding\n- AES/OFB/ZeroPadding\n- AES/CFB/PKCS5Padding\n- AES/CFB/NoPadding\n- AES/CFB/ZeroPadding\n- AES/CTR/PKCS5Padding\n- AES/CTR/NoPadding\n- AES/CTR/ZeroPadding\n\nDES加密算法有：\n- DES/CBC/PKCS5Padding\n- DES/CBC/ZeroPadding\n- DES/CBC/NoPadding\n- DES/ECB/PKCS5Padding\n- DES/ECB/ZeroPadding\n- DES/ECB/NoPadding\n- DES/OFB/PKCS5Padding\n- DES/OFB/ZeroPadding\n- DES/OFB/NoPadding\n- DES/CFB/PKCS5Padding\n- DES/CFB/ZeroPadding\n- DES/CFB/NoPadding\n- DESede/CBC/PKCS5Padding\n- DESede/CBC/ZeroPadding\n- DESede/CBC/NoPadding\n- DESede/ECB/PKCS5Padding\n- DESede/ECB/ZeroPadding\n- DESede/ECB/NoPadding\n- DESede/OFB/PKCS5Padding\n- DESede/OFB/ZeroPadding\n- DESede/OFB/NoPadding\n- DESede/CFB/PKCS5Padding\n- DESede/CFB/ZeroPadding\n- DESede/CFB/NoPadding\n- strEnc\n\n\u003e 在前端JS中常常会使用PKCS7Padding，在本模块中可使用PKCS5Padding代替，不影响使用。\n\u003e \n\u003e DES加密中的strEnc算法是取自作者Guapo的一种3DES的模块，在少数系统中被使用，此处为了方便使用也引入了进来。\n\n\n\n### 非对称加密算法\n\nRSA算法则属于非对称加密算法，密钥分为公钥与私钥，暂时仅支持公钥加密，RSA加密支持两种公钥格式的输入，分别为\n- X509\n- ModulusAndExponent\n\nX509密钥格式表现为一串由Base64编码后的字符串，常常以`MIG`开头。ModulusAndExponent(模数，指数)则表现为两个HEX编码的参数，Modulus是模数，常常较长，Exponent是指数，常常只有6位，以下为密钥示例：\n```yaml\nX509: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCC0hrRIjb3noDWNtbDpANbjt5Iwu2NFeDwU16Ec87ToqeoIm2KI+cOs81JP9aTDk/jkAlU97mN8wZkEMDr5utAZtMVht7GLX33Wx9XjqxUsDfsGkqNL8dXJklWDu9Zh80Ui2Ug+340d5dZtKtd+nv09QZqGjdnSp9PTfFDBY133QIDAQAB\nModulusAndExponent:\n  Modulus: A1E4D93618B8B240530853E87738403851E15BBB77421F9B2377FB0B4F1C6FC235EAEC92EA25BB76AC221DCE90173A2E232FE1511909C76B15251D4059B288E709C1EF86BCF692757AAD736882DD1E98BEDFED9311A3C22C40657C9A52880BDC4B9E539041D44D52CB26AD13AB086F7DC294D144D6633A62EF91CA1775EB9A09\n  Exponent: 010001\n```\n\n### 使用\n\n使用方式也较为简单，首先判断相关接口的加密算法，填入相应算法的加密密钥，点击`Add processor`，在弹出的加密配置命名输入对话框中，给予一个易于分辨的名称，提示`Apply processor success!`即表示添加成功。\n\n此处以AES的CBC模式，填充Pkcs7，Key：Y3MxMTg1MzUyOS4x，IV：9875643210132456，Base64编码的方式做为示例。\n\n![](screenshot/aes-example.png)\n\n若要删除processor则要点击`Remove processor`，输入刚刚编写的配置名，即可删除。\n\n\u003e 关于前端加密的分析过程可参阅jsEncrypter开发者c0ny1的文章：\n\u003e https://gv7.me/articles/2018/fast-locate-the-front-end-encryption-method/\n\n### 补充阅读\n- [对单加密参数的登录接口进行密码爆破的一种方法](https://blog.wanghw.cn/security/burpcrypto-single-parameter-cryptoblast.html)\n\n# ExecJS模块使用\n\n由于软件开发的复杂性，诸如多层嵌套加密、引入时间变量、动态密钥、魔改加密算法、新算法的涌现，插件注定永远无法做到对所有加密算法的百分百覆盖，所以提供了ExecJS模块，为动手能力较强的使用者提供一条新途径。\n\n**【❗安全警告❗】：需要注意的是，由于部分引擎（例如：Rhino）提供了较高的灵活性，具有直接调用Java的内部组件的能力，可调用例如执行程序，读取、写入文件，发送网络请求等功能，所以建议不要使用来路不明的JS脚本，对于高度混淆的JS脚本也建议保持警惕，避免受到攻击。**\n\n\u003e 因JS新特性的快速迭代，插件中内置了Rhino、HtmlUnit、Jre内置三种JS执行引擎，各种执行引擎的优劣势可参阅[BurpCrypto未来开发计划](https://blog.wanghw.cn/security/burpcrypto-future-development-plan.html)中对于各个引擎的特性介绍。\n\n## 编写简单的JS脚本\n\n使用ExecJS模块前需要先切换至插件的`ExecJS`选项卡，像常见编程语言一样，你需要编写一个入口函数。不过不同于其他编程语言的入口函数，插件将会把待处理/加密的内容传递给入口函数的第一个参数，而你编写的入口函数则需要在处理结束后返回处理结果。\n\n为了方便使用，插件内置了一个快速生成函数体的菜单，在代码编辑器中的右键菜单中点击`Append Simple Function`，即可生成一个空函数`calc`，并自动在下面的入口函数名填写入口函数为`calc`。\n\n![](screenshot/3edcbb94284b418ba129f4a02c252cea.png)\n\n我们可以对该函数进行一些简单的修改，下面是一个示例脚本，该脚本将会把输入的内容倒转后再返回。\n\n```js\nfunction calc(pass) {\n     return pass.split(\"\").reverse().join(\"\");\n}\n```\n\n编辑完成后，点击`Add processor`即可添加成功。\n\n![](screenshot/3625cc83988f49d4b3dce1d7f604cdbd.png)\n\n## 引用内置JS库\n\n\u003e 目前内置的JS库只有MD5与Base64，后续版本将会上线在线JS仓库，操作步骤将会发生变动。\n\n为避免常见库的频繁整理导入的工作量，插件目前内置了MD5和Base64库，使用方法为在编辑器的右键菜单中的`Include Snippet`选中需要的JS库，即可引入。\n\n![](screenshot/55ae882934b448b3b3477bb6f6115f9a.png)\n\n# 在功能区中调用插件\n\n## 加密\n通过在上述几个模块中成功添加processor后，即可通过以下两个渠道进行使用。\n### QuickCrypto（全局调用）\nBurpCrypto几乎可以在BurpSuite的任何位置进行调用，调用方法也较为简单，以下动图为示例：\n\n![](screenshot/quick_crypto.gif)\n\n### Intruder（爆破模块）\n在爆破模块中引用：\n\n![](screenshot/execjs.gif)\n\n## 解密（查询原文）\n由于部分算法产生的结果具有不可逆性（哈希算法、自定义的JS代码等），所以通过本插件生成的所有结果均被保存到本地的K/V数据库中，可以通过插件中的`Get PlainText`功能获取原始明文。\n\n使用方法为完整选中密文内容，右单击后找到BurpCrypto菜单中的`Get PlainText`功能，\n\u003e 此处演示的是RSA公钥加密后通过密文查询原始明文。\n\n![](screenshot/aed8a864a19e40888b163abca1921a23.png)\n![](screenshot/48c6507e2471401aba3288bc920aa824.png)\n\n# 其他注意事项\n\n## 数据库清理\n\n本插件中使用了本地持久化的K/V数据库（leveldb），由于在爆破等使用场景时会写入大量的数据，长时间使用后将有可能会拖慢插件的响应速度。为了保证用户爆破数据不会丢失，插件将不会主动清理数据，所以建议用户确定不再需要陈旧的数据的时候，及时清理数据库。\n\nK/V数据库清理较为简单，首先需将BurpSuite完全退出，然后手动删除BurpSuite的jar文件同目录下的`BurpCrypto.ldb`文件夹即可\n\n# 404Starlink\n![png](https://github.com/knownsec/404StarLink-Project/raw/master/logo.png)\n\n现已加入 [404星链计划](https://github.com/knownsec/404StarLink)\n","funding_links":[],"categories":["Cryptography","Java","Java (504)","其他_安全与渗透"],"sub_categories":["SSRF","网络服务_其他"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhwlsfb%2FBurpCrypto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhwlsfb%2FBurpCrypto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhwlsfb%2FBurpCrypto/lists"}