首页 » SEO优化 » php读取keystore技巧_科普加密钱包马脚运用与分析

php读取keystore技巧_科普加密钱包马脚运用与分析

访客 2024-10-23 0

扫一扫用手机浏览

文章目录 [+]

加密领域里,数字钱包和资金息息相关,越来越多的人意识到了数字钱包安全的至关主要性。

2020年8月9日,CertiK的安全工程师王沛宇(Peiyu Wang)与何敏之(Minzhi He)在DEF CON区块链安全大会上揭橥了演讲主题为:Exploit Insecure Crypto Wallet(加密钱包漏洞利用与剖析)的主题报告。

php读取keystore技巧_科普加密钱包马脚运用与分析

加密钱包是一种存储私钥和/或公钥的设备、程序或做事。
由于加密货币是虚拟的,以是加密钱包不能用来存放现实中的泉币。
但当我们进行交易时,加密钱包可以利用用户的私钥来为交易署名,并在区块链上进行广播。

php读取keystore技巧_科普加密钱包马脚运用与分析
(图片来自网络侵删)

加密钱包有不同的种类,比如软件钱包和硬件钱包。
本次演讲将重点关注网页钱包和桌面钱包。

点击链接不雅观看加密钱包科普演讲视频:https://v.qq.com/x/page/v3135cz0g73.html

网页钱包

这是一个范例的网页钱包界面,它便是我们CertiK的Deepwallet钱包。
用户可以在这个界面中看到账户余额以及发送货币的选项,由于这是一个基于COSMOS的钱包,以是具有委托功能。

当评论辩论到网页运用安全问题时,我们最先想到的便是“开放式Web运用程序安全项目(OWASP)”的十大安全漏洞。

以下是CertiK安全工程师调查的27款网页钱包中“OWASP Top 10”的十大安全漏洞的一些统计数据。
CertiK安全工程师在3款钱包中创造了跨站脚本攻击(XSS),在此选取2例进行案例研究。

我们在一个去中央化钱包里创造了一个SqI注入漏洞。
但是它的数据库只包含了交易数据,由于区块链中的交易数据已经公开,利用Sql注入来窃取数据并没有什么意义。
由于也没有办法利用SqI注入实现后台代码实行,在这种情形下,这个SqI注入攻击是没有多少实际影响的。

此外,这个去中央化钱包内的某个API的访问权限存在漏洞,未经授权的用户可以修改其他人的2FA设置,但是没办法利用这个漏洞去盗取别人的账户里面的资产。

有很多网页钱包都短缺安全标头(header),例如Content Security Policy (CSP) 和“X-Frame-Options”的标头,这会使得钱原谅易遭到点击挟制(Clickjacking)攻击。

一些钱包还在用早已过期的JavaScript库和存在CVE的Nginx/Apache做事器,这些漏洞同样无法直接被利用。

CertiK安全工程师暂未创造任何处理XML格式数据的钱包,也没有创造有钱包进行了任何反序列化操作,以是没有创造XXE以及反序列干系的漏洞。
关于日志和监控方面,也暂时没有更多信息。

案例一:去中央化网页钱包的DOM XSS漏洞

这是一个去中央化的网页钱包的DOM XSS漏洞案例。
这个钱包支持单一协议,并拥有网页钱包的所有基本功能。

存在漏洞的功能

此运用程序会保存上次的访问位置:用户用密码解锁钱包后,会重新跳转到解锁之前的页面,下图是实现此功能的代码。
如果你有测试网页运用程序的履历,就知道这种情形很有可能存在DOM XSS漏洞,本案例便是如此。

DOM XSS

DOM XSS须要Source和Sink。
Source是运用程序收到非可信数据(用户输入)的位置,然后会将其通报给Sink。
当用户访问此链接时,“window.location.search” 将返回 \公众?returnTo=/validators\"大众,然后“{returnTo}”会包含\公众/validators\"大众。

Sink是处理来自Source的非可信数据的地方,因此Sink在这里是:“window.location.href”,如果用户输入“returnTo=/validators”。
钱包返回到“/validators”, 即转到验证者页面。
如果输入“returnTo=javascript:alert(1)”,将在浏览器中弹出alert窗口。

Keystore和Password

这个钱包属于去中央化的网页钱包。
用户创建帐户或导入帐户后,Keystore和Password都存储在本地存储中。

利用JavaScript读取本地存储

JavaScript能够读取本地存储中的信息。
在本案例中,键值数据显示为存储在本地存储中的“Hello World”。
JavaScript就可以实行LocalStorage.getItem(“Hello”)获取“World”。

利用DOM XSS

那如何利用所创造的DOM XSS漏洞来盗取本地存储中的Keystore和Password呢?

不才面的这个URL中,它可以读取Keystore和Password的内容,并将其发送到黑客的做事器。
在黑客的做事器日志中,可以直接看到Keystore内容和Password。
一旦节制了这些信息,就相称于掌握了用户的账户,可以登录到他们的钱包并将钱转出。

修复方法

该网页钱包厂商的修复方法为,每当用户解锁钱包,网页钱包总会重定向到个人主页,从而不给攻击者任何插入恶意代码的机会。

案例二:托管网页钱包中的反射型XSS漏洞

第二个案例研究是关于某个托管网页钱包中的反射型XSS漏洞。
托管网页钱包是由做事器管理所有私钥。
如果要登录钱包运用,用户要通过电子邮件吸收一次性密码。
此案例中的钱包支持16种不同货币,具备所有钱包的根本功能以及一个附加功能,称作“推特赠予”。

API操作

API的URL格式类似于“/API/{endpoint}”,例如获取用户交易信息的API即为“/apiUser/cloudTrans”。

如果访问一个不存在的API端点,如“/api/test”,做事器将返回带有缺点的页面,如下图“无法解析要求”。
此外,我们创造链接中的内容涌如今了做事器返回的页面中。

这代表着一个旗子暗记:如果后台不对用户输入进行任何处理或编码,就有可能遭到反射型跨站点脚本(Reflected XSS)攻击。

alert(document.domain)

在此钱包的API要求后面加上以下内容:

运用程序会弹出窗口。
这是一个托管的的网页钱包,私钥归做事器管理,因此无法像第一个案例那样直接盗取用户信息。
在这个案例中,我们的操持是考试测验利用这个漏洞来挟制用户账户。

Cookie

用户登录后,其会话令牌存储在“PHPSESSID”cookie中,而这个钱包的分外之处在于这个令牌并没有“HttpOnly”。
如果Cookie设置了HttpOnly,浏览器将阻挡JavaScript访问这个cookie。
换句话说,它可以抵御攻击者通过跨站点脚本攻击(XSS)盗取cookie中的会话令牌。

获取会话令牌

由于本案例的会话令牌中没有HttpOnly,以是可以通过跨站脚本攻击(XSS),读取cookie内容并且发送到自己的做事器。
获取会话令牌后,就可以用它来登录受害者的帐户。
既然有了会话令牌,便是时候来一波洗劫一空了。

入侵钱包的终极目标大部分情形下是盗取用户资金,但还存在一个问题,由于在进行货币交易时还须要2FA验证。
在这一点上,黑客既不能重置2FA,也不能禁用2FA,因此,攻击者须要想办法绕过2FA验证。

绕过2FA验证

前面提到,这个钱包有一个推特赠予功能:当用户进入此功能界面时,它会讯问用户想要赠予什么类型的货币、赠予多少货币以及赠予多少人。

通过这个截图可以看到,用户最多可以赠予2个比特币。

当用户设置好了赠予活动,其他人须要先点击关注,艾特3个朋友并转发此赠予推文,只要完成这些步骤,就可以去领奖了。

但问题就出在这个功能不须要2FA!
攻击者可以通过反射型XSS,盗取受害者会话,登录受害者账户,创建很多赠予活动,然后自己去申领褒奖。
这样就可以把受害者的账户余额全部取出。

修复方法

厂商对输出进行HTML编码,这样办理了XSS漏洞。
同时为含有会话令牌的“PHPSESSID”Cookie设置“HttpOnly”。

这样一来,即便运用程序受到跨站点脚本攻击,攻击者也无法直接盗取账户的会话令牌。

桌面钱包

桌面钱包是一种在苹果操作系统、Windows和Linux上运行的运用程序。
桌面钱包都利用了什么框架呢?

CertiK安全工程师研究了18款桌面钱包,个中QT(C++)、Dot Net(C#),Java各一个,别的15个利用了Electron框架。
这部分的案例研究将磋商Dot Net桌面钱包的做事器远程代码实行漏洞,以及Electron钱包的客户端远程代码实行漏洞。

案例一:Dot Net桌面钱包的做事器远程代码实行漏洞

下文剖析在桌面钱包中创造的一个远程代码实行漏洞。

首先先容一下背景:这个钱包是一个去中央化的单一协议钱包,用C#措辞编写,利用了Dot Net框架。
它包含许多常见的钱包功能,如帐户管理、交易转账和支配/调用智能合约等。

比较有趣的是,它还许可用户上传文件到做事器。
这功能在钱包中并不常见,以是我们决定进一步研究这个功能。
如前所述,这个钱包是基于Dot Net的,如果没有对代码进行稠浊,就很随意马虎通过反编译来获取源代码。
此案例钱包正是这种情形,因此我们能够规复其源代码来进行进一步的剖析。

静态源码剖析

在对可实行文件进行反编译之后,我们找到了实现文件上传的源代码,如下面的代码片段所示。

钱包向做事器发送一个HTTP POST要求并返回文件上传URL,“upload.php”是做事器上的处理文件上传的代码。
现在我们知道做事器后台利用了PHP,因此,如果可以上传一个PHP Webshell到做事器并在浏览器中打开它,我们可能就能够在做事器上远程实行代码。

文件上传

在成功地用钱包上传了一个PHP webshell文件之后,CertiK安全工程师考试测验着在浏览器访问上传的文件。
成功的访问了上传的Webshell, 并能在Webshell中实行命令。

我们同时创造该钱包的做事器是在“administrator”用户下运行的,因此能够以“administrator”权限实行命令。
在这种情形下攻击者能够完备地掌握这台做事器,并且能够操纵其他用户上传的文件。
但是,由于这是一个去中央化的钱包,做事器不会存储任何用户私钥,以是此漏洞无法被利用来直接危害用户帐户。

修复方法

修复是非常大略的,开拓职员直接删除了文件上传功能,这样就不必再担心这个安全问题了。
这是一个很好的办法,由于加密钱包该当尽可能地保持功能上的简洁,以此来避免安全问题。
接下来,再来谈谈Electron钱包的安全问题。

案例二:桌面钱包客户端远程代码实行漏洞

Electron是什么?为什么要用Electron?

Electron是一个开源软件框架,它让开发职员能够利用HTML、CSS和JavaScrip来构建跨平台的桌面运用程序。

利用Electron的好处是开拓职员可以重复利用网页运用程序代码来构建桌面运用程序,也便是说不须要找其余的代码库,也不须要学习新的编程措辞。

在调试Electron运用程序时,利用谷歌浏览器的DevTools会非常随意马虎。
Electron运用程序可直接在操作系统上运行,由于它可以访问Node.js模块,以是也就可以构建比网页运用程序更强大的桌面运用程序。

今年六月,CertiK安全团队在Symbol桌面钱包中创造了一个远程实行代码漏洞,并将该漏洞提交到了Symbol漏洞赏金操持。
详情请点击https://mp.weixin.qq.com/s?

总结

无论是由内部安全团队还是第三方公司实行安全审计和渗透测试,对付确保系统的安全性都是至关主要的。
专业的安全职员会试图从“恶意黑客”的角度来毁坏系统,帮助在真正的黑客利用漏洞之前识别息争救漏洞。

标签:

相关文章

今日头条算法岗三面算法工程师的面试之路

大数据和人工智能技术逐渐成为各行各业的热门话题。今日头条作为中国领先的资讯平台,其算法岗位一直是求职者争相竞逐的焦点。本文将针对今...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法如何打造个化内容推荐

在移动互联网时代,信息爆炸已成为常态。如何在海量信息中找到自己感兴趣的内容,成为了一个亟待解决的问题。今日头条作为一款备受瞩目的新...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法推荐其弊端与反思

算法推荐已经成为各大平台的核心竞争力。今日头条作为国内领先的资讯平台,凭借其强大的算法推荐系统,吸引了大量用户。在享受算法带来的便...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法思维导图信息推荐的奥秘

信息传播速度越来越快,用户对信息的需求也越来越多样化。今日头条作为一款备受关注的新闻资讯平台,其背后的算法推荐机制一直是业界关注的...

SEO优化 2025-01-31 阅读1 评论0