2017-11-25 9 views
-2

タイトルはすべてです。 chrootから脱出するためにnode-jsプログラムでどのようなコードを使用できますか?NodeJSを使用してchrootを破棄する

私は入力補助プログラムに使用しています。入力補助プログラムは、Chromebookのcroutonで作成されたchrootの内部で実行されます。しかし、私は入力助手が私のchromebookのルートディレクトリにLinux chrootから抜け出して、Androidサブシステムと対話するための "adb"コマンドを実行できるようにしたい。 (画面の領域をクリックするなど)

私はすでにPythonとC++でそれを行う方法を見つけましたが、NodeJSではできませんでした。

+0

C++でネイティブノードモジュールを作成しようとしましたか? – Ankur

+0

@Ankurいいえ、しかし私は "posix"ノードモジュールを使ってそれを行う方法を見つけました。 (小さな変更) – Venryx

+0

また、なぜdownvotes?これは本当のプロジェクトの正当な質問です:https://github.com/Venryx/InputAssistant – Venryx

答えて

0

さて、私はどのようにここでは、このPerlスクリプトのコードを模倣することにより判明:次のようにhttp://pentestmonkey.net/blog/chroot-breakout-perl

NodeJSのバージョンは次のとおりです。(それはrootアクセスを必要としないことに注意してください)

var fs = require("fs"); 
var posix = require("posix"); // run "npm install --save posix" first 

function EscapeCHRoot() { 
    var dir = "./tempCHRoot"; 

    // create subfolder to be our new root 
    if (!fs.existsSync(dir)){ 
     fs.mkdirSync(dir); 
    } 

    // change root to the subdirectory (letting us break out, ie. use "..") 
    posix.chroot(dir); 

    // change current-directory, all the way up to host's root 
    for (var i = 0; i < 100; i++) { 
     process.chdir(".."); 
    } 

    // change root to host's root folder, completing break-out process 
    posix.chroot("."); 
} 

しかし、上記のコードでは、使用前に "posix" npmモジュールを変更する必要があります。これはchrootが実行されるたびに(chroot breakoutが動作しないようにする)、 "posix"モジュールはデフォルトでchrootディレクトリに作業ディレクトリを変更するからです。そのため、コードを編集して、ディレクトリの変更呼び出しを取り除く必要があります。次に、この、オープン "node_modules/POSIX/SRC/posix.cc" を行うには

、およびこれらの線

// proper order is to first chdir() and then chroot() 
if (chdir(*dir_path)) { 
    return Nan::ThrowError(Nan::ErrnoException(errno, "chroot: chdir: ", "")); 
} 

をコメントアウトそのフォルダ内の "NPMインストール" を実行します。

これはそうです。 EscapeCHRoot()関数を実行すると正しくエスケープするようになり、後でコードがホストシステムのファイルにアクセスできるようになりました。

関連する問題