Sploitus

Exploit Code

MARKDOWN119 lines
## 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!