0x00 P2P安全二三事
前言
当金融和互联网相遇,会有着怎样的化学反应?
2015年6月底,全国共有3547
家网贷平台,纳入中国P2P
网贷指数统计的P2P
网贷平台约为2553
家,全国P2P
网贷平台平均注册资本为2468
万元。
然而,互联网在为金融行业带来飞速发展的机会和空间的同时,却也因为网络应用的不断深入,带来了一堆隐藏在光亮前景背后的安全问题。
2015年8月7日,乌云平台白帽子发现帝友P2P
借贷系统全局问题造成多处注入,可到后台拿shell
,分析数据库,已注入出后台管理员明文密码。
8月8日,知名P2P平台借贷系统贷齐乐被发现多处SQL
注入可影响大量P2P网贷站点,白帽子还提供了多达100+的案例以证明危害范围之广。两天后,也就是8月10日,乌云平台上又爆出贷齐乐出现某处设计缺陷导致大面积注入以及几处高权限SQL
注入。 帝友和贷齐乐借贷系统可以说是现在P2P行业两大主流借贷系统,据统计,现在全国百分之七十以上的借贷网站都是用贷齐乐系统搭建的,并且在今年中国最大的投资理财产品点评平台76676发起的“最安全P2P网贷系统
”的投票评选活动中,以3372
票的高票数稳居第一,占据了总票数的35%
,帝友借贷系统也经常出现在P2P平台上,也就是说这两个系统一旦出现安全问题,将会危机到一大片P2P借贷网站。
根据世界反黑客组织的最新通报,中国P2P已经成为全世界黑客宰割的羔羊。而资金安全应当占据P2P行业安全的首要位置,本期的乌云爆告就将从网络安全技术角度,以数据和实际案例为你分析和解读P2P行业潜藏的资金安全隐患。
数据说话
据乌云漏洞收集平台的数据显示,自2014年至今,平台收到的有关P2P行业漏洞总数为402
个,2015年上半年累计235
个,仅上半年就比去年一年增长了40.7
%。
2014年至2015年8月乌云漏洞报告平台P2P行业漏洞数量统计(单位:个)
在2014年至今的402
个漏洞中,有可能影响到资金安全的漏洞就占了漏洞总数量的39%
。2015年上半年中,对资金有危害的漏洞就占了今年P2P漏洞总数的43%
。
数字会说话,从以上数据我们可以看出:
(1)2015年仅上半年的P2P金融行业漏洞数量就比2014年全年增长了40.7%
;
(2)P2P行业漏洞中,高危漏洞占了很大比例,达到56.2%
之多;
(3)2014年至今可能影响到资金安全的漏洞共同占了漏洞总量的46.2%
,该情况在2015年依旧没有得到很好的解决,2015年上半年这样的漏洞的数量依旧占了上半年漏洞总数的44.3%
,只增未减;
以上P2P行业漏洞涉及到93
家厂商,其中不乏很多知名的P2P网贷平台,在此就不一一列举了。
机遇和风险并行,P2P行业在飞速发展的同时,面临的安全挑战也是非常严峻的。
Sablog作者4ngel(真名:谭登元)于2014年1月29日因通过侵入他人计算机系统,骗取多家P2P平台大量现金被逮捕,并在2015的6月25日被法院做出了终审判决,以诈骗罪
分别判处郎小龙有期徒刑十一年
,并处罚金人民币五十万元
;判处谭登元有期徒刑五年
,并处罚金人民币十万元
;将郎小龙、谭登元退缴的全部犯罪所得,发还相应被害公司。
谭登元曾被称为WebShell
三剑客的PHPSPY
的作者,安全天使站长,对安全行业曾有过较大贡献。但在2013年8月到10月之间,谭登元却同另一名黑客郎小龙侵入了多家P2P平台。他们两个分工明确,由谭登元非法侵入被害单位的网站,取得被害单位网站的后台管理系统权限,并将权限发送给郎小龙,郎小龙则用获取到的权限篡改网站投资客户的姓名、身份证号、资金记录、银行卡号等原始数据后登陆网站系统申请提现,骗取被害单位向郎小龙控制的多个账户转账。通过这样的手段,两人一共骗取人民币共计1572356.15
元。
他们危害的公司名单如下:
郑州树诚科技有限公司——中原贷
浙江华良投资管理有限公司——爱贷网
南宁安铎尔金融信息服务有限公司——紫金贷
浙江涌润投资管理有限公司——涌金贷
深圳旺金金融信息服务有限公司——融信财富
东莞市巨印实业投资有限公司——和诚德
南京明宝堂金融信息服务有限公司——保险贷
淮安市融鑫金融信息咨询有限公司——乾坤贷
杭州浙优民间资本理财服务有限公司——一诚贷
从这个血淋淋的真实Case里,我们可以正面感受到P2P面临的网络安全风险挑战有多严峻。也许一个小的失误,就能造成一笔巨大的损失。本次的乌云爆告宗旨其实也是想要让大家正视P2P行业阳光背后的阴影,发现问题,及时止损。
0x01 你的资金还安全吗?
既然要带大家发现P2P行业背后隐藏的问题,那么接下来我们就继续用真实案例说话,带你直击P2P行业资金的薄弱之处,案例中选了几家排名靠前的知名P2P平台,以它们为镜,正视行业安全现状。以下所有案例均为乌云平台已通知厂商进行修复并公开的漏洞。
宜人贷
宜人贷是宜信公司于2012年推出的,在网贷之家P2P平台排行榜中位列第三。宜信公司作为国内最大的互联网金融企业之一,树大招风,旗下产品自然会比较引人关注。
WooYun-2015-112228
这是一个因为应用配置错误造成svn
泄漏,从而导致数据库帐号密码等敏感信息泄漏。SVN
是Subversion
的简称,是一个开放源代码的版本管理工具。
从可直接访问到的svn
处,所有PHP
文件都可以下载查看源代码,配置文件中还泄漏了内网地址、数据库帐号密码等敏感信息。
当内网地址、数据库帐号密码都被知晓了,那网站资金是不是也面临着巨大的威胁呢?
小编说:从厂商的回复中可以得到,这是由于研发私自修改Nginx目录限制导致该漏洞的,虽然这个漏洞中,白帽子没有进行深入的渗透,但是的确泄漏了很重要的敏感信息,你永远不知道这些信息在黑产的手中可以挖掘出怎样巨大的利益。
WooYun-2015-114030
在宜人贷某处可以免密码登录,随便输入一个工号就可以登录。
登录之后可以将未绑定帐号的内部帐号绑到自己的账户上,然后等待奖励分钱。
小编说:在测试过程中,白帽子将一个内部员工的帐号绑定到了自己的账户上,这样可以等待内部员工奖励了。总觉得和钱扯上关系的每一个点都应该被注意,哪怕只是很微小的一个地方,这样低级的逻辑错误更应该积极避免。
翼龙贷
翼龙贷网成立于2007年,总部位于北京,目前已在全国一百多个地级市设立运营中心,覆盖上千个区、县及近万个乡镇,并将在全国众多的一、二线城市建立全国性的服务网络,在网贷之家P2P平台排行榜中位列第十三。
WooYun-2015-128134
这是一个openssl心脏滴血漏洞,可获取用户完整的cookie,间接影响用户账户安全、资金安全。
每次重放cookie都不一样,谁在线就能抓谁的了。
登陆口的也可以抓到。
小编说:心脏滴血漏洞从2014年4月7日在程序员Sean Cassidy的博客上被公开到现在,也是有很长一段时间了,但网站却没有及时地打上补丁,造成用户完整cookie
的泄漏,间接地影响了用户账户安全、资金安全,这样的情况可以说是网站管理者的疏忽,但P2P行业作为一个金融行业,在安全上又怎么能有半点马虎呢?毕竟也许还有很多我们没有发现的“P2Pの终结者
”正躲在暗处伺机而动。
WooYun-2015-124387
一个通过找回密码发现的安全漏洞。
通过找回密码,抓包可以看到用户邮箱
、余额
、手机号
、ID
等敏感信息。
只是泄漏敏感信息就完了么?然而并不是,到这里还没完。利用Email
和ID
,我们还可以重置用户的密码。
首先用攻击者的帐号进行重置密码的操作,到输入新密码的页面停住;
然后利用受害者的邮箱进行重置密码的操作;
接着回到攻击者帐号重置密码的页面,输入新的密码,提交后拦截请求,将请求中的Email
和ID
处修改成受害者的Email
和ID
,之后发送请求,即可重置被害者帐号密码。
小编说:在这个漏洞里面,翼龙贷网站出现了两个失误,一是在找回密码的返回包中泄漏了用户敏感信息,为攻击者后来的重置其他用户的密码操作提供了重要信息(Email
和ID
),二是cookie
没有和用户绑定对应,这样可不可以理解为cookie
的作用并没有被发挥出来呢?从最后的图中我们可以看到,用户的账户里还是有不少余额的,如果因为网站的安全问题造成用户的损失,那网站在用户心中的信任度是不是也会跟着下降呢?
WooYun-2015-119527
这是一个因为考虑不够完全造成的漏洞。
翼龙贷手机客户端中通过邮件找回密码时,验证码明文出现在返回包中
返回包中包含的验证码是不是和邮件中的验证码一模一样呢?
小编说:网站在开发此功能时,是不是忘记数据包是可以被黑客们轻而易举地拦截到的呢?当重置密码的验证码明文出现在返回包中时,验证码的作用也就被抹杀掉了,重置别人的密码变得如此简单,你怕不怕?
通过乌云平台上收集到的漏洞看来,翼龙贷在安全方面还需要更加谨慎一点,这里小编就只举了三个翼龙贷的案例,都是能够触及到用户密码
、cookie
等敏感信息的漏洞,而从漏洞成因看来,以上三个漏洞基本都是因为网站管理者或者开发者在对待安全时不够谨慎,考虑不够深入全面而造成的。就乌云平台上收集到的漏洞看来,翼龙贷在安全方面存在的问题还是比较多的,更需要多加重视与投入。互联网金融行业作为黑客眼中的一大肥羊,怎么可以在安全方面掉以轻心呢?
搜易贷
搜易贷是搜狐集团旗下的互联网金融平台,由搜狐畅游CEO何捷于2014年4月创办,2014年9月2日搜易贷正式上线,在网贷之家P2P平台排行榜中位列第三十九。
WooYun-2015-111101
这是一处因为设计缺陷/逻辑错误而造成的密码重置漏洞,可以说是一个很奇葩的逻辑,下面用流程图来解释这个漏洞。
简单来说,就是攻击者拿着自己密码重置的凭证重置了别人的密码,这是一个一看就是错误的逻辑,但从乌云平台收集的漏洞看,这样的漏洞不止拍拍贷有,在其它P2P平台也存在着这样的错误逻辑。这里列举几个其他借贷平台相同或相似逻辑的漏洞:
WooYun-2015-113309
WooYun-2015-127897
WooYun-2015-120673
WooYun-2015-101028
小编说:从漏洞详情中不难看出,和搜易贷出现的类似的逻辑漏洞不是唯一的,就连位于网贷之家P2P排行榜第12名的和信贷也不止一次地出现这个问题,前面出现的翼龙贷的重置密码漏洞(WooYun-2015-124387
)也可以算做此类问题,都是攻击者拿着自己的凭证重置了别人的密码。用户账户密码都被重置了,那资金还会安全吗?建议开发人员在开发的过程中要注意“应该怎样保证cookie等可以重置密码的凭证与用户之间的对应关系”这样的问题,不然一不小心就会出现这样的神逻辑漏洞呢。
有利网
有利网是2013年2月25日上线的,目前在网贷之家P2P排行榜中位列第九名。
WooYun-2014-89313
这个漏洞白帽子给了一个这样的标签——有利网刷钱漏洞,和钱直白地扯上了关系。 该漏洞利用了有利网注册可获50元红包和可以任意手机号注册两个条件,结合Burp Suite
修改响应包的内容,可以实现无限获得50元的新手红包。
小编说:这个漏洞利用起来比较麻烦,需要一次一次修改响应包的内容,但是在金钱诱惑下,这些麻烦又算什么呢?虽然最后厂商判定该漏洞无影响,但真的没有影响吗?别的P2P平台是否也存在相同的问题呢?
WooYun-2013-21722
[有利网 也可以任意用户密码重置][31]
在有利网密码重置链接中,某个参数由于设置过于简单,且发送请求时无次数限制,可以通过爆破重置任意用户密码。
小编说:又是一个密码重置的漏洞。在整理P2P漏洞的过程中,小编发现重置用户密码似乎变成了一件很简单的事情。密码对于作为互联网用户,来说,其实是一个心理保障,尤其当用户的资金和互联网相关联的时候,密码其实给了用户一个心理上的可信任因素,如果被攻击者重置密码变成一件很简单的事,那对用户对于互联网的信任是不是有很大的影响呢?这样是否会间接影响到P2P平台的发展呢?
易贷网
易贷网正式开通于2009年1月,是比较早期的互联网借贷平台,截止2010年1月,网站的日PV
量就突破了20万
,目前位列网贷之家P2P平台排行榜第十。然而这样一家大型的P2P借贷平台,也存在着不可忽视的安全问题。
WooYun-2015-125376
易贷网存在任意文件包含,包含配置文件可以读到物理路径,注册一个用户上传图片,图片中插入一句话即可getshell
,然后可以接触到十几万的用户数据,当然有用户帐号密码这些跟资金相关的敏感数据。
小编说:文件包含漏洞是由于在引入文件时,对传入的文件名没有经过合理的校验,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。这是否也是安全上的疏忽呢?当用户帐号密码被泄漏的时候,P2P平台还可以给用户怎样的资金安全保障呢?所以P2P平台在面对安全挑战时,是不是应该更加小心谨慎一点呢?
WooYun-2015-125371
易贷网也会存在SQL
注入,通过一个注入,可以导致所有用户信息泄漏,包括账户名和密码。
小编说:SQL注入
是一种经久不衰的姿势,虽然从爆发到现在已经很长时间了,但大大小小的网站依然可能存在着这个问题。安全有时候就是这么不可掉以轻心,sql注入
是直接能够影响用户资金以及引起个人信息泄露的主要原因之一,一个注入点导致用户帐号密码泄漏这样的漏洞,并不会是个案。
和信贷
和信贷成立于2013年8月18日,目前位列网贷P2P平台的第十二位。
WooYun-2015-114207
这个漏洞是由于没有对重置密码时应输入的短信验证码进行校验而导致的。
正常的重置密码流程如下:
1.输入要找回的用户帐号,输入图形验证码,下一步;
2.点击发送短信验证码,用户手机收到验证码;
3.填入短信验证码,点击下一步;
4.开始重置密码。
但由于第第三步存在问题,没有对验证码进行有效验证,所以可以直接绕过第三步,攻击流程如下:
1.输入图形验证码,下一步;
2.点击发送短信验证码,用户手机收到验证码;
3.直接访问正常流程中第四步的URL
进行密码重置。
也就是说只要完成正常流程中的第一步和第二步,然后直接访问重置密码的链接:https://member.hexindai.com/password/rest.html即可顺利重置用户密码。
小编说:从漏洞详情中我们不难看出,短信验证码在这里根本不起什么作用,那么设置短信验证码的初衷是什么呢?这可以说是一个很简单的漏洞,但是危害却很大。金融安全中,应该保证所设置的每一个验证步骤都发挥了自己的作用,不要丢三落四喔。
WooYun-2015-114209
仍旧是密码找回的问题,当重置密码遇上Burp Suite
,不够谨慎的开发就很容易造成问题。
正常的邮箱找回密码流程如下:
1.输入用户名,输入图片验证码,下一步;
2.点击邮箱方式找回密码,会自动往绑定的邮箱中发送一份邮件;
3.打开邮件中重置密码的URL进行密码重置。
但由于设计缺陷,重置任意用户密码时不需要知道用户邮箱收到的具体重置密码的URL
,攻击方法如下:
1.随意输入一存在的用户帐号,输入图形验证码,下一步;
2.点击重新发送,抓包,如图:
Burp中拦截带的响应包内容
收到的重置密码的URL
小编说:这么重要的重置密码的URL
怎么可以包含在可以被截获的cookie
中呢?可以重置用户密码的凭证是不是应该更加注重保密性呢?还是那句话,安全是从点滴小事累积起来的,不可以掉以轻心。
福利Tips
虽然只是列举了一些知名P2P金融平台的漏洞,但是从例子和乌云收到的P2P金融漏洞看,会发现重置密码还是占了很大比例的。是什么让重置密码变得如此简单?有白帽子为我们整理了一些常见的重置密码漏洞,并对其进行了分析:http://drops.wooyun.org/papers/2035
一般的密码重置设计都是分为以下四步:
1.输入账户名
2.验证身份
3.重置密码
4.完成
重置密码的漏洞基本会分为三类:
-
爆破类型
-
秒改类型
-
需要与人交互类型
爆破类型
这种类型的重置密码漏洞是最多见最容易出现的一类,其中还分为手机验证码爆破和邮箱验证码爆破两种。
爆破手机验证码
这种设计一般是在找回密码的时候,会给指定的手机号发送一个用于验证身份的验证码,然后只要用户输入正确的验证码,就可以进行密码重置了。 这种设计产生重置密码漏洞的情况,一般是由于验证设计过于简单,而且对校验码的校验使用次数没有进行限制,导致正确的验证码可以被枚举爆破,从而重置密码。此方法也是最常见的重置密码的方式,因为大多数厂商最开始的设置都是采取的4-6位纯数字验证码的验证方式,而且是没有防止爆破的设计,例如限制次数等。
爆破邮箱验证码
这这种设计一般是在找回密码的时候,会给指定邮箱发送一个用于校验的url
链接,链接中一般会有一个参数就是用于验证身份的验证码,然后用户点击指定url就可以进入重置密码的页面从而去重置密码了。
这是由于设计缺陷产生重置密码漏洞的情况,也是由于重置密码链接中的验证码参数设计过于简单,可以被爆破,从而可以重置密码。
当然邮箱验证码有时也会出现验证URL
包含在cookie
中,可以被攻击者截获。
秒改类型
偷梁换柱一
这种设计一般是在找回密码的时候,会给指定邮箱发送一个用于校验的url
链接,链接中一般肯定会存在2个比较重要的参数,一个是用户名(或者uid
、qq邮箱
之类的能代表用户身份的参数),另一个就是一个加密的字符串(通过服务器端的某种算法生成的用来验证用户身份的参数)。然后用户在重置密码的时候,点击邮箱中的重置密码链接,就可以重置帐号密码了。
这种情况一般是由于重置密码链接中的表示用户名的参数和用于校验的加密字符串参数没有进行一一对应,导致可以被黑客偷梁换柱,从而重置密码。
也就是说,那个验证身份的加密字符串是万能的。
比如生成的重置密码url
为:http://www.xx.com/xxoo.php?username=wooyun1&code=asdfghjkl然后由于这里的参数code
在服务器端验证的时候,只要其自身的算法满足服务器端的验证就直接通过了,不会去验证这个code
是不是和wooyun1
账户对应的。
从而,黑客可以直接利用url
:http://www.xx.com/xxoo.php?username=wooyun2&code=asdfghjkl重置帐号wooyun2
的密码。
偷梁换柱二
同样是偷梁换柱,这种一般是在最后一步设置新密码的时候,程序员往往会疏忽验证用户身份,从而被偷梁换柱,重置密码。这种一般是由于前面2步骤中已经验证了身份,然后3步骤重置密码的时候没有对用户身份进行持续性的验证导致的。
程序员的小失误
有的时候虽然加密字符串的算法很复杂,但是在重置密码的过程中,要是程序员自己不小心将其泄漏了,那也可以被重置密码。这种属于程序员自己没有将开发调试时候的一些数据在正式上线前去掉导致的。
加密算法过于简单
有的时候利用邮箱的url重置密码,虽然不存在以上几种情况,但是由于加密算法过于简单而被破解,导致密码重置。这种一般都是一些简单的加密算法,将一些关键参数比如用户名、邮箱、手机号、验证字符、时间戳等,进行一定的规则的组合然后进行md5
、base64
加密。
绕过某步骤
重置密码一般需要四个步骤:
1.输入账户名;
2.验证身份;
3.重置密码;
4.完成。
有时候当你进行了第一步之后,直接去修改URL或者前端代码去进行3步骤从而也能成功的绕过了2的验证去重置密码。这种一般是由于没有对关键的身份验证的参数进行追踪导致的。
代收用户验证码
有时候修改密码的时候会给邮箱或者手机发送一个新密码,那么抓包将手机号或者邮箱改成我们自己的会怎么样呢?这种一般是由于没有验证手机号或者邮箱的对应身份导致的。
需要与人交互
CSRF
有的时候CSRF
利用好的话,也可以重置用户甚至是管理员的密码。这种一般是由于登录帐号后重置密码或者绑定邮箱、手机号的时候没有token
也没有验证refer
导致的。
XSS
有时候XSS
漏洞也可以重置密码,当然这种也是因为本身重置密码这里就有其他的设计缺陷。这种一般是用XSS
劫持了账户后,由于某些奇怪的设计造成的。
小编说:P2P金融厂商可以对照着这个来对自身做一个大检查,重置密码从来都不是一件小事情,作为跟资金相关的金融平台,密码不仅是对用户的一层安全保障,也是自家资金安全的门锁之一。
0x02 安全从未停止
安全对于P2P行业来说究竟有多重要呢?
根据经济之声的《天下财经》报道,今年7月份P2P网贷的整体成交量达到825亿元
,环比上升超过25%
,同时,参与P2P网贷的投资人和借款人分别达到了179万
和44万
人,同样大幅攀升。
拿什么去保障这些巨大的成交量以及庞大的用户群体的利益呢?截至2014年底,已有近165
家P2P平台由于黑客攻击造成系统瘫痪、数据被恶意篡改、资金被洗劫一空等。每天都有平台在因为黑客攻击而面临倒闭。
虽然P2P金融行业面对的网络安全挑战在一点点变得严峻,但是似乎安全还没有被这个行业彻底地重视起来,从乌云平台收集到的漏洞我们可以看到,厂商对于一些漏洞不够重视。
WooYun-2015-115425p2p金融安全之安心贷重要功能设计缺陷(影响全站用户)
2015年5月31日,乌云平台公开安心贷重要功能设计缺陷漏洞,该漏洞可以通过修改请求包中有关手机号码的参数,是自己的手机接收到任意用户重置密码所需的验证码,达到重置用户密码目的。该漏洞可以影响全站用户,但被厂商选择忽略。
WooYun-2015-118355p2p金融安全之808信贷新版更严重漏洞二(某业务可Getshell漫游内网附送SQL注入&心脏滴血)
2015年6月5日乌云平台爆出8080信贷
新版某业务出现一大波高危漏洞,包括getshell漫游内网
、SQL注入
、心脏滴血
等,白帽子曾多次以用户的身份跟客服联系,提醒问题所在,但客服却不理不睬。漏洞提交到乌云平台后,漏洞也被忽略处理了。
这样的案例并不是个别的,P2P的迅速兴起使得行业并没有在安全上投入太多资源和经历,薄弱之处自然不少。
安全也许只是P2P借贷平台发展的一部分,但却是最重要的一部分,也许你现在不重视的问题,会成为危及资金、危及客户群体,最后导致灭亡的那个致命因素。
阅尽无数漏洞,不如真真正正地意识到安全的重要性,用最谨慎最认真的态度对待一切有可能出现的安全挑战才是P2P网贷平台不断发展壮大的关键。 安全不会就此停歇,它,从未停止。
0x03 贡献者
撰写第一期乌云爆告得到了很多小伙伴的帮助,感谢这些小伙伴对本次爆告的关注和为撰写做出的贡献。
netwind | 乌云白帽子(漏洞案例作者) |
Martes | 乌云白帽子(漏洞案例作者) |
糖剩七颗 | 乌云白帽子(漏洞案例作者) |
忽然之间 | 乌云白帽子(漏洞案例作者) |
BMa | 乌云白帽子(漏洞案例作者) |
恋锋 | 乌云白帽子(漏洞案例作者) |
北京方便面 | 乌云白帽子(漏洞案例作者) |
px1624 | 乌云白帽子(漏洞案例作者&福利Tips作者) |
杀器王子 | 乌云白帽子(漏洞案例作者) |
her0ma | 乌云白帽子(漏洞案例作者) |
管管侠 | 乌云白帽子(漏洞案例作者) |
从容 | 乌云白帽子 |
子非海绵宝宝 | 乌云白帽子 |
疯狗 | 乌云白帽子 |
wudi | 乌云白帽子 |
皂皂 | 乌云爆告设计者 |
P.S:欢迎各位对第一期乌云爆告提出自己的见解和建议,您可以通过邮箱联系我们,我们的邮箱地址是media@wooyun.org