<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
Webblaaier-uitbreidings is geskryf in JavaScript en word deur die blaaier in die agtergrond gelaai. Dit het sy [DOM](https://www.w3schools.com/js/js\_htmldom.asp) maar kan met ander webwerwe se DOM's interaksie hê. Dit beteken dat dit ander webwerwe se vertroulikheid, integriteit en beskikbaarheid (CIA) kan kompromiteer.
Elke inhoudskrip het direkte toegang tot die DOM van 'n **enkele webbladsy** en is dus blootgestel aan **potensieel skadelike insette**. Die inhoudskrip bevat egter geen toestemmings behalwe die vermoë om boodskappe aan die uitbreidingskern te stuur.
Die uitbreidingskern bevat die meeste van die uitbreidingspriviliges/toegang, maar die uitbreidingskern kan slegs met webinhoud interaksie hê deur [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) en inhoudskripte. Die uitbreidingskern het ook nie direkte toegang tot die gasrekenaar nie.
Die uitbreiding maak 'n inheemse binêre moontlik wat **toegang tot die gasrekenaar met die gebruiker se volle regte kan hê.** Die inheemse binêre interaksie met die uitbreidingskern deur die standaard Netscape Plugin Application Programming Interface ([NPAPI](https://en.wikipedia.org/wiki/NPAPI)) wat deur Flash en ander blaaier-invoegtoepassings gebruik word.
Om die gebruiker se volle regte te verkry, moet 'n aanvaller die uitbreiding oortuig om skadelike insette vanaf die inhoudskrip na die uitbreidingskern en vanaf die uitbreidingskern na die inheemse binêre oor te dra.
Elke komponent van die uitbreiding is van mekaar geskei deur **sterk beskermende grense**. Elke komponent loop in 'n **afsonderlike bedryfstelselproses**. Inhoudskripte en uitbreidingskerns loop in **sandbox-prosesse** wat nie beskikbaar is vir die meeste bedryfstelseldienste nie.
Verder, inhoudskripte is geskei van hul geassosieerde webbladsye deur **in 'n afsonderlike JavaScript-heap te loop**. Die inhoudskrip en webbladsy het **toegang tot dieselfde onderliggende DOM**, maar die twee **ruil nooit JavaScript-aanwysers nie**, wat die lekkasie van JavaScript-funksionaliteit voorkom.
'n Chrome-uitbreiding is net 'n ZIP-vouer met 'n [.crx-lêeruitbreiding](https://www.lifewire.com/crx-file-2620391). Die uitbreidingskern is die **`manifest.json`** lêer aan die wortel van die vouer, wat uitleg, toestemmings en ander konfigurasie-opsies spesifiseer.
Inhoudskripte word **gelaai** telkens wanneer die gebruiker na 'n ooreenstemmende bladsy **navigeer**, in ons geval enige bladsy wat ooreenstem met die **`https://example.com/*`** uitdrukking en nie ooreenstem met die **`*://*/*/business*`** regex nie. Hulle voer uit **soos die bladsy se eie skripte** en het willekeurige toegang tot die bladsy se [Dokument-voorwerpmodel (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model).
Dit is 'n voorbeeld inhoudskrip wat 'n verduidelik-knoppie by die bladsy sal voeg wanneer [die stoor-API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) gebruik word om die `message`-waarde uit die stoor van die uitbreiding te haal.
'n Boodskap word na die uitbreidingsbladsye gestuur deur die inhoudskrip wanneer hierdie knoppie geklik word, deur die gebruik van die [**runtime.sendMessage() API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Dit is as gevolg van die beperking van die inhoudskrip in direkte toegang tot API's, met `storage` wat een van die min uitsonderings is. Vir funksionaliteite buite hierdie uitsonderings word boodskappe gestuur na uitbreidingsbladsye waarmee inhoudskripte kan kommunikeer.
Afhanklik van die webblaaier, kan die vermoëns van die inhoudskrip effens verskil. Vir Chromium-gebaseerde blaaier is die vermoënslys beskikbaar in die [Chrome-ontwikkelaarsdokumentasie](https://developer.chrome.com/docs/extensions/mv3/content\_scripts/#capabilities), en vir Firefox dien die [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content\_scripts#webextension\_apis) as die primêre bron.\
Dit is ook noemenswaardig dat inhoudskripte die vermoë het om met agtergrondskripte te kommunikeer, wat hulle in staat stel om aksies uit te voer en terugvoer terug te stuur.
Vir die sien en foutopsporing van inhoudskripte in Chrome, kan die Chrome-ontwikkelaarshulpmiddelsmenu van Opsies > Meer gereedskap > Ontwikkelaarshulpmiddels geopen word OF deur Ctrl + Shift + I te druk.
Wanneer die ontwikkelaarshulpmiddels vertoon word, moet die **Bron**-kategorie gekies word, gevolg deur die **Inhoudskripte**-kategorie. Dit maak dit moontlik om die uitvoering van lopende inhoudskripte van verskeie uitbreidings waar te neem en breekpunte in te stel om die uitvoervloei te volg.
Let daarop dat **Inhoudskripte nie verpligtend is** nie aangesien dit ook moontlik is om skripte **dinamies in te spuit** en om hulle **programmaties in te spuit** in webbladsye via **`tabs.executeScript`**. Dit bied eintlik meer **fynbeheer kontroles**.
Vir die programmatiese inspuiting van 'n inhoudskrip, word daar van die uitbreiding vereis om [gasheerregte](https://developer.chrome.com/docs/extensions/reference/permissions) vir die bladsy waarin die skripte ingespuit moet word, te hê. Hierdie regte kan óf verkry word deur hulle binne die manifest van die uitbreiding aan te vra óf op 'n tydelike basis deur [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab).
Boodskappe wat deur inhoudskripte gestuur word, word ontvang deur die **agtergrondbladsy**, wat 'n sentrale rol speel in die koördinering van die uitbreiding se komponente. Veral, die agtergrondbladsy volhard deur die uitbreiding se leeftyd, wat diskreet optree sonder direkte gebruikerinteraksie. Dit besit sy eie Dokumentobjekmodel (DOM), wat komplekse interaksies en toestandsbestuur moontlik maak.
* **Agtergrondbladsyrol:** Tree op as die senuweesentrum vir die uitbreiding, wat kommunikasie en koördinasie tussen verskeie dele van die uitbreiding verseker.
* **Volharding:** Dit is 'n altyd teenwoordige entiteit, onsigbaar vir die gebruiker maar integraal tot die uitbreiding se funksionaliteit.
* **Outomatiese Generering:** As nie uitdruklik gedefinieer nie, sal die blaaier outomaties 'n agtergrondbladsy skep. Hierdie outomaties gegenereerde bladsy sal al die agtergrondskripte wat in die uitbreiding se manifest gespesifiseer is, insluit, wat verseker dat die naatlose werking van die uitbreiding se agtergrondtake verseker.
Die gerief wat deur die blaaier gebied word deur outomaties 'n agtergrondbladsy te genereer (wanneer nie uitdruklik verklaar nie) verseker dat alle nodige agtergrondskripte geïntegreer en operasioneel is, wat die opstelproses van die uitbreiding stroomlyn.
Dit gebruik die [runtime.onMessage API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage) om boodskappe te luister. Wanneer 'n `"verduidelik"` boodskap ontvang word, gebruik dit die [tabs API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) om 'n bladsy in 'n nuwe oortjie te open.
Om die agtergrondskrip te foutsoek, kan jy na die **uitbreidingsbesonderhede gaan en die dienswerker inspekteer,** dit sal die ontwikkelaarshulpmiddels met die agtergrondskrip oopmaak:
* **Opsiebladsye**: Hierdie bladsy word bo-op die uitbreiding vertoon wanneer dit geklik word. In die vorige manifest In my geval kon ek toegang tot hierdie bladsy kry in `chrome://extensions/?options=fadlhnelkbeojnebcbkacjilhnbjfjca` of deur te klik:
Let daarop dat hierdie bladsye nie volhardend is soos agtergrondbladsye nie, aangesien hulle dinamies inhoud laai as dit nodig is. Ten spyte hiervan deel hulle sekere vermoëns met die agtergrondbladsy:
* **Kommunikasie met Inhoudskripte:** Soortgelyk aan die agtergrondbladsy kan hierdie bladsye boodskappe van inhoudskripte ontvang, wat interaksie binne die uitbreiding fasiliteer.
* **Toegang tot Uitbreiding-Spesifieke API's:** Hierdie bladsye geniet omvattende toegang tot uitbreiding-spesifieke API's, onderhewig aan die toestemmings wat vir die uitbreiding gedefinieer is.
**`permissions`** en **`host_permissions`** is inskrywings van die `manifest.json` wat sal aandui **watter toestemmings** die blaaieruitbreidings het (berging, ligging...) en in **watter webbladsye**.
Aangesien blaaieruitbreidings so **bevoorreg** kan wees, kan 'n skadelike een of een wat gekompromitteer is, die aanvaller verskillende maniere bied om sensitiewe inligting te steel en die gebruiker te bespioneer.
om 'n webbladsy toegang te gee tot 'n bladsy van 'n Blaaieruitbreiding, 'n `.html` bladsy byvoorbeeld, moet hierdie bladsy genoem word in die **`web_accessible_resources`** veld van die `manifest.json`.\
Volgens die [**dokumentasie**](https://developer.chrome.com/docs/extensions/reference/manifest/externally-connectable), verklaar die `"externally_connectable"` manifest-eienskap **watter uitbreidings en webbladsye kan koppel** aan jou uitbreiding via [runtime.connect](https://developer.chrome.com/docs/extensions/reference/runtime#method-connect) en [runtime.sendMessage](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage).
- As die **`externally_connectable`** sleutel **nie** verklaar word in jou uitbreiding se manifest nie, of as dit verklaar word as **`"ids": ["*"]`**, **kan alle uitbreidings koppel, maar geen webbladsye kan koppel nie**.
- As **spesifieke ID's gespesifiseer word**, soos in `"ids": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]`, **kan slegs daardie aansoeke koppel**.
- As **passings** gespesifiseer word, sal daardie webtoepassings kan koppel:
As 'n webbladsy vatbaar vir XSS of oorneembaarheid aangedui word in **`externally_connectable`**, sal 'n aanvaller in staat wees om boodskappe direk na die agtergrondskrip te stuur, wat die Inhoudskrip en sy CSP heeltemal omseil.
Verder, as die klient 'n skelm uitbreiding installeer, selfs al word dit nie toegelaat om met die vatbare uitbreiding te kommunikeer nie, kan dit XSS-data inspuit in 'n toegelate webbladsy of **`WebRequest`** of **`DeclarativeNetRequest`** API's misbruik om versoek op 'n geteikenede domein te manipuleer deur 'n versoek vir 'n **JavaScript-lêer** te verander. (Let wel dat CSP op die geteikende bladsy hierdie aanvalle kan voorkom). Hierdie idee kom [**van hierdie skryfstuk**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability).
Die omgewings waar **inhoudskripte** opereer en waar die gasbladsye bestaan, is van mekaar **geskei**, wat **isolering** verseker. Ten spyte van hierdie isolering het beide die vermoë om met die bladsy se **Dokument-voorwerpmodel (DOM)**, 'n gedeelde hulpbron, te interaksioneer. Vir die gasbladsy om in kommunikasie met die **inhoudskrip** te tree, of onmiddellik met die uitbreiding deur die inhoudskrip, is dit nodig om die **DOM** te gebruik wat deur beide partye toeganklik is as die kommunikasiekanaal.
- **`event.isTrusted`**: Dit is waar slegs as die gebeurtenis geaktiveer is deur 'n gebruikersaksie
- Die inhoudskrip kan 'n boodskap verwag slegs as die gebruiker 'n aksie uitvoer
- **Oorsprongsdomein**: mag 'n boodskap verwag slegs 'n lys van domeine.
- Wees baie versigtig as 'n regex gebruik word
- **Bron**: `received_message.source !== window` kan gebruik word om te kontroleer of die boodskap van dieselfde venster af kom waar die Inhoudskrip luister.
Dit is nie "presies" 'n kommunikasiemanier nie, maar die **web en die inhoudskrip sal toegang hê tot die web-DOM**. Dus, as die **inhoudskrip** inligting daaruit lees, **vertrouend op die web-DOM**, kan die web hierdie data wysig (omdat die web nie vertrou moet word nie, of omdat die web vatbaar is vir XSS) en die **Inhoudskrip kompromitteer**.
Daarom moet die geheue van die Blaaieruitbreiding **nie as veilig beskou word nie** en **sensitiewe inligting** soos geloofsbriewe of mnemoniese frases **moet nie gestoor word nie**.
Om geheue van die blaaier te lek, kan jy **die prosesgeheue lek** of na die **instellings** van die blaaieruitbreiding gaan en klik op **`Inspect pop-up`** -> In die **`Geheue`**-afdeling -> **`Neem 'n snaphot`** en **`CTRL+F`** om binne die snaphot te soek vir sensitiewe inligting.
'n Inhoudskrip kan die funksies [**runtime.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage) **of** [**tabs.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/tabs#method-sendMessage) gebruik om 'n **eenmalige JSON-seriëleerbare** boodskap te stuur.
Om die **antwoord** te hanteer, gebruik die teruggekeerde **Promise**. Alhoewel, vir agteruitversoenbaarheid, kan jy nog steeds 'n **terugroepfunksie** as die laaste argument deurgee.
Stuur 'n versoek vanaf die **uitbreiding** (gewoonlik 'n **agtergrondskrip**) 'n Inhoudskrip kan die funksies gebruik, behalwe dat jy moet spesifiseer na watter oortjie om dit te stuur. Voorbeeld van hoe om 'n boodskap na die inhoudskrip in die gekose oortjie te stuur:
Op die **ontvangende einde**, moet jy 'n [**runtime.onMessage**](https://developer.chrome.com/docs/extensions/reference/runtime#event-onMessage) **gebeurtenisluisteraar** opstel om die boodskap te hanteer. Dit lyk dieselfde vanaf 'n inhoudskrip of uitbreidingsbladsy.
In die voorbeeld wat uitgelig is, is **`sendResponse()`** op 'n sinchroniese wyse uitgevoer. Om die `onMessage` gebeurtenishanterer te wysig vir asynchrone uitvoering van `sendResponse()`, is dit noodsaaklik om `return true;` in te sluit.
'n Belangrike oorweging is dat in scenario's waar meerdere bladsye ingestel is om `onMessage` gebeurtenisse te ontvang, **sal die eerste bladsy wat `sendResponse()` vir 'n spesifieke gebeurtenis uitvoer, die enigste wees wat die respons effektief kan aflewer. Enige volgende reaksies op dieselfde gebeurtenis sal nie in ag geneem word nie.
By die skep van nuwe uitbreidings, moet die voorkeur gegee word aan beloftes eerder as terugroepfunksies. Met betrekking tot die gebruik van terugroepfunksies, word die `sendResponse()`-funksie as geldig beskou slegs as dit direk binne die sinchroniese konteks uitgevoer word, of as die gebeurtenishanterer 'n asynchrone operasie aandui deur `true` terug te gee. Indien geen van die handvatsels `true` teruggee nie of as die `sendResponse()`-funksie uit die geheue verwyder word (deur die afvalverwydering), sal die terugroep wat met die `sendMessage()`-funksie geassosieer word, standaard geaktiveer word.
Die bronkode van 'n Chrome-uitbreiding kan deur verskeie metodes verkry word. Hieronder is gedetailleerde verduidelikings en instruksies vir elke opsie.
Die bronkode van 'n Chrome-uitbreiding kan as 'n ZIP-lêer afgelaai word deur die opdraglyn te gebruik. Dit behels die gebruik van `curl` om die ZIP-lêer vanaf 'n spesifieke URL te haal en dan die inhoud van die ZIP-lêer na 'n gids uit te pak. Hier is die stappe:
'n Ander gerieflike metode is om die Chrome Extension Source Viewer te gebruik, wat 'n oopbronprojek is. Dit kan geïnstalleer word vanaf die [Chrome Web Store](https://chrome.google.com/webstore/detail/chrome-extension-source-v/jifpbeccnghkjeaalbbjmodiffmgedin?hl=en). Die bronkode van die kyker is beskikbaar in sy [GitHub-opgaarplek](https://github.com/Rob--W/crxviewer).
Gaan na die Chrome Web Store en laai die uitbreiding af. Die lêer sal 'n `.crx`-uitbreiding hê. Verander die lêeruitbreiding vanaf `.crx` na `.zip`. Gebruik enige lêerargivaris (soos WinRAR, 7-Zip, ens.) om die inhoud van die ZIP-lêer uit te pak.
Maak Chrome oop en gaan na `chrome://extensions/`. Skakel "Ontwikkelaarsmodus" in die boonste regterkant in. Klik op "Gelaai uitgepakte uitbreiding...". Navigeer na die gids van jou uitbreiding. Dit laai nie die bronkode af nie, maar dit is nuttig om die kode van 'n reeds afgelaaide of ontwikkelde uitbreiding te sien en te wysig.
Alhoewel Blaaieruitbreidings 'n **beperkte aanvalsvlak** het, mag sommige van hulle **kwesbaarhede** of **potensiële verhardingsverbeterings** bevat. Die volgende is die mees algemene:
* [ ]**Beperk** soveel as moontlik die **`externally_connectable`**, indien geen benodig word nie en moontlik is, los dit nie standaard nie, spesifiseer **`{}`**
* [ ] As 'n **URL kwesbaar vir XSS of oorneembaarheid** hier genoem word, sal 'n aanvaller in staat wees om **boodskappe direk na die agtergrondskripte te stuur**. Baie kragtige omseiling.
* [ ] As **`web_accessible_resources`** nie nul is nie, kyk vir [**ClickJacking**](browext-clickjacking.md)
* [ ] Indien enige **kommunikasie** plaasvind vanaf die **uitbreiding** na die **webbladsy**, [**kyk vir XSS**](browext-xss-example.md) **kwesbaarhede** wat veroorsaak word deur die kommunikasie.
* [ ] Indien Post Messages gebruik word, kyk vir [**Post Message kwesbaarhede**](../postmessage-vulnerabilities/)**.**
* Haal enige Chrome-uitbreiding van 'n voorsiene Chrome-webwerf skakel af.
* [**manifest.json**](https://developer.chrome.com/extensions/manifest) **kyker**: vertoon eenvoudig 'n JSON-verfraaide weergawe van die uitbreiding se manifest.
* **Vingerafdrukontleding**: Opstel van [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) en outomatiese generering van Chrome-uitbreidingsvingerafdruk-JavaScript.
* **Potensiële Clickjacking-ontleding**: Opstel van uitbreidings-HTML-bladsye met die [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) rigtingaanduiging. Hierdie is potensieel vatbaar vir clickjacking afhangende van die doel van die bladsye.
* **Toestemmingwaarskuwing(s) kyker**: wat 'n lys van al die Chrome-toestemmingskennisgewings wys wat vertoon sal word wanneer 'n gebruiker probeer om die uitbreiding te installeer.
* **Gevaarlike Funksie(s)**: wys die plek van gevaarlike funksies wat potensieel deur 'n aanvaller uitgebuit kan word (bv. funksies soos innerHTML, chrome.tabs.executeScript).
* **Ingangspunt(e)**: wys waar die uitbreiding gebruiker/eksterne insette aanvaar. Dit is nuttig om 'n begrip van 'n uitbreiding se oppervlakte te kry en te soek na potensiële punte om kwaadwillig saamgestelde data na die uitbreiding te stuur.
* Die tipe lêer wat dit is, soos 'n Agtergrondbladsy-skrip, Inhoudskrip, Blaaieraksie, ens.
* As die kwesbare lyn in 'n JavaScript-lêer is, die paaie van al die bladsye waar dit ingesluit is, sowel as hierdie bladsye se tipe, en [web\_accessible\_resource](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) status.
* **Inhoudsekuriteitsbeleid (CSP) ontleder en omseilingskontroleerder**: Dit sal swakhede in jou uitbreiding se CSP aanwys en ook enige potensiële maniere belig wat jou CSP omseil weens gewitlys gemaakde CDNs, ens.
* **Bekende Kwesbare Biblioteke**: Dit gebruik [Retire.js](https://retirejs.github.io/retire.js/) om vir enige gebruik van bekende-kwesbare JavaScript-biblioteke te kyk.
* Laai die uitbreiding en geformateerde weergawes af.
* Outomatiese kaching van skandeerresultate, die uitvoer van 'n uitbreidingskandering sal 'n goeie tyd neem die eerste keer wat jy dit hardloop. Die tweede keer, mits die uitbreiding nie opgedateer is nie, sal bykans onmiddellik wees weens die resultate wat gekas is.
* Skakelbare Rapport-URL's, maak maklik iemand anders aan 'n uitbreidingsverslag wat deur tarnish gegenereer is.
Projek Neto is 'n Python 3-pakket wat ontwerp is om die analise en ontrafeling van verskuilde kenmerke van blaaierinvoegings en -uitbreidings vir bekende blaaier soos Firefox en Chrome te ontleed en te outomatiseer. Dit ontpak die gepakde lêers om hierdie kenmerke uit relevante bronne in 'n uitbreiding soos `manifest.json`, lokalisasiegids of Javascript- en HTML-bronlêers te onttrek.
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.