查看原文
其他

Exp-Tools 工具开发

cseroad Wings安全团队 2023-04-23

前言

在学习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的技巧。

再比如用友6.5的反序列化漏洞,可以自定义输入上传的文件名和文件内容。

•3、漏洞细节不够 很多nday漏洞细节没有公布,只有一个截图或分析过程。我这里力所能及的把部分漏洞复现了出来。如泛微的emobile的命令执行。因为泛微用的resin,内存马还没有学会,所以只实现了命令执行和上传文件。

还有一些后台的漏洞,平时没有注意过也加上了。

如致远的后台模板文件上传。

•4、漏洞太多 针对于漏洞太多的oa,收集的就不是特别详细,且案例不多。如通达OA这里就没有写的很多。

加密

最后用maven进行打包,并使用classFinal加密字节码。

OA

截止到目前为止,已实现了用友、泛微、通达、致远、帆软报表、万户、蓝凌总共7个OA。

全部是命令执行、文件上传类的漏洞,包括前台和后台,未编写log4j、fastjson相关漏洞。

用友已完成:

•用友NC-BshServlet 远程命令执行•用友NC-BshServlet-bypass 远程命令执行•用友NC accept 文件上传•用友GRP-U8 UploadFileData 文件上传•用友6.5反序列化•用友畅捷通T+文件上传•用友KSOA ImageUpload 文件上传

蓝凌已完成:

•蓝凌OA SSRF•蓝凌OA SSRF BeanShell 文件上传•蓝凌OA SSRF XmlDecoder 文件上传•蓝凌OA treexml 命令执行

泛微已完成:

•泛微OA KtreeUploadAction 文件上传•泛微OA uploaderOperate 文件上传•泛微OA weaver.common.Ctrl 文件上传•泛微eoffice OfficeServer 文件上传•泛微eoffice UploadFile 文件上传•泛微eoffice ajax 文件上传•泛微BshServlet 远程命令执行•泛微ecology前台sql注入•泛微ecology后台风格文件上传•泛微ecology后台皮肤文件上传•泛微emobile client命令执行•泛微emobile messageType命令执行

万户已完成:

•万户OA fileUpload 文件上传•万户OA officeserverservlet 文件上传•万户OA smartUpload 文件上传•万户OA OfficeServer 文件上传

帆软已完成:

•帆软报表任意文件读取•帆软报表任意文件覆盖•帆软报表后台插件文件上传•帆软报表后台主题文件上传

致远已完成:

•致远session泄露processUpload文件上传•致远uploadMenuIcon文件上传•致远ajax文件上传•致远ajax文件上传-bypass•致远wpsAssistServlet文件上传•致远htmlofficeservlet文件上传•致远后台模板文件上传•致远帆软报表文件读取•致远帆软报表后台插件文件上传•致远帆软报表后台主题文件上传

通达已完成:

•通达任意用户登录-1•通达任意用户登录-2•通达任意用户登录-3•通达任意用户登录-4•通达Ispirit文件上传•通达后台附件文件上传

总结

ExpDemo-JavaFX[1] 项目的基础上,对某些代码进行魔改,又复现分析了多个OA的漏洞。难度不高,学习了很多,以后都可以用来添加自己的漏洞。Exp-Tools小工具前后差不多花费了两个月,感谢境心师傅的全力参与!

参考资料

https://github.com/yhy0/ExpDemo-JavaFX 

https://github.com/White-hua/Apt_t00ls https://github.com/achuna33/MYExploit

References

[1] ExpDemo-JavaFX: https://github.com/yhy0/ExpDemo-JavaFX




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存