> For the complete documentation index, see [llms.txt](https://easpyy.gitbook.io/portswigger/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://easpyy.gitbook.io/portswigger/basic-server-side-template-injection.md).

# Basic server-side template injection

Link: https\://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-basic

Description:

This lab is vulnerable to server-side template injection due to the unsafe construction of an ERB template.

To solve the lab, review the ERB documentation to find out how to execute arbitrary code, then delete the `morale.txt` file from Carlos's home directory.

Proof of concept:

1. Analisa pada web target
2. Dari hasil analisa didapati ketika product tidak tersedia atau out of stock akan mengirim pesan melalui parameter `message`. Jika stok product tersedia, akan diarahkan ke halaman detail product<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FuqkKEAMXfcEDmtN3urhC%2Fimage.png?alt=media&amp;token=599772c1-79ce-4649-8796-cc9ab027ca23" alt=""><figcaption></figcaption></figure>
3. Inputkan basic payload SSTI yaitu `{{7*7}}`<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FzQaLAnVoPcVvbBkA6VL0%2Fimage.png?alt=media&amp;token=663e40a1-df0f-4963-bd72-aac94c5b94b6" alt=""><figcaption></figcaption></figure>
4. Outputnya akan tetap `{{7*7}}` dikarenakan dari informasi yang didapati pada lab description sistem target menggunakan teknologi `ERB ruby`, maka inputkan payload basic SSTI ERB seperti yang dapat dilihat di <https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection#erb-ruby> sebagai contoh disini menggunakan payload `<%= 7*7 %>` maka akan ditampilkan nilai `49`. Artinya sistem rentan terhadap SSTI Attack<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FtCdfO4R3jKcvDezGUpKG%2Fimage.png?alt=media&amp;token=f00f8e4d-1a89-4649-8264-79542e628fee" alt=""><figcaption></figcaption></figure>
5. Selanjutnya, untuk memastikan lainnya coba gunakan payload SSTI ERB ruby `<%= system('cat /etc/passwd') %>` untuk menampilkan data-data sensitive yang berada pada file `/etc/passwd`<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2F4eR8hRbgUIm1M80R0q5T%2Fimage.png?alt=media&amp;token=287fc3eb-b9f4-4574-8bb3-a4df05ee2778" alt=""><figcaption></figcaption></figure>
6. Setelah berhasil, cari tahu username dari user yang berjalan pada server target dengan menggunakan perintah atau payload SSTI ERB ruby berikut `<%= system("whoami") %>`<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2F7amhLk8Z23ZPpfc5S8jA%2Fimage.png?alt=media&amp;token=c11f46ab-9265-4654-8eac-b441c6861963" alt=""><figcaption></figcaption></figure>
7. Dan cari informasi mengenai direktori yang ada pada direktori home dengan menggunakan payload `<%= Dir.entries('/home') %>`<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FRam6Uzk25NEeWuRsCEzn%2Fimage.png?alt=media&amp;token=40103adc-5ba2-4ec7-b920-7388dd2b70eb" alt=""><figcaption></figcaption></figure>
8. Selanjutnya, untuk menyelesaikan tangtangan lab ini gunakan payload `<%= system('rm /home/carlos/morale.txt') %>`<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FLcs2phs7aPUiMpmW5jC7%2Fimage.png?alt=media&amp;token=18e71ee5-e5b1-4cea-8d86-99e10652fbfc" alt=""><figcaption></figcaption></figure>

Thanks, Stay Ethical & Happy Hacking! 🍻
