前言
在学习java的过程中,一直想通过GUI编写一个属于自己的综合漏洞利用工具。只写高危漏洞用于红队快速打点,还要适当的具有扩展性方便查看是否遇到WAF及时修改。在尝试用JAVAFX编写GUI的时候,在github发现了一个开源的图形化项目:https://github.com/yhy0/ExpDemo-JavaFX。致敬作者!
果断放弃自己的GUI界面改用作者的框架。ExpDemo-JavaFX 集成了Thinkphp、Struts2、Weblogic 等利用模块,查看 exp 一知半解,索性选择OA作为一个切入点,锻炼代码的同时收集完整并校验有效的exp。
GUI界面
GUI 界面是由FXML 编写完成的,即使未系统学习过FXML,也可以简单绘制出GUI界面。
利用JFXButton 按钮组件绘制多个OA。
每一个OA又对应一个FXML文件,三个Tab分别对应基本信息、命令执行、文件上传。
而每个漏洞利用方式不一样,可以通过controller控制tab标签是否有效。如万户oa只有文件上传的exp,没有命令执行的exp,就可以设置
this.execute_tab.setDisable(true);
这样就无法点击命令执行的标签了。
在上传的标签里,将上传的冰蝎改成log.txt,内容为无恶意代码执行。
区别是Windows还是Linux平台也是工具的一个小细节,如用友的一个上传漏洞只适用于Windows,可以将该ChoiceBox 设置为无效。
this.platform.setDisable(true);
同样的方式我们将任意漏洞进行动态的处理。
如用友畅捷通T+文件上传漏洞为aspx语言,设置为
另外我还绘制了一个配置的按钮,用来配置cookie信息,方便某些漏洞后台利用。
HttpURLConnection
发送网络数据包用的是HttpURLConnection,在HttpTools类里我稍微改造了一点getResponse 方法。在利用某些漏洞的时候会返回500的状态码,而我需要500的返回内容。
除了get、post方法以外,我还填补了upload 方法、反序列化方法。网上大部分exp都是将upload内容作为字符串直接发送,我就自定义了一个upload 方法替换繁杂的字符串。
还有反序列方法,如用友6.5的反序列化漏洞。
WAF 绕过
最开始的想法是加分块传输,在getCoon方法里
conn.setRequestProperty("Transfer-Encoding", "Chunked");
但始终无法应用。后来询问ABC_123师傅,HttpURLConnection 不支持该请求头。只能选择加入一些通用的请求头勉强绕过WAF,具体的场景只能修改数据包了。
编写EXP
实现ExploitInterface接口里的几个方法即可,不需要的返回null。
在写exp的时候同样参考了很多网上流传的,还有一些不是很常见的但有效的漏洞甚至nday。大概出现了以下问题:
- 1、出现误报
由于某些漏洞的特殊性难免有误报,我这里尽力避免出现误报。如发送请求返回200状态码但返回内容为空,则在checkVul 方法里返回可能存在。
- 2、exp不明白
网上流传很多exp都是封装好的,怎么改造怎么变化不是很清楚。我这里没有生搬硬套,而是找寻网上的漏洞细节。如万户的officeserverservlet漏洞,我摘抄了 https://github.com/0x727/DropLabTools 项目里的一部分代码,知道怎么计算出exp并加入了一个绕过WAF的技巧。
再比如用友的反序列化漏洞,可以自定义输入上传的文件名和文件内容。
- 3、漏洞细节不够
很多nday漏洞细节没有公布,只有一个截图或分析过程。我这里力所能及的把部分漏洞复现了出来。
如泛微的emobile的命令执行。因为泛微用的resin,内存马还没有学会,所以只实现了命令执行和上传文件。
还有一些后台的漏洞,平时没有注意过也加上了。
如致远的后台模板文件上传。
- 4、漏洞太多
针对于漏洞太多的oa,收集的就不是特别详细,且案例不多。如通达OA这里就没有写的很多。
加密
最后用maven进行打包,并使用classFinal加密字节码。
OA
截止到目前为止,已实现了用友、泛微、通达、致远、帆软报表、万户、蓝凌、红帆、华天动力总共9个OA。
全部是命令执行、文件上传类的漏洞,包括前台和后台,未编写log4j、fastjson相关漏洞。
用友已完成:
- 用友NC-BshServlet 远程命令执行
- 用友NC-BshServlet-bypass 远程命令执行
- 用友NC accept 文件上传
- 用友GRP-U8 UploadFileData 文件上传
- 用友反序列化-1
- 用友反序列化-2
- 用友畅捷通T+文件上传
- 用友KSOA ImageUpload 文件上传
泛微已完成:
- 泛微OA KtreeUploadAction 文件上传
- 泛微OA uploaderOperate 文件上传
- 泛微OA weaver.common.Ctrl 文件上传
- 泛微eoffice OfficeServer 文件上传
- 泛微eoffice UploadFile 文件上传
- 泛微eoffice ajax 文件上传
- 泛微BshServlet 远程命令执行
- 泛微ecology前台sql注入
- 泛微ecology FileClient 文件上传
- 泛微ecology后台风格文件上传
- 泛微ecology后台皮肤文件上传
- 泛微ecology后台流程命令执行
- 泛微emobile client命令执行
- 泛微emobile messageType命令执行
蓝凌已完成:
- 蓝凌OA SSRF
- 蓝凌OA SSRF BeanShell 文件上传
- 蓝凌OA SSRF XmlDecoder 文件上传
- 蓝凌OA treexml 命令执行
万户已完成:
- 万户OA fileUpload 文件上传
- 万户OA officeserverservlet 文件上传
- 万户OA smartUpload 文件上传
- 万户OA OfficeServer 文件上传
帆软已完成:
- 帆软报表任意文件读取
- 帆软报表任意文件覆盖
- 帆软报表后台插件文件上传
- 帆软报表后台主题文件上传
致远已完成:
- 致远session泄露processUpload文件上传
- 致远uploadMenuIcon文件上传
- 致远ajax文件上传
- 致远ajax文件上传-bypass
- 致远wpsAssistServlet文件上传
- 致远htmlofficeservlet文件上传
- 致远后台模板文件上传
- 致远帆软报表文件读取
- 致远帆软报表后台插件文件上传
- 致远帆软报表后台主题文件上传
通达已完成:
- 通达任意用户登录-1
- 通达任意用户登录-2
- 通达任意用户登录-3
- 通达任意用户登录-4
- 通达Ispirit文件上传
- 通达后台附件文件上传
红帆已完成:
- 红帆OA任意文件上传
华天动力已完成:
- 华天动力OA任意文件上传
工具已上传github,欢迎star
https://github.com/cseroad/Exp-Tools
总结
在ExpDemo-JavaFX 项目的基础上,对某些代码进行魔改,又复现分析了多个OA的漏洞。难度不高,学习了很多,以后都可以用来添加自己的漏洞。Exp-Tools小工具前后差不多花费了两个月,感谢境心师傅的全力参与!
参考资料
https://github.com/yhy0/ExpDemo-JavaFX
https://github.com/White-hua/Apt_t00ls
https://github.com/achuna33/MYExploit
https://github.com/Ghost2097221/YongyouNC-Unserialize-Tools