今天我来介绍一下我之前是如何攻入PayPal记录系统的,这个BUG已经被反馈给了Paypal安全团队并立即得到了修补。
利用这个漏洞,攻击者可以完全访问PayPal的用户交易记录。在这些记录里,你可以找到如下的用户信息:
购物地址
电子邮箱
电话号码
商品名称
购买数量
用户全名
交易号
发票号
交易主体
账户名
Paypal参考编号
等等……
首先,在PayPal的用户界面,这里有一个“交易记录”的选项:
通常,用户可以通过这个选项来访问自己购买过的商品记录。
当我点击了交易记录时,我发现程序发送了一个post请求,大概是这个样子 (POST /acweb/iportal/activePortal/viewer/viewframeset.jsp):
接下来我又看到了一个路径 (/acweb/iportal/activePortal/viewer/),其中有些部分引起了我的兴趣 (iportal, activePortal)。随即我就谷歌了一下:
https://www.google.co.il/#site=&source=hp&q=inurl:activePortal%2Fviewer%2Fviewframeset.jsp
我发现这个程序是由Actuate开发的:http://www.actuate.com/home/
出于这点,PayPal似乎是靠运行Actuate Iportal (一个第三方应用) 来为用户显示交易记录的。你们都知道我最喜欢试用版了,试用版就像是这样:
我下载了30天试用版的Actuate Iportal Application。这能让我得到源代码,目录结构和文件名,甚至还附送了完整版的用户手册。
http://www.birt-exchange.com/be/documentation/Manuals/creating-custom-iportal-apps.pdf
这手册节省了我不少时间,因为他们已经把参数信息和文件名都整理好了。
经过一番彻底的检查,我发现了一个有趣的文件getfolderitems.do。PayPal交易记录系统(business.paypal.com)允许我以普通用户的权限访问这个文件。这是因为Actuate就是用这个文件显示交易记录的。当然最重要的一点就是你可以用非管理员账户使用这个文件。
那就来看看getfolderitems.do文件中包含了哪些具体参数吧:
1、ID:
Id值,来显示具体用户目录中的内容。例如:
Id=1234 (Nir Item)
Id=12345 (Egor item)
2、Folder:
目录,指定用户记录的路径 (getfolderitems.do?folder=/users/)。
现在,我首先想试图通过getfolderitems.do来访问用户目录从而突破PayPal记录系统。例如:
https://business.paypal.com/acweb/getfolderitems.do?folder=/users/
但是没成功!PayPal禁止我通过getfolderitems.do来访问用户目录的请求。
我知道了PayPal已经对这个漏洞的恶意访问进行了限制,于是我需要换一种攻击方式才能成功的访问PayPal的用户记录。
经过研究,之前提到的getfolderitems.do里的用户参数暴露了用户的加密令牌(secret tokenid)。所以,虽然PayPal会拒绝任何通过getfolderitems.do对用户目录的访问 (getfolderitems.do?folder=/users/),然而它却允许攻击者使用加密令牌(secret tokenid)来访问目标用户目录。
例如:
被拒绝的请求:getfolderitems.do?folder=/users/
被成功执行的请求:getfolderitems.do?folder=/users/9k1mvk2s10almQ9PM/
如果攻击者(这里是我)输入ID值 (getfolderitems.do?id=392302),PayPal将会显示出目标用户的加密令牌(secret tokenid)。
这些ID值只有8-10位数字,而Paypal却拥有上百万的用户。
关于这件事,我能够有效访问的PayPal用户令牌值能够让我用来对用户交易记录目录进行更为深入的攻击:
(getfolderitems.do?folder=/users/tokenidofthevictim/)
从而获得对用户记录目录的完全访问。
有图为证:
顺带一提,在PayPal的BUG有奖反馈期间,我发现了大量围绕Iportal的漏洞。最终,PayPal完全舍弃了这个应用。
原文地址:http://blog.idf.cn/archives/655.html