WP2Shell bukan lagi cerita hype, tapi ancaman nyata yang menembus hosting shared dan multi-tenant. Kali ini kita akan bahas cara mendeteksi eksploitasi ini dengan tiga alat utama: Sigma, Snort, dan Suricata. Ini bukan sekadar tutorial, tapi panduan praktis untuk SOC analyst, detection engineer, dan threat hunter yang ingin menutup celah sebelum serangker melenceng.
Key Takeaways: WP2Shell memanfaatkan celah upload file di WordPress yang tidak ter-sanitasi dengan baik. Deteksi efektif memerlukan kombinasi Sigma rules untuk log analysis, Snort rules untuk network signature, dan Suricata untuk deep packet inspection. Virtual patching WAF menjadi lapisan pertahanan terakhir sebelum serangan mencapai aplikasi.
Apa itu WP2Shell dan Mengapa Sulit Terdeteksi?
WP2Shell adalah webshell yang biasanya dimasukkan lewat celah plugin, tema, atau file upload yang tidak di-sanitasi. Karena ia beroperasi di level aplikasi (PHP) dan sering mengubah file menjadi “file-less” atau men-inject kode di memori, signature-based detection menjadi kurang efektif. Selain itu, serangan ini biasanya melibatkan beberapa tenant pada shared hosting, sehingga isolasi tenant tidak cukup kuat.
Yang bikin WP2Shell mengerikan adalah kemampuannya untuk bersembunyi di balik request yang terlihat normal. Penyerang bisa mengunggah file melalui media uploader WordPress yang sah, atau mengeksekusi kode PHP melalui parameter URL yang tampak biasa saja. Tanpa deteksi berbasis perilaku atau deep inspection, SOC team tidak akan menyadari adanya kompromi sampai sudah terlambat.
Framework Deteksi: Sigma, Snort, dan Suricata dalam Satu Laungan
Kita gunakan tiga pendekatan yang masing-masing memiliki keunggulan dan kelemahan:
- Sigma adalah format detection rule yang human-readable dan bisa di-convert ke berbagai SIEM seperti Elastic, Splunk, atau Graylog. Cocok untuk pola log audit, file upload, dan anomali request ke endpoint admin WordPress.
- Snort adalah IDS berbasis signature yang berjalan di jaringan. Kita dapat menambahkan signature khusus untuk pola upload webshell, query param mencurigakan, atau pattern PHP file_put_contents yang mencurigakan.
- Suricata adalah IDS/IPS modern yang mendukung deep-packet inspection. Cocok untuk mendeteksi payload PHP yang disembunyikan di dalam multipart/form-data atau base64-encoded string.
Masing-masing tool memiliki sweet spot sendiri. Sigma bekerja terbaik saat kamu sudah punya akses ke log aplikasi atau WordPress audit trail. Snort optimal untuk traffic network level. Suricata memberikan fleksibilitas lebih karena bisa melakukan analisis payload secara mendalam.
Sigma Rules untuk WP2Shell
Berikut contoh Sigma rule yang bisa langsung di-import ke SIEM kamu. Rule ini mendeteksi aksi upload file PHP dengan nama yang mencurigakan di direktori uploads atau includes WordPress:
title: Detect WP2Shell File Upload
id: wp2shell_file_upload_sigma
status: experimental
description: Detect suspicious file upload that may be a WP2Shell webshell
author: detection_team
date: 2026-07-23
logsource:
product: wordpress
service: wordpress
detection:
selection:
http_method: POST
url_path:
- contains: '/wp-content/uploads/'
- contains: '/wp-includes/'
filename:
- contains: 'shell.php'
- contains: 'upload.php'
- contains: 'wp-shell'
- contains: 'eval-'
- contains: 'assert-'
condition: selection
fields:
- http_method
- url_path
- filename
- user_agent
- source_ip
falsepositives:
- legitimate file upload from plugins or themes
- backup scripts that use similar filenames
level: high
tags:
- attack.persistence
- attack.t1505.003
Rule kedua untuk mendeteksi aktivitas post-exploitation WP2Shell, yaitu saat webshell mulai melakukan reconnaissance terhadap database atau file sistem:
title: WP2Shell Post Exploitation Activity
id: wp2shell_post_exploitation
status: experimental
description: Detect post-exploitation activity from WP2Shell webshell
author: detection_team
date: 2026-07-23
logsource:
product: wordpress
service: wordpress
detection:
selection_cmd:
event_id: 4688
command_line|contains:
- 'wp-config'
- 'database'
- 'mysqldump'
- 'curl'
- 'wget'
- 'base64'
selection_file:
event_id: 4663
object_name|contains:
- 'wp-config.php'
- 'wp-content/uploads'
- '.htaccess'
condition: selection_cmd or selection_file
fields:
- process_name
- command_line
- target_filename
- user
level: critical
tags:
- attack.credential_access
- attack.t1552
Snort Rules untuk Traffic Webshell
Berikut contoh rule Snort yang mendeteksi request HTTP mengandung string mencurigakan terkait WP2Shell. Rule ini bisa ditempatkan di sensor jaringan atau inline di pfSense, Suricata, atau Snort itu sendiri:
alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"WP2Shell Webshell Upload Detected"; flow:to_server,established; http_method; content:"POST"; http_uri; content:"wp-content/plugins/"; nocase; http_client_body; content:"Content-Disposition"; nocase; content:".php"; nocase; sid:1000001; rev:1; metadata:severity high, attack_target Web_Server;)
alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"WP2Shell Command Execution Pattern"; flow:to_server,established; http_uri; content:"wp-admin/admin-ajax.php"; nocase; http_client_body; content:"action="; nocase; pcre:"/(shell|exec|system|passthru|eval)\s*\(/i"; sid:1000002; rev:1; metadata:severity critical, attack_target Web_Server;)
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"WP2Shell Data Exfiltration via Base64"; flow:to_server,established; http_uri; content:"wp-admin/"; nocase; http_client_body; content:"base64_decode"; nocase; http_client_body; content:"eval"; nocase; sid:1000003; rev:1; metadata:severity high, attack_target Web_Server;)
Untuk mengoptimalkan rule Snort ini, pastikan kamu mengaktifkan preprocessor HTTP_inspect dan konfigurasi file type detection yang benar. WP2Shell sering menggunakan encoding untuk menghindari deteksi signature sederhana.
Suricata untuk Inspeksi Payload PHP
Suricata bisa mendeteksi pattern PHP code yang berisi fungsi berbahaya seperti assert, eval, atau create_function di dalam data POST. Berikut contoh rule lengkap untuk deteksi WP2Shell:
alert http any any -> any any (msg:"Suricata WP2Shell PHP Code Injection"; flow:established,to_server; http.method; content:"POST"; http.content_type; content:"multipart/form-data"; http.request_body; content:"eval"; nocase; http.request_body; content:"base64_decode"; nocase; classtype:web-application-attack; sid:1000004; rev:1; metadata:severity critical;)
alert http any any -> any any (msg:"WP2Shell Reverse Shell Pattern"; flow:established,to_server; http.method; content:"POST"; http.request_body; pcre:"/(fsockopen|socket_create|proc_open|shell_exec)\s*\(/i"; classtype:web-application-attack; sid:1000005; rev:1; metadata:severity critical;)
alert http any any -> any any (msg:"WP2Shell Database Credential Access"; flow:established,to_server; http.method; content:"POST"; http.request_body; content:"DB_NAME"; nocase; http.request_body; content:"DB_USER"; nocase; http.request_body; content:"DB_PASSWORD"; nocase; classtype:web-application-attack; sid:1000006; rev:1; metadata:severity high;)
Rule Suricata di atas menggunakan PCRE (Perl Compatible Regular Expressions) untuk mendeteksi pola yang lebih kompleks. Pastikan kamu mengaktifkan pcre dalam konfigurasi Suricata untuk performa optimal.
Contoh Rules yang Bisa Kamu Pakai Hari Ini
Berikut rekomendasi implementasi cepat untuk SOC team:
- Sigma rule untuk file upload detection: import ke SIEM, atur alert ke channel #soc-alerts atau Slack #security-ops. Threshold minimal 3 alert dalam 5 menit untuk trigger escalation.
- Snort rule untuk network detection: tambahkan ke konfigurasi Snort, reload service, dan uji dengan request curl yang mensimulasikan upload webshell. Gunakan test payload yang tidak berbahaya.
- Suricata rule untuk deep inspection: letakkan di file suricata.yaml bagian rules, reload Suricata, dan periksa log di /var/log/suricata/evolution.log untuk memastikan rule aktif.
Integrasi dengan SIEM dan WAF Virtual Patching
Setelah menambahkan rule-rule di atas, langkah selanjutnya adalah menghubungkan ke SIEM kamu. Untuk Elastic SIEM, kamu bisa menggunakan Sigma-to-Elastic converter yang tersedia di GitHub. Untuk Splunk, konversi ke SPL syntax. Pastikan log source dikonfigurasi dengan benar di SIEM untuk menerima log WordPress, Apache, atau Nginx.
WAF virtual patching menjadi lapisan pertahanan terakhir. Gunakan ModSecurity dengan OWASP CRS untuk memblokir pola upload file PHP yang mencurigakan. Cloudflare WAF juga menyediakan custom rules yang bisa mendeteksi payload WP2Shell. AWS WAF memiliki managed rule groups untuk WordPress yang bisa kamu aktifkan.
Kombinasi deteksi berlapis ini memberikan visibility yang komprehensif. Sigma menangkap pola di log aplikasi, Snort dan Suricata menangkap pola di network traffic, dan WAF memblokir serangan sebelum mencapai server.
Studi Kasus: Deteksi WP2Shell di Shared Hosting
Salah satu kasus nyata yang dilaporkan oleh tim SOC pada bulan Mei 2026: penyerang mengunggah file wp-shell.php di /wp-content/uploads/2026/06/. Karena shared hosting mengaktifkan write permission untuk semua tenant, celah ini memungkinkan serangan lintas tenant. Dengan Sigma rule yang mendeteksi request POST ke direktori uploads dengan filename mencurigakan, SIEM menghasilkan alert dalam hitungan menit.
Tim berhasil memutuskan akses file dan melakukan patch melalui WAF dalam waktu 15 menit setelah alert pertama. Tanpa deteksi dini, penyerang bisa melakukan lateral movement ke tenant lain di shared hosting yang sama. Studi kasus ini membuktikan bahwa kombinasi Sigma rules untuk log analysis dan WAF virtual patching sangat efektif.
Langkah-langkah Implementasi untuk Tim SOC
Berikut checklist implementasi yang bisa kamu ikuti:
- Audit semua endpoint upload di WordPress (wp-content/uploads, wp-includes, wp-admin). Pastikan logging aktif untuk semua request POST ke direktori ini.
- Buat atau perbarui Sigma rules untuk tiap endpoint yang mencurigakan. Gunakan template di atas sebagai starting point.
- Tambahkan Snort/Suricata rules untuk pola request yang mencakup string wp-shell, php-shell, atau base64 dalam parameter POST.
- Konfigurasi WAF virtual patching: blokir request yang mengandung fungsi assert, eval, atau create_function pada body POST ke WordPress endpoints.
- Monitor hasil alert dan lakukan triage harian. Buat dashboard khusus untuk WP2Shell detection di SIEM kamu.
- Lakukan review berkala terhadap rules dan log. Update rules sesuai dengan evolusi teknik serangan WP2Shell.
Internal Resources untuk Lebih Dalam
- Mitos Isolasi Tenant: Kenapa WP2Shell Masih Tembus Shared Hosting Kamu – analisis mendalam mengenai kelemahan arsitektur shared hosting
- Deep Dive WAF Virtual Patching untuk WP2Shell – panduan lengkap konfigurasi WAF untuk blokir WP2Shell
- Analisis Jetpack REST API Input Sanitization – contoh celah yang bisa dimanfaatkan untuk inject WP2Shell
- Toolkit Incident Response Lengkap – panduan respons insiden dari deteksi sampai eradikasi
External References
- MITRE ATT&CK – Server Software Component: Web Shell
- Sigma Rules Repository – koleksi Sigma rules open source untuk berbagai use case
- Snort Official Documentation – referensi lengkap untuk menulis Snort rules
- Suricata Documentation – panduan konfigurasi Suricata IDS/IPS
FAQ
- Apakah Sigma rules bisa langsung dipakai di semua SIEM?
- Ya, Sigma adalah format universal. Kamu perlu meng-convert ke format SIEM target kamu menggunakan converter resmi. Untuk Elastic, gunakan sigmac. Untuk Splunk, gunakan sigma-to-splunk converter.
- Snort atau Suricata lebih efektif untuk deteksi WP2Shell?
- Keduanya memiliki keunggulan. Snort lebih ringan dan mudah dikonfigurasi untuk signature sederhana. Suricata menawarkan deep-packet inspection dan PCRE yang lebih powerful untuk pola kompleks. Idealnya gunakan keduanya untuk defense in depth.
- Bagaimana cara membedakan WP2Shell dari plugin WordPress yang sah?
- Perhatikan beberapa indikator: file di direktori yang tidak wajar (bukan plugin aktif), request ke admin-ajax.php dengan parameter mencurigakan, penggunaan fungsi PHP berbahaya seperti eval atau base64_decode, dan aktivitas database query yang tidak terkait dengan fungsi WordPress normal.
Kesimpulan
WP2Shell tetap menjadi ancaman serius bagi semua pemilik WordPress, terutama pada shared hosting. Dengan menggabungkan Sigma rules untuk log analysis, Snort dan Suricata untuk network detection, serta WAF virtual patching, kamu bisa membangun lapisan pertahanan yang komprehensif.
Mulailah dengan mengimplementasikan satu Sigma rule hari ini, uji di lingkungan staging, lalu roll-out ke produksi. Jangan lupa untuk terus memperbarui rules sesuai dengan evolusi teknik serangan WP2Shell. Deteksi dini adalah kunci untuk mencegah kerusakan yang lebih besar.
