Mengatasi Serangan SEO Judi Online
Latar Belakang
Akhir-akhir ini situs pemerintahan dan institusi pendidikan sering menjadi target para penjahat SEO atau teknik blackhat SEO karena memiliki traffic yang besar, disamping itu domain .go.id secara umum memiliki nilai yang tinggi dalam pencarian karena umumnya mengandung informasi penting atau terpercaya bagi masyarakat, sehingga linknya sering dicantumkan di website lain, seperti portal berita yang mengulas tentang rencana aturan baru pemerintah, mengenai perpajakan, apa yang boleh dan tidak boleh dilakukan dan hal-hal lain yang umumnya bersifat penting. Tapi, menurut kami alasan utamnya adalah karena PROTEKSI YANG LEMAH.
Karena banyaknya domain dan subdomain yang dikelola, hal ini menimbulkan kurangnya proteksi atau pengawasan, ditambah hal-hal yang bersifat birokrasi sering kali memperburuk keadaan.
Engineer : “Pak, situs kita sering diretas, saat ini belum ada anggota yang memiliki keahlian untuk memproteksi sistem. Bagaimana bila kita open recruitment?”
Manager : “Kita sudah open recruitment, ternyata ekspektasi gajinya tinggi ya! rata-rata minta di atas UMR”
Engineer : “Mas, kita perlu bantuan untuk fix security issue ini di website ini, endpoint ini. Mohon bantuannya ya mas untuk perbaiki”
Developer : “Wah, mas kita masih banyak kerjaan nih, kalau ngefix issue security nanti kerjaan saya gak selesai-selesai”
Masih banyak lagi, hal-hal yang bersifat birokrasi. Boleh dong, ceritakan pengalaman anda yang berhubungan dengan adanya birokrasi yang menghambat proses perbaikan sebuah sistem! 😄
Karena kuranganya pengawasan dan lemahnya keamanan, alhasil banyaknya celah seperti misconfiguration, injection vulnerability, human error, dll tak terhindarkan. Adanya celah tersebut membuat situs rentan terhadap serangan.
Dikarenakan situs tersebut rentan terhadap serangan, maka para penjahat SEO dapat memanfaatkan celah tersebut untuk menyusupi situs-situs tersebut dan pada akhirnya melakukan kegiatan illegal untuk menaikan traffic / penggunjung situs judi.
Namun, tidak menutup kemungkinan mereka akan melakukan kegiatan merugikan lainnya seperti malware host, botnet, spam, drop database dan lebih banyak lagi hal lain yang dapat merugikan pemilik server / hosting.
SEO
Sebelum membahas tentang serangan dan cara memperbaikinya, alangkah baiknya kita membahas dahulu apa itu SEO.
SEO merupakan teknik optimasi Search Engine, yang pada intinya bertujuan untuk meningkatkan traffic website.
SEO sendiri dapat dilakukan dengan banyak cara, misalkan menulis komentar di website lain yang pada komentar tersebut mengarah ke website kalian, menulis artikel di portal berita dan mencantumkan link referensi menuju situs kalian, dan banyak teknik lainnya seperti SEO on page, SEO off page, sayangnya hal tersebut tidak termasuk pembahasan kami di artikel ini, silahkan teman-teman browsing sendiri 😀
Sedangkan, Blackhat SEO adalah teknik SEO yang dilakukan secara ilegal untuk menaikkan traffic suatu website yang dituju dan hal inilah yang dimanfaatkan oleh tim situs judi online untuk mempromosikan website judi mereka, seperti yang kita tau sampai saat ini situs-situs di indonesia terkena dampak ini, terutama situs milik pemerintahan dan institusi pendidikan seperti berikut.
Berikut adalah tampilan ketika salah satu hasil pencarian dibuka
Serangan Umum Serta Cara Mengatasinya
Sejauh pengalaman kami, berikut adalah beberapa kerentanan yang sering dimanfaatkan oleh para penjahat cyber untuk mendapatkan akses sebuah sistem:
WordPress
90% kejadian peretasan terjadi pada situs berbasis WordPress dan tak sedikit pula pengguna CMS WordPress yang disusupi landing page judi online.
Seperti yang kita tau juga pada umumnya directory /wp-content
digunakan untuk tempat menyimpan file atau folder plugin,tema dan file-file lainnya yang ada di wordpress, namun disini dimanfaatkan juga oleh pelaku blackhat SEO untuk mengupload landing page iklan judi, seperti berikut
WordPress plugins and themes exploitation.
Sebelum memakai atau menginstall plugin ada baiknya untuk menanyakan beberapa pertanyaan seperti “versinya terbaru kah?”, “apakah ada vulnerabilitynya?”, “original nggak tuh?”
Seperti yang kita tau plugin dan tema di wordpress cukup banyak dan tercatat memiliki banyak vulnerability, untuk mencegahnya temen-temen bisa menginstall tools wpscan, tools ini sangat berguna bagi teman-teman yang memakai cms wordpres dan teman-teman bisa melakukan scan seperti berikut
WordPress bruteforce / dictionary attack
Suatu teknik menebak kata sandi disuatu website yang menggunakan cms wordpress dengan cara menggunakan password list ataupun murni menggunakan kombinasi huruf, angka dan spesial karakter.
Untuk menghindari serangan ini ada banyak cara ataupun alternatif seperti :
- terapkan username dan password yang kuat atau tidak mudah ditebak , seperti 4dM1nIkrRPShL#123 pada dasarnya menerapkan prinsip mengandung huruf besar, huruf kecil, angka dan spesial karakter dan tidak termasuk kata yang mudah ditebak yang biasanya terdaftar pada Password List atau teman-teman bisa menggunakan password manager
- Gunakan plugin berikut untuk menimalisir serangan bruteforce
- menginstall plugin Disable Xmlrpc , untuk mencegah attacker mengakses file xmlrpc.php yang kita ketahui bahwa xmlrpc ini sering dimanfaatkan attacker untuk bruteforce
- menginstall plugin Limit Login Attempts , untuk yang dimana ketika login akan dilimit beberapa kali saja sehingga mencegah attacker bruteforce
- menginstall plugins Wordfence , sebagai firewall pada situs wordpress mu
- Disable /users rest routes untuk menghindari Enumerating WordPress User , dengan cara tambahkan code ini di file functions.php pada themes yang dipakai
add_filter( 'rest_endpoints', function( $endpoints ){
if ( isset( $endpoints['/wp/v2/users'] ) ) {
unset( $endpoints['/wp/v2/users'] );
}
if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
}
return $endpoints;
});
Apabila merasa cukup dengan theme ataupun plugin yang diinstall, teman-teman bisa tuh disable file modification yang bertujuan agar meminimalisir seseorang yang ingin mengupload file berbaya seperti webshell, caranya cukup simple cukup taruh config code ini di file wp-config.php
define('DISALLOW_FILE_MODS',true);
Non CMS/Framework
Laravel
Selain WordPress pengguna framework Laravel juga menjadi sasaran serangan blackhat SEO seperti berikut
seringkali Laravel memiliki misconfiguration yang membuatnya rentan terhadap serangan, lalu CVE atau kerentanan apa saja yang sering dieksploitasi oleh para peretas untuk mengambil alih sebuah sistem berbasis framework Laravel?
Laravel RCE APP_KEY (CVE-2018-15133)
pada saat riset tim SHL menemukan file .env (environment) milik Laravel yang terbuka disuatu web yang menjadi korban blackhat SEO untuk promosi judi dan ketika dieksekusi dengan POC CVE-2018-15133 response-nya(hasilnya) WOW its working
lalu cara menutup kerentanan ini gimana?
caranya cukup mudah, ganti APP_ENV=local dengan APP_ENV=production atau apabila teman-teman pakai web server apache cukup tambahkan config di file .htaccess yang berisi code berikut dan dengan ini teman-teman dapat membatasi seseorang ketika ingin mengakses file .env
<Files ".env">
Order deny,allow
Deny from all
</Files>
atau kalau teman-teman pakai nginx bisa menambahkan code ini di /etc/nginx/ atau /etc/nginx/nginx.conf bagian server
server {
# Konfigurasi lainnya untuk situs web
location ~ /\\.env {
deny all;
}
# Konfigurasi lainnya untuk situs web
}
config ini dapat membatasi seseorang saat akses file .env
Laravel debug RCE (CVE-2021-3129)
Selain web tadi adapula web berbasis Laravel lainnya yang memiliki kerentanan berbeda yaitu CVE-2021-3129, ketika melakukan test dengan menambahkan _ignition/execute-solution
menampilkan debug (error) hal ini dapat berpotensi serangan RCE pada debug mode
Serangan ini berdampak pada Laravel versi 8 kebawah, dan banyak sekali web developer laravel yang kurang memperhatikan config saat mendevelop ataupun saat mempublikasi websitenya padahal hal ini sangat berpengaruh, cara menghindari kerentanan ini cukup mudah ada baiknya mengupdate versi Laravel atau ignitionnya.
Laravel PHPunit RCE (CVE-2017-9841)
Kerentanan ini ada pada phpunit yang banyak sekali digunakan oleh user PHP termasuk laravel, kerentanan ini umumnya terletak di /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php dengan vulnrable code seperti berikut
eval('?>'.file_get_contents('php://input'));
hal ini memungkinkan attacker untuk melakukan RCE dengan melakukan POST data berisi code PHP berbahaya pada file eval-stdin.php , lalu cara mencegahnya gimana? gunakan modul phpunit terbaru atau tambahkan config .htaccess seperti berikut untuk memblokir akses pada file eval-stdin.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php$ - [F]
</IfModule>
Laravel Register Admin
Selain beberapa bug tadi adapun juga yang sering dimanfaatkan pelaku blackhat SEO untuk mendapat akses ke web target mereka yaitu Laravel Register Admin, maksudnya apa?
Seringkali developer tidak memperhatikan saat menginstall Laravel seperti laravel breeze yang otomatis ada fitur register atau memang sengaja mengaktifkan fitur register pada web mereka.
Bahkan tak sedikit, ketika melakukan percobaan dan mengambil beberapa domain dari hasil google dorking, lalu mencoba scanning, terlihat jelas bahwa fitur tersebut aktif
kesalahan saat coding ini kebanyakan di route laravel yang umumnya disetting seperti ini
Route::get('/register', [profileController::class, 'viewRegist'])->middleware('guest');
Route::post('/register', [loginRegistController::class, 'register'])->middleware('guest');
Route::get('/login', [loginRegistController::class, 'login'])->middleware('guest');
Route::post('/login', [loginRegistController::class, 'authenticate'])->middleware('guest')->name('login');
Route::post('/logout', [loginRegistController::class, 'logout'])->middleware('auth');
hal ini membuat user yang melakukan registrasi dapat memiliki hak akses, bisa sebagai user biasa ataupun administrator tergantung logic websitenya.
Disisi lain, terkadang developer tidak menerapkan akses control yang baik sehingga fitur yang seharusnya hanya boleh diakses oleh administrator (umumnya fitur penting dan sensitif) masih bisa diakses oleh user biasa.
Teman-teman bisa menonaktifkan fitur registrasi atau melakukan perbaikan dengan menerapkan akses kontrol yang benar sesuai kebutuhan.
SQLi
SQLI atau SQL injection adalah suatu serangan yang merujuk ke database SQL atau query SQL yang rentan dan kerentanan ini sering sekali dimanfaatkan peretas untuk mengambil data didalam suatu database, hal ini terjadi karena kesalahan saat coding pada query SQL yang pada intinya menganggap inputan user sebagai bagian dari query SQL.Ada beberapa tipe serangan umum SQL injection yaitu :
- In-band SQLi yaitu di mana penyerang menyuntikkan perintah SQL melalui input aplikasi, memungkinkan akses dan manipulasi data dari database. ada 2 varian metode umum yang biasa dipakai di In-band SQLi
- Error-based SQL Injection (Error-based SQLi): Serangan yang menghasilkan pesan kesalahan dari database, memberikan informasi berharga kepada penyerang untuk merusak atau mengakses data.
- SQL Injection based Union (SQLi based Union): Varian In-band SQLi di mana penyerang menggabungkan hasil query palsu dengan data asli melalui operasi UNION, untuk mencuri informasi dari database.
- Inferensial SQLi atau Blind SQLi adalah serangan di mana penyerang tidak langsung melihat hasil query SQL yang dieksekusi, tetapi menggunakan respons dari aplikasi web untuk mengambil informasi sensitif dari database. Blind SQLi dibagi beberapa kelompok yaitu :
- Boolean-based SQL Injection (Boolean SQLi): Jenis serangan di mana penyerang menginjeksi perintah SQL palsu dan menganalisis respon boolean (benar/salah) dari aplikasi web untuk memahami dan mendapatkan informasi dari database.
- Time-based SQL Injection (Time-based SQLi): Serangan di mana penyerang menyebabkan aplikasi web sengaja memperlambat respons dengan menyuntikkan perintah SQL. Waktu respons yang terlambat mengindikasikan keberhasilan serangan ini dan dapat memberikan informasi dari database.
- Out-of-Band SQL Injection (Out-of-Band SQLi) adalah serangan di mana penyerang menyuntikkan perintah SQL ke aplikasi web dan mendapatkan hasilnya melalui jalur komunikasi terpisah, bukan melalui respons langsung dari aplikasi.
Dari beberapa tipe serangan SQLi tentunya sangat berbahaya bukan dan juga adanya search engine membuatnya semakin mudah peretas untuk mendapatkan web dengan parameter-parameter SQL yang rentan, maka dari itu untuk meminimalisir serangan SQLI lakukan hal berikut
- Pastikan seluruh input yang diterima dari pengguna atau klien divalidasi dengan baik sebelum digunakan dalam query SQL, gunakan parameter binding atau prepared statemtn sesuai bahasa pemrograman masing-masing, contoh PHP: Prepared Statements – Manual.
- Update dan Patch Software: Pastikan sistem operasi, server web, dan perangkat lunak database Anda selalu diperbarui dengan patch terbaru untuk mengatasi kerentanannya.
- Gunakan prinsip Least Privilege atau berikan izin akses ke database yang sesuai untuk setiap pengguna atau aplikasi. Jangan memberikan hak akses yang lebih besar daripada yang benar-benar dibutuhkan.
- Selalu lacak aktivitas aplikasi dan database, termasuk upaya serangan. Log ini dapat membantu mengidentifikasi ancaman potensial dan tindakan perbaikan yang harus diambil.
- Install Firewall atau WAF (Web application firewall) untuk memblokir aktifitas yang mencurigakan.
Arbitrary File Upload
Kerentanan ini berpotensi cukup besar apabila seseorang tidak melakukan validasi dengan benar pada suatu fungsi upload yang ditempatkan diwebsite, seperti
- Konfigurasi filter upload yang tidak benar atau tidak difilter sama sekali saat seseorang mengupload file. Hal ini memungkinkan peretas mengupload file berbahaya seperti malware backdoor, webshell, dan lain-lain seperti kasus WordPress tadi yang diupload pelaku blackhat SEO dengan landing page promosi judi.
- Dapat menimbulkan serangan DDOS attack atau Spam file pada server yang dapat membuat server down.
- Dan lain-lain seperti pada mindmap berikut.
Kalau sudah sampai bisa upload file berbahaya layaknya backdoor pasti berbahaya kan? maka dari itu untuk mencegah lakukan hal berikut
- Berikan validasi saat user melakukan upload file atau saat mengepost suatu data
- Berikan juga captcha bisa sebagai validasi juga untuk menghindar spam upload file
- Tambahkan konfigurasi tambahan untuk menghindari apabila seseorang berhasil mengupload file backdoor layaknya webshell berformat php, apabila teman-teman pakai apache cukup tambahkan .htaccess seperti berikut dan taruh ditempat file yang diupload itu tersimpan.
Kesimpulan
Teknik serangan yang digunakan oleh para attacker tidak terbatas pada apa yang kami tulis, karena jenis serangan ada banyak. Teknik remediasi atau perbaikan yang kami gunakan mungkin berbeda dengan apa yang biasanya teman-teman gunakan, atau mungkin berbeda dengan best practice yang ada.
Secara umum, berikut beberapa tips sederhana untuk meminimalisir serangan yang telah kami bahas:
- Hapus subdomain yang tidak terpakai diwebsite anda, kurangnya pengawasan terhadap subdomain yang tidak terpakai dapat menimbulkan suatu serangan dan ingat semakin banyak pintu yang kamu buka semakin banyak juga potensi celah untuk dieksploitasi oleh penjahat.
- Selalu update server ataupun aplikasi yang terinstall pada server secara berkala.
- Jangan pernah memberikan informasi sensitif seputar server seperti user ssh,ftp,database dan lain-lain ke orang lain yang tidak berhak ataupun tertulis secara publik.
- Gunakan antivirus yang memiliki peringkat positif, firewall yang terkonfigurasi dengan baik sehingga dapat menimalisir serangan. Bangun Security Information and Event Management(SIEM) dan lalukan konfigurasi dengan baik dan benar agar server dapat dimonitor.
Sebagai tambahan, berikut ada tambahan Dokumen tentang langkah – langkah penanggulangan insiden web defacement Judi Online dan Mitigasi yang dikeluarkan oleh BSSN yang bisa di-download di sini
Apabila teman-teman memiliki pandangan yang berbeda, ide, saran, ingin memperbaiki tulisan atau ada sesuatu yang ingin disampaikan, silahkan tulis di kolom komentar atau ke Discord SHL! 😄
Kami berencana membahas tentang bagaimana sih caranya membersihkan server yang sudah terkena injeksi blackhat SEO, khususnya SEO judi online
Akan kami lanjutkan artikel berikutnya apabila artikel ini mendapat respon yang positif dari teman-teman.
Semoga artikel ini bermanfaat dan terima kasih telah meluangkan waktu untuk membaca
Ditulis dengan ❤️ oleh Surabaya Hacker Link