<summary><strong>Leer AWS hak 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)!
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling 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 PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
**'n Deel van hierdie pos is gebaseer op die wonderlike pos:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
Jy kan net met die data mors sonder om die handtekening te verander en kyk of die bediener die handtekening nagaan. Probeer byvoorbeeld jou gebruikersnaam na "admin" verander.
* Tokens wat eerste gesien word van die kliëntkant dui daarop dat die sleutel moontlik blootgestel is aan kliëntkant-kode, wat verdere ondersoek noodsaaklik maak.
* Tokens wat serverkant ontstaan, dui op 'n veilige proses.
Gebruik die Burp-uitbreiding genaamd "JSON Web Token" om hierdie kwesbaarheid te toets en verskillende waardes binne die JWT te verander (stuur die versoek na Repeater en in die "JSON Web Token"-tab kan jy die waardes van die token wysig. Jy kan ook kies om die waarde van die "Alg"-veld na "None" te stel).
As jy die algoritme van RS256 na HS256 verander, gebruik die agterkant-kode die openbare sleutel as die geheime sleutel en gebruik dan die HS256-algoritme om die handtekening te verifieer.
Daarna, deur die openbare sleutel te gebruik en RS256 na HS256 te verander, kan ons 'n geldige handtekening skep. Jy kan die sertifikaat van die webbediener ophaal deur dit uit te voer:
openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
'n Aanvaller sluit 'n nuwe sleutel in die kop van die token in en die bediener gebruik hierdie nuwe sleutel om die handtekening te verifieer (CVE-2018-0114).
Die instruksies beskryf 'n metode om die veiligheid van JWT-tokens te assesseer, veral dié wat 'n "jku" kop-aanspraak gebruik. Hierdie aanspraak behoort te skakel na 'n JWKS (JSON Web Key Set) lêer wat die openbare sleutel bevat wat nodig is vir die token se verifikasie.
* Wanneer jy `jwt_tool` vir hierdie proses gebruik, is dit noodsaaklik om die `jwtconf.ini`-lêer met jou persoonlike JWKS-plek op te dateer om die toetsing te fasiliteer.
'n Opsionele kop-aanspraak bekend as `kid` word gebruik om 'n spesifieke sleutel te identifiseer, wat veral belangrik word in omgewings waar daar verskeie sleutels vir token-handtekeningverifikasie bestaan. Hierdie aanspraak help om die toepaslike sleutel te kies om 'n token se handtekening te verifieer.
Wanneer die `kid`-aanspraak teenwoordig is in die kop, word dit aanbeveel om die webgids te deursoek vir die ooreenstemmende lêer of sy variasies. Byvoorbeeld, as `"kid":"sleutel/12345"` gespesifiseer is, moet die lêers _/sleutel/12345_ en _/sleutel/12345.pem_ in die web-wortel gesoek word.
Die `kid`-aanspraak kan ook uitgebuit word om deur die lêerstelsel te navigeer, wat moontlik die keuse van 'n willekeurige lêer toelaat. Dit is moontlik om vir konnektiwiteit te toets of Bedienerkant Aanvraagvergiffenis (SSRF) aanvalle uit te voer deur die `kid`-waarde te verander om spesifieke lêers of dienste te teiken. Die manipulasie van die JWT om die `kid`-waarde te verander terwyl die oorspronklike handtekening behoue bly, kan bereik word deur die `-T` vlag in jwt\_tool te gebruik, soos hieronder gedemonstreer:
Deur te mik op lêers met voorspelbare inhoud, is dit moontlik om 'n geldige JWT te vervals. Byvoorbeeld, die `/proc/sys/kernel/randomize_va_space` lêer in Linux-stelsels, wat bekend is om die waarde **2** te bevat, kan gebruik word in die `kid` parameter met **2** as die simmetriese wagwoord vir JWT-generering.
As die inhoud van die `kid` bewering gebruik word om 'n wagwoord uit 'n databasis te haal, kan 'n SQL-injeksie gefasiliteer word deur die `kid` payload te wysig. 'n Voorbeeld-payload wat SQL-injeksie gebruik om die JWT-ondertekeningsproses te verander, sluit in:
'N Scenario waar die `kid` parameter 'n lêerpad spesifiseer wat binne 'n opdraguitvoerkonteks gebruik word, kan lei tot Remote Code Execution (RCE) kwesbaarhede. Deur opdragte in die `kid` parameter in te spuit, is dit moontlik om private sleutels bloot te stel. 'n Voorbeeld-payload om RCE en sleutelblootstelling te bereik is:
As die token 'n "**jku**" **Header** bewering gebruik, **kyk na die voorsiene URL**. Dit behoort te wys na 'n URL wat die JWKS-lêer bevat wat die Openbare Sleutel vir die verifikasie van die token bevat. Manipuleer die token om die jku-waarde te wys na 'n webdiens waar jy verkeer kan monitor.
Dan kan jy byvoorbeeld [**jwt.io**](https://jwt.io) gebruik om die nuwe JWT te skep met die **geskepte openbare en private sleutels en deur die parameter jku na die geskepte sertifikaat te verwys.** Om 'n geldige jku-sertifikaat te skep, kan jy die oorspronklike een aflaai en die nodige parameters verander.
X.509-URL. 'n URI wat na 'n stel X.509 ( 'n sertifikaatformaatstandaard) openbare sertifikate wat in PEM-vorm gekodeer is, wys. Die eerste sertifikaat in die stel moet die een wees wat gebruik is om hierdie JWT te onderteken. Die volgende sertifikate onderteken elk die vorige een, wat dus die sertifikaatketting voltooi. X.509 is gedefinieer in RFC 52807. Vervoersekuriteit is nodig om die sertifikate oor te dra.
Probeer om **hierdie kopnaam na 'n URL onder jou beheer** te verander en kyk of enige versoek ontvang word. In daardie geval **kan jy die JWT vervals**.
Om 'n nuwe token te vervals met behulp van 'n sertifikaat wat deur jou beheer word, moet jy die sertifikaat skep en die openbare en private sleutels onttrek:
Dan kan jy byvoorbeeld [**jwt.io**](https://jwt.io) gebruik om die nuwe JWT te skep met die **geskepte openbare en private sleutels en deur die parameter x5u na die sertifikaat .crt te verwys wat geskep is.**
As die aanvaller **'n self-ondertekende sertifikaat genereer** en 'n vervalsde token skep deur die ooreenstemmende private sleutel te gebruik en die waarde van die "x5c" parameter te vervang met die nuut gegenereerde sertifikaat en die ander parameters aanpas, naamlik n, e en x5t, sal die vervalsde token essensieel deur die bediener aanvaar word.
n ="ANQ3hoFoDxGQMhYOAc6CHmzz6_Z20hiP1Nvl1IN6phLwBj5gLei3e4e-DDmdwQ1zOueacCun0DkX1gMtTTX36jR8CnoBRBUTmNsQ7zaL3jIU4iXeYGuy7WPZ_TQEuAO1ogVQudn2zTXEiQeh-58tuPeTVpKmqZdS3Mpum3l72GHBbqggo_1h3cyvW4j3QM49YbV35aHV3WbwZJXPzWcDoEnCM4EwnqJiKeSpxvaClxQ5nQo3h2WdnV03C5WuLWaBNhDfC_HItdcaZ3pjImAjo4jkkej6mW3eXqtmDX39uZUyvwBzreMWh6uOu9W0DMdGBbfNNWcaR5tSZEGGj2divE8";
e = "AQAB";
const key = new NodeRSA();
var importedKey = key.importKey({n: Buffer.from(n, 'base64'),e: Buffer.from(e, 'base64'),}, 'components-public');
Dit is moontlik om 'n nuwe privaat/publieke sleutel te genereer, die nuwe publieke sleutel binne die token in te sluit en dit te gebruik om 'n nuwe handtekening te genereer:
Hier is 'n voorbeeld: [ECDSA: Openbaarmaking van die privaatsleutel, indien dieselfde nonce gebruik word (met SECP256k1)](https://asecuritysite.com/encryption/ecd5)
Die JTI (JWT ID) eis bied 'n unieke identifiseerder vir 'n JWT-token. Dit kan gebruik word om te voorkom dat die token herhaal word.\
Stel jou voor, 'n situasie waar die maksimum lengte van die ID 4 is (0001-9999). Die versoek 0001 en 10001 gaan dieselfde ID gebruik. Dus, as die agterkant die ID verhoog met elke versoek, kan jy hierdie misbruik om 'n versoek te **herhaal** (jy moet 10000 versoek stuur tussen elke suksesvolle herhaling).
Dit is waargeneem dat sommige webtoepassings staatmaak op 'n vertroude JWT-diens vir die generering en bestuur van hul tokens. Gevalle is aangeteken waar 'n token, gegenereer vir een klient deur die JWT-diens, aanvaar is deur 'n ander klient van dieselfde JWT-diens. Indien die uitreiking of hernuwing van 'n JWT via 'n derdepartydiens waargeneem word, moet die moontlikheid om vir 'n rekening aan te meld op 'n ander klient van daardie diens met dieselfde gebruikersnaam/e-pos ondersoek word. 'n Poging moet dan aangewend word om die verkryde token in 'n versoek na die teiken te herhaal om te sien of dit aanvaar word.
* 'n Kritiese kwessie kan aangedui word deur die aanvaarding van jou token, wat moontlik die vervalsing van enige gebruiker se rekening kan toelaat. Dit moet egter genoteer word dat toestemming vir wyer toetsing benodig kan word indien aanmelding op 'n derdepartytoepassing, aangesien dit 'n regsgrys gebied kan betree.
Die verval van die token word nagegaan deur die "exp" Lading eis. Gegewe dat JWT's dikwels sonder sessie-inligting gebruik word, is sorgvuldige hantering vereis. In baie gevalle kan die vaslegging en herhaling van 'n ander gebruiker se JWT die persoonifikasie van daardie gebruiker moontlik maak. Die JWT RFC beveel aan om JWT-herhaalaanvalle te verminder deur die "exp" eis te gebruik om 'n vervaltyd vir die token in te stel. Verder is die implementering van relevante kontroles deur die aansoek om die verwerking van hierdie waarde te verseker en die afwysing van verstreke tokens wat verval het, noodsaaklik. Indien die token 'n "exp" eis insluit en toetstydlimiete dit toelaat, word dit aanbeveel om die token te stoor en dit na die vervaltyd te herhaal. Die inhoud van die token, insluitend tydstempelontleding en vervaltoetsing (tydstempel in UTC), kan gelees word deur die jwt_tool se -R vlag te gebruik.
<summary><strong>Leer AWS-hacking van 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)!
* **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 hakerstruuks 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.