12306个人敏感信息泄露

/**************************************

/* 作者:半斤八兩

/* 博客:http://cnblogs.com/bjblcracked

/* 日期:2015-02-20 00:01

/**************************************

只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

当下社会发展迅速,从最初的排队购票,到电话购票,到现在的互联网购票.互联网让我们足不出户,就能购到火车票,让我们越来越便捷.但是人们往往会忽略了一个不变的定理. 越便捷=越危险.

在互联网上购买火车票,首先你得需要一个合法的身份证,以及12306账号,和少许的Money :)  当从网站上购票成功,可以带着身份证到临近售票厅的TVM去取票.

图中的票就是TVM机制造的.(车票来自互联网) 

  一眼瞟去这张票上的信息量真是巨丰富. 车次,始发站,终点站,开车时间,车座,票价,这些信息做为车票信息出现也能表示理解. 但是姓名,身份证, 这些信息也打印在票面上,是不是太不安全了? 你说打了马塞克了,没事, 好,那二维码又是几个意思?不会是为了让我拿扫一扫关注你们铁道部吧?

 

0x1. 二维码

  二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。

  在票面右下角出现的就是二维码. 这种二维码一般能存储1000-2000个Byte数据. (字符或二进制数据.) 车票上的这个二维码不是为了让你关注他们的,而是你所持车票上所有的信息,都以Ascii格式存储在这个二维码里面. 你可能会问,作用是什么? 功能就是类似防伪标志一样. 那你可能又会问为什么票面上还要出现 姓名 和 身份证号? 这个我也没想通! 难道是为了让检票员肉眼检查真伪?

  火车票上的二维码,我们通过扫描软件,可以扫出一串很长的Ascii.这串Ascii是加密过的.老版本的火车票的二维码算法已经被网友公布出来了.而新版本的算法,好像还未公布.(我也真佩服那些破解二维码算法的人, 没有软件可以debuging,居然都能破解的出来 -_-!!! ) 既然这个二维码是用来辨真伪的,所以他们用的算法,就算再强,也肯定是可还原的.

 

0x2. 身份证

  二维码虽然是可还原的,但是没有软件,我可真没有那能力去肉眼还原.我们知道二维码上的信息十分丰富,但是那里面的信息也只是做真伪辨别用的,所以里面的加密信息,在票面上都是明文显示的.只有一个身份证号是打了马塞克的.这里面最重要的信息其实就两个,一个是姓名.一个是身份证号.我们再回头看看票面上的信息.

 

姓名:刘晴

身份证号:5201031962****0447

 

  设计者以为这样打了马赛克就安全了吗? 我只能说图样图森破.

  现在身份证都是18位长的(老的咱不说了.)

 

举例:

520103      1962        ****           044         7

地区码         出生年       出生月日        顺序号      crc

 

1)地区码:

1~6位为地区代码,其中1、2位数为各省级政府的代码,3、4位数为地、市级政府的代码,5、6位数为县、区级政府代码。例: 520103 ,其中52是贵州省 01是贵阳市 03云岩区

2)出生年:

7~10位为出生年 例: 1962年出生

3)出生月日:

11~14位为出生月日  例: 这里未知

2)顺序号:

15~17位为顺序号,是县、区级政府所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“040-049”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。如:007的就是个男生 而且和他同年月日生的男生至少有两个 他们的后四位是001* 和 003*  例: 044 就说明是个女生.

2)Crc效验值:

第 18 位号码是校验码,目的在于检测身份证号码的正确性,是由计算机随机产生的,所以不再是男性为单数,女性为双数。

(1)十七位数字本体码加权求和公式

  S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和

  Ai:表示第i位置上的身份证号码数字值(0~9)

  Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加权因子)

(2)计算模

  Y = mod(S, 11)

(3)根据模,查找得到对应的校验码

  Y: 0 1 2 3 4 5 6 7 8 9 10

校验码: 1 0 X 9 8 7 6 5 4 3 2

  看到这里,你肯定会想,身份证里的月日不知道,不法份子拿到了也没有用.照样是安全的. 这样想你就大错特错了. 身份证里面只有月日不知道, 1年有12月,每月按31天算,用计算机枚举一下就枚举出来了.不按平润月算,也不按 男生女生基偶数算,你最多也就枚举12*31=372次就能得到正确的身份证号码. 那么这样一来, 二维码就形同虚设了. 现在的问题就是,每枚举一次,如何效验真伪???

0x3. 12306

  这个网站可以说是一个很神奇的网站.最初的时候在这网站上可以用网名购票. 后来就严谨了些,但是还是被人冒名购票了. 如今所有的已知Bug都”修复”了.直接是实名购票. 就是因为有了这个严谨的实名效验,我们可以理解成,我们拥有了全国人民的”身份证数据库”了. 我们只要把1月1号到12月31号的身份证号码都丢进”身份证数据库”里面进行效验一下就能得到火车票本人的正确身份证号码了. 这样也不用麻烦的去破解晦涩难懂的二维码加密信息了.

0x4. 添加联系人

首先得注册一个12306账号.(必须实名制,否则查询不了)

有了账号就添加联系人:刘晴

性别选择,选择女(无论是从顺序号,还是名字上,都能看出是一个女生^_^)(我测试发现性别填男填女都无所谓)

然后添加身份证号码:520103196201010447

其它的不用填写了,然后直接点保存.

 

520103196201020447

520103196201030447

520103196201040447

520103196201050447

520103196201060447

这样顺序以此类推, 姓名和性别都不用改, 只更改身份证号码的月日即可.

直到添加的联系人是成功的为止.

这里添加联系人没有限制,也没有验证码,所以我们可以写个小程序,自动post. 这样就能”秒查”了.

显示 “待核验” 这样的表示失败了, 意思是说数据库中没有此人.

显示 “已通过” 表示数据库中找到了此人, 那么就说明有此人. 身份证就是我们填写的那个.

0x5. 优化身份证

  1)Crc 相信大家还没有添加几个联系人,就嫌麻烦了.更何况是添加几百个联系人. 前面我们在介绍身份证号码各位意义的时候,有说明,最后一会是crc效验,那么我们就可以通过这个crc效验,自动生成一些”正确可靠”的身份证号码,这样就能排除一部分”无效错误”的身份证号码.

  2)生日 我们再把4 6 9 11 月算上30天,这样还能优化几个  另外 润 平 2月在算一下,还能优化一个 ^_^

  这样通过优化之后,就能大大增加工作效率.(在实际测试中,发现,优化之后,往往只剩30个左右的有效身份证号码. 这样手动添加也不会那么麻烦了.)

0x6. 实践(Post 12306)

虽然我们优化掉之后只剩30个了,但我们就是懒,我们还是嫌麻烦.那么我们就来手动Post. 因为12306 用的是Https协议的, 我们就不用socket写了,要不太麻烦了. 我们可以用webbrowser控件,或者wininte, winhttp 都行. 因为一开始我没有玩过post之类的,所以再写的时候,走了不少弯路.在这里我就大概说下流程,代码我会一块打包的,具体的,大家可以看源码.

1)验证码:

https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=login&rand=sjrand

首先从官网下载一个图片效验码到本地.得到效验码后,输入到程序里面.(验证码主要是防止机器人和黄牛 PS:在中国,这些对黄牛来说都是浮云.)

2)初始化:

https://kyfw.12306.cn/otn/login/init

这里主要是为了下载一个JS(JavaScript)文件, 那个JS文件里面有一个随机值. 我们需要获取那个随机值. (随机值和下面一个链接一起使用)

 3)获取ValueKey:

https://kyfw.12306.cn/otn/dynamicJs/xxxxx

链接中的xxxx就是初始化JS里面的随机值. 访问此链接后会返回两个数据,其中一个是KEY,Key是直接明文返回的. 类似 Key=”xxxxxx” 另一个是Value, Value 是通过Key算出来的.

  4)最后一步登录

https://kyfw.12306.cn/otn/login/loginAysnSuggest

登录时Post的数据, 包括了用户名, 密码, 验证码, 以及 Key 和 Value 有了这些数据,就能正常登录了. 我一开始就在Js加解密那里卡了会. 登录成功后, 就可以添加联系人了. 添加联系人那些就很简单了, 这里就不说了, 基本上是抓下包, Post就行了. 删除也是的. 这里值得注意的是, 添加联系人,如果效验成功了,你当时是删不掉的, 只有过了半年后,才能删除. 不知道他们是搞什么GUI.

‘total_times‘:‘99‘,‘passenger_id_type_name‘:‘

‘total_times‘:‘98‘,‘passenger_id_type_name‘:‘

‘total_times‘:‘98‘,‘passenger_id_type_name‘:‘

‘total_times‘:‘98‘,‘passenger_id_type_name‘:‘

‘total_times‘:‘98‘,‘passenger_id_type_name‘:‘

‘total_times‘:‘98‘,‘passenger_id_type_name‘:‘

Post添加成功之后, 我们可以通过返回的 total_times 字段来判断是否审核通过.当Total_times字段等于99的时候,表示审核通过. 98表示 待审核. 我嫌麻烦, 程序里面就没有写了, 所以再添加成功之后, 需要自己到12306网站上,看哪一个身份证号是审核通过的. 如果想加到工具里面,就判断 total_times 字段就行了.

本文至此就差不多结束了, 也许很多人会觉得就算知道了身份证也不能怎样. 其实这也得看是什么场合,以及什么人拿到了你的身份证号.  唯一的解决办法, 要么是让火车票再改版, 直接去掉身份证号码, 或者让12306的添加联系人时, 有点限制, 比如一个号,1天只能添加2-3个, 比如一个IP1天只能添加2-3个, 比如每添加一个要等1个小时间隔,才能添加第2个, 比如每添加一个要等1周才能效验结束. 等等.

总之大家要保护好自己的隐私.不要轻信什么诈骗短信,输入了自己的身份证号.(特别是现在伪基满天飞的年代.)

 

最后再祝大家2015年马年,新年快乐.恭喜发财 :)

上传的附件
文件类型: 7z   身份证号码效验_Src.7z (2.8 KB, 55 次下载)                   [谁下载?]
文件类型: 7z   12306自动Post_Bin.7z (587.0 KB, 71 次下载)               [谁下载?]
文件类型: 7z   12306网站登录_Src.7z (13.2 KB, 53 次下载)                 [谁下载?]
文件类型: 7z   12306个人敏感信息泄露_pdf.7z (285.6 KB, 101 次下载)  [谁下载?]

时间: 2024-11-08 11:39:28

12306个人敏感信息泄露的相关文章

【转】Android应用开发allowBackup敏感信息泄露的一点反思

转载:http://blog.csdn.net/yanbober/article/details/46417531 1 背景 其实这篇文章可能有些小题大作,但回过头想想还是很有必要的,有点阴沟里翻船的感觉.相信大家都知道Android API Level 8开始提供了为应用程序备份和恢复数据的功能,此功能的开关可以通过应用程序中AndroidManifest.xml文件的allowBackup属性值进行配置,默认是True,所以用户可以对我们应用程序进行数据备份.相信很多人都和我一样一直当作耳边

Android应用开发allowBackup敏感信息泄露的一点反思

1 背景 [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重劳动成果] 其实这篇文章可能有些小题大作,但回过头想想还是很有必要的,有点阴沟里翻船的感觉.相信大家都知道Android API Level 8开始提供了为应用程序备份和恢复数据的功能,此功能的开关可以通过应用程序中AndroidManifest.xml文件的allowBackup属性值进行配置,默认是True,所以用户可以对我们应用程序进行数据备份.相信很多人都和我一样一直当作耳边风过了一下

Nginx敏感信息泄露漏洞(CVE-2017-7529)

2017年7月11日,为了修复整数溢出漏洞(CVE-2017-7529), Nginx官方发布了nginx-1.12.1 stable和nginx-1.13.3 mainline版本,并且提供了官方patch. 当使用Nginx并且开启缓存功能时,攻击者可以构造特定header头字段,能越界读取到缓存文件的文件头信息.文件头信息中可能会包含Nginx代理站点的真实IP,造成敏感信息泄露. 另外,一些第三方模块可能会因此导致拒绝服务或者当前进程的内存泄漏,但Nginx官方暂未发现这样的第三方模块.

国内某厂商摄像头敏感信息泄露漏洞事件分析

国内某厂商摄像头敏感信息泄露漏洞事件分析 PDF 版报告下载: 国内某厂商摄像头敏感信息泄露事件分析English Version: Webcam Sensitive Information Disclosure Vulnerability Analysis 1. 事件概述 国内某家监控产品供应商和解决方案服务商旗下有多款监控摄像机以及相关的配套设备.2017年3月5日,知道创宇旗下漏洞平台Seebug[0]上收录了一位名为"bashis"的国外安全研究员发布了一个漏洞公告,声称该厂商

Pikachu-目录遍历、敏感信息泄露、URL重定向

目录: 目录遍历 敏感信息泄露 URL重定向 一.目录遍历 概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活. 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执行其对应的文件. 在这个过程中,如果后台没有对前端传进来的值进行严格的安全考虑,则攻击者可能会通过“../”这样的手段让后台打开或者执行一些其他的文件. 从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞.   你可以通过“../..

pikachu 目录遍历 敏感信息泄露

目录遍历漏洞概述在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能变的更加灵活. 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执行其对应的文件. 在这个过程中,如果后台没有对前端传进来的值进行严格的安全考虑,则攻击者可能会通过“../”这样的手段让后台打开或者执行一些其他的文件. 从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞. 看到这里,你可能会觉得目录遍历漏洞和不安全的文件下载,甚至文件包含漏洞有差不

pikachu靶场-重定向、目录遍历、敏感信息泄露

一.URL重定向 1.概述 不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方. 如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话 就可能发生"跳错对象"的问题. url跳转比较直接的危害是: -->钓鱼,既攻击者使用漏洞方的域名(比如一个比较出名的公司域名往往会让用户放心的点击)做掩盖,而最终跳转的确实钓鱼网站 2.不安全的URL跳转 点击第一个和第二个没有变化,第三个跳转

逆向路由器固件之敏感信息泄露 Part2

之前的文章中详细介绍了各种解包路由器固件的工具.解包之后就获得了固件中的文件.下一步就是分析文件寻找漏洞了.这次分析的目标是Trendnet路由器,分析的漏洞是一个远程获取路由器权限的漏洞. 初步分析 通过路由器的登录界面得知路由器型号为Trendnet TEW-654TR,这对收集目标的信息是很有帮助的.通过官方介绍得知该路由器的一些特性.包括支持路由器,无线接入点,无线接入点客户端三种模式,支持NAT和有状态的包检查防御攻击以及有一个简单的web界面支持远程管理等.官网目前最新版固件为V1.

1. 敏感信息泄露

软件敏感信息 * 操作系统版本 可用namp扫描得知 * 中间件的类型.版本 http返回头 404报错页面 使用工具(如whatweb) * Web程序(cms类型及版本.敏感文件) 可用whatweb.cms_identify Web敏感信息 * phpinfo()信息泄漏 http://[ip]/test.php和http://[ip]/phpinfo.php * 测试页面泄漏在外网 test.cgi.phpinfo.php.info.php等 * 编辑器备份文件泄漏在外网 http://