New bug :JFCMS(ASP.NET) SQLINJECTION BUG

2009年8月20日星期四 | | |

官方网站:http://www.jfcms.net/

描述:渐飞网站管理系统系列产品,是由渐飞网络(云南省曲靖市现代科技有限公司)自主研发,并拥有自主知识产权的用于互联网网站发布管理的产品。经过多年的潜心研究、开发,并在此过程中听取用户的建议意见,不断改进,优化。现在在互联网众多网站管理系统中已经有了相当高的知名度,广受各企业、单位、个人站长等的好评。
渐飞网站管理系统前身是:渐飞新闻系统--渐飞新闻出版系统--渐飞网站管理系统渐飞网站管理系统的英文名称是:JFCms(JF Content Manage System)

漏洞描述:经过Reflector的反编译,login.aspx文件存在SQL注入漏洞

private void Page_Load(object sender, EventArgs e)
{
    string userPwd = base.Request["UserPwd"]; //未过滤
    string userName = base.Request["UserName"];//未过滤
    string str3 = base.Request["Cookies"];
    string url = base.Server.UrlDecode(base.Request["formurl"]);
    int num = 0;
    try
    {
        num = Convert.ToInt16(str3);
    }
    catch
    {
    }
    switch (userPwd)
    {
        case null:
        case "":
            userPwd = "##########";
            break;
    }
    if ((userName == null) || (userName == ""))
    {
        userPwd = "##########";
    }
    if (this.Fc.chkGuestUser(userName, userPwd)) //两个变量没过滤直接调用
    {
        base.Response.Cookies["JF_GuestUserName"].Value = this.Fc.Encrypt(userName);
        base.Response.Cookies["JF_GuestUserPwd"].Value = this.Fc.Encrypt(userPwd);
        base.Response.Cookies["JF_GuestUserID"].Value = this.Fc.Encrypt(this.Dc.GetExecuteScalar("select UserID From JF_GuestUser where UserName='" + userName + "' and UserPwd='" + userPwd + "'"));
        if (num != 0)
        {
            base.Response.Cookies["JF_GuestUserName"].Expires = DateTime.Now.AddDays((double) num);
            base.Response.Cookies["JF_GuestUserPwd"].Expires = DateTime.Now.AddDays((double) num);
            base.Response.Cookies["JF_GuestUserID"].Expires = DateTime.Now.AddDays((double) num);
        }
        if ((url == "") || (url == null))
        {
            base.Response.Redirect("tglist.aspx");
        }
        else
        {
            base.Response.Redirect(url);
        }
    }
    else
    {
        base.Response.Write("<script>alert('用户名/密码有误 点击确定返回重新输入 ^_^');history.back()</script>");
    }
}

//===========================================

  public bool chkGuestUser(string UserName, string UserPwd)
{
    bool flag = false;
    if (int.Parse(this.Dc.GetExecuteScalar("select count(UserID) From JF_GuestUser where UserName='" + UserName + "' and UserPwd='" + UserPwd + "'")) > 0) // 再次产生SQL注入漏洞
    {
        flag = true;
    }
    return flag;
}

测试方法:
http://target.com/user/login.aspx?UserName=admin&UserPwd=admin'

测试结果:




我的QQ空间
破解Access(*.mdb)目前所有版本的密码
关于Access97的密码破解,在很多的网站和杂志上都有过介绍。在这...
 

0 评论:


所有文章收集于网络,如果有牵扯到版权问题请与本站站长联系。谢谢合作![email protected]