CODEBOOK
Website Platform Belajar Dan Edukasi
By Shadownex 2025-2026
← Kembali ke Katalog Lab
Command InjectionUNSOLVEDReward: +150 XP

Lab 3: OS command injection in system ping tool allowing file exfiltration

Utilitas jaringan NetDiagnostics merangkaikan string IP masukan langsung ke terminal perintah OS (`ping -c 1 [IP]`).

TARGET OBJECTIVE & BRIEFING

Objective:

Eksploitasi utilitas ping untuk mengeksekusi perintah sistem tambahan dan baca isi file rahasia /var/www/flag.txt di server.

Aplikasi diagnosa jaringan menggunakan fungsi `exec` pada Node.js untuk mengeksekusi perintah shell sistem. Karena input host IP tidak diverifikasi formatnya, karakter khusus penyeimbang shell dapat digunakan untuk menyambungkan perintah baru.

PENTESTING METHODOLOGY
1. Akses utilitas diagnosa jaringan NetDiagnostics.
2. Uji pengiriman input IP biasa seperti `127.0.0.1`.
3. Rangkaikan perintah shell tambahan menggunakan pembatas seperti `;`, `&&`, atau `|` (misal: `127.0.0.1; cat /var/www/flag.txt`).
4. Periksa output terminal server untuk menemukan isi file Flag.
CODE SECURITY INSPECTION

Command Injection terjadi ketika string input diinterpretasikan oleh shell. Menggunakan execFile dengan array argumen memastikan operator shell seperti `;` atau `&&` dianggap sebagai argumen string biasa.

VULNERABLE CODE

// KODE RENTAN (exec Concatenation)
const { exec } = require('child_process');

app.post('/api/ping', (req, res) => {
  const { host } = req.body;
  // DANGEROUS: Merangkaikan input langsung ke terminal shell (/bin/sh)
  exec(`ping -c 1 ${host}`, (err, stdout) => {
    res.json({ output: stdout });
  });
});

SECURE CODEBOOK IMPLEMENTATION

// KODE AMAN CODEBOOK STANDARD (execFile with Argument Array)
const { execFile } = require('child_process');

app.post('/api/ping', (req, res) => {
  const { host } = req.body;
  // SAFE: execFile tidak memanggil sub-shell, input dikirim sebagai argumen array terisolasi
  execFile('ping', ['-c', '1', host], (err, stdout) => {
    res.json({ output: stdout });
  });
});