PHP Code Injection

Easpy
3 min readJan 9, 2023

--

Code Injection

Code Injection adalah istilah umum untuk jenis serangan yang terdiri dari penyuntikan kode yang kemudian diinterpretasikan atau dieksekusi oleh aplikasi. Jenis serangan ini mengeksploitasi penanganan yang buruk terhadap data yang tidak dipercaya. Jenis serangan ini biasanya dimungkinkan karena kurangnya validasi input/output yang tepat, misalnya :

  • Karakter yang diizinkan (standar regular expressions classes or custom)
  • Format data
  • Jumlah data

Code Injection berbeda dari Command Injection karena penyerang hanya dibatasi oleh fungsionalitas bahasa yang disuntikan itu sendiri. Jika penyerang dapat menyuntikan kode PHP ke dalam aplikasi dan menjalankannya, mereka hanya dibatasi oleh kemampuan PHP. Command Injection terdiri dari memanfaatkan kode yang ada untuk mengeksekusi perintah, biasanya dalam konteks shell.

Pada kesempatan kali ini akan membahas mengenai code injection dengan menggunakan lab BWAPP sebagai tempat untuk melakukan uji kerentanannya.

PHP Code Injection BWAPP

Hal pertama yang dilakukan adalah melakukan pencarian informasi pada target.

Ketika dibuka halaman yang menjadi target terdapat link yang mengarah pada parameter message dengan nilai parameter test dengan menggunakan metode request GET.

Parameter tersebut bisa saja menjadi tempat untuk kerentanan code injection. Untuk memastikan apakah parameter tersebut terdapat kerentanan code injection atau tidak bisa dilakukan testing menggunakan payload ‘;phpinfo()’. Ketika menginputakan kode tersebut aplikasi akan menjalankan perintah phpinfo() di server dan memungkin penyerang untuk melihat konfigurasi sistem.

Ternyata ketika menambahkan payload tersebut aplikasi akan memproses kode yang diinputkan dan akan menampilkan output dari kode yang telah diinputkan.

Selain menggunakan payload diatas, kita juga bisa menggunakan beberapa payload fungsi seperti berikut :

  • exec()
  • system()
  • shell_exec()
  • passthru()

Sebagai contoh, kita bisa mengetahui id dari pengguna yang sedang berjalan pada sistem dengan menggunakan ‘exec(‘id’)’.

Dengan kerentanan PHP Code injection ini kita juga dapat melakukan reverse shell untuk dapat masuk kedalam server target. Untuk dapat melakukannya kita dapat membuat payload reverse shellnya dengan menggunakan revshells.com atur IP dan Portnya sesuai dengan komputer kita sebagai penyerang. Lalu masukan payload tersebut kedalam fungsi payload sebelumnya.

Jika sudah lakukan listener dengan menggunakan tools netcat. dan ketika kode diinputkan kemudian aplikasi mengeksekusi kode tersebut maka netcat akan menangkap permintaan tersebut dan kita dapat mengakses servernya.

CVSS:

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Pencegahan Kerentanan PHP Code Injection

Ada beberapa langkah untuk melakukan pencegahan agar dapat menghindari kerentanan PHP Code Injection diantarnya :

  • Hindari penggunaan exec(),system(),shell_exec(),passthru()
  • Lakukan sanitasi pada inputan yang dikirimkan oleh pengguna
  • Hindari untuk menampilkan pesan kesalahan
  • Gunakan PHP Security Linter

Terimakasih!

Stay Ethical and Happy Hacking!🍻

Referensi :

--

--