私はこれに少し不慣れです...
私はこれを使用しています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に保存されるのですか?そして、なぜシンボリックリンクが使用されているのですか?
攻撃者は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されていることに注意してください)。
目標達成!