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

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

缺陷编号:wooyun-2016-0167437

漏洞标题:驴妈妈旅游网商户系统存在多处设计缺陷漏洞

相关厂商:驴妈妈旅游网

漏洞作者: px1624

提交时间:2016-01-05 12:10

修复时间:2016-02-12 18:49

公开时间:2016-02-12 18:49

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

危害等级:高

自评Rank:18

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2016-01-05: 细节已通知厂商并且等待厂商处理中
2016-01-05: 厂商已经确认,细节仅向厂商公开
2016-01-15: 细节向核心白帽子及相关领域专家公开
2016-01-25: 细节向普通白帽子公开
2016-02-04: 细节向实习白帽子公开
2016-02-12: 细节向公众公开

简要描述:

白帽子找出问题,应该详细的说明分析问题,并尽量提供靠谱的修补措施。这样厂商才能更好的修补漏洞,不然可能公开后反而会被轻易的恶意利用。厂商自己也要学会举一反三啊!

详细说明:

漏洞系统地址:http://fenxiao.lvmama.com/

1.png


1 首先是看了下面这2个漏洞报告后,才去看的。
http://wooyun.org/bugs/wooyun-2015-0149748
http://wooyun.org/bugs/wooyun-2015-0161249
2 发现了几个问题,首先,其中一个报告中提到的2个系统的帐号密码,还没有修改,这都一个多月了,漏洞都快公开了。

sam/sam1122?
zjw/zjw1122?


现在还是可以直接登录进去的。

2.png


3 然后我去试了试这2个报告中提到的登录位置的爆破问题,发现虽然做了修改,但是修的还是有问题。
先看看这哥们给的修补措施,如下图。

3.png


4 然后厂商也的确很重视,2次都给了20rank,然后也按照他说的措施修改了。
但是修改的结果就是,的确是每次验证码都会变一次,但是仅仅是前端的显示验证而已。服务器端的这个验证码还是可以无限次使用的。
所以也就是说,前面那2次报告提到的问题,根本就没有得到根本上的修补。
如下图,还可以根据length区分出哪些是存在的用户名。存在的返回length 350会提示 账户或者密码错误,不存在的会提示 帐号不存在或者账户或密码错误,这直接就可以很轻易的分辨出来了。

4.png


通过上面的方法爆破出来了一堆存在的帐号

lgr
ada
dad
hgx
llx
mid
sam
wcl
wcs
wkl
wwf
wzj
xtn
zhh
zjw
zyp
charenqing
charisheng
charonghua
charongshun
charongyan
charuigang
charuizhen
charunxian
charutao
chencharong
dingcharong
hecharong
huangmidi
jiangcharong
lixin
liyang
maomidan
wanghuan
zhangpeng
liumeng
yuting
guowei
guobin
gaotao
hujin
linxia
mayan
xiaofeng
yangwen
yuanhua
zengwen
zhouyu
zhuchao


然后每天5次限制,可以慢慢破,总是可以爆破出来弱口令的,这里前面的密码都没修,我也就不去破了。
5 继续说另一个问题。
发现这个系统的cookie设计是有问题的。每次登录,会Set-Cookie,但是同一个帐号每次的Set-Cookie都是一模一样的,所以这个cookie是永久有效不过期的,所以也就是说只要黑客登录了一次这个帐号,这个帐号就已经永久被劫持了。
6 然后继续说cookie的设计问题,不光是上面提到的不过期的情况,我登录了2个帐号,分别保存了cookie做了下对比。

Set-Cookie: dc4e01dbca1cd374ffb9068b31380fc2=Hb0l2XklSPjZXd0N2XklTP5ITN4ICMpZ1c39GaslTZw0mJ1N3cfRHdwlTZy0mJfd3YzVFdp9DZy0TNwAjMmcXdlNlcu9WYl1ePdaOqkWSqpZ1cn9mc19Dcw0mJzl2XpR3c9ASMkZlYs9War5XPhNXYxMCNyZ2blx2XklTPmMXdlNlcp9DZz1WYm0; path=/


Set-Cookie: dc4e01dbca1cd374ffb9068b31380fc2=Hb0l2XklSPjZXd0N2XklTP5ITN4ICMpZ1c39GaslTZw0mJ1N3cfRHdwlTZy0mJfd3YzVFdp9DZy0TNwAjMmcXdlNlcu9WYl1ePdaOqkWSqpZ1cn9mc19Dcw0mJzl2XpR3c9ASMkZlYs9War5XPhNXYxMCNyZ2blx2XklTPmMXdlNlcp9DZz1WYm0; path=/


发现cookie中很多的东西都是一样的,我们把它分行对比下。
帐号1:
dc4e01dbca1cd374ffb9068b31380fc2=Hb0l2XklSPjZXd0N2XklTP

5ITN4IC

MpZ1c39GaslTZw0mJ1N3cfRHdwlTZy0mJfd3YzVFdp9DZy0TNwAjMmcXdlNlcu9WYl1eP

daOqkWSq

pZ1cn9mc19Dcw0mJzl2XpR3c9ASMkZlYs9War5XPhNXYxMCNyZ2blx2XklTPmMXdlNlcp9DZ

z1WYm0


帐号2:
dc4e01dbca1cd374ffb9068b31380fc2=Hb0l2XklSPjZXd0N2XklTP

3IDO5Ui

MpZ1c39GaslTZw0mJ1N3cfRHdwlTZy0mJfd3YzVFdp9DZy0TNwAjMmcXdlNlcu9WYl1eP

8WOo7Wuu8Syn


pZ1cn9mc19Dcw0mJzl2XpR3c9ACMkZlYs9War5XPhNXYxMCNyZ2blx2XklTPmMXdlNlcp9DZ

61namc


7 如上显示,可以看到,cookie应该是一个组合的算法的加密,比如最前面的dc4e01dbca1cd374ffb9068b31380fc2 就是字符串saasinfo的32位md5加密的结果。
2个帐号cookie的大部分的内容都是一样的,只有3处是不一样的。
然后做了下控制变量后的测试,发现情况如下。
不一样的3处的功能:
第一处:这个比较重要,会直接影响页面的显示。
第二处:这里是用户名的显示位置,可以随便写。
第三处:这里是标题栏的显示位置,也可以随便写。
只要保证第一处通过校验,第二处和第三处位置都可以随便写,可以直接绕过验证登入。
比如第二处和第三处随便写,后台会显示如下情况,但是正常功能都可以操作。

5.png


8 基于以上的分析,我猜测这里的cookie主要是由6部分构成的,其中有3部分是不变的,用于验证用户的访问权限,另外3部分是变动的,不同的帐号对应的不一样的。
由于不知道这3出变动位置的字符串的加密算法,所以我们按照其位数随便写写试试能不能绕过验证。
登录,抓包,拦截,修改返回信息内容如下(ip位置我打马赛克了)。
三处变动位置分别用了1234567 xxxxxxxx 123456 去替换试试。

HTTP/1.1 200 OK
Date: Tue, 05 Jan 2016 02:08:09 GMT
Server: Apache
Set-Cookie: Apache=222.***.***.***.1451959689761606; path=/; max-age=315360000; domain=.zowoyoo.com
Set-Cookie: dc4e01dbca1cd374ffb9068b31380fc2=Hb0l2XklSPjZXd0N2XklTP1234567MpZ1c39GaslTZw0mJ1N3cfRHdwlTZy0mJfd3YzVFdp9DZy0TNwAjMmcXdlNlcu9WYl1ePxxxxxxxxpZ1cn9mc19Dcw0mJzl2XpR3c9ASMkZlYs9War5XPhNXYxMCNyZ2blx2XklTPmMXdlNlcp9DZ123456; path=/
Vary: Accept-Encoding,User-Agent
Content-Length: 49
Content-Type: text/html;charset=UTF-8
{"state":true,"msg":"","change":"home/index.jsp"}


发现500了!

555.png


9 也就是如上面所说,这里会导致后台页面出问题,但是发现其他不登录没有权限的接口还是可以访问操作的额。
比如
产品的上下架情况
http://fenxiao.lvmama.com/home/prod_log.jsp?d=2015-12-30&s=0

6.png


http://fenxiao.lvmama.com/home/prod_log.jsp?d=2015-12-30&s=1

7.png


10 所以说,这里的cookie可以直接伪造进行登录,获取到登录权限做一些登录权限才可以访问和操作的接口。

漏洞证明:

如上分析。

修复方案:

1 登录位置的爆破问题,需要每次从服务器端新生成一个验证码,然后请求的时候和服务器端做对比,保证验证码一次性失效。然后返回信息尽量不要提示这种用户名错误,用户名不存在的这种东西,统一提示用户名或者密码错误,返回一样的length。
2 cookie的这个问题,改一下设计逻辑吧,起码要保证帐号退出,cookie就立即失效的这个情况。然后cookie的算法和验证这里也要做到不能被伪造绕过啊,最好从服务器端生成随机的hash,然后通过指定的算法去生成cookie。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2016-01-05 16:48

厂商回复:

thx

最新状态:

暂无