Basic server-side template injection (code context)
Link: https://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-basic-code-context
Last updated
Link: https://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-basic-code-context
Last updated
Description:
This lab is vulnerable to server-side template injection due to the way it unsafely uses a Tornado template. To solve the lab, review the Tornado documentation to discover how to execute arbitrary code, then delete the morale.txt
file from Carlos's home directory.
You can log in to your own account using the following credentials: wiener:peter
Proof of concept:
Lakukan analisa pada setiap fitur yang ada pada sistem target
Dari hasil analisa terdapat fitur Preferred Name
yang berfungsi untuk mengatur tampilan nama ketika melakukan posting comment pada blog yang ada
Kirim request perubahan preffered name tersebut ke burp suite intercept. Inputkan basic payload SSTI. Sebagai contoh disini menggunakan payload {{7*7}}
Namun yang ditampilkan terdapat {{}}
, seharusnya hanya nilai dari 7*7
saja yang tampil. Inputkan payload7*7
tanpa {{}}
. Maka berhasil, dapat diasumsikan bahwa sudah terdapat {{}}
pada parameter tersebut
Seperti yang terdapat pada informasi lab, target menggunakan teknologi tornadi python. maka dari itu dapat menggunakan informasi payload SSTI seperti yang terdapat di
Error tersebut terjadi karena kemungkinan asumsi sebelumnya yang memungkinkan sudah terdapat {{}}
pada function tersebut. Jadi kita harus melakukan perumusan payload dengan menyesuaikan function tersebut dengan cara melakukan analisa lebih lanjut
Dari hasil analisa didapatkan payload yang tidak menampilkan error yaitu payload 7*7}}{1*1}{{4*4
. Maka tidak akan terdapat error
Dari sturkur payload 7*7}}{1*1}{{4*4
ubah 7*7}}
{{os.system('id')
menjadi untuk menjalankan perintah pada OS target
Dengan payload diatas berhasil menjalankan perintah OS mendapatkan data id OS target. Maka dari itu, untuk menyelesaikan lab ini, hapus data morale.txt milik carlos. dengan payload 7*7}}
{{os.system('rm /home/carlos/morale.txt')
Thanks, Stay Ethical & Happy Hacking! 🍻