### 简要描述: YiDacms 最新版重置任意用户账户,及其他越权操作 ### 详细说明: 易达CMS 企业建站系统 当前最新版本是:YidaCms X3.2(20140718)版 之前发过一次重置任意用户密码的漏洞,但是只能修改成固定的密码,要是修改成任意密码的话,比较麻烦,需要md5明文密码后取10位作为信息密码,较麻烦。 这里我们直接输入任意明文密码,即可修改 来看看源代码: 文件/Yidacms/user/user.asp ``` if request("yidacms")="password" Then set rs=server.createobject("adodb.recordset") user_id1 = cint(request("id")) sql="select * from shuaiweb_user WHERE id= "&user_id1&"" rs.open sql,dbok,1,1 if Request.Form("shuaiweb_userpass")="" then response.write "<script language=javascript> alert('密码不能为空!');history.go(-1);</script>" response.end end if if Request.Form("shuaiweb_userpass")<>Request.Form("shuaiweb_userpass2") then response.write "<script language=javascript> alert('两次输入的密码不一样!');history.go(-1);</script>" response.end end if set rs=server.createobject("adodb.recordset") user_id2 = cint(request("id")) sql="select * from shuaiweb_user WHERE id= "&user_id2&"" rs.open sql,dbok,1,3 rs("shuaiweb_useremail")=filter_Str(trim(request.form("shuaiweb_useremail")))...
### 简要描述: YiDacms 最新版重置任意用户账户,及其他越权操作 ### 详细说明: 易达CMS 企业建站系统 当前最新版本是:YidaCms X3.2(20140718)版 之前发过一次重置任意用户密码的漏洞,但是只能修改成固定的密码,要是修改成任意密码的话,比较麻烦,需要md5明文密码后取10位作为信息密码,较麻烦。 这里我们直接输入任意明文密码,即可修改 来看看源代码: 文件/Yidacms/user/user.asp ``` if request("yidacms")="password" Then set rs=server.createobject("adodb.recordset") user_id1 = cint(request("id")) sql="select * from shuaiweb_user WHERE id= "&user_id1&"" rs.open sql,dbok,1,1 if Request.Form("shuaiweb_userpass")="" then response.write "<script language=javascript> alert('密码不能为空!');history.go(-1);</script>" response.end end if if Request.Form("shuaiweb_userpass")<>Request.Form("shuaiweb_userpass2") then response.write "<script language=javascript> alert('两次输入的密码不一样!');history.go(-1);</script>" response.end end if set rs=server.createobject("adodb.recordset") user_id2 = cint(request("id")) sql="select * from shuaiweb_user WHERE id= "&user_id2&"" rs.open sql,dbok,1,3 rs("shuaiweb_useremail")=filter_Str(trim(request.form("shuaiweb_useremail"))) rs("shuaiweb_userpass")=filter_Str(left(MD5(trim(request.form("shuaiweb_userpass"))),10)) rs("shuaiweb_username")=filter_Str(trim(request.form("shuaiweb_username"))) rs("shuaiweb_usertel")=filter_Str(trim(request.form("shuaiweb_usertel"))) rs("shuaiweb_userqq")=filter_Str(trim(request.form("shuaiweb_userqq"))) rs("shuaiweb_usermsn")=filter_Str(trim(request.form("shuaiweb_usermsn"))) rs("shuaiweb_useraddress")=filter_Str(trim(request.form("shuaiweb_useraddress"))) rs("shuaiweb_userportrait")=filter_Str(trim(request.form("shuaiweb_userportrait"))) rs("shuaiweb_usernote")=filter_Str(trim(request.form("shuaiweb_usernote"))) rs("shuaiweb_usernumber")=filter_Str(trim(request.form("shuaiweb_usernumber"))) rs.update rs.close set rs=nothing session("shuaiweb_useremail")=request.Form("shuaiweb_useremail") response.write "<script language=javascript> alert('修改成功!');location.replace('user_pass.asp');</script>" End If ``` 这里按照获取的id,直接update,更新用户信息了 信息的密码直接获取,也没有判断旧密码,直接修改对应id的密码以及其他信息。 这里同样,遍历一遍id,即可修改全部用户密码。 其他越权操作: ``` if request("yidacms")="buydel" Then set rs=server.createobject("adodb.recordset") user_id3 = cint(request("id")) sql="select * from shuaiweb_buy WHERE id= "&user_id3&"" rs.open sql,dbok,1,1 if rs("shuaiweb_reading") = 1 then response.write "<script language=javascript> alert('已发货的订单不可以删除!');history.go(-1);</script>" response.end else if(cint(request("id")) <> "") then id = cint(request("id")) set rs = server.createobject("adodb.recordset") user_id4 = cint(request("id")) sql="DELETE * FROM shuaiweb_buy WHERE id= "&user_id4&"" rs.open sql,dbok,3,2 rs.update rs.close set rs=nothing response.write "<script language=javascript> alert('成功删除!');location.replace('user_buy.asp');</script>" End If end if ``` 这列也是直接获取id,然后删除id对应的订单 导致越权删除任意用户订单信息了。 ### 漏洞证明: 先来看看用户id=5的初始信息,登陆密码为222222 [<img src="https://images.seebug.org/upload/201408/271616142143e214ce3d7a552e11a3236ad15274.png" alt="777.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/271616142143e214ce3d7a552e11a3236ad15274.png) 然后登陆攻击者账户,修改id=5的用户的信息及密码: [<img src="https://images.seebug.org/upload/201408/271616469f73cd0fffaac182d8922b30a8931d0c.png" alt="888.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/271616469f73cd0fffaac182d8922b30a8931d0c.png) 最后登陆id=5的用户时,用户名和密码已经被修改了 [<img src="https://images.seebug.org/upload/201408/271617169f38a0990fb9fb7b148b67f4a9f5ec99.png" alt="999.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/271617169f38a0990fb9fb7b148b67f4a9f5ec99.png) 另一处修改订单同样,只要发送删除订单请求,修改id即可删除此id的订单了。