Exp-Tools 工具开发

CSeroad  IP属地: 山东
字数 2,001

前言

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

image.png

每一个OA又对应一个FXML文件,三个Tab分别对应基本信息、命令执行、文件上传。

image.png

而每个漏洞利用方式不一样,可以通过controller控制tab标签是否有效。如万户oa只有文件上传的exp,没有命令执行的exp,就可以设置

this.execute_tab.setDisable(true);

这样就无法点击命令执行的标签了。
在上传的标签里,将上传的冰蝎改成log.txt,内容为无恶意代码执行。

image.png

区别是Windows还是Linux平台也是工具的一个小细节,如用友的一个上传漏洞只适用于Windows,可以将该ChoiceBox 设置为无效。

this.platform.setDisable(true);

同样的方式我们将任意漏洞进行动态的处理。
如用友畅捷通T+文件上传漏洞为aspx语言,设置为

image.png

另外我还绘制了一个配置的按钮,用来配置cookie信息,方便某些漏洞后台利用。

image.png

HttpURLConnection

发送网络数据包用的是HttpURLConnection,在HttpTools类里我稍微改造了一点getResponse 方法。在利用某些漏洞的时候会返回500的状态码,而我需要500的返回内容。

image.png

除了get、post方法以外,我还填补了upload 方法、反序列化方法。网上大部分exp都是将upload内容作为字符串直接发送,我就自定义了一个upload 方法替换繁杂的字符串。

image.png

还有反序列方法,如用友6.5的反序列化漏洞。

image.png

WAF 绕过

最开始的想法是加分块传输,在getCoon方法里

conn.setRequestProperty("Transfer-Encoding", "Chunked");

但始终无法应用。后来询问ABC_123师傅,HttpURLConnection 不支持该请求头。只能选择加入一些通用的请求头勉强绕过WAF,具体的场景只能修改数据包了。

image.png

编写EXP

实现ExploitInterface接口里的几个方法即可,不需要的返回null。
在写exp的时候同样参考了很多网上流传的,还有一些不是很常见的但有效的漏洞甚至nday。大概出现了以下问题:

  • 1、出现误报
    由于某些漏洞的特殊性难免有误报,我这里尽力避免出现误报。如发送请求返回200状态码但返回内容为空,则在checkVul 方法里返回可能存在。
image.png
  • 2、exp不明白
    网上流传很多exp都是封装好的,怎么改造怎么变化不是很清楚。我这里没有生搬硬套,而是找寻网上的漏洞细节。如万户的officeserverservlet漏洞,我摘抄了 https://github.com/0x727/DropLabTools 项目里的一部分代码,知道怎么计算出exp并加入了一个绕过WAF的技巧。
image.png

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

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

还有一些后台的漏洞,平时没有注意过也加上了。
如致远的后台模板文件上传。

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

加密

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

image.png

OA

截止到目前为止,已实现了用友、泛微、通达、致远、帆软报表、万户、蓝凌、红帆、华天动力总共9个OA。
全部是命令执行、文件上传类的漏洞,包括前台和后台,未编写log4j、fastjson相关漏洞。

image.png

用友已完成:

  • 用友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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
0人点赞
CSeroad  想做研究的安服狗!!!
总资产260共写了12.3W字获得1,172个赞共712个粉丝

推荐阅读更多精彩内容