o2oa审计
纯代码层面分析,可能存在的问题,未复现
0x01 反序列化
com.x.base.core.project.cache.CacheRedisImpl#get
从redis获取key对应的value转换成byte流,然后进行反序列化
调用
com.x.base.core.project.cache.CacheManager#get
网上很容易就能找到对应的control,太多了
开放java.lang包。懂得都懂
0x02 命令执行
com.x.program.center.jaxrs.command.CommandAction#executeCommand
直接冲json里面获取命令
ctl是命令,先获取服务,在执行
0x03 部署war包
com.x.program.center.jaxrs.command.CommandAction#upload
可以直接部署 恶意的war包
自己写一个命令执行就行
https://novysodope.github.io/2021/12/22/70/
0x04 创建接口rce
class不在黑名单,可反射获取任意类任意方法
参考
0x05 可读配置文件
com.x.program.center.jaxrs.config.ConfigAction#open
可以直接从json获取file文件名
这里过滤了,获取到的file不等于node,且在文件名在confid下就可以读。
可读项
0x06 任意文件写
com.x.program.center.jaxrs.config.ConfigAction#save
也就是通过StringTools.isFileName这个函数判断了 只能修改config下的文件。
从json读入字节流然后写入,也就是我可以先读到general.json的配置,然后把黑名单删除掉,然后在打 0x03创建接口的rce.
这样看 最新版也受影响。
声明
此文章 仅用于教育目的。请负责任地使用它,并且仅在您有明确测试权限的系统上使用。滥用此 PoC 可能会导致严重后果。