Работал с клиентом по 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С, учли подобную лазейку и предприняли необходимые меры.