Penggunaan fungsi CONFIGUTR pada PHP

idNSA.id -Jika Anda menjalankan situs web berbasis PHP di server NGINX dan mengaktifkan fitur PHP-FPM untuk kinerja yang lebih baik, maka waspadalah terhadap kerentanan yang baru saja diungkapkan yang dapat memungkinkan penyerang meretas server situs web Anda dari jarak jauh.

Dikutip dari TheHackerNews, Kerentanan, dilacak sebagai CVE-2019-11043, memengaruhi situs web dengan konfigurasi PHP-FPM tertentu yang dilaporkan tidak biasa seperti pada umumnya dan dapat dieksploitasi dengan mudah karena eksploitasi proof-of-concept (PoC).

PHP-FPM adalah implementasi PHP FastCGI alternatif yang menawarkan pemrosesan canggih dan sangat efisien untuk skrip yang ditulis dalam bahasa pemrograman PHP. Kerentanan utama adalah masalah korupsi memori underflow "env_path_info" dalam modul PHP-FPM, dan dengan menggabungkannya dengan masalah lain dapat memungkinkan penyerang untuk mengeksekusi kode arbitrer dari jauh pada server web yang rentan.

Kerentanan tersebut ditemukan oleh Andrew Danau, seorang peneliti keamanan di Wallarm sambil berburu bug dalam kompetisi Capture The Flag, yang kemudian dipersenjatai oleh dua rekan peneliti, Omar Ganiev dan Emil Lerner, untuk mengembangkan eksploitasi eksekusi kode jarak jauh yang berfungsi penuh.

Situs web berbasis PHP mana yang rentan terhadap peretas?

Meskipun exploit PoC yang dirilis untuk publik dirancang khusus untuk menargetkan server yang rentan yang menjalankan versi PHP 7+, bug underflow PHP-FPM juga memengaruhi versi PHP sebelumnya dan dapat dipersenjatai dengan cara yang berbeda.

Singkatnya, situs web rentan, jika:

  • NGINX dikonfigurasi untuk meneruskan permintaan halaman PHP ke prosesor PHP-FPM,
  • direktif fastcgi_split_path_info hadir dalam konfigurasi dan menyertakan ekspresi reguler yang dimulai dengan simbol '^' dan diakhiri dengan simbol '$',
  • Variabel PATH_INFO didefinisikan dengan direktif fastcgi_param,
  • Tidak ada pemeriksaan seperti try_files $ uri = 404 atau jika (-f $ uri) untuk menentukan apakah ada file atau tidak. 

Konfigurasi NGINX dan PHP-FPM yang rentan ini terlihat seperti contoh berikut:

Penggunaan fungsi CONFIGUTR pada PHP


Di sini, direktif fastcgi_split_path_info digunakan untuk membagi URL halaman web PHP menjadi dua bagian, nilai satu bantuan mesin PHP-FPM untuk mempelajari nama skrip dan yang lainnya berisi info jalurnya.

Bagaimana cara PoC RCE mengeksploitasi untuk PHP FPM bekerja?

Menurut para peneliti, contoh ekspresi reguler, yang mendefinisikan arahan fastcgi_split_path_info, seperti yang ditunjukkan, dapat dimanipulasi dengan menggunakan karakter baris baru dengan cara bahwa fungsi split akhirnya menetapkan info jalur kosong.

Selanjutnya, karena ada pointer aritmatika dalam kode FPM yang salah mengasumsikan bahwa env_path_info memiliki awalan yang sama dengan path ke skrip php tanpa benar-benar memverifikasi keberadaan file di server, masalah ini dapat dimanfaatkan oleh penyerang untuk menimpa data dalam memori dengan meminta URL yang dibuat secara khusus dari situs web yang ditargetkan.



Di latar belakang, PoC mengeksploitasi [ 1 (PHuiP-FPizdaM), 2 ] peneliti merilis rantai bersama kedua masalah ini untuk memanipulasi memori dan menambahkan nilai-nilai php.ini kustom, seperti yang ditunjukkan pada tangkapan layar, dalam file konfigurasi PHP-FPM dari server yang ditargetkan, memungkinkan penyerang untuk mengeksekusi kode arbitrer menggunakan shell web.


"Dengan menggunakan panjang jalur URL dan string kueri yang dipilih dengan cermat, penyerang dapat membuat titik path_info tepat ke byte pertama dari struktur _fcgi_data_seg. Menempatkan nol di dalamnya akan memindahkan bidang` char * pos` ke belakang, dan mengikuti FCGI_PUTENV menimpa beberapa data (termasuk variabel cgi cepat lainnya) dengan jalur skrip, "kata para peneliti dalam laporan bug yang dikirimkan ke proyek PHP.

"Menggunakan teknik ini, saya bisa membuat variabel fcgi PHP_VALUE palsu dan kemudian menggunakan rantai nilai konfigurasi yang dipilih dengan cermat untuk mendapatkan eksekusi kode."

Pembaruan PHP 7 dirilis untuk menambal cacat FPM

Daftar prasyarat untuk eksploitasi yang sukses, seperti yang disebutkan di atas, tidak jarang karena konfigurasi yang rentan digunakan oleh beberapa penyedia hosting web dan tersedia di Internet sebagai bagian dari banyak tutorial PHP FPM.

Salah satu penyedia web hosting yang terkena dampak tersebut adalah Nextcloud yang merilis sebuah penasehat kemarin memperingatkan penggunanya bahwa "konfigurasi Nextcloud NGINX default juga rentan terhadap serangan ini" dan merekomendasikan administrator sistem untuk mengambil tindakan segera. Patch untuk kerentanan ini dirilis baru kemarin, hampir sebulan setelah peneliti melaporkannya ke tim pengembang PHP.

Karena eksploitasi PoC sudah tersedia dan tambalan dirilis baru kemarin, kemungkinan peretas mungkin sudah mulai memindai Internet untuk mencari situs web yang rentan.

Jadi, pengguna sangat disarankan untuk memperbarui PHP ke PHP 7.3.11 dan PHP 7.2.24 terbaru. Meskipun kita tidak menggunakan konfigurasi yang rentan.