漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0149383
漏洞标题:易车网某处存在SQL注入漏洞(可跨25个库及所有数据)附验证脚本
相关厂商:易车
漏洞作者: 路人甲
提交时间:2015-10-26 10:57
修复时间:2015-12-10 11:00
公开时间:2015-12-10 11:00
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-10-26: 细节已通知厂商并且等待厂商处理中
2015-10-26: 厂商已经确认,细节仅向厂商公开
2015-11-05: 细节向核心白帽子及相关领域专家公开
2015-11-15: 细节向普通白帽子公开
2015-11-25: 细节向实习白帽子公开
2015-12-10: 细节向公众公开
简要描述:
易车SQL注入
详细说明:
目标:易车网官网APP
检测发现以下地方存在注入:(POST中的carids,stacked queries)
SQLMap证据截图:
看了下网站被没设什么过滤或者WAF,但是SQLMAP并没跑出库名来;
一、暴数据方法
后来研究了下发现,由于这个参数中的本来就存在逗号,所以逗号会被程序脚本作为分隔符处理掉,这样就传不到数据库了,所以相当于逗号就被过滤了,也就是说注入语句中不能存在逗号。
如果是MySQL数据库的话,直接用substr(user() from 1 for 1)来替代substr(user(),1,1)即可,但是此数据库为MSSQL,只支持substring(user,1,1),必须使用逗号。
后来想了下,使用了字符串比较的方法解决,MSSQL比较字符串是一个个字符往后比ASCII,不管长度如何,只要在前N位分出大小,则停止比较。故按此原理可逐位推算出DB_NAME()等数据。如
不断枚举最后一位的字符即可~
Python程序如下,以跑11位的当前数据库名为例:(程序中设了个代理,如需使用,请取消)
二、数据证明
1)当前数据库:YICHEMOBILE
(XXX按一中原理遍历)
2)所有数据库个数,共25个
3)所有数据库名,这里只列出一些吧,其他的就不跑了
(XXX按一中原理遍历,YYY从1-25,即可遍历25个库名)
================
MASTER
TEMPDB
MODEL
MSDB
BITAUTOUSERCRM
BITAUTOBI
BITAUTOUGCMONITOR
YICHEMALLPAYMENT
MARKETINVOICE
DEALERASSISTANTSYSTEM
YICHEMOBILE
YICHEMOBILECOMMUNITY
YICHEACTIVITY
YICHEMEDIA
YICHEMOBILESUBSCRIBE
MARKETCOUPONS
......
......
================
4)我们来看下当前库YICHEMOBILE吧,共930个表
5)我们来看两个表名吧,其他的表及具体的数据就深入咯~
漏洞证明:
修复方案:
请多指教~
版权声明:转载请注明来源 路人甲@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2015-10-26 10:59
厂商回复:
非常感谢对易车的帮助,我们尽快处理。谢谢
最新状态:
2015-10-27:已经修复了,非常感谢对易车的支持。谢谢