欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

以太坊去中心化应用dApp的渗透测试姿势浅析

来源:本站整理 作者:佚名 时间:2018-06-12 TAG: 我要投稿


以太坊去中心化APP(dApp)是基于一致性协议(consensus protocol)的应用,dApp最常用的应用情景就是一个常规的Web应用与一个或多个智能合约进行交互,本文中,我们就对这种应用情景过程的安全性进行一个渗透测试。
智能合约(Smart Contracts) 是在 Ethereum 区块链中所属的对象。它们包含代码函数以及能够与其他合约进行交互、做出决策、保存数据与发送乙太币给其他人。合约是由创建者所定义,但是它们的运行与他们所提供的服务,都是由 Ethereum 网络本身提供。它们将存在且可被运行,只要整个网络存在,并且只会因程序中有撰写自我销毁的功能才会消失。
实例1 – CryptoKitties以太猫
当我们利用MetaMask之类的客户端插件通过Web访问某个dApp时,我们就能在网站的Web接口中使用自己的私钥对交易进行签名。
以下就是一个我们常见的dApp应用实例,我可以通过它提供的Web接口和包含我自己以太坊钱包的Chrome插件来实现交易,完成一个CryptoKitties以太猫的购买操作。

CryptoKitties是一款数字“撸猫”的游戏,它是世界首款区块链游戏,主角是一帮名叫CryptoKitty小可爱,我们要去收集并繁育它们。每只猫都拥有独一无二的特性,并且百分百属于你,除非你想卖出它,否则它不会被抢走,替代,或是销毁,用户可以通过交易这些猫咪来间接赚取以太币。
当我们的浏览器与正常的Web应用进行交互时,Web版中的app应用会与其它的内部服务器、数据库或者云端服务进行通信交流,最终整个交互过程非常简单:

而在dApp应用内部,很多的交互过程与Web版本app类似,但还存在一个第三方因素:可以公开访问的智能合约。

一些Web应用交互会涉及到对以太坊区块链上一个或多个智能合约的读写操作:

多种方法测试
dApp的部份功能目的就是方便终端用户对智能合约的使用,但在这个过程中,也没有明确的规定,说明我们必须通过dApp的Web接口,来与dApp的智能合约进行交互。由于智能合约是可以公开访问的,那好吧,我们尝试绕过Web服务器的一些交易限制逻辑,来直接操作智能合约试试。
现在,我们有两种方案来进行这种渗透测试:
标准的涉及身份认证、访问控制和会话管理等技术的Web应用渗透测试
智能合约审计

换句话说,也就是我们对Web应用以及智能合约的运行逻辑进行检查,看看其中是否存在逻辑错误。由于以太坊中会存在一些函数修改器(modifier),所以其实我们还可以构造出另一种渗透测试方式。
Modifier
Modifiers :函数修改器,用在智能合约中进行一些函数功能行为的修改,例如对函数执行前置条件的自动检查,修改器是一种可被继承合约属性,还可被继承的合约进行重写(override)。函数修改器可以实现智能合约中的管理、增发、兑换、冻结等高级功能。
在以太坊中,我们可以编写仅能从特定以太坊地址调用才能执行的函数,比如onlyOwner就是modifier的一个典型应用,如果我们正确实现了onlyOwner,那么只有合约的所有者(owner)才能运行某些函数。也就是当用这个onlyOwner修改器区修饰一个函数时,则函数必须满足onlyOwner的条件才能运行。
contract mortal {
    /* Define variable owner of the type address */
    address owner;
    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }
    function writeData(bytes32 data) public onlyOwner returns (bool success) {
        // will only run if owner sent transaction
    }
    …}
虽然我们可以直接与智能合约进行交互,但只有类似的onlyOwne修改器被正确实现,我们才能执行相应的函数。然而,在与dApp进行交互通信时,特定权限用户地址的私钥会存在于Web服务器之上,而且Web应用会具备某些特定逻辑,通过读取用户在Web应用上的输入,并使用其中某个私钥来调用智能合约中的某个特权函数。
由于dApp确实可以访问这些特权的以太坊地址,所以,第三个种渗透测试方式就可以是:“如何用dApp写入我们想要的智能合约中的特权函数?”

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载