私が作業しているサーバーには、実際にはそれぞれのネットワーク接続を介して取得された引数を使用して別のシェルスクリプトを呼び出すシェルスクリプトであるxinetdサービスがあることがわかりました。
それはこのようなことをします:
/execute/another/script $WITH $A $FEW $ARGUMENTS
これが本当の問題であると私が恐れているのは、変数がまったくサニタイズされておらず、これがルートとして実行されるため、真剣に受け止められるべきものであるという事実です。
誰かアドバイスしてもらえますか?また、そのような状況で変数を悪用して他の何かを実行させる方法を知りたいのですが、誰かが例を提供できますか?
2種類の攻撃が見られます。昇格された特権を与えることができるデータでスクリプトを呼び出すことによる、スクリプト自体に対するもの。もう1つは、バッファオーバーフローまたはその他のbashバグを使用したbashに対するものです。 1つの問題は、bashは、入力が開始者と同じ人物によってフィードされることを想定しているため、この種の攻撃に対して優れたセキュリティを提供するように設計されていないことです。
少なくとも、bashスクリプトを更新して、通常のユーザーとして実行できるようにし、昇格された特権を必要とするものにはSudo
または他のUnixメカニズムを使用します。
これはどう?
export ARGUMENTS='ValidArg&mkdir /var/tmp/hello_there'