Saturday, 11 July 2026

"Apakah CMS ini aman dipasang di server yang terhubung ke internet?"

 

Audit keamanan source code jauh lebih mendalam daripada sekadar mencari eval(base64_decode()). Tujuannya adalah menjawab pertanyaan: "Apakah CMS ini aman dipasang di server yang terhubung ke internet?"

Untuk CMS cms-sekolahku-v3.0.1, saya biasanya melakukan audit dalam beberapa tahap.

TahapYang diperiksaRisiko
1Struktur proyekFile asing, backdoor
2KonfigurasiPassword, API key, debug mode
3Login & SessionBypass login, session hijacking
4SQLSQL Injection
5Upload fileUpload shell PHP
6XSSScript berbahaya
7CSRFForm tanpa token
8Hak aksesPrivilege escalation
9Library pihak ketigaVersi rentan/CVE
10Kualitas kodeError handling, sanitasi

Contoh yang saya cari

1. SQL Injection

Kode yang berbahaya misalnya:

$id = $_GET['id'];

$sql = "SELECT * FROM siswa WHERE id=$id";

$db->query($sql);

Seharusnya menggunakan prepared statement atau Query Builder.


2. Upload Shell

Misalnya:

move_uploaded_file($_FILES['file']['tmp_name'],
                   "uploads/".$_FILES['file']['name']);

tanpa validasi.

Saya akan cek:

  • hanya jpg/png/pdf?

  • MIME type

  • ukuran

  • rename file

  • blokir php

  • simpan di luar public_html bila memungkinkan


3. XSS

Misalnya

echo $_POST['nama'];

harusnya

esc($nama)

atau

htmlspecialchars(...)

4. Login

Saya akan cek

  • password di-hash?

  • pakai bcrypt/Argon2?

  • session_regenerate_id()

  • remember me aman?

  • brute force protection


5. CSRF

Apakah setiap POST mempunyai token.


6. Authorization

Misalnya URL

/admin/user/delete/5

Apakah user biasa bisa membuka URL itu.


7. Debug

Misalnya

CI_ENVIRONMENT = development

di server produksi.

Atau

display_errors = On

8. Hardcoded Secret

Saya cari

password=
apikey=
secret=
Bearer
JWT
smtp

9. Library

Misalnya CodeIgniter 4.1

padahal sekarang sudah ada patch keamanan.

Saya cek:

  • framework

  • composer

  • vendor

  • CVE yang diketahui


10. Backdoor Tersembunyi

Selain

eval(base64_decode())

saya juga mencari

assert()

preg_replace('/e')

create_function()

call_user_func()

Reflection

file_get_contents("http://")

curl_exec()

exec()

shell_exec()

passthru()

proc_open()

dan memastikan penggunaannya memang sah.


Hasil akhirnya

Saya biasanya membuat laporan seperti ini:

Security Audit CMS Sekolahku

★★★★★ Critical
- Tidak ada

★★★★ High
- 1 SQL Injection pada modul Alumni

★★★ Medium
- Upload gambar belum memeriksa MIME Type

★★ Low
- Debug masih aktif

★ Info
- Framework CodeIgniter 4.5.2
- Composer dependency OK

lalu saya sertakan

  • lokasi file

  • nomor baris

  • penyebab

  • dampak

  • cara memperbaikinya

  • contoh kode yang benar.

Saran untuk CMS Sekolahku

Karena CMS ini akan dipasang pada server sekolah dan diakses dari internet, saya menyarankan audit penuh. Saya bisa memeriksa seluruh proyek (termasuk folder app, public, vendor, dan konfigurasi) dan menghasilkan laporan keamanan yang cukup lengkap, bukan hanya mencari malware. Dengan begitu kita bisa mengetahui apakah ada celah seperti SQL Injection, XSS, upload file berbahaya, atau masalah otorisasi sebelum sistem digunakan di lingkungan produksi.

Share:

0 comments:

Post a Comment