
SQL注入
金和版本C6V3.0前年的n day,我在某处截了图下来并记了路径。
当时未深入C#的代码审计,没有深究漏洞成因。这几天整理去年的材料时发现手上正好有新版的金和OA备份文件,就简单来审计利用链。
漏洞利用路径截图:
代码审计
首先漏洞在jhsoft.mobileapp/AndroidSevices/HomeService.asmx/GetHomeInfo方法中,其中HomeService为Webservice文件
在HomeService的GetHomeInfo方法中,传入了参数userID
首先在方法中stringBuilder新建了字符串常量池
之后调用GetQuickUserInfo查询userID,传参为userCode
新建了object数组对象paraValues
再return抽象类ExecProcReDataTable,将参数procedureName和paraValues作为参数传入。
此处观察没有可控参数能拼接
走到下一步,进入if条件后满足quickUserInfo非空
再下一步,由于quickUserInfo数组并不存在PhotoURL参数,text会为空
因此进入if判断MapAndFindFilebyRelativeFilePath方法
_FilePath为空,不满足_FilePath!=""
return值false
结束if判断,quickUserInfo.Dispoae()释放类quickUserInfo。
因为text为空,进入if条件string userSex = GetUserSex(userID);
跟踪进入GetUserSex,此处就可以看到userId拼接进了SQL语句中进行处理,造成了SQL注入
string queryString = "select DossValue from dossiervalue a left join
users b on a.RegCode=b.userid where a.DossierFieldID='3' and
b.userid='" + userId + "'";
POC
最后它的利用POC如下,userID传入恶意SQL语句即可:
http://XXXX/c6/jhsoft.mobileapp/AndroidSevices/HomeService.asmx/GetHomeInfo?userID=payload
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)