漏洞概要
关注数(24)
关注此漏洞
漏洞标题:铁路12306通信加解密破解
提交时间:2016-03-30 16:51
修复时间:2016-05-16 16:00
公开时间:2016-05-16 16:00
漏洞类型:账户体系控制不严
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2016-03-30: 细节已通知厂商并且等待厂商处理中
2016-04-01: 厂商已经确认,细节仅向厂商公开
2016-04-11: 细节向核心白帽子及相关领域专家公开
2016-04-21: 细节向普通白帽子公开
2016-05-01: 细节向实习白帽子公开
2016-05-16: 细节向公众公开
简要描述:
详细说明:
信任所有证书极易导致中间人攻击,完全可以控制整个通信内容。业界公认高危漏洞。
漏洞证明:
一、 https未校验证书导致数据被捕获(中间人攻击风险)
客户端虽采用了https,但并未对服务端证书进行校验能够捕获通讯数据,可导致中间人攻击。
信任所有证书
可以正常截获通讯数据
二、通信数据解密
铁路12306通信加解密主要通过checkcode、decheckcode两个函数进行通信加解密,虽然采用加固方式,但是太过依赖于加固技术,从而造成通信接口过于暴露。
dex部分:
加解密函数代码
so部分:
这里以解密代码为例:
调用R3,这里就调用到了aes_decrypt1
在 aes_decrypt1函数中调用了CWAESCipher::WBACRAES128_DecryptCBC
在这个循环1中,调用CWAESCipher::WBACRAES_DecryptOneBlock进行解密,解密的顺序为逆序,第一次解密的key为:00 00 00 00 00 00 00 00 00 00 00 00 最后四字节为base64数据长度+1。
解密出来的数据有2个作用:1> 作为下次解密使用的key,2>通过第2个循环修复出真正的解密数据。
逆序进行数据解密
编写封包解析程序验证登录加密数据和返回数据的解密:
登录数据中parameters项中para中数据是加密的
通过编写程序测试,checkcode加密后的数据为para中的内容。
服务器返回数据中respData中的数据为加密内容,解密后的数据:
手机号、生日、身份证号码、姓名、邮箱、用户名等等信息暴露。
三、数据重放
登录数据信息
退出之后登录,仍然可以重放登录数据
解密登录返回数据内容信息:
重放某人的登录包,可拿到手机号、生日、身份证号码、姓名、邮箱、用户名等等信息
修复方案:
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:8
确认时间:2016-04-01 15:58
厂商回复:
谢谢!
最新状态:
暂无
漏洞评价:
评价
-
2016-03-31 02:05 |
坏男孩-A_A ( 实习白帽子 | Rank:81 漏洞数:23 | 膜拜学习中)
-
2016-04-01 16:17 |
Praise ( 路人 | Rank:10 漏洞数:1 | null 开心就要笑得如痴如醉~)
-
2016-04-01 17:50 |
Moonight ( 实习白帽子 | Rank:51 漏洞数:7 | 无线安全攻城狮)
12306的Android?iOS?是的话兄弟很牛逼啊~
-
2016-05-16 16:10 |
猪猪侠 ( 核心白帽子 | Rank:4781 漏洞数:368 | 你都有那么多超级棒棒糖了,还要自由干吗?)