2

こんにちは、私は会社が使用しているプロプライエタリな Web サーバー プログラムを壊そうとする任務を負っていますが、あまり運が良くありません。cで構築されています。

ルートとして実行され、コマンドを実行できるようにしようとしています。Web サーバーは、URL にポストされたコマンドを取得し、これらのコマンドをプレフィックス付きで実行します。これで、'&_cmd=gettimeout' や '&_cmd=rm' などの任意のコマンドを渡すことができます。プログラムは実際に「prefix rm」を実行します

プレフィックス プログラムは、一連のディレクトリでそのコマンドを実行しようとしますが、その中には有用な UNIX コマンドがないため、コマンドが見つからないことを報告するだけです。また、'&_cmd=rm%20-f' のように URL にスペースを渡すこともできません。これは、php スクリプトがスペースを + に変換するためです。実際の UNIX コマンドを実行するために &_cmd 文字列をフォーマットする方法はありますか?

少し変わった仕事ですが、私はセキュリティコースを行っているプレースメント学生であり、私の仕事は私のコースに関する仕事を見つけようとしています.

ご協力いただきありがとうございます

4

1 に答える 1

1

いくつかのアイデアは、うまくいくかもしれませんが、うまくいかないかもしれません:

  1. バッククォート。運が良ければ、prefix実行前に評価されます。運がなければ、彼らはまだ何らかの形であなたに役立つかもしれません.
  2. スペースが機能しない場合、他の種類の空白を試してみませんか? タブなどがあります。
  3. 正確に使用できるコマンドを見つけ、それらが役立つかどうかを判断する必要があります。
  4. 許可されているコマンドの 1 つでバッファ オーバーランが検出される場合があります。通常、このようなオーバーランはセキュリティ上のリスクではありません (を乗っ取ってしまうとvi、とにかくできなかったことができなくなります)。しかし、このコンテキストでは、それらを悪用できる可能性があります。
  5. /proc/そこにたどり着くことができれば、実行可能ファイルがにあります。そこには、各プロセスのコマンドへのリンクが含まれています。
于 2012-01-18T11:14:06.813 に答える