## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-KUDIMA-EXPLOIT_PLAYGROUND
# О проекте
Здесь я буду публиковать анализ публичных эксплойтов или некоторые из моих 1day-эксплойтов.
## [ Анализ публичных эксплойтов ]
* Лично я считаю, что лучший способ изучить публичный эксплойт — это понять его построчно, пока не разберёшься в нём до конца. Я буду публиковать некоторые из таких (чрезмерно закомментированных ;) ) эксплойтов, чтобы, надеюсь, другие могли на них учиться, и как попытку дать что-то взамен сообществу. А также для документирования, потому что со временем эти вещи выветриваются из головы.
### CVE-2016-8655
* Это детальный анализ эксплойта rebel.
* Спасибо **rebel** за потрясающий эксплойт! :D
### CVE-2016-5342
#### версия mp3
* Это закомментированная версия Android LPE эксплойта freener
* arm32
* Переполнение кучи
* Этот эксплойт напрямую перезаписывает указатель на функцию другого объекта
#### версия tty
* Это закомментированная версия Android LPE эксплойта freener
* arm32
* Переполнение кучи
* Этот эксплойт перезаписывает указатель объекта в другом объекте. Он использует ret2dir-атаку, чтобы заставить повреждённый указатель ссылаться на предсказуемый фиксированный адрес в ядре, содержащий полезную нагрузку эксплойта. Эта техника эксплуатации обходит PXN и PAN.
### CVE-2016-2434
* Это закомментированная версия Android LPE эксплойта Jianqiang Zhao
* arm64
* Обнуляет 16 байт по произвольному адресу
* Этот эксплойт затирает 16 байт полезного глобального объекта, расположенного по фиксированному адресу в ядре.
* Повреждённый указатель объекта внутри глобального объекта ссылается на полезную нагрузку эксплойта из пользовательского пространства. Такой тип атаки не сработает на устройствах/ядрах с PAN (или эмуляцией PAN).
### extra_recipe
* Моя попытка разобраться в джейлбрейке extra_recipe
* Особенно меня интересовала часть обхода kpp. Хотя по этой теме было несколько слайдов, из которых я получил общее представление об обходе, мне действительно хотелось углубиться в детали и понять, что на самом деле происходит в коде.
* Я также хотел понять финальные составляющие джейлбрейка (установка Cydia и т.д.)
#### yalu102 (ViewController.m)
* Я закомментировал часть, относящуюся к самой уязвимости, и то, как она была использована.
* Причина, по которой я обратился к yalu102, а не к оригинальному эксплойту, в том, что техника port-feng-shui выглядела более чистой и понятной.
* Анализ обрывается прямо перед обходом kpp
#### xerub's extra_recipe-master (jailbreak.c, unjail.m, patchfinder64.c, pte_stuff.h)
* Я перешёл сюда, потому что здесь было немного больше информации о различных числовых смещениях.
* Кроме того, здесь присутствует исходный файл patchfinder.c, в отличие от yalu102, где есть только объектный файл.
* Часть с cydia несколько неполная, поэтому после kpp я перехожу к ветке cydia
#### xerub's extra_recipe-cydia (unjail.m)
* Попытка понять составляющие джейлбрейка после получения tfp0 и пост-эксплуатации
### empty_list (sploit.c)
* Детальный разбор эксплойта ядра empty_list от Ian Beer.
* В нём используются потрясающие техники: начиная с очень слабых примитивов, строится более мощное AAR, и в итоге полноценный порт задачи. Магия портов в коде эксплойта невероятна. И всё это при переполнении кучи на 8 нулевых байт. Совершенно умопомрачительно.
* Я набросал несколько наивных идей по повышению надёжности. Надеюсь, в будущем кто-нибудь выпустит более надёжную версию эксплойта. :)
* Спасибо **Ian Beer** за потрясающий эксплойт!
### CVE-2018-4233
* Это закомментированная версия iOS WebKit эксплойта от @niklas_b.
* Огромное спасибо kudima(@begger_dd) за очень ясный, краткий и тщательно аннотированный разбор! :)
* В разборе объясняется уязвимость путаницы типов в JIT, некоторые ограничения преобразований boxing/unboxing (которые могут приводить к ненадёжности), а также детально описывается, как строятся ранние/поздние примитивы AAR/AAW. Также он даёт представление об изменениях в техниках эксплуатации после последнего раунда митигаций (маскирование индексов, отравление backing store ArrayBuffer, некоторые изменения в механизме W^X JIT, изменения в структуре JSObject и т.д.)
### jsc_ConcatMemcpy_infoleak
* Это закомментированная версия эксплойта для утечки информации WebKit от kudima (исправлена 27.08.2018).
* Он основан на неполном исправлении одной из уязвимостей, о которых сообщил lokihardt. Патч из отчёта lokihardt исправил примитив путаницы типов Double -> Object, но не исправил обратную ситуацию: Object -> Double.
* Он заполняет кучу WebKit «бабочками», содержащими один объект и маркер, а затем вызывает ошибку concat и заполняет большую часть нескольких массивов double неинициализированными данными кучи. Затем он перебирает неинициализированные double-массивы, созданные ошибочным concat, пока не найдёт адрес ранее размещённого объекта и не извлечёт его.
* Ещё раз спасибо kudima(@begger_dd) за отличный эксплойт и разбор! :)
## [ 1Day ]
### CVE-2017-2547
* Однажды я посмотрел на эксплойт singi после его презентации на Zer0con 2018 и решил его улучшить.
* Это автономная версия эксплойта, до того как я интегрировал его в **pwnjs**.
* Улучшения включают в себя
* Повышенная надёжность (работает безупречно после длительных сессий браузера с загрязнённой памятью)
* Удалены все жёстко заданные смещения для совместимости с различными версиями браузера
* Использована другая техника эксплуатации (стандартная техника misalign)
* В итоге интегрирован во фреймворк pwnjs путём создания прототипа webkit
* Код сделан гораздо более читаемым, добавлено множество комментариев
* Особая благодарность
* **qwertyoruiop & Samuel Grob** за потрясающую статью в Phrack и публичные эксплойты
* **Brian Pak & Andrew Wesie** за отличный фреймворк pwnjs!