o2oa 6.3.4后台getshell

O2OA不依赖tomcat,采用自己的console.jar方式启动,因为不支持自定义jsp所以无法使用上传jsp来getshell。但是在后台中有一个上传jar/war包的功能,可以通过上传自定义jar/war包来部署自己服务,这篇笔记就记录一下通过部署war来getshell

正文

按照官方文档,部署的war包要以o2的框架来开发编译:
自定义服务-搭建自定义工程及开发

工程模板:(文末有成品)
https://git.o2oa.net/o2oa/o2custom-sample/-/archive/master/o2custom-sample-master.zip

首先跟着提示修改基本信息,然后改SampleEntityClassNameAction类的代码

1
/x_ahtest_assemble_control/src/main/java/com/x/ahtest/assemble/control/jaxrs/sample/SampleEntityClassNameAction.java


还要注意一下改filter,不然这个shell以后还得管理员登录才能访问:
AnonymousJaxrsServicePathFilter类是定义可以在不登录的情况下访问请求,加上mapping

修改打包完成后上传war包

重启服务

可以通过接口查看有没有部署成功

1
/x_program_center/jest/list.html

然后访问服务就可以执行命令了

路由一般为

1
/模块名/jaxrs/sample/

成品放github上了
https://github.com/novysodope/O2OA-getshell

这个只是一个验证,具体shell实现还是要自己改一下,在SampleEntityClassNameAction类:

1
/x_ahtest_assemble_control/src/main/java/com/x/ahtest/assemble/control/jaxrs/sample/SampleEntityClassNameAction.java

可以改成内存马什么的

如果只是改类其他地方没改的话部署后的路由为
http://localhost/x_ahtest_assemble_control/jaxrs/sample/cmd?cmd=calc

2021/11/30更新

6.4.4也可以

2021/12/01更新

可以通过接口重启服务

1
2
3
4
5
/x_program_center/jaxrs/command/execute 



{"ctl":"命令","nodeName":"target","nodePort":"target"}

大概20秒左右就会重启成功


声明:
本文章用于学习交流,严禁用于非法操作,出现后果一切自行承担,阅读此文章表示你已同意本声明。

Disclaimer:
This article is for study and communication. It is strictly forbidden to use it for illegal operations. All consequences shall be borne by yourself. Reading this article means that you have agreed to this statement.