|
1 | | -# Web-Chains |
| 1 | +# web-chains |
2 | 2 |
|
3 | | -详细食用文档:https://www.yuque.com/shenjingwa-leuvd/wpqdhf/eekyvau9fcblzzt0?singleDoc# |
| 3 | + |
| 4 | + |
4 | 5 |
|
| 6 | +`web-chains` 项目,又名 `java-chains` 项目,由 `Ar3h` 师傅主导开发,漏洞百出和代码审计星球支持 |
5 | 7 |
|
| 8 | +<center><img src="/img/000.png" alt=""></center> |
6 | 9 |
|
7 | | -## 简介 |
| 10 | +我们站在巨人肩膀上,致力于打造最强的 `Java` 安全研究领域的瑞士军刀 |
8 | 11 |
|
9 | | -web-chains 包含但不限于以下功能: |
| 12 | + |
10 | 13 |
|
11 | | -- Java 反序列化Payload生成 |
12 | | - - 支持的混淆:随机集合混淆、垃圾类插入、TC_RESET 填充、utf8 overlong encoding 混淆 |
13 | | -- Hessian 1/2 反序列化Payload生成 |
| 14 | +## 介绍 |
14 | 15 |
|
15 | | - - Hessian1 支持生成 HessianServlet 格式反序列化数据 |
| 16 | +`web-chains` 包含但不限于以下功能: |
16 | 17 |
|
17 | | - - 支持的混淆:随机集合混淆、垃圾类插入、utf8 overlong encoding 混淆 |
18 | | -- 字节码生成 |
| 18 | +- `Java` 反序列化原生 `Payload` 生成 |
| 19 | +- `Hessian` 1/2 反序列化 `Payload` 生成 |
| 20 | +- `Hessian1` 支持生成 `HessianServlet` 格式反序列化数据 |
| 21 | +- `Shiro` 数据生成(自定义 `KEY` 使用 `GCM` 混淆字符等) |
| 22 | +- `AMF3` 数据生成(基于原生数据多种进阶组合) |
| 23 | +- `XStream` 数据生成(基于原生数据多种进阶组合) |
| 24 | +- `BCEL` 字节码生成(直接执行命令,内存马生成,回显生成,探测字节码,读写文件) |
| 25 | +- `Class` 字节码生成(直接执行命令,内存马生成,回显生成,探测字节码,读写文件) |
| 26 | +- 多种数据库 `Payload` 生成(`Derby` | `H2` | `PostgreSql` | `Sqlite`) |
| 27 | +- `Fastjson/SnakeYAML/SpringBeanXML/Velocity/OGNL/MVEL/SPEL/JS/GROOVY` |
19 | 28 |
|
20 | | - - 支持自定义类名 |
| 29 | +一些混淆方式: |
21 | 30 |
|
22 | | - - 支持自定义字节码版本 |
| 31 | +- 随机集合混淆 |
| 32 | +- 垃圾类插入 |
| 33 | +- 去除字节码符号信息 |
| 34 | +- `TC_RESET` 填充 |
| 35 | +- `UTF-8 Overlong Encoding` 混淆 |
23 | 36 |
|
24 | | - - 支持生成TemplatesImpl格式 Payload:实现 AbstractTranslet 接口 |
| 37 | +一些高级选项: |
25 | 38 |
|
26 | | - - 支持生成SnakeYaml Jar 格式 Payload:实现 javax.script.ScriptEngineFactory 接口 |
| 39 | +- 自定义类名/定义字节码版本 |
| 40 | +- 选择 `Commons Beanutils` 链的多种 `comparator` 类型 |
| 41 | +- 支持生成 `TemplatesImpl` 格式 |
| 42 | +- 支持生成 `SnakeYaml Jar` 格式 |
| 43 | +- 支持生成 `Fastjson Groovy` 格式 |
| 44 | +- 支持生成 `JavaWrapper` 格式 |
| 45 | +- 支持生成 `charsets.jar` 格式 |
| 46 | +- 支持增强魔改版 `JMG/JEG` 格式 (java echo generator, java memshell generator) |
27 | 47 |
|
28 | | - - 支持生成Fastjson Groovy 格式 Payload:实现 ASTTransformation 接口 |
29 | | - - 支持生成 JavaWrapper 格式 Payload:添加 `public static void _main(String[] argv) {}` 方法 |
30 | | - - 支持生成 charsets.jar 格式 Payload |
| 48 | +Exploit 模块: |
31 | 49 |
|
32 | | - - 内置 java echo generator(Jeg)、java memshell generator(Jmg),并根据实战进行魔改 |
| 50 | +- JNDI (远程加载字节码,高版本反序列化绕过,高版本 `ref` 绕过,) |
| 51 | +- Fake Mysql Server (经典 `JDBC` 攻击必备,基于生成模块多种进阶组合) |
| 52 | +- JRMPListener / TCP Server(Derby RCE)/ HTTP Server |
33 | 53 |
|
34 | | - - ... |
35 | | -- Exploit 模块 |
36 | | - - JNDI Exploit |
37 | | - - Fake Mysql |
38 | | - - JRMPListener |
39 | | - - Tcp Server(Derby RCE) |
40 | | - - HTTP Server |
| 54 | +使用 `Fake Mysql Server` 进行测试 |
41 | 55 |
|
| 56 | + |
42 | 57 |
|
| 58 | +正在开发中: |
43 | 59 |
|
| 60 | +- 一个完善的插件系统 |
| 61 | +- 更多的可用的 `gadget` 和 `payload` 生成 |
| 62 | +- 字节码混淆(方法名/隐藏方法/花指令/异或混淆等) |
| 63 | +- 多种多样的可能的输出类型指定 |
| 64 | +- 覆盖更全面的测试和报告 |
| 65 | +- 多种 `gadget` 排序方式可选 |
| 66 | +- 用户自定义偏好 `gadget` 和 `payload` 展示 |
| 67 | +- 更多功能... |
44 | 68 |
|
45 | | - |
| 69 | +## 快速开始 |
46 | 70 |
|
| 71 | +你可以通过 `docker` 一条命令启动 `web-chains` 项目(这也是推荐做法) |
47 | 72 |
|
| 73 | +```shell |
| 74 | +docker run -d \ |
| 75 | + --name web-chains \ |
| 76 | + --restart=always \ |
| 77 | + -p 8011:8011 \ |
| 78 | + -p 58080:58080 \ |
| 79 | + -p 50389:50389 \ |
| 80 | + -p 13999:13999 \ |
| 81 | + -p 3308:3308 \ |
| 82 | + -p 11527:11527 \ |
| 83 | + -p 50000:50000 \ |
| 84 | + javachains/webchains:1.1.0 |
| 85 | +``` |
48 | 86 |
|
49 | | -## 更多 |
| 87 | +生成功能仅使用 `8011` 端口即可,其他端口为 `exploit` 模块使用 |
50 | 88 |
|
51 | | -[](https://star-history.com/#Ar3h/web-chains&Date) |
| 89 | +请使用以下命令获得随机的强用户名密码 |
52 | 90 |
|
| 91 | +```shell |
| 92 | +docker logs $(docker ps | grep javachains/webchains | awk '{print $1}') | grep -E 'username|password' |
| 93 | +``` |
53 | 94 |
|
| 95 | +输出示例 |
54 | 96 |
|
| 97 | +```text |
| 98 | +11-12 06:59:53.301 INFO [main] c.a.c.w.c.SecurityConfig | | generated random username: fBTWDfwlapmq |
| 99 | +11-12 06:59:53.301 INFO [main] c.a.c.w.c.SecurityConfig | | generated random password: XSsWerJFGcCjB8FU |
| 100 | +``` |
| 101 | + |
| 102 | +访问 `http://your-ip:8011` 即可(使用这里的用户名密码登录) |
| 103 | + |
| 104 | +你也可以直接使用 `jar` 版本,使用 `java -jar web-chains.jar` 即可启动(推荐使用 `docker` 方式) |
| 105 | + |
| 106 | +**特别注意:我们只对 8011 端口进行了保护,需要登陆后访问,其他端口可能存在被反制的风险,请自行注意** |
| 107 | + |
| 108 | +## 参考和致谢 |
| 109 | + |
| 110 | +仅支持个人研究学习,切勿用于非法犯罪活动。 |
| 111 | + |
| 112 | +本项目的开发者、提供者和维护者不对使用者使用工具的行为和后果负责,工具的使用者应自行承担风险。 |
| 113 | + |
| 114 | +[更新日志 | CHANGELOG](CHANGELOG.md) |
| 115 | + |
| 116 | +一些参考文档:https://java-chains.yuque.com/org-wiki-java-chains-woznyq/evwydq/tu2n6ycvlasvcw19 |
| 117 | + |
| 118 | +参考致谢: |
| 119 | + |
| 120 | +- https://github.com/wh1t3p1g/ysomap |
| 121 | +- https://github.com/qi4L/JYso |
| 122 | +- https://github.com/X1r0z/JNDIMap |
| 123 | +- https://github.com/Whoopsunix/PPPYSO |
| 124 | +- https://github.com/4ra1n/mysql-fake-server |
| 125 | +- https://github.com/mbechler/marshalsec |
| 126 | +- https://github.com/frohoff/ysoserial |
| 127 | +- https://github.com/H4cking2theGate/ysogate |
| 128 | +- https://github.com/Bl0omZ/JNDIEXP |
| 129 | +- https://github.com/kezibei/Urldns |
| 130 | +- https://github.com/rebeyond/JNDInjector |
| 131 | +- https://github.dev/LxxxSec/CTF-Java-Gadget |
| 132 | +- https://xz.aliyun.com/t/5381 |
| 133 | +- http://rui0.cn/archives/1408 |
| 134 | + |
| 135 | +## Star History |
| 136 | + |
| 137 | +[](https://star-history.com/#java-chains/web-chains&Date) |
0 commit comments