### 简要描述: 1.login_key暴力预测 2.伪造任意会员或管理留言 3.删除任意留言 ps:.net开源了,相信各种特性漏洞会如雨后春笋般涌现,小菜先学点asp.net基础知识,等大牛们发特性漏洞的时候至少能够看懂。 ### 详细说明: 1.login_key 暴力预测 /e/member/check_repeat.aspx ``` protected void Page_Load(Object src,EventArgs e) { Check_Post(); string Field=Request.Form["field"];//数据传入 自定义字段 string Field_Value=Request.Form["value"];//数据传入 自定义值 string UserName=Request.Form["username"]; if(!IsStr(Field)) { return; } else if(Field.ToLower()=="userpassword") { return; } string Repeat="0"; int counts=0; if(IsStr(Field)) { Conn theconn=new Conn(); OleDbConnection conn=new OleDbConnection(theconn.Constr()); conn.Open(); string sql; sql="select count(id) as co from pa_member where "+Field+"='"+Sql_Format(Field_Value)+"'";//查询数据库 OleDbCommand comm=new OleDbCommand(sql,conn); OleDbDataReader dr=comm.ExecuteReader(); if(dr.Read()) { counts=int.Parse(dr["co"].ToString()); } dr.Close(); conn.Close(); if(counts>0){Repeat="1";} } Response.Write(Repeat); ``` } 可以看到...
### 简要描述: 1.login_key暴力预测 2.伪造任意会员或管理留言 3.删除任意留言 ps:.net开源了,相信各种特性漏洞会如雨后春笋般涌现,小菜先学点asp.net基础知识,等大牛们发特性漏洞的时候至少能够看懂。 ### 详细说明: 1.login_key 暴力预测 /e/member/check_repeat.aspx ``` protected void Page_Load(Object src,EventArgs e) { Check_Post(); string Field=Request.Form["field"];//数据传入 自定义字段 string Field_Value=Request.Form["value"];//数据传入 自定义值 string UserName=Request.Form["username"]; if(!IsStr(Field)) { return; } else if(Field.ToLower()=="userpassword") { return; } string Repeat="0"; int counts=0; if(IsStr(Field)) { Conn theconn=new Conn(); OleDbConnection conn=new OleDbConnection(theconn.Constr()); conn.Open(); string sql; sql="select count(id) as co from pa_member where "+Field+"='"+Sql_Format(Field_Value)+"'";//查询数据库 OleDbCommand comm=new OleDbCommand(sql,conn); OleDbDataReader dr=comm.ExecuteReader(); if(dr.Read()) { counts=int.Parse(dr["co"].ToString()); } dr.Close(); conn.Close(); if(counts>0){Repeat="1";} } Response.Write(Repeat); ``` } 可以看到 我们控制了pa_member表where查询中的字段和值,因此我们可以定义字段为login_key,然后暴力枚举值。 我们再来看下login_key的值是什么? ``` string LoginKey=LoginDate.AddSeconds(r.Next(3600,86164)).ToString("yyyyMMddHHmmss"); ``` login_key为我们登录登录后的1个小时到一天中的任意中的任意一秒,格式如20141121221010, 这样会有什么样的问题呢?就是我们login_key完全可以预测,可以用上边的那段代码暴力枚举近几天的登录会员和管理(会员管理一个表)的login_key,而1天86400秒,所以难度不大。 下面问题来了,看官一定会问,这个login_key是干啥的,你可以温习下wefgod牛的 [WooYun: PageAdmin可绕过验证伪造任意用户身份登录(前台、后台)](http://www.wooyun.org/bugs/wooyun-2014-061861) , 从wefgod牛的文章当中我们知道pageadmin的权限验证用的是uid和Valicate的,而Valicate以前是用的最后登录时间的md5,现在改为了login_key的md5,也就是登录后未来一天的任意一秒的md5。 现在我们获取了login_key,但是问题又来了,我们不知道他对应的uid是多少,我们可以直接选择有权限验证的页面直接加入login_key,然后枚举uid,登录进去就行了。 问题又来了,我们怎么确定这个用户是不是管理员,我思来想去,也只有观察下管理员在网站的活动了,比如他发表的最后一篇帖子的时间,最后一天留言的时间,去推测login_key的取值空间。 2.伪造任意会员或管理留言 /e/space/spc_fbk_ascx.cs private void Post_Fbk() { string Fbk_Content=Request.Form["fb_content"]; if(Fbk_Content.Trim()=="") { conn.Close(); Response.Write("<script type='text/javascript'>alert('留言内容不能为空!');location.href=location.href</script>"); Response.End(); } else { Fbk_Content=ResplayJs(Fbk_Content); Current_LoginName=Request.Form["Current_LoginName"];//直接获取然后进去数据库 if(IsUserName(Current_LoginName)) { sql="insert into pa_spcfbk(space_owner,fbk_username,feedback,reply) values('"+UserName+"','"+Sql_Format(Current_LoginName)+"','"+Sql_Format(Fbk_Content)+"','')"; OleDbCommand Comm=new OleDbCommand(sql,conn); Comm.ExecuteNonQuery(); } conn.Close(); Response.Write("<script type='text/javascript'>alert('提交成功!');location.href=location.href</script>"); Response.End(); } } 这个没什么说的,设计缺陷,当前登录名自定义,可以伪造任何人留言,不用登录。 3.删除任意留言 /e/space/spc_fbk_ascx.cs private void Del_Fbk() { string Did=Request.Form["did"];//直接删除 if(IsNum(Did)) { sql="delete from pa_spcfbk where space_owner='"+UserName+"' and id="+int.Parse(Did); OleDbCommand Comm=new OleDbCommand(sql,conn); Comm.ExecuteNonQuery(); conn.Close(); } conn.Close(); Response.Write("<script type='text/javascript'>location.href=location.href</script>"); Response.End(); } 这个都很明白,无权限控制的直接进数据库删除任意用户的任意留言 ### 漏洞证明: 1.login_key暴力预测 a.暴力猜测login_key [<img src="https://images.seebug.org/upload/201411/22032345e75b805989611429b102b8f31be9d479.png" alt="Q7QB2IQUVZRE2%8)T9YE0TW.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/22032345e75b805989611429b102b8f31be9d479.png) [<img src="https://images.seebug.org/upload/201411/220324513a0a0759c0f7c580c32887895971daa2.png" alt="PYA)3WRO_F}L6X`]Y)}`2OK.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/220324513a0a0759c0f7c580c32887895971daa2.png) 2.伪造任意会员或管理留言 [<img src="https://images.seebug.org/upload/201411/22032549cc131ba92abfa51d071c8130b90f3411.jpg" alt="2LCHR0UWX5AB7~S8VUX@9~X.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/22032549cc131ba92abfa51d071c8130b90f3411.jpg) 3.删除任意留言 [<img src="https://images.seebug.org/upload/201411/220326161e468727c80c51deded958604ed108f0.jpg" alt="[LSF]TH0CU3UMDFE0QD_M99.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/220326161e468727c80c51deded958604ed108f0.jpg)