An open API service indexing awesome lists of open source software.

https://github.com/og-mason/javascript-memory-exploitation

Exploit :)
https://github.com/og-mason/javascript-memory-exploitation

arm64 blue-team ethical-hacking exploit explorer forensics hacking-tool incident-response infosec javascript m1-mac oob open-source open-source-security poc privacy-tools python3 red-team shellcode threat-detection

Last synced: 5 months ago
JSON representation

Exploit :)

Awesome Lists containing this project

README

          

# JavaScript Memory Exploitation PoC (Apple M1 ARM64)
Данный проект содержит серию демонстрационных JavaScript PoC-эксплойтов, иллюстрирующих потенциальные техники out-of-bounds (OOB) доступа к памяти, перезаписи и исполнения shellcode, ориентированных на ARM64 (Apple Silicon M1).

Проект ориентирован на исследовательские цели и предназначен исключительно для изучения поведения JavaScript-движка WebKit (JSC).

## Структура проекта

```bash
├── index.html # Основной PoC-эксплойт с JIT Spray и ARM64 shellcode
├── nindex.html # Упрощённая версия эксплойта
├── test.html # Тестовый сценарий с OOB чтением и записью
├── poc/
│ ├── PoC1.js # Минимальный OOB-пример с попыткой переписать память
│ └── poc.js # Расширенный OOB-пример с большим числом записей
└── create_wasm.js # Генератор бинарного файла exploit.wasm
```

## Основной эксплойт (index.html)

Этот [HTML-файл](https://github.com/inorisojiu/JavaScript-Memory-Exploitation/blob/main/index.html) запускает следующий пайплайн:

- Выделяет буферы `ArrayBuffer` и создаёт `Float64Array`/`Uint8Array`.
- Использует уязвимую функцию `vuln(index, value)` для OOB-записи.
- Делает JIT-спрей функций с вшитым ARM64 shellcode.
- Перезаписывает участки памяти и проверяет исполнение shellcode.

## Shellcode (ARM64)
Встроенный в JIT shellcode может быть адаптирован под вызов execve, либо использован как индикатор исполнения.

## Дополнительные PoC-файлы
### [test.html](https://github.com/inorisojiu/JavaScript-Memory-Exploitation/blob/main/test.html)
Простой тест переполнения массива с попыткой изменить данные в `Float64Array` и проверить успешность записи.
### [nindex.html](https://github.com/inorisojiu/JavaScript-Memory-Exploitation/blob/main/nindex.html)
Упрощённый вариант основного эксплойта без JIT, но с демонстрацией записи в память и попыткой RCE через вызов функции.

## Папка poc/
Содержит два PoC-файла:
### [PoC1.js](https://github.com/inorisojiu/JavaScript-Memory-Exploitation/blob/main/POC/PoC1.js)
Минимальный пример:
- Создание массива oob и буфера.
- Использование `vuln()` для записи за пределами массива.
- Попытка модификации памяти и проверка успешности.
### [poc.js](https://github.com/inorisojiu/JavaScript-Memory-Exploitation/blob/main/POC/poc.js)
Расширенный пример:
- Массив oob заполняется значениями с `index >= 4`.
- Выполняется обход всех новых значений и попытка модификации `Float64Array`.

## WebAssembly
### [create_wasm.js](https://github.com/inorisojiu/JavaScript-Memory-Exploitation/blob/main/create_wasm.js)
Скрипт, создающий минимальный WASM-бинарник `exploit.wasm`, содержащий одну экспортируемую функцию run, которая вызывает `alert`.
```bash
# Генерация .wasm
node create_wasm.js
```

## Требования
- WebKit/JavaScriptCore движок
- Node.js (для генерации .wasm)

## Контакт
Исследователь: inorisojiu

Для вопросов, багов и предложений - создавайте issue или pull request.