Kadangkala pada saat melakukan web hacking dan mendapatkan foothold / initial access pada suatu server kita di restriksi dengan proteksi PHP yang disebut disable function, disable function sendiri bisa dikatakan fitur dan proteksi untuk melakukan disable dan menonaktifkan fungsi fungsi tertentu di php yang dianggap berbahaya seperti system, shell_exec, exec, eval dan lainnya
Pada banyak server, command syscall yang digunakan untuk melakukan eksekusi bash dan shell script di non-aktifkan untuk keperluan keamanan disini bertujuan agar attacker tidak dapat melakukan compromised lebih jauh pada target seperti melakukan privilege escalation, pivoting, persistence maupun post exploitation.
Jadi disini aku akan membahas salah satu teknik yang digunakan untuk melakukan bypass disable function yang memanfaatkan module cgi pada webserver apache dan yang perlu digaris bawahi untuk melakukan bypass menggunakan teknik ini harus ada requirement atau kondisi agar berhasil yaitu mod_cgi perlu diaktifkan dan kedua direktif AllowOverride pada konfigurasi apache harus aktif yang bertujuan agar kita bisa melakukan overwrite konfigurasi menggunakan .htaccess file.
Pertama setup lab pada vps atau di local untuk pengujian dan testing, selanjutnya jelas kita perlu install webserver apache dan lakukan setting disable function, karena case kali ini kita menggunakan php 8.3 jadi untuk php.ini kita perlu setting pada directory /etc/php/8.3/apache2/php.ini

kemudian kita perlu install cgi module pada apache lalu aktifkan menggunakan command a2enmod

selanjutnya jangan lupa kita set direktif AllowOverride ke All hal ini bertujuan agar file .htaccess bisa ter-eksekusi

Setelah itu restart apache lalu kita perlu melihat dan verifikasi jika module cgi / mod_cgi dan disable function berhasil di konfigurasi, caranya sederhana cukup buat file php dan tambahkan syntax berikut:
<?php
echo "disable function: " . ini_get("disable_functions");
echo "<br><br>";
echo "apache module: <br>";
foreach(apache_get_modules() as $modules){
echo $modules . "<br>";
}
?>
Dan jika kita buka via browser

Disini menunjukkan kita berhasil melakukan konfigurasi yang dimana kita tidak akan bisa melakukan eksekusi fungsi syscall karena semua fungsi syscall berbahaya kita lakukan disable dan kita akan manfaatkan mod_cgi ini untuk melakukan bypass disable function.
Sekilas tentang mod_cgi, jadi mod_cgi itu merupakan module cgi pada webserver apache yang memungkinkan webserver untuk melakukan handle dan eksekusi suatu CGI script yang dimana CGI sendiri merupakan protocol yang menyediakan cara untuk melakukan eksekusi script melalui request http contoh sederhananya kita bisa melakukan eksekusi pada file perl(.pl), python(.py) maupun bash(.sh) langsung dari web request atau browser.
Langkah awal kita perlu membuat directory baru dan menambahkan htaccess agar suatu extension dikenali dengan CGI script, simple-nya kita akan membuat bash script agar bisa langsung melakukan eksekusi command. Disini kita hanya perlu membuat htaccess dengan 2 direktif
Options +ExecCGI
AddHandler cgi-script .bhitech
Direktif pertama yaitu Options +ExecCGI yang memberitahu webserver untuk mengizinkan eksekusi CGI script lalu direcktif kedua webserver akan melakukan eksekusi jika ditemukan extension .bhitech dan untuk extension opsional kita bisa menambahkan apapun misalkan .cgi, .test, .hijack, .bypass dan lain lain ya
Langkah kedua kita perlu membuat bash script dengan extension .bhitech sederhana saja kita perlu shebang, content type dan command apa yang akan dijalankan
#!/bin/bash
echo -ne "Content-type: text/html\n\n"
id
Disini kita akan menjalankan command id untuk melihat id dan user kita sekarang jadi pada directory akan menjadi 2 file yaitu htaccess dan cgi script seperti ini

Lalu jika kita open via browser pada file script.bhitech

Terlihat command id tereksekusi yang berarti kita berhasil melakukan bypass disable function dan untuk command lain mudah saja kita ganti pada file script.bhitech misalkan uname -a

Yang akan menampilkan informasi tentang kernel pada server. mungkin akan ribet jika harus modifikasi file untuk melakukan eksekusi command lain jadi disini aku membuat tools untuk melakukan automasi agar lebih mudah dan dinamis
https://github.com/ibrahimzx/mod-cgi-disable-function
Untuk menggunakan cukup mudah dengan hanya menambahkan GET parameter ?cmd pada url

Disini misalkan ingin membaca /etc/passwd tinggal tambahkan parameter ?cmd=cat /etc/passwd dan command akan dieksekusi serta ditampilkan pada browser
Penutup
Teknik diatas merupakan salah satu dari sekian banyak cara untuk melakukan bypass pada disable function, disini agar pembaca lebih aware dengan tidak hanya mengandalkan disable function dan menganggap itu aman bahkan jika mod_cgi tidak diaktifkan attacker bisa memanfaatkan fungsi mail dengan LD_PRELOAD atau pada webserver nginx bisa dengan memanfaatkan php-fpm dan protocol gopher untuk mencapai eksekusi command. Ada juga teknik yang melakukan exploiation pada php itu sendiri dengan memanfaakan beberapa bug PHP yang sudah di publish pada https://bugs.php.net/ seperti melakukan poisoning process dan menulis data berbahaya pada memory. Oke mungkin cukup sekian artikel kali ini dan semoga bermanfaat.
“Tidak ada akhir untuk pendidikan. Bukan berarti Anda membaca buku, lulus ujian, dan menyelesaikan pendidikan. Seluruh kehidupan, dari saat Anda lahir hingga saat Anda mati, adalah proses pembelajaran.” – Jiddu Krishnamurti
