Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
20.04.2024
Размер:
13.99 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

DEAD PIXEL DETECT AND FIX

Платформа: Android

Цена: бесплатно play.google.com/store/apps/details?id=com.htc. chris.blackspotdetect

Дефекты пикселей даже на новом смартфоне не такая уж редкость, поэтому, помимо датчиков, камеры и тач-экрана, следует протестировать также и LED-матрицу девайса. И самый простой способ — просто залить экран ярким цветом и попытаться найти темные точки (или точки другого цвета) с помощью лупы.

Приложение Dead Pixel Detect and Fix делает именно это, то есть заливает экран одним из выбранных цветов. Вторая функция приложения — исправление дефектных пикселей, и именно благодаря ей оно получило множество негативных отзывов. Проблема, однако, не в самом приложении, а в подмене понятий. По-настоящему мертвые пиксели (dead pixel), которые вообще не испускают свет, оно не исправит, а вот «застрявшие» (stuck), те, что постоянно горят одним цветом, вполне может.

Как показала практика, зачастую такие пикселиначинаютработатьпосленескольких сотен (тысяч) смен своего состояния, то есть изменения цвета. Приложение делает именно это. Ты выбираешь пункт «Исправить!» в меню, и экран начинает мигать разными цветами. Обычно 30–60 секунд оказывается достаточно, чтобы «растормошить»пиксели.

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

AMPERE

 

 

 

 

 

 

 

 

 

 

 

Платформа: Android

Цена: бесплатно / 79 рублей play.google.com/store/apps/details?id=com. gombosdev.ampere

Покупка зарядника может обернуться еще большей головной болью, чем покупка смартфона. Нередко производители (привет, Китай) завышают их мощность, из-за чего устройство с заявленной выходной силой тока в 1000 мА может заряжать смартфон по четыре-пять часов. К счастью, измерить реальную мощность можно и без специальных инструментов.

Ampere умеет высчитывать примерную мощность зарядника, следя за скоростью заряда/разряда батареи. Сначала ты просто запускаешь приложение и ждешь десять секунд, по истечении которых приложение показывает потребление батареи смартфоном (обычно оно составляет 200– 300 мА). Затем подключаешь девайс к заряднику и снова ждешь десять секунд. В этот раз приложение должно показать скорость заряда устройства. Теперь осталось сложить эти два значения, и ты узнаешь реальную мощность зарядника.

На скриншоте показан Ampere, запущенный на подключенном к ноутбуку смартфоне. Потребление батареи смартфоном составляет 190 мА. Сложив 190 и 260, мы получаем 450, что вполне соответствует определенным стандартом 500 мА, которые должен выдавать USB-порт ПК и ноутбука. При подключении к 1-ам- перному заряднику Ampere показывает 760, что также недалеко от истины:

760 + 190 = 950.

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Взлом

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

EAАлексей «GreenDog» Тюрин, Digital SecurityY agrrrdog@gmail.com,,twitter.com/antyurin

HACK

WARNING

Вся информация предоставлена исключительно в ознакомительных целях. Лица, использующие данную информацию в противозаконных целях, могут быть привлечены к ответственности.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Задача: XSS с помощью SVG

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

Первые несколько атак этого выпуска Easy Hack будут завязаны на формат SVG. Причем хочется взглянуть даже не на сами атаки, а на потенциальные возможности формата.

Итак, SVG — это Scalable Vector Graphics, язык разметки масштабируемой векторной графики, он входит в подмножество расширяемого языка разметки XML и предназначен для описания двумерной векторной и смешанной вектор- но-растровой графики в формате XML. То есть мы имеем возможность описать в XML то, что должно быть на рисунке, а также добавить динамику.

Вот так, к примеру, можно нарисовать красный круг.

Кроме того, SVG поддерживает CSS. Добавим после тега <svg> стиль и получим синий круг.

А еще SVG поддерживает JavaScript — с его помощью делается анимация. Для этого можно использовать все тот же стандартный тег <script>.

SVG поддерживает и XLink (создание ссылок между документами XML), что дает возможность подгружать ресурсы из сторонних файлов. Тот же alert() можно подгрузить из файла.

Причем в некоторых браузерах можно подгружать ресурсы и со сторонних хостов. Интересно, что в SVG можно встраивать код на HTML (тег foreignObject)

и картинки (<image>). При этом SVG в той или иной мере поддерживается всеми основными браузерами.

 

 

 

 

h

ang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

-x

 

n

e

 

 

 

 

 

cha

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

Как видишь, хоть SVG и картинка, но из нее можно без проблем запускать

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

код на JavaScript. Таким образом, если есть какой-то сайт, куда можно загружать

 

 

 

 

 

 

 

 

 

картинки в SVG, то можно попытаться получить на этом сайте хранимую XSS’ку.

 

 

 

 

 

 

 

 

 

Для этого нужно знать еще несколько тонкостей, связанных с тем, как браузер

 

 

 

 

 

 

 

 

 

открывает SVG. Есть несколько вариантов вставить SVG:

 

 

 

 

 

 

 

 

 

 

как картинку — через тег <img> или свойство CSS background-image. Но в этом случае во всех современных браузерах JavaScript выполняться не будет;

как сторонний объект — с помощью тегов <object>, <embed>, <iframe>. JS в этом случае работает, но требуется помнить про то, что работают и стандартные Same Origin Policy;

встроить в саму страницу (inline). Примеры выше как раз такие, и JavaScript работает;

с помощью тега canvas. По идее, JS в этом случае работать не должен, но подтверждения этому я не нашел.

Если мы загрузим на сервер-жертву файл SVG, то, возможно, он отобразится, но в нем не будет работать JavaScript — как раз из-за того, что он подгружается с помощью тега <img>. Но мы спокойно можем воспользоваться вторым или третьим методом и использовать прямую ссылку на наш SVG на атакуемом сервере.

Интересный момент: к SVG применяются не все правила парсинга XML. Возможно, это связано лишь с известной гибкостью браузерных парсеров. Например, для корректного XML необходимо, чтобы значения атрибутов элементов были обрамлены двойными кавычками (см. пример выше). Но в SVG мы можем избавиться от них.

Кроме того, если где-то будет незакрытая кавычка, то в случае с XML документ не будет считаться корректным, а в SVG такие атрибуты просто пропускаются. То же самое относится и к тегам. Это дает дополнительное пространство для атак.

Еще одну лазейку открывает то, что в SVG можно встраивать другие документы или даже тот же самый документ. Это может быть использовано для обхода Content Security Policy — примеры можно увидеть в презентации с Black Hat 2014, один из них я разберу подробнее.

Ну и последнее, что нужно знать об SVG, — он является «официальным» XML и потому глубоко связан с остальным семейством форматов. SVG поддерживает Document Type Definition (DOCTYPE) с сущностями (entity), а потому есть потенциальная возможность для эксплуатации XXE. Также он поддерживает технологию XSLT. Можно, например, сделать такой файл SVG, который

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

при открытии с помощью тега <img> будет показывать картинку, а при откры-

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тии в <iframe> будет с помощью XSLT-преобразования превращаться в HTML

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(должно работать в IE и FF).

 

 

 

 

 

 

 

 

 

 

 

 

 

Возможности SVG очень широки, а вот методы их применения для атак еще далеко не полностью изучены, так что можно ждать новостей на этом фронте или экспериментировать самостоятельно.

Задача: Обход SOP через content smuggling с PDF

Эта задача во многом похожа на предыдущую, хоть и касается формата PDF. Для начала представим себе классическую атаку. Существует сервер, на который мы можем загрузить картинку. Есть способ изготовить такой файл, который одновременно будет и валидным изображением, и правильным PDF. После загрузки такого файла мы можем заманить жертву к себе на сайт и заставить открыть нашу картинку как PDF. При помощи FormCalc из PDF можно отправлять и принимать запросы с того хоста, откуда загружен файл. Используя это, мы обходим Same Origin Policy и получаем доступ к серверу от имени нашей жертвы.

К сожалению, эту атаку можно провести только через браузер IE, так как он по умолчанию использует официальный плагин Adobe. У других браузеров есть встроенные просмотрщики (вернее, что-то вроде конвертеров), которые не поддерживают FormCalc.

Изначальная атака типа content smuggling была направлена на смешение форматов PNG и PDF. Но в Adobe запатчили плагин, который проверяет по чер-

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

ному списку, не совпадает ли начало файла PDF с одним из типовых заголовков

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для графических файлов. Например, PNG — для PNG, GIF89a — для GIF, JFIF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для JPEG.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Предполагается, что если нет соответствующих строк в заголовке, то файл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

уже не может считаться валидным. Но важно, что пробелы и переносы строк

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

плагином не учитываются.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Суть формата при этом тоже никак не изменилась: в файле перед самим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PDF могут находиться практически любые данные. Так что потенциальная воз-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

можность content smuggling тоже осталась.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ей-то и воспользовались ребята из Minded Security. Они смогли собрать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

специальный файл: одновременно валидный PDF и SVG (они называют такие

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

файлы словом polyglot). В черном списке Adobe перечислены и заголовки SVG

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(svg, <?xml), но парсеры SVG гуманнее парсеров XML, а потому и возможностей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обойти проверку нашелся целый мешок. Любой из вариантов можно вставить

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в самое начало:

 

 

 

 

 

 

 

 

 

 

 

 

 

стандартный DOCTYPE для svg (<!DOCTYPE svg …);

произвольный тег (<zzzz/>);

произвольный тег «инструкций» (<?xxxx ?>);

XML-комментарии (<!-- ->).

Следом мы вставляем валидный SVG, после него — валидный PDF. А дальше — в бой!

Вобщем, это очередное доказательство того, что черные списки крайне ненадежный подход. Но исследователи признают, что реального толка от найденной уязвимости не очень много. Как мы уже знаем, SVG «из коробки» — очень опасный формат, и если мы можем загрузить SVG на сервер, то почти точно сможем выполнять и код на JavaScript. Добавлять сюда возможности PDF не требуется.

ВAdobe запатчили и эту уязвимость. Скорее всего, в черный список добавили символ <, так как он необходим для всех методов обхода (кстати, интересно было бы удостовериться в этом). Зато в Minded Security предложили использовать эту атаку для обхода некоторых вариантов настройки CSP, но метод иначе как наркоманским не назовешь.

PDF — очень многофункциональный формат. В нем есть такое понятие, как action, — некоторые действия. Одно из этих действий — GoToE позволяет сделать редирект на какой-то сайт. Для веба это привычная вещь, но в PDF, оказывается, отсутствует защита от редиректа на JavaScript. Если PDF загружается с помощью тега <object> или <embed>, то в нем можно указать редирект

на скрипт, и тот будет выполнен в контексте того сайта, в который вставлен документ.

 

 

 

C

hang

e

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

X

 

 

 

E

 

 

 

 

 

 

 

X

 

 

 

E

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

При чем тут SVG? Тут надо вспомнить, что этот формат позволяет подгружать

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

внешние ресурсы и создавать внутри себя HTML. Можно сделать такой файл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SVG-PDF, который при открытии будет отрабатывать как SVG, а потом сам себя

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

загружать как PDF. Загруженный PDF, в свою очередь, будет делать редирект

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на исполнение кода.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример такого SVG-PDF можно увидеть на картинке.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SVG-PDF подгружает

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задача: Получить RCE через XSLT

В плане возможностей для атак XSLT — богатая технология, и с ней стоит разо- братьсяподробнее.Итак,XSLT—этоExtensibleStylesheetLanguageTransformations, специальный язык для преобразования (в общем случае) документов XML. Это развесистый формат, но идея на самом деле проста.

Например, у нас есть XML-документ с какими-то элементами, атрибутами

изначениями, но нам для работы требуется переместить элементы, изменить структуру (к примеру, атрибут сделать элементом) или выполнить дополнительные расчеты. Для этого мы можем воспользоваться XSLT-процессором

ипреобразовать старый документ в новый вид. Создастся новый документ, а старый останется в изначальном виде.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

Описание того, как необходимо преобразо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вывать, находится в XSL-стилях (на картинке это

 

 

 

 

 

 

 

 

 

 

 

XSLT code). Сами правила описываются в виде

 

 

 

 

 

 

 

 

 

 

 

XPath.

 

 

 

 

 

 

 

 

 

 

 

Правила указывают, какую часть исходного

 

 

 

 

 

 

 

 

 

 

 

XML-документа необходимо взять и что с ней по-

 

 

 

 

 

 

 

 

 

 

 

том сделать. При подгрузке файла XML для каж-

 

 

 

 

 

 

 

 

 

 

 

дого элемента применяются самые точные

 

 

 

 

 

 

 

 

 

 

 

из имеющихся правил. На картинках ты увидишь

 

 

 

 

 

 

 

 

 

 

 

пример использования XSLT.

Схема работы XSLT

Пример из Википедии. Исходный XML

Пример из Википедии. Применяемый стиль XSL

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример из Википедии. Итоговый XML

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

В этом примере происходит поиск корневого элемента persons. Вместо него создается элемент root. Для содержимого person применяется другой стиль, на каждый из элементов он создает новый элемент name, в атрибут которого переносится атрибута персоны, а в значении остается только имя.

Это может показаться сложным, но, насколько мне известно, вручную правила никто не создает. Для наших же целей необходимо только самое общее понимание и одно правило, которое срабатывает всегда:

Что мы можем сделать с помощью XSLT? Например, получить RCE на хосте, где происходит преобразование. Обрати внимание, что, помимо простого переноса значения, есть возможность производить расчеты. Для этого процессоры позволяют вызывать функции другого языка.

В итоге все тривиально. Вот пример для Xalan — либы XSLT для Java.

Здесь все просто. Подключаем возможность вызова кода на Java и назначаем ей namespace jv (на самом деле — любой префикс). Далее указываем поиск корневого элемента (чтобы работало всегда). И создаем три переменные: в cmd — те команды ОС, которые хотим выполнить (CDATA нужно указывать, чтобы не было ограничений на символы, так как XSL должен быть валидным XML), а в двух других — стандартная последовательность для выполнения команд на Java.

Соседние файлы в папке журнал хакер