
Vonage 2024 ハッカソン優勝者のスポットライト:リモート・コード実行
所要時間:2 分
シナ・マダーニとの出会い
Vonageでは、開発者が限界に挑戦するのを見るのが大好きです、 シナ・マダニがまさにそうでした。彼のプロジェクトは リモート・コード実行これは、SSHやリモートデスクトップクライアントなしでマシンへのリモートアクセスを可能にするものです。 SSHやリモートデスクトップクライアントなしで.
考えてみてほしい:世界中のマシンにコマンドを送る必要があるが、SSHが使えないとしたら?シナのソリューションは、次のようなものを使ってそれを可能にする。 VonageのAPI、Java、ネットワーキング技術.彼のプロジェクトは GitHub.
課題リモートアクセス、SSHなし
セキュア・シェル(SSH)やリモート・デスクトップ・クライアントはリモート・アクセスの定番だが、これらには制限がある:
ファイアウォールによる制限- SSHをブロックしているネットワークもあります。
ユーザーの複雑さ- SSHキーとアクセス・ルールの設定は必ずしも簡単ではない。
セキュリティ上の懸念- オープンポートはリスクになりうる。
新浪のアプローチは、次のような問題点を回避している。 Vonageのメッセージングと認証APIを使用して、安全にコマンドを送信・実行する。
仕組み
このプロジェクトの核心は、ユーザーが以下の方法でコマンドを送信できるようにすることである。 SMS、WhatsApp、Viber、Messengerでコマンドを送信できる。を使ってコマンドを送信し、認証されるとリモート・システム上でコマンドが実行される。そして、出力は同じメッセージング・チャンネルを通じて送り返される。
技術スタック/前提条件
Vonage開発者アカウントVonageの電話番号を持つ
バーチャル電話番号を購入するには APIダッシュボードにアクセスし、以下の手順に従ってください。
Purchase a phone numberあなたの APIダッシュボード
BUILD & MANAGE > Numbers > Buy Numbersを開きます。
必要な属性を選択し、検索をクリックします。
ご希望の番号の横にある購入ボタンをクリックし、購入を確定する。
バーチャルナンバーを購入したことを確認するには、左側のナビゲーションメニューの「BUILD & MANAGE」から「Numbers」、「Your Numbers」の順にクリックします。
Vonage Java SDK& API
メッセージ(SMS、WhatsApp、Viber、Messenger)
Verify(ベリファイ(認証用)
SIMスワップ(セキュリティチェック)
ングロック(ローカルサーバーを安全に公開する)
舞台裏
新浪のプロジェクトに隠された "マジック "がここにある:
1.認証とセキュリティ第一
コマンドを実行する前に、システムはSMS認証でユーザーを確認します。
A ワンタイム認証リンクが サイレント認証.
モバイル・データ認証が失敗した場合 バックアップの音声ベースのPIN認証が作動する。
不正な番号は自動的に ブロックリスト.
タイムアウト前にユーザが再度認証を試みると、待ち時間通知を受け取る。
2.メッセージングによるコマンド実行
認証されると、ユーザーはSMS、WhatsApp、またはその他のサポートされているチャネルを介してコマンドを送信することができます。システム
コマンドを受け取る
制限されたシェルで実行する
出力を送り返す
3.自動セットアップによる手間のかからない導入
アプリケーションは動的に 利用可能なVonage番号をを動的に割り当てます。
必要に応じて 新しい番号が購入され、自動的にリンクされる.
WebhookのURLはVonageのアプリケーションAPIを介して動的に更新されます。
プロジェクトの運営
これを自分で試したい場合は、クローンして レポをクローンして .envファイルを
VONAGE_API_KEY: Vonage account API key.
VONAGE_API_SECRET: Vonage account API secret.
VONAGE_APPLICATION_ID: Vonage application UUID.
VONAGE_PRIVATE_KEY_PATH: Absolute path to the private key associated with your Vonage application.
TO_NUMBER: Client phone number that is allowed to run commands.
VONAGE_HACKATHON_SERVER_URL: External URL of the server. Typically, this would be an ngrok.app URL.
VCR_PORT: Port to run the demo on. By default, this is 8080.もし IntelliJ IDEAがインストールされていれば、このプロジェクトをインポートしてIDEで実行できます。 Applicationクラス (src/main/java/com/vonage/hackathon/rce/Application.java).
コマンドラインからデモをスタンドアロンで実行するには、次のようにする。:
mvn install spring-boot:runAPIキーとAPIシークレットを見つけるのにお困りですか?
API設定ページを開く API設定ページを開き、Vonage API KeyとSecretにアクセスしてください。両者は以下のスクリーンショットのように表示されます。APIキーはページの上部にあり、APIシークレットにアクセスするには、"Account secret "サブセクションを参照してください。
注:以前に作成したAPIシークレットを覚えていない場合は、"+ Create new secret "をクリックし、安全に保存してください。

便宜上、以下を環境変数に追加することができる。 (~/.bashrc or ~/.zshrc):
export VCR_PORT=9080
export NGROK_URL="https://[id].ngrok.app"
export VONAGE_HACKATHON_SERVER_URL=$NGROK_URL
function ngrokUrl() {
local url=$(curl -s localhost:4040/api/tunnels | jq -r '.tunnels[0].public_url')
sed -i '' "s|\(^export NGROK_URL=\).*|\1\"$url\"|" ~/.zshrc
source ~/.zshrc && echo $NGROK_URL
}それからサービスを開始する:
ngrok http $VCR_PORTあなたのVonageウェブフックは、新しいNgrok URLを指すように自動的に更新されます。
結論
それだけです!VonageのJava SDK、メッセージング機能、認証ワークフローを使用することで、開発者は従来のSSHやリモートデスクトップツールを使わずに、ほとんどの人が行う以上のソリューションを構築することができます!Sinaがそうであったように!Vonage開発者コミュニティに参加することもできます。 スラックに参加するか 私または X (旧 Twitter).次はあなたのプロジェクトを特集したいと思います!