山高水长,天涯未远,江湖再见
0x01 这是个嘛?
这是一个构建图形化漏洞利用的一个项目,已经写好架子,只需要往里填充exp即可,帮助安全人员快速构建一个图形化的、跨平台的漏洞利用工具。
虽然有很多优秀的命令行利用工具,但我觉得还是带界面的方便。
使用本项目,你不需要懂太多Java语言,只需要了解基本的语法,参考自带的EXP例子,即可快速开发一款属于你自己的漏洞利用工具。
0x02 Demo
废话不多说,先上效果图,自带CVE-2020-14882 Weblogic远程代码执行漏洞

0x03 编写属于你的图像化漏洞利用工具
3.1 项目结构
.
├── ExpDemo-JavaFX.iml
├── pom.xml maven工程的基本文件
└── src
└── main
├── deploy
│ └── ExpDemo-JavaFX-1.0.icns
├── java
│ └── com
│ └── yhy
│ ├── Controller.java 控制JavaFX图形化界面的各种显示、事件等,核心代码
│ ├── Main.java JavaFX 应用程序的入口
│ ├── core 核心代码文件夹
│ │ ├── CVE_2020_14882.java exp编写示例
│ │ ├── Constants.java 一些常量信息
│ │ ├── ExploitInterface.java exp 编写要实现的接口
│ │ ├── Job.java 批量检查的线程池
│ │ └── VulInfo.java 映射批量检查界面中的表格,信息基本类
│ └── tools 工具文件夹
│ ├── HttpTool.java HTTP 请求封装
│ ├── MyCERT.java HTTPS 请求证书设置
│ └── Tools.java 一些处理函数
└── resources 资源文件夹
├── sample.fxml avaFX图形化界面描述文件
├── sec.png
└── weixin.jpg
3.2 编写EXP
编写EXP时,要使用 implements实现ExploitInterface接口,实现接口中的几个方法

-
checkVUL 使用poc 检查是否漏洞
-
exeCMD 使用exp执行命令
-
uploadFile 使用命令执行 写webshell,上传文件
-
getWebPath 获取网站的web目录,供上传文件使用
-
isVul 是否存在漏洞,检查时会根据结构自动赋值,供后续调用
EXP具体编写请参考 src/main/java/com/yhy/core/CVE_2020_14882.java示例
当编写完EXP后,转到 src/main/java/com/yhy/core/Constants.java文件,修改CVES变量,即图像化界面中可供选择的漏洞列表

之后进入src/main/java/com/yhy/Controller.java和 com/yhy/tools/Tools.java文件编写逻辑


编写完后,可以直接执行Main类, 查看是否正常运行。
3.3 部署,发布
当一切编写完成,bug修复完毕,在项目根目录下执行 mvn jfx:jar即可生成 jar文件。
对方没有Java环境,不想安装怎么办?
使用mvn jfx:native命令生产对应平台的文件,比如Mac 下,执行命令mvn jfx:native命令就会在 target/jfx/native目录下生成打包后应用,带可执行文件,带 JRE 运行环境。
mvn clean用于清除生成的文件。
0x04 界面修改
对界面不满意,或者想添加其他功能
安装 JavaFx Scene Builder
https://www.oracle.com/java/technologies/javafxscenebuilder-1x-archive-downloads.html
安装完,在IDEA中右键打开(设置好JavaFx Scene Builder的路径)

打开后

想添加什么控件,直接从Scene Builder的左边控件栏中拖拽一个到界面设计区域,然后只需要关心右侧栏第三个Code的fx:id和On Action

比如想添加一个 输入框,搜索框查询,然后拖一个 TextField控件到设计区

为这个 TextField设置一个fx:id,然后Ctrl+s保存, sample.fxml会做出相应的更改,不需要关心
之后到src/main/java/com/yhy/Controller.java文件编写逻辑
-
使用
@FXML注解,声明变量
-
在函数中使用变量
使用
this.cmd.getText()获取输入的值使用
this.cmd.setText()设置值
其他控件使用,请参考
src/main/java/com/yhy/Controller.java,或者自行学习JavaFX。

来都来了,不关注一波?

上海市 1F
这玩意看着挺方便,但JavaFX现在还有人用吗?
湖北省武汉市 B1
@ 幻影蛇 JavaFX现在确实用的少了,不过跨平台还行
印度尼西亚 2F
刚试了下打包,Mac上生成的app体积有点大啊🤔
英国 B1
@ The Gardener 打包体积大是因为内置了JRE环境,可以试试用jlink裁剪下
安徽省蚌埠市 3F
新手问下,写EXP的时候HTTP请求超时怎么调?
广东省广州市越秀区 B1
@ 深黑暗影 HttpTool里有setTimeout方法,直接传入毫秒数就行。
浙江省金华市武义县 B1
@ 深黑暗影 HTTP请求超时可以在HttpTool里改connectTimeout参数吧
广东省广州市 4F
前几天刚搞完WebLogic的漏洞复现,这个框架省了不少事
日本 5F
又是JavaFX…界面卡得要死,不如直接用Electron
中国 6F
感觉还行,至少比手搓Swing强多了
上海市 7F
那如果是需要登录认证的漏洞咋整?支持cookie传入不?
浙江省金华市 8F
hhh楼主是不是忘了提JDK版本要求,我17跑不起来
广东省东莞市 9F
批量检测线程数能调吗?默认5个太慢了
四川省德阳市 B1
@ AuroraNomad 可以自己去Job.java里改,改成10或20都行。
韩国 10F
界面改起来其实挺简单的,拖拽完绑定下fx:id就行
湖南省长沙市 11F
这个CVE-14882的例子挺实用的,正好最近在复现
四川省 12F
有考虑加个代理功能吗?有时候测试需要走代理
浙江省 13F
试了下JDK11可以正常运行,高版本可能需要调配置
湖北省襄阳市 14F
界面响应还好啊,我这不卡,Electron吃内存更厉害
北京市 B1
@ 归梦遥 确实,JavaFX比Electron轻量不少,尤其在老机器上更省资源。
湖北省天门市 15F
之前手写Weblogic检测脚本折腾了好久,这个省事多了
贵州省贵阳市 16F
批量检测线程数在Job.java里可以自己改
澳大利亚 17F
要是能支持自定义POC模板就更方便了
广东省深圳市 18F
界面挺直观的,省事。
日本 19F
这工具真省心,写EXP快。
河北省石家庄市 20F
有现成的架子,能省不少功夫。
上海市 B1
@ 袖底梅花 省事多了,我也想试试改几个exp
日本 21F
不想装JDK,直接用jar就行。
江西省抚州市 22F
看了文档,感觉还行。
湖北省荆门市 23F
赞一个,挺好用。
山东省青岛市 24F
对新手友好吗?想试试。
四川省内江市 25F
前几天刚搞完打包,体积确实有点大。
日本 26F
批量检测线程数能改,改成10会不会更快?
印度尼西亚 27F
新手想问,EXP里HttpTool超时默认多久?能改吗?
泰国 28F
界面看着还行,就是打包太占空间。
重庆市 B1
@ 云端梦旅 JavaFX打包体积是挺大的
韩国 29F
我之前也踩过WebLogic的坑,这框架省了不少时间。
浙江省 30F
界面卡顿的情况在低配机器上会出现,建议加点异步加载。
韩国 31F
有没有计划加个代理选项,渗透测试经常要走代理。
湖南省衡阳市 32F
挺适合给甲方演示的。
宁夏银川市 B1
@ 糖醋小排骨 给甲方演示效果还挺直观的
韩国 33F
如果漏洞需要登录后才能利用,框架能否支持手动传入cookie?
香港 34F
整体来看,这套JavaFX方案比起传统命令行工具更友好,尤其是对不熟悉Java的安全研究员,只要按步骤填好EXP,就能快速生成可视化的利用界面,后期维护也省心。
北京市 35F
我在Mac上用mvn jfx:native生成的app,虽然体积大点,但自带JRE,完全不需要额外装环境,直接双击就能跑,体验还算不错,唯一遗憾是启动时会弹出安全警告。🤔
北京市 36F
这项目开源了吗?