
NodeXP - サーバーサイドJavaScriptインジェクションツールで、Node.jsの脆弱性を検出および悪用することができます。
NodeXP は Python 2.7 で書かれた統合ツールであり、S(erver)S(ide)J(avascript)I(njection) 攻撃に基づいて、Node.js サービス上の潜在的な脆弱性を検出し、自動的に悪用することができます。
Git リポジトリをクローンして NodeXP をダウンロードします:
git clone https://github.com/esmog/nodexp
すべてのオプションのリストを表示するには、以下を実行します:
python2.7 nodexp -h
POST および GET ケースの例を以下に示します:
python2.7 nodexp.py --url="http://nodegoat.herokuapp.com/contributions" --pdata="preTax=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA"
python2.7 nodexp.py --url="http://nodegoat.herokuapp.com/contributions" --pdata="preTax=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA" --tech=blind
python2.7 nodexp.py --url="http://192.168.64.30/?name=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA"
python2.7 nodexp.py --url="http://192.168.64.30/?name=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA" --tech=blind
NodeXP に慣れるためには、提供されている Node.js テストサービス (/testbeds) をセットアップし、ツールを使用開始する必要があるかもしれません。Node.js サーバーが動作しているローカルマシンが必要です。
まず、GET および POST ディレクトリで 'body-parser' と 'express' パッケージをインストールする必要があります。
ローカルマシンの 'testbeds/GET' ディレクトリに移動し、以下のコマンドをターミナルに貼り付けます:
npm install express --save
'testbeds/POST' ディレクトリに移動し、以下のコマンドをターミナルに貼り付けます:
npm install body-parser --save
nmp install express --save
パッケージが正しくインストールされたら、'node' コマンドと目的の js ファイル(例: node eval.js)を実行して各サービスを起動できます。
サーバーが起動して実行されたら、NodeXP を実行してこれらのサービスに対してテストする準備が整いました!
GET ケースの例を以下に示します:
python2.7 nodexp.py --url=http://localiprunningnodejsserver:3001/?name=[INJECT_HERE]
POST ケースの例を以下に示します:
python2.7 nodexp.py --url=http://localiprunningnodejsserver:3001/post.js --pdata=username=[INJECT_HERE]
Blind および Results Based Injection の両方の手法で使用されるペイロードは、"/files/blind_payloads.txt" と "/files/payloads.txt" に保存されています。
ペイロードはテキストファイルの奇数行に記述され、Results Based Injection の場合、期待される応答は "payloads.txt" ファイルの偶数行にカンマ区切りのリストとして記述されます。"blind_payloads.txt" ファイルの偶数行は空です。
インジェクションのプロセスを停止するために、Blind および Result Based Injection の両方のケースで、ペイロードの解析とインジェクションを停止できる区切り文字として "---end(nextline)---end" が使用されています。
各ユーザーは、上記の指示に従う限り、独自のペイロードでペイロードの txt ファイルを管理および更新できます。
このツールの目的は厳密に学術的なものであり、私の修士論文を実施するために開発されました。また、Node.js サービスに対するペネトレーションテストのプロセスにも役立つ可能性があります。このツールのその他の悪意のある使用や違法な使用は強く推奨されず、この研究の目的の一部ではないことは明らかです。
NodeXP - Version 1.2.2