web-dev-qa-db-ja.com

シンボリックリンク、PATHおよび特権昇格の脆弱性

私はこれに少し不慣れです...

私はこれを使用していますVM https://www.vulnhub.com/entry/the-wall-1,130/ 練習のために、私がしないステップがありますここで: https://research.g0blin.co.uk/thewall-vulnhub-writeup/

バイナリで文字列を呼び出した後、静的パスに正しく制限されていない1つのパス-メールが表示されます。脆弱性を見つけるのはかなり粗雑な方法ですが、効果的です。

つまり、基本的にDavidGilmourのシェルを取得するには、/ tmp/mailに/ bin/shへのシンボリックリンクを作成し、PATH変数を変更する必要があります。しかし、なぜそれが行われるのか、それがどのように機能するのか理解できません。誰かが私を説明できますか?

Windowsのように、PATH変数が実行可能ファイルの場所にあることを知っているので、たとえば、コマンドプロンプトで 'cat'またはその他のコマンドを書き込むと、機能し、パス全体を書き込む必要はありません。猫(少なくともそれは私が信じていることです)。

そして、なぜシンボリックリンクが/ tmp/mailに保存されるのですか?そして、なぜシンボリックリンクが使用されているのですか?

3
Mark Read

攻撃者はDavidGilmourユーザーとしてシェルを実行しようとしています。彼らの調査に基づいて、決定はshineonバイナリの脆弱性を利用することを試みることです。そのバイナリはDavidGilmourに設定されているためです。

_$ ls -lah /usr/local/bin/shineon
-rwsr-s---  1 DavidGilmour  RichardWright   7.3K Oct 25 07:58 /usr/local/bin/shineon
_

権限のsに注意してください。つまり、shineonを実行すると、DavidGilmourとして実行されます。ただし、shineonは機能が制限されたプログラムであるため、_start Shell_コマンドはありません。その代わり、攻撃者はシェルが提供する機能を調べます。

_1. Calendar
2. Who
3. Check Internet
4. Check Mail
5. Exit
_

バイナリ内の文字列を確認します。関連する文字列は次のとおりです。

_/usr/bin/cal
/usr/bin/who
/sbin/ping -c 3 www.google.com
mail
_

攻撃者は、これらがアプリケーションの機能を実行するために使用されるコマンド文字列であると推測します。Calendarは_/usr/bin/cal_などに対応します...攻撃者はmailに完全なパスがないことに巧妙に気付きます。つまり、スクリプトは、mailにある最初のPATHコマンドを実行します。そのため、攻撃者はmailという名前のコマンドをランダムなディレクトリに作成します。彼らは_/tmp_を選択しましたが、その選択は重要ではありません。コマンドは_/bin/sh_へのシンボリックリンクです。シンボリックリンクは、2つのファイル間にエイリアスを作成します。この場合、オペレーティングシステムが_/tmp/mail_を実行すると、実際には_/bin/sh_が実行されます。彼らは_/bin/sh_を_/tmp/mail_にコピーすることもできましたが、なぜそれが面倒なのでしょう。コピーには時間がかかり、ディスク領域を使用します。シンボリックリンクも同様に効果的で高速です。

最後のステップは、PATH環境変数を_/tmp_で始まるように設定して、OSがmailコマンドを実行するときに_/tmp/mail_を見つけることです。そして、これは_/bin/sh_へのシンボリックリンクであるため、_/bin/sh_をDavidGilmourとして実行します(プログラムは常にDavidGilmourとして実行されるようにsetuidされていることに注意してください)。

目標達成!

4
Neil Smithline