• XSS.stack #1 – первый литературный журнал от юзеров форума

Мail.Ru Agent

waahoo

ворчливый дед
Эксперт
Регистрация
01.12.2010
Сообщения
843
Реакции
1 661
POC-плугин для MRA

Итак. Собственно. Речь об агенте, mail.ru agent, MRA, MRIM или просто о простом и негодном интернет-мессенджере так любимом офисными хомячками и прочим планктоном. Ну а раз любимом и раз таким контингентом, сталобыть данная фича (ну не баг же) может быть легко проэксплуатируема и быть может кому-то принесет в карман вкусный шекель. Вообщем, как знать.
Вкратце. Протоколом сам я заинтересовался недавно, некоторые базовые возможности описаны, некоторые из описанных уже изменились, протокол передачи файлов документирован и ни от кого не скрыт(даже в сниффере все довольно прозрачно). Возможно передавать несколько файлов за один заход в порядке очереди, что будет очень на руку, почему – далее.
Думаю приводить копипасту описания протокола смысла не много, кому надо – подробнее здесь http://agent.mail.ru/ru/developers/protocol.html, заострю внимание лишь на моментах, которые используются в POC. Это библиотека, экспортирующая никому не нужную функцию и в дллмайне создающая тред. Тред ставит хоткей Alt+H и начинает прием сообщений потоку. При получении сообщения о нажатии именно этих клавиш вызывается диалоговое окно, в эдит-контроле которого следует прописать новый путь (примерное содержание оного указано). Длина имени передаваемого файла должна быть такой же или более, длины вписываемого нового пути (без \N). Далее если все прошло успешно появится окно об установленном перехвате на функцию send!ws2_32.dll и начинается парсинг пакетов на пригодность к патчингу оных. При повторном нажатии горячих клавиш перехват снимается.
Смысл в том, что при передаче имен они никак не изменяются, а просто дописываются к пути сохранения файлов по умолчанию. Подав функции CreateFileW путь "C:\Windows\..\Program Files\lol.txt" мы запишем данный файл папку Program Files диска С: с учетом что папка программных файлов там существует, \..\ можно ставить сколько угодно, дальше корневого каталога уйти не удастся и ошибки не возникнет.
Всего, что нужно было это добавить проверку на наличие в имени файла негодных символов. Это не было сделано, результат такой: возможность заменять файлы не занятые другими программами без вывода предупреждения о существовании файлов, создавать файлы по заранее предполагаемо существующим путям (с учетом того, что практически никто не меняет дефолтный путь, он является вложенным в "мои документы", кои у 95% населения находятся в системном разделе, сталобыть пути становятся немного предсказумыми), после загрузки файла агент предоставляет ссылку на открытие папки с принятыми папками. При передаче двух и более файлов по данной ссылке открывается папка по дефолту и куда залит был один из файлов может остаться неизвестным для многих людей не обремененных интеллектом и вниманием. Путь этот, конечно же виден принимающему, пример:
----------------------------------------------------------------------------------
Передача файлов (23:59) :
Ваш собеседник предложил вам получить файлы.
\..\..\..\..\..\..\..\..\autorun.inf (110 Байт)
The Bat!.LNK (2 КБ)
Mozilla Firefox.lnk (2 КБ)
ImgBurn.lnk (608 Байт)
Miranda IM HotCoffee Mod.lnk (695 Байт)
base64.exe (3 КБ)
Mail.Ru Агент.lnk (2 КБ)
Общий размер: 9 КБ
Принять Сохранить как... Отказаться
----------------------------------------------------------------------------------

..но это же не страшно, правда, когда передаешь штук 10 фотографий и одна у одной из них имя \..\..\..\..\..\..\..\..\Program Files\Mail.Ru\Agent\PSAPI.dll ? Скорее всего это просто агент глючит, что еще ждать от мейл.ру? А тем не менее, являясь довольно популярным мессенджером, ошибок в нем ну не то что бы не нарыто, но, прямо скажем, они не страшные, их мало, и хз каких времен. Опять же не приват, разумеется.
По данному багу – скорее всего просто пропатчат серверную часть для парсинга строк в пакетах MRIM_CS_FILE_TRANSFER.
Собственно все, а вы хотели сплоетов? Так их у меня нету.

публикую с разрешения автора, автор TrashGen, trashgen@jabber.ru

пасс к архиву, MRAbug
 

Вложения

  • H__kFileTransferMRA.rar
    12.8 КБ · Просмотры: 49
Реализация протокола FileTranfer MRA пейджера Miranda, а сталобыть и MRA.dll, также уязвима
(имются ввиду версии mra.dll, которые поддерживают все же передачу файлов не только окошечками и надписями, что "вроде как сейчас будет, наверное, перередача фаела", но и реально передачей файла)
 
Я джва года ждал!
Прошло более года с момэнта старттопа и наконец то в билде 5966 (v6.0) я узрел немного такого кодеса например:
Код:
проца проверки на "\"
CPU Disasm
Address   Hex dump          Command                                  Comments
00BAA15E  /$ \8BFF          MOV EDI,EDI                             ; magent.00BAA15E(guessed Arg1,Arg2)
00BAA160  |.  55            PUSH EBP
00BAA161  |.  8BEC          MOV EBP,ESP
00BAA163  |.  8B45 08       MOV EAX,DWORD PTR SS:[ARG.1]
00BAA166  |.  8BD0          MOV EDX,EAX
00BAA168  |>  66:8B08       /MOV CX,WORD PTR DS:[EAX]
00BAA16B  |.  40            |INC EAX
00BAA16C  |.  40            |INC EAX
00BAA16D  |.  66:85C9       |TEST CX,CX
00BAA170  |.^ 75 F6         \JNE SHORT 00BAA168
00BAA172  |.  66:8B4D 0C    MOV CX,WORD PTR SS:[ARG.2]
00BAA176  |>  48            /DEC EAX
00BAA177  |.  48            |DEC EAX
00BAA178  |.  3BC2          |CMP EAX,EDX
00BAA17A  |.  74 05         |JE SHORT 00BAA181
00BAA17C  |.  66:3908       |CMP WORD PTR DS:[EAX],CX
00BAA17F  |.^ 75 F5         \JNE SHORT 00BAA176
00BAA181  |>  66:3908       CMP WORD PTR DS:[EAX],CX
00BAA184  |.  74 02         JE SHORT 00BAA188
00BAA186  |.  33C0          XOR EAX,EAX
00BAA188  |>  5D            POP EBP
00BAA189  \.  C3            RETN


вызываеца тут:
CPU Disasm
Address   Hex dump          Command                                  Comments
00BEECF0  /$  56            PUSH ESI                                ; magent.00BEECF0(guessed Arg1)
00BEECF1  |.  8B7424 08     MOV ESI,DWORD PTR SS:[ARG.1]
00BEECF5  |.  6A 5C         PUSH 5C                                 ; /Arg2 = 5C
00BEECF7  |.  56            PUSH ESI                                ; |Arg1 => [ARG.1]
00BEECF8  |.  E8 61B4FBFF   CALL 00BAA15E                           ; \magent.00BAA15E
00BEECFD  |.  83C4 08       ADD ESP,8
00BEED00  |.  85C0          TEST EAX,EAX
00BEED02  |.  75 04         JNE SHORT 00BEED08
00BEED04  |.  8BC6          MOV EAX,ESI
00BEED06  |.  5E            POP ESI
00BEED07  |.  C3            RETN
00BEED08  |>  83C0 02       ADD EAX,2
00BEED0B  |.  5E            POP ESI
00BEED0C  \.  C3            RETN
Это было так внезапно, что я развернул слеш ("/") и опять все сосут х#й и все работает:)
Теперь таки выскакивает предупреждение, что фаел уже существует, но к тому времени он уже и действительно существует
поэтому просто меняем путь на
"/../../../../../../../../PROGRA~1/Mail.Ru/Agent/olololo.lol", например.
кстате, нашол тут тож небольшую тему по теме (онтеквареат можнасказать)http://www.bit-team.com/index.php?autocom=ibwiki&cmd=article&id=58. До сих пор эксплуатируеца вполне себе, кроме версий 5.1 и 5.2, которые дивилопиры мейлоогента сканпелили с защитою от срыва стека. ну а ща вообщемта защита стека нинужна все равно всем на их огент похуй.
с коном света, кстате
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх