Skip to content

Commit b0ca2cd

Browse files
committed
界面微调,增加s2-062
1 parent b6901ef commit b0ca2cd

32 files changed

+167
-347
lines changed

ExpDemo-JavaFX.iml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
99
<excludeFolder url="file://$MODULE_DIR$/target" />
1010
</content>
11-
<orderEntry type="inheritedJdk" />
11+
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
1212
<orderEntry type="sourceFolder" forTests="false" />
1313
<orderEntry type="library" name="Maven: com.jfoenix:jfoenix:8.0.10" level="project" />
1414
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.78" level="project" />

README.md

+4-149
Original file line numberDiff line numberDiff line change
@@ -1,154 +1,9 @@
11
## 0x01 这是个嘛?
22

3-
这是一个构建图形化漏洞利用的一个项目,已经写好架子,只需要往里填充exp即可,帮助安全人员快速构建一个图形化的、跨平台的漏洞利用工具。
3+
这是一个构建图形化漏洞利用的一个项目,原项目地址[https://github.com/yhy0/ExpDemo-JavaFX](https://github.com/yhy0/ExpDemo-JavaFX)
44

5-
虽然有很多优秀的命令行利用工具,但我觉得还是带界面的方便、直观。
5+
一个非常方便二次开发的图形化漏洞利用项目,快速上手
66

7-
使用本项目,你不需要懂太多Java语言,只需要了解基本的语法,参考自带的EXP例子,即可快速开发一款**属于你自己**的漏洞利用工具,建立自己的漏洞利用库。
7+
## 0x02 更新记录
88

9-
[ExpDemo-JavaFX工具新增漏洞编写教程](https://mp.weixin.qq.com/s/j5BHSbNZ76XbSZp6hFj9fw)
10-
11-
## 0x02 Demo
12-
13-
经过多次改版,这是最终(?)的效果。详细见[更新记录.md](更新记录.md)
14-
15-
16-
17-
https://user-images.githubusercontent.com/31311038/131443436-cbc91857-d19e-4721-b82c-eb160c2d8440.mp4
18-
19-
20-
21-
22-
<video controls="controls" loop="loop" autoplay="autoplay">
23-
<source src="images/神机.mp4" type="video/mp4">
24-
</video>
25-
26-
27-
## 0x03 编写属于你的图像化漏洞利用工具
28-
29-
#### 3.1 项目结构
30-
31-
```apl
32-
.
33-
├── ExpDemo-JavaFX.iml
34-
├── logs 运行日志文件
35-
│   ├── debug.log
36-
│   └── error.log
37-
├── pom.xml
38-
└── src
39-
└── main
40-
├── java
41-
│   └── fun
42-
│   └── fireline
43-
│   ├── AppStartUp.java 应用程序启动入口
44-
│   ├── controller 控制JavaFX图形化界面的各种显示、事件等,核心代码
45-
│   │   ├── MainController.java 主界面的controller,负责切换界面和基本信息显示
46-
│   │   ├── OAController.java OA漏洞利用切换界面的相关逻辑
47-
│   │   ├── OthersController.java 其他漏洞界面的相关逻辑
48-
│   │   ├── Struts2Controller.java Struts2漏洞利用界面的相关逻辑
49-
│   │   └── oa OA漏洞利用的相关逻辑
50-
│   │   └── OASeeyonController.java
51-
│   ├── core 核心代码文件夹
52-
│   │   ├── Constants.java 一些常量基本信息
53-
│   │   ├── ExploitInterface.java exp 编写要实现的接口
54-
│   │   ├── Job.java 一种漏洞全部检查的类
55-
│   │   └── VulInfo.java
56-
│   ├── exp 各种 exp 实现类
57-
│   │   ├── apache
58-
│   │   │   └── struts2
59-
│   │   │   ├── S2_005.java
60-
│   │   │   ├── S2_009.java
61-
│   │   │   ├── S2_016.java
62-
│   │   │   ├── S2_019.java
63-
│   │   │   ├── S2_032.java
64-
│   │   │   ├── S2_045.java
65-
│   │   │   ├── S2_046.java
66-
│   │   │   └── S2_DevMode.java
67-
│   │   ├── cms
68-
│   │   │   └── nc
69-
│   │   │   └── CNVD_2021_30167.java
70-
│   │   ├── oracle
71-
│   │   │   └── CVE_2020_14882.java
72-
│   │   └── others
73-
│   │   └── CVE_2021_22986.java
74-
│   └── tools 工具文件夹
75-
│   ├── HttpTool.java HTTP 请求封装
76-
│   ├── MyCERT.java HTTPS 请求证书设置
77-
│   └── Tools.java 一些处理函数
78-
└── resources 资源文件夹
79-
├── css 界面css样式表
80-
│   └── main.css
81-
├── fxml 界面的设计文件
82-
│   ├── Main.fxml
83-
│   ├── OA.fxml
84-
│   ├── Others.fxml
85-
│   ├── Struts2.fxml
86-
│   ├── Weblogic.fxml
87-
│   └── oa
88-
│   ├── OA-E-office.fxml
89-
│   ├── OA-Kingdee.fxml
90-
│   ├── OA-Landray.fxml
91-
│   └── OA-Seeyon.fxml
92-
├── img
93-
│   ├── sec.png
94-
│   └── weixin.jpg
95-
└── log4j.properties 日志相关设置
96-
```
97-
98-
#### 3.2 编写EXP
99-
100-
编写EXP时,要使用 `implements`实现`ExploitInterface`接口,实现接口中的几个方法
101-
102-
![image-20210327190517731](https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/JavaFX/20210818133114.png)
103-
104-
- checkVUL 使用poc 检查是否漏洞
105-
- exeCMD 使用exp执行命令
106-
- uploadFile 使用命令执行 写webshell,上传文件
107-
- getWebPath 获取网站的web目录,供上传文件使用
108-
- isVul 是否存在漏洞,检查时会根据结构自动赋值,供后续调用
109-
110-
EXP具体编写请参考 `fun/fireline/exp` 下的各种漏洞实现
111-
112-
当编写完EXP后,转到 `fun/fireline/controller` 下对应的**xxController.java**文件,比如新编写了Struts2的相关漏洞,修改**Struts2Controller.java****STRUTS2**变量,新加入一个漏洞名称,这里对应的是图像化界面中可供选择的漏洞列表
113-
114-
![image-20210818125816864](https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/JavaFX/20210818133131.png)
115-
116-
之后进入和 `fun/fireline/tools/Tools.java`**getExploit**方法中新增一个**else if**
117-
118-
![image-20210818130128550](https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/JavaFX/20210818133137.png)
119-
120-
编写完后,可以直接执行`fun/fireline/AppStartUp.java`类, 查看是否正常运行。
121-
122-
开发过程中每次修改完运行前,最好将生成的**target**目录删除再运行
123-
124-
#### 3.3 新增漏洞页面
125-
126-
具体请看[更新记录.md](更新记录.md)
127-
128-
[ExpDemo-JavaFX工具新增漏洞编写教程](https://mp.weixin.qq.com/s/j5BHSbNZ76XbSZp6hFj9fw)
129-
130-
#### 3.4 部署,发布
131-
132-
当一切编写完成,bug修复完毕,在项目根目录下执行 **mvn package assembly:single** 即可生成 **jar** 文件。
133-
134-
运行使用**target目录下最大的jar文件**
135-
136-
对方没有Java环境怎么办?
137-
138-
使用 **mvn jfx:native** 命令生产对应平台的文件,比如Mac下,执行命令**mvn jfx:native**命令就会在 **target/jfx/native** 目录下生成打包后应用(win下生成exe),带可执行文件,带 JRE 运行环境,超大,200+M。
139-
140-
**mvn clean**用于清除生成的文件。
141-
142-
## 0x05 免责声明
143-
144-
本工具仅能在取得足够合法授权的企业安全建设中使用,在使用本工具过程中,您应确保自己所有行为符合当地的法律法规。
145-
146-
如您在使用本工具的过程中存在任何非法行为,您将自行承担所有后果,本工具所有开发者和所有贡献者不承担任何法律及连带责任。
147-
148-
除非您已充分阅读、完全理解并接受本协议所有条款,否则,请您不要安装并使用本工具。
149-
150-
您的使用行为或者您以其他任何明示或者默示方式表示接受本协议的,即视为您已阅读并同意本协议的约束。
151-
152-
## 开心指数
153-
154-
[![Stargazers over time](https://starchart.cc/yhy0/ExpDemo-JavaFX.svg)](https://starchart.cc/yhy0/ExpDemo-JavaFX)
9+
在神机v1.9的基础上界面微调,增加了s-062检测

images/神机.mp4

-1.16 MB
Binary file not shown.

pom.xml

+2-6
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@
99
<packaging>jar</packaging>
1010
<version>1.9</version>
1111

12-
<name>ExpDemo-JavaFX</name>
13-
<!-- FIXME change it to the project's website -->
14-
<url>https://github.com/yhy0/ExpDemo-JavaFX</url>
15-
1612
<properties>
1713
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1814
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
@@ -63,7 +59,7 @@
6359
<!-- 桌面图标 -->
6460
<needShortcut>true</needShortcut>
6561
<!-- 公司名称 -->
66-
<vendor>yhy</vendor>
62+
<vendor>fullstackcainiao</vendor>
6763
<needShortcut>true</needShortcut><!-- 需要生成快捷方式-->
6864
<bundleArguments>
6965
<installdirChooser>true</installdirChooser><!-- 指示用户是否可以选择应用程序安装目录的标志 -->
@@ -90,7 +86,7 @@
9086
</descriptorRefs>
9187
<!-- MainClass in mainfest make a executable jar -->
9288
<!-- 运行文件名 -->
93-
<finalName>神机</finalName>
89+
<finalName>蓝猫</finalName>
9490
</configuration>
9591
<executions>
9692
<execution>

src/main/java/fun/fireline/AppStartUp.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class AppStartUp extends Application {
2020
@Override
2121
public void start(Stage primaryStage) throws Exception{
2222
Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("fxml/Main.fxml"));
23-
primaryStage.setTitle("神机");
23+
primaryStage.setTitle("蓝猫");
2424
primaryStage.setScene(new Scene(root));
2525
// 退出程序的时候,子线程也一起退出
2626
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {

src/main/java/fun/fireline/controller/MainController.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ public void initialize() {
241241

242242
this.yhy.setOnAction((e) -> {
243243
try {
244-
Desktop.getDesktop().browse(new URL("https://github.com/yhy0").toURI());
244+
Desktop.getDesktop().browse(new URL("https://github.com/fullstackcainiao").toURI());
245245
} catch (Exception e1) {
246246
logger.debug(e1);
247247
}

src/main/java/fun/fireline/controller/Struts2Controller.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ public class Struts2Controller extends MainController{
5858
"\ts2-032: \t启用动态方法调用时,可以通过 method: 前缀执行远程代码执行 https://cwiki.apache.org/confluence/display/WW/S2-032 \r\n" +
5959
"\ts2-045: \t基于 Jakarta Multipart 解析器执行文件上传时可能的远程代码执行 https://cwiki.apache.org/confluence/display/WW/S2-045 \r\n" +
6060
"\ts2-046: \t基于 Jakarta Multipart 解析器执行文件上传时可能的 RCE(类似于 S2-045) https://cwiki.apache.org/confluence/display/WW/S2-046 \r\n" +
61-
"\ts2-devMode: \t当Struts2开启devMode模式时,将导致严重远程代码执行漏洞 \r\n\r\n\r\n" +
61+
"\ts2-devMode: \t当Struts2开启devMode模式时,将导致严重远程代码执行漏洞 \r\n" +
62+
"\ts2-062: \t 适用s2-057 s2-061 s2-062 传入参数为id 局限性大,不适用vulfocus的062靶机(可自行更改传参为name) https://cwiki.apache.org/confluence/display/WW/S2-062 \r\n\r\n" +
6263

6364
Constants.UPDATEINFO;
6465

@@ -72,6 +73,7 @@ public class Struts2Controller extends MainController{
7273
"S2-045",
7374
"S2-046",
7475
"S2-DevMode",
76+
"S2-062"
7577
};
7678

7779

@@ -218,7 +220,7 @@ public void get_execute_cmd() {
218220
}
219221

220222
} catch (Exception var4) {
221-
this.cmd_info.setText("请先进行漏洞检测,确认漏洞存在\r\n");
223+
this.cmd_info.setText("命令执行异常,请手动测试\r\n");
222224
this.cmd_info.appendText("error: " + var4.toString());
223225
}
224226
history.put("Struts2_cmd_info", this.cmd_info.getText());

src/main/java/fun/fireline/core/Constants.java

+6-30
Original file line numberDiff line numberDiff line change
@@ -8,47 +8,23 @@
88

99
public class Constants {
1010

11-
public static String NAME = "神机";
11+
public static String NAME = "蓝猫";
1212

13-
public static String VERSION = "v1.9 ";
13+
public static String VERSION = "v2.0 ";
1414

15-
public static String AUTHOR = "yhy";
15+
public static String AUTHOR = "fullstack";
1616

1717
public static String SECURITYSTATEMENT = "\t\t\t\t\t\t\t\t\t----------------------------------------------------------------\r\n\t\t\t" +
1818
"\t\t\t\t\t\t\t\t本工具仅提供给安全测试人员进行安全自查使用\r\n\t\t\t" +
1919
"\t\t\t\t\t\t\t\t用户滥用造成的一切后果与作者无关\r\n\t\t\t" +
2020
"\t\t\t\t\t\t\t\t使用者请务必遵守当地法律\r\n\t\t\t" +
2121
"\t\t\t\t\t\t\t\t本程序不得用于商业用途,仅限学习交流\r\n\t\t\t" +
2222
"\t\t\t\t\t\t----------------------------------------------------------------\r\n\r\n" +
23-
"\t\t\t\t\t\t\t\t\t\t目前所有的payload均取自网上,我只是个搬运工,感谢各位师傅\r\n\t\t\t\r\n\r\n";
23+
"\t\t\t\t\t\t\t\t\t\t目前所有的payload均为互联网公开,我只是个搬运工,感谢各位师傅\r\n\t\t\t\r\n\r\n";
2424

2525
public static String UPDATEINFO =
26-
"Bug反馈: https://github.com/yhy0/ExpDemo-JavaFX\r\n\r\n" +
27-
"V1.9\r\n" +
28-
"\thttp请求改用蓝鲸师傅封装好的,将蓝鲸师傅的thinkphp漏洞利用全部复制过来\r\n" +
29-
"\t将shack2师傅的Java反序列化漏洞利用工具V1.7中的Weblogic漏洞利用全部复制过来\r\n" +
30-
"\t感谢蓝鲸师傅, 原项目 https://github.com/bewhale/thinkphp_gui_tools\r\n" +
31-
"\t感谢shack2师傅,原项目 https://github.com/shack2/javaserializetools\r\n" +
32-
"V1.8\r\n" +
33-
"\t去除fofa搜索、去除批量检查\r\n" +
34-
"\t添加Struts2漏洞利用\r\n" +
35-
"\t增加历史记录,这样即使切换界面数据也不会丢失\r\n" +
36-
"V1.7\r\n" +
37-
"\t去除一切花里胡哨,之前的拼接怪丑死了,简单就是美\r\n" +
38-
"V1.6\r\n" +
39-
"\t使用log4j输出日志到文件\r\n" +
40-
"V1.5\r\n" +
41-
"\t界面修改,搞(抄)了个抽屉样式来切换不同的漏洞利用种类\r\n" +
42-
"V1.4\r\n" +
43-
"\t修复生成的jar文件,fofa查询时无反应(mvn生成jar时没有加载第三方包,添加MANIFEST.MF文件指定加载)\r\n" +
44-
"V1.3\r\n" +
45-
"\t增加fofa查询模块,并且fofa高级会员可以通过输入icon的url,计算hash值,查询相同icon的网站\r\n" +
46-
"V1.2\n" +
47-
"\t批量扫描模块,添加对存在漏洞的url导出功能\r\n" +
48-
"\t修改检测漏洞后的显示,存在、不存在、异常\r\n" +
49-
"V1.1\n" +
50-
"\t参考冰蝎的代理,添加代理设置,方便走burp调试\r\n" +
51-
"\t优化批量检查逻辑,使用接口,这样每次添加新的漏洞利用时,就不需要修改批量检查的逻辑";
26+
"Bug反馈: 扫码加我微信\r\n\r\n" +
27+
"原项目为神机V1.9 地址https://github.com/yhy0/ExpDemo-JavaFX \r\n" ;
5228

5329

5430
public static String[] ENCODING = {

src/main/java/fun/fireline/core/ExploitInterface.java

-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import fun.fireline.controller.MainController;
44
import org.apache.log4j.Logger;
55

6-
import java.io.UnsupportedEncodingException;
7-
86
/**
97
* @author yhy
108
* @date 2021/3/25 20:57

0 commit comments

Comments
 (0)